Fortran数组无法分类的声明

时间:2015-11-11 23:23:08

标签: fortran gfortran

  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遵循类似的结构,看起来它们没有任何问题。

1 个答案:

答案 0 :(得分:1)

似乎错误信息来自太多正确的括号")"适用于k2k3。另一个错误是数组xy需要声明为x(0:200)y(0:200),因为您正在访问x(0)y(0)。如果以上两点是固定的,代码应该正常工作。

正如附注所示,我真的建议放置implicit none,这对于检测潜在的错误非常有用,并且在浮点算术中使用浮点文字(如2.0而不是2)({{1除外) }})。在下面的代码中,我将分析solution与您的RK4结果进行了比较,结果似乎彼此一致。

x**2