【发布时间】:2018-10-18 07:51:57
【问题描述】:
我正在编写一个程序,它必须从文本文件中读取线性方程组 Ax=B 的augmented matrix (A|B),并将其存储到矩阵中以供以后求解。
我求解方程组的例程似乎有效,但我在读取文件本身时遇到了问题,这应该不会太难,但我现在很困惑。文本文件包含一个实数矩阵,其为N+1 条目宽(系数矩阵加上相应的独立项条目最后)和N 条目高。我的尝试(使用N=5 系统)是这样的:
OPEN(10,FILE="sistema.txt")
DO I=1,N
DO J=1,(N+1)
IF(J==(N+1)) THEN
READ(10,*) B(I)
ELSE
READ(10,*) A(I,J)
END IF
END DO
END DO
CLOSE(10)
A(1:N,1:n) 是一个实数数组,B(1:N) 也是一个实数数组(N 是用户输入的整数,用于在两种策略之间做出决定)。程序返回和文件结束错误,我尝试将循环的索引更改为 I=1,2 和 J=1,3 只是为了看看会发生什么,但它一直返回相同的 EoF 错误。只有I=1,2 和J=1,2 才会读取文件,并且除了四个条目之外的所有条目都保持不变。我不明白发生了什么。
txt文件的内容,如果有帮助的话:
10.0 1.0 2.0 3.0 4.0 12.0
1.0 9.0 -1.0 2.0 -3.0 -27.0
2.0 -1.0 7.0 3.0 -5.0 14.0
3.0 2.0 3.0 12.0 -1.0 -17.0
4.0 -3.0 -5.0 -1.0 15.0 12.0
【问题讨论】:
-
您应该真正向我们展示文件的外观。请不要将标签作为(Fortran)放入问题标题中,使单词成为标题的一部分。另外,我不知道 ampliated 是什么意思。
-
嗨,弗拉基米尔。我不小心把这个名字用西班牙语翻译为增强矩阵的字面意思。现在已经更正了。
-
好的,请出示您的文件。
-
完成。我尝试了更多方法,但似乎程序在读取第一列后到达文件末尾。
-
您的问题是每个
read都进入下一行。您需要使用单个读取语句读取每一行。类似read(..)a(i,:n),b(i)