Math FORTRAN可分配数组。这段代码的数学表示是什么?

Math FORTRAN可分配数组。这段代码的数学表示是什么?,math,fortran,fortran90,Math,Fortran,Fortran90,这段代码中发生了什么 DOUBLE PRECISION, INTENT(IN) :: x(3,3), y(3,3) DOUBLE PRECISION :: e(3,3) do i=1,3 j=mod(i,3)+1 e(:,i)=x(:,j)-x(:,i) done 简单地说,这将获取每一列,并从后面的列中减去它(一个元素接一个元素),索引环绕数组 i、 e.e的第一列包含x的第二列减去x的第一列,e的第二列包含x的第三列减去第二列,而e的第三列包含x的第一列减去第三列。您确定复制的正确

这段代码中发生了什么

DOUBLE PRECISION, INTENT(IN) :: x(3,3), y(3,3)
DOUBLE PRECISION :: e(3,3) 

do i=1,3
j=mod(i,3)+1

e(:,i)=x(:,j)-x(:,i)

done

简单地说,这将获取每一列,并从后面的列中减去它(一个元素接一个元素),索引环绕数组


i、 e.
e
的第一列包含
x
的第二列减去
x
的第一列,
e
的第二列包含
x
的第三列减去第二列,而
e
的第三列包含
x
的第一列减去第三列。

您确定复制的正确吗?实际上,它用零或
nan
值填充数组
e
(其中
x
包含
inf
nan
)<在这个循环中,code>j总是等于
i
,所以你实际上只是从它自身减去
x
。j序列通过
2,3,1
,我这样做
1,2,3
@agentp Yes。谢谢你纠正我的错误。我不知道我为什么误读了。