学Fortran就是为了解决一些矩阵运算的问题,传说它的运算非常快,对矩阵的支持也非常好.
敲了几行代码,实现了一些基本运算,果然很方便.
1 program Console4
2 implicit none
3 parameter N=5
4 integer i,j
5 real array1(2,N),array2(N,2),array3(2,2)
6 real array4(2,3),array5(2,3),array6(2,3)
7 array1(1,1)=3.2;array1(1,2)=4.5;array1(1,3)=7.56;array1(1,4)=6.34;array1(1,5)=34.2;
8 array1(2,1)=44.3;array1(2,2)=12.3;array1(2,3)=1.236;array1(2,4)=12.2;array1(2,5)=9.5;
9 !对array1 求转置矩阵
10 array2=transpose(array1)
11 call PrintArray(array1)
12 call PrintArray(array2)
13 !对array1和array2求乘积
14 array3=matmul(array1,array2)
15 call PrintArray(array3)
16 array4=3
17 array5=2
18 array6=array4+array5
19 call PrintArray(array6)
20 array6=array4-array5
21 call PrintArray(array6)
22 !array6= lincg(array5)
23 read *,i
24
25 end program Console4
26
27 subroutine PrintArray(array)
28 real array(:,:)
29 integer length,i
30 length=size(array,1)
31 do i=1,length
32 print *,array(i,:)
33 end do
34 print *,''
35 end subroutine
我定义了几个矩阵,分别用它们做了矩阵的加,减,乘,求转置运算,可以看到加法和减法直接调用运算符就行了,不需要重载.乘法和求转置矩阵则可以直接调用内部函数.
另外我定义了负责在屏幕上输入矩阵的函数PrintArray(array),将矩阵作为函数参数也是很方便的.