我正在使用Fortran迭代求解方程组,但不想在每次迭代后知道结果。我的实际系统要大得多,并且需要大约100,000次迭代才能获得解决方案,但请考虑这个执行100次迭代的简单示例。
PROGRAM ITER
DATA X1,X2,X3/.0,.0,.0/
DO 20 K = 1,100
X1 = 10+3*X2 - X3
X2 = (4 - 2*X1 - X3)/5.
X3 = (-13 + X1 - X2)/(-2.)
WRITE (*,10)K,X1,X2,X3
10 FORMAT (' ',I3,3(F8.1))
20 CONTINUE
END PROGRAM ITER
实际上,程序会在每次迭代后报告结果,但是,我想在每10次迭代后报告X1,X2和X3的值。
我已经尝试将嵌套的IF语句添加到DO循环中,但是我从编译器中收到错误。我想知道当K(迭代步骤)是10的倍数时是否可以打印X1,X2和X3的值。因此可以将K除以10然后每当结果是整数时,值X1,X2和X3输出?
我希望这很清楚。谢谢你的帮助。
答案 0 :(得分:4)
if (mod(k,10)==0) WRITE...
只有在if
条件k
可以被10
整除时,才能使用{{1}}条件中的mod function(余数或模数)来执行写入。