我正在使用 Fortran90,但我对它不太熟悉。
在代码的某些地方,我想在 t0 和 tf 之间创建一个由 n 个线性等距点组成的数组,所以我尝试了这个:
t = t0+(/(i,i=0,n-1)/)*(tf-t0)/(n-1)
Run Code Online (Sandbox Code Playgroud)
这与以下内容相同:
do while(i<=n)
t(i) = i-1
i=i+1
end do
t = t*(tf-t0)/(n-1)+t0
Run Code Online (Sandbox Code Playgroud)
但是,如果 n 太大(n=2000001 或更大),则第一个选项不起作用。我收到错误:
forrtl: 严重 (170): 程序异常 - 堆栈溢出
这是为什么?我该怎么做才能使隐含的 do 循环适用于 n 大?
fortran ×1