program rk4
real x(200), y(200), h, k1, k2, k3, k4
integer i
read*,x(0),y(0),h
do i=0,10
k1=x(i)-y(i)+2
x(i+1)=x(i)+h
k2=(x(i)+h/2)-(y(i)+(h/2)*k1))+2
k3=(x(i)+h/2)-(y(i)+(h/2)*k2))+2
k4=(x(i+1))-(y(i)+h*(k3))+2
y(i+1)=y(i)+(h/6)*(k1+2*k2+2*k3+k4)
print*, 'x=', x(i+1), 'y=', y(i+1)
enddo
end
第9行和第10行:
k2=(x(i)+h/2)-(y(i)+(h/2)*k1))+2
k3=(x(i)+h/2)-(y(i)+(h/2)*k2))+2
我在(1)"得到" Unclassifiable statement,(1)指向k2和k3。我无法看到我做错了什么,因为k1和k4遵循类似的结构,看起来它们没有任何问题。
答案 0 :(得分:1)
似乎错误信息来自太多正确的括号")"适用于k2
和k3
。另一个错误是数组x
和y
需要声明为x(0:200)
和y(0:200)
,因为您正在访问x(0)
和y(0)
。如果以上两点是固定的,代码应该正常工作。
正如附注所示,我真的建议放置implicit none
,这对于检测潜在的错误非常有用,并且在浮点算术中使用浮点文字(如2.0而不是2)({{1除外) }})。在下面的代码中,我将分析solution与您的RK4结果进行了比较,结果似乎彼此一致。
x**2