[求助]IMSL库函数中运算符号问题
不管高手低手都帮忙看一下:
program matrixmultiply
use IMSL
implicit none
integer,parameter :: fileid=10
character(len=80) :: filename = "data.txt"
real :: A(3,3)=(/1,2,3,2,1,2,3,2,1/)
real :: B(3,3)=(/1,-1,0,-1,0,1,1,1,0/)
real :: C(3,3),AT(3,3),BT(3,3)
real :: D(3,3),DT(3,3)
AT=.t.A.x.B
BT=.t.B.x.A
DT=AT-BT
c=.t.A.x.B-.t.B.x.A
D=.t.A.x.B-(.t.B.x.A)
open(fileid,file=filename)
write(fileid,"('矩阵DT:',/,3(3XF7.3))")dt
write(fileid,"('矩阵C:',/,3(3XF7.3))")c
write(fileid,"('矩阵D:',/,3(3XF7.3))")d
close(fileid)
stop
end
我想得到A的转置乘以B减去B的转置乘以A的正确答案.
为什么只有按照分开的形式
AT=.t.A.x.B
BT=.t.B.x.A
DT=AT-BT 才正确呢?
而 C=.t.A.x.B-.t.B.x.A
D=.t.A.x.B-(.t.B.x.A) 却得不出正确答案呢?? 并且矩阵C和D得出的结果还不相同.
请各位解释一下.说说IMSL库函数中运算符号(如.x.,.ix.等)的使用规则
program matrixmultiply
use IMSL
implicit none
integer,parameter :: fileid=10
character(len=80) :: filename = "data.txt"
real :: A(3,3)=(/1,2,3,2,1,2,3,2,1/)
real :: B(3,3)=(/1,-1,0,-1,0,1,1,1,0/)
real :: C(3,3),AT(3,3),BT(3,3)
real :: D(3,3),DT(3,3)
AT=.t.A.x.B
BT=.t.B.x.A
DT=AT-BT
c=.t.A.x.B-.t.B.x.A
D=.t.A.x.B-(.t.B.x.A)
open(fileid,file=filename)
write(fileid,"('矩阵DT:',/,3(3XF7.3))")dt
write(fileid,"('矩阵C:',/,3(3XF7.3))")c
write(fileid,"('矩阵D:',/,3(3XF7.3))")d
close(fileid)
stop
end
我想得到A的转置乘以B减去B的转置乘以A的正确答案.
为什么只有按照分开的形式
AT=.t.A.x.B
BT=.t.B.x.A
DT=AT-BT 才正确呢?
而 C=.t.A.x.B-.t.B.x.A
D=.t.A.x.B-(.t.B.x.A) 却得不出正确答案呢?? 并且矩阵C和D得出的结果还不相同.
请各位解释一下.说说IMSL库函数中运算符号(如.x.,.ix.等)的使用规则