0

我有问题如何将非常大的矩阵导入 fortran 6.5。例如,我的 .for 文件矩阵非常大 120 MB,矩阵以表格形式给出

  A(1,1)=691627.009959795*x(1)**2 - 3428.41117804251*x(1)*x(2) -
 # 156.91392014999*x(2)**2 + 428391.21915942*x(1)*x(3) - 953.4687530
 #88931*x(2)*x(3) + 66317.7918091961*x(3)**2 + 159956.172489745*x(1)
 #*x(4) - 427.609460294073*x(2)*x(4) + 49548.6129072796*x(3)*x(4) + 
 #9246.97185672321615*x(4)**2 - 34020.3929685886*x(1)*x(5) + 23.9104
 #515534*x(2)*x(5) - 10515.7437145023*x(3)*x(5) - 3939.86670772623

  A(1,2)=433427.009959795*x(1)**2 - 3444.41117804251*x(1)*x(2) -
 # 144.91392014999*x(2)**2 + 455391.21915942*x(1)*x(3) - 955.4687530
 #58931*x(2)*x(3) + 66317.7918091961*x(3)**2 + 159956.172489745*x(1)
 #*x(4) - 457.609460294073*x(2)*x(4) + 49548.6129072796*x(3)*x(4) + 
 #3246.97182321615*x(4)**2 - 14020.3929685886*x(1)*x(5) + 23.9104019
 #515534*x(2)*x(5) - 14515.7437145023*x(3)*x(5) - 3669.86670772623
 ...  

由于矩阵非常大,我可以将 1 MB 矩阵的一小部分复制/粘贴到 fortran 表中,所以在这种情况下,我必须在 120 个部分上分配 120MB 并复制/粘贴到 fortran 表中,并对所有部分求和。如何以这种完整形式从 fortran 调用或导入矩阵?

4

1 回答 1

2

看起来您正在采用一种选择不当的方法来解决这个问题。正如您在其中一条评论中所说,您正在 matlab 中生成这些方程,然后从那里将这些方程导出到 fortran 代码 - 大概是因为 matlab 中的(可能重复)评估太慢了。

更好的方法是让 matlab 生成系数,并以某种可移植形式将它们保存到磁盘,例如hdf5(matlab 和 fortran 可以读取和写入的快速可移植二进制格式)。然后编写一些 fortran 代码将系数导入到一些数组中,并使用这些数组来计算所需的矩阵元素。

于 2012-05-10T08:55:22.230 回答