迭代循环不一致,完全迭代

iterated loop not consistently fully iterating

提问人:Zander leigh 提问时间:11/17/2023 最后编辑:francescalusZander leigh 更新时间:11/19/2023 访问量:49

问:

我正在尝试编写一个步长为 175 的迭代循环,但每次运行程序时,循环都会以不同的长度迭代。每次我运行时,它都会按步长增加最终迭代。不知道发生了什么。

对于上下文,我正在将 ODE 与 Runge-Kutta 子程序集成。

do i= 175,17500,175
call rkf45(real(i,wp),ts,te,y,esp1,esp2,h,hmin,175._wp,dy,flag,neqn)
q(i)=y(1)
ts=te
te=te+175.0_wp
hmax=te-ts
write(*,*)i,q(i)
enddo

连续 3 次运行的最终输出

11200   257478.60158947381
13650   431868.79246271809
17500   808062.17349709466

不知道要尝试什么,尝试在前后将 i 初始化为 0。

福特兰

评论

1赞 Ian Bush 11/17/2023
如果没有一个最小的、可重复的例子,恐怕不可能回答这个问题。我唯一在黑暗中完全刺伤的是询问当您在打开所有运行时检查的情况下编译和运行它时会发生什么 - 使用 gfortran compile with -fcheck=all -g
0赞 Vladimir F Героям слава 11/17/2023
我们真的需要一段完整的代码。展示如何声明变量以及如何定义其值。告诉我们子程序的来源。它可能是一个众所周知的库,但请准确说明您从哪里得到它。rkf45
0赞 steve 11/18/2023
您所描述的内容通常是使用未初始化的变量或写入越界数组位置的结果。如果您使用的是 gfortran,请尝试添加选项。-Wall -fcheck=all -ffpe-trap=invalid,zero

答: 暂无答案