Fortran读书报告
班级:xxx
姓名:xxx
学号:xxx
题目
已知m×n矩阵a(如:m=3,n=4),求矩阵的转置矩阵a`以及它们的乘积
在家上班的工作a=
题目分析:此题涉及转置矩阵的问题,而转置矩阵a`与矩阵a的关系是:a`(i,j)=a(j,i),i=,m, j=1,2…,n。m×n矩阵a与n×m矩阵a`相乘,结果为m×m矩阵c,矩阵c与矩阵a与a`关系是:
c(I,j)= i=j=1,2…,m
用一个静态整型数组a存放矩阵a,用一个静态整型数组b存放a的转置矩阵a`,用一个静态整型数组c存放a与a`的乘积矩阵c。用数组构造器和内部标准函数reshape提供矩阵a的12个数据。
程序设计如下:
program array887
parameter (m=3,n=4)
integer :: i,j,k
real ::a(m,n),b(n,m),c(m,m)
a=reshape((/2.0,5.0,9.0,8.0,4.0,7.0,3.0,1.0,6.0,4.0,8.0,1.0/),(3,4)
print *,‘原矩阵:’
write(*,100) ((a(I,j),j=1,n),i=1,m)
100 format (<n> (f5.1,2x)
do i=1,m
do j=1,n
b=(j,i)=a(i,j)
end do
end do
print *,‘转置矩阵’
write (*,200) ((b(i,j),j=1,m),i=1,n)
八个月宝宝吃什么200 format (<m> (f5.1,2x))
do i=1,m
do j=1,m
什么叫外格c(i,j)=0
do k=1,n双鱼座的男人
c(i,j)=c(i,j)+a(i,k)*b(k,j)
end do
end do
end do
鬼节不能做的21件事print *,‘乘积矩阵:’
write(*,300) ((ci,j),j=1,m),i=1,m)
300 format (<m> (f7.2,2x)
end
程序运行后,输出结果为:
原矩阵:
2.0 8.0 3.0 4.0
5.0 4.0 1.0 8.0
9.0 7.0 6.0 1.0
转置矩阵为:
2.0 5.0 9.0
8.0 4.0 7.0
3.0 1.0 6.0
4.0 8.0 1.0
乘积矩阵为:
93.00 77.00 96.00
77.00 106.00 87.00
96.00 87.00 167.00
报告总结:
这个程序运用的是transpose和matmul函数。其中transpose函数是执行二维矩阵的转置运算,而matmul函数是执行二维矩阵的乘积运算,其格式分别为transpose(array)和matmul(array_a, array_b)。而对于矩阵一般用到的比较多的函数还有format,count,sum,size,cshift,reshape等函数,如此程序中的
a=reshape((/2.0,5.0,9.0,8.0,4.0,7.0,3.0,1.0,6.0,4.0,8.0,1.0/),(3,4) 语句
和100 format (<n> (f5.1,2x),200 format (<m> (f5.1,2x))等语句。对于数组和矩阵的程序设计应该熟练的掌握其常用函数的使用方法,这样才能更好的设计其程序。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论