Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Fortran 95循环嵌套(初学者)_Loops_Fortran_Nested Loops_Fortran95 - Fatal编程技术网

Loops Fortran 95循环嵌套(初学者)

Loops Fortran 95循环嵌套(初学者),loops,fortran,nested-loops,fortran95,Loops,Fortran,Nested Loops,Fortran95,我是fortran 95新手,我正在努力掌握嵌套循环。下面是一个带有嵌套循环的小代码。内循环是割线法,它计算函数“Z+X1**2-612”的根,并通过迭代将其保存为X0。ISTEP是它所花费的迭代次数。这个循环本身是有效的。现在我想对各种“Z”重复这个循环。例如,从300到360,增量为10 如果我运行这段代码,Z将在300到360之间变化,但我会继续得到X0为300(即312的平方根) 有没有人有过嵌套循环的经验(不一定是割线方法,因为这个内部循环是有效的),可以告诉我为什么我打印出300到3

我是fortran 95新手,我正在努力掌握嵌套循环。下面是一个带有嵌套循环的小代码。内循环是割线法,它计算函数“Z+X1**2-612”的根,并通过迭代将其保存为X0。ISTEP是它所花费的迭代次数。这个循环本身是有效的。现在我想对各种“Z”重复这个循环。例如,从300到360,增量为10

如果我运行这段代码,Z将在300到360之间变化,但我会继续得到X0为300(即312的平方根)

有没有人有过嵌套循环的经验(不一定是割线方法,因为这个内部循环是有效的),可以告诉我为什么我打印出300到360,但是X0好像Z从不从300改变一样?我浏览了论坛,发现一些类似的问题,变量声明放错了位置,但在我的案例中,这似乎不是问题所在

下面是我的密码,希望有人能帮我。我开始学习编程有点老了,但我想永远不会太晚

PROGRAM DOLOOP2

 IMPLICIT NONE
  INTEGER :: ISTEP,Z
  REAL :: A,B,DL,DX,X0,X1,D,X2

  DL = 1.0E-06 
  A  = 10 !LOWER GUESS
  B  = 20 !UPPER GUESS
  DX = (B-A)/10.0 !STEPSIZE
  X0 = (A+B)/2.0 
  ISTEP = 0 !first iteration
  X1 = X0+DX

do Z=300,360,10
DO WHILE (ABS(DX).GT.DL)
    D  = (Z+X1**2-612)-(Z+X0**2-612)
    X2 = X1-(Z+X1**2-612)*(X1-X0)/D
    X0 = X1
    X1 = X2
    DX = X1-X0
    ISTEP = ISTEP+1
END DO
print *,'temperature=',Z,', Xzero= ',X0,'iterations=',ISTEP
END DO

END PROGRAM DOLOOP2

在重做循环之前,是否需要对内部循环重复一些初始化?i、 例如,重新定位到第一个环路内,在第二个环路之前。例如,第一次执行内部循环将更改
dx
的值,这将影响该循环的第二次执行。

谢谢M.S.B。!它做了我现在想要它做的事!我得学着怎么玩它!