在Fortran中进行特定迭代后打印结果

时间:2014-04-26 19:52:55

标签: fortran

我正在使用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输出?

我希望这很清楚。谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

if (mod(k,10)==0) WRITE...

只有在if条件k可以被10整除时,才能使用{{1}}条件中的mod function(余数或模数)来执行写入。