我正在尝试使用此程序对X(i + 1)= X(i)* 50进行迭代。编译后,代码的输出不是预期的结果。例如,X1的值假设为500,X0 = 10。但在这种情况下,它产生了0.我做错了什么。
program error
implicit none
integer :: i
real*8,dimension(4) :: X
real*8 :: X0
X0=10
do i=0,3
X(i+1)=(50.0d0)*X(i)
write(*,*), i, X(i+1)
end do
end program error
答案 0 :(得分:1)
看起来好像已经分配了X0,但从未在计算中使用过。不应该有一条线路将X0分配给X(1)吗?或者更清楚:X0与X(1)不同。另外,fortran中的数组的默认索引从1开始,因此循环中使用的索引不正确。
program error
implicit none
integer :: i
real*8,dimension(5) :: X <-- Extend by one element
real*8 :: X0
X0=10
X(1) = X0;
do i = 1,4 <-- Important!
X(i+1)=(50.0d0)*X(i)
write(*,*), i, X(i+1)
end do
end program error