Compiler errors Fortran 77中的“意外数组引用”

Compiler errors Fortran 77中的“意外数组引用”,compiler-errors,fortran77,Compiler Errors,Fortran77,我对编程比较陌生,目前我正在尝试使用Fortran 77编写一个程序,该程序将使用龙格-库塔方程求解方法来确定特定时间值下球形球的温度。不管怎样,这个方程很好,似乎没有引起任何问题,它似乎是RK方法本身的编程 当我告诉它编译时,它会重复出现有关意外数组引用的错误。如果有人能给我一些关于我哪里出错的建议,我将不胜感激。我将在下面发布代码和结果: PROGRAM RKSubroutine IMPLICIT NONE DIMENSION t(3), y(3) func=(-2.206

我对编程比较陌生,目前我正在尝试使用Fortran 77编写一个程序,该程序将使用龙格-库塔方程求解方法来确定特定时间值下球形球的温度。不管怎样,这个方程很好,似乎没有引起任何问题,它似乎是RK方法本身的编程

当我告诉它编译时,它会重复出现有关意外数组引用的错误。如果有人能给我一些关于我哪里出错的建议,我将不胜感激。我将在下面发布代码和结果:

  PROGRAM RKSubroutine
  IMPLICIT NONE
  DIMENSION t(3), y(3)

  func=(-2.2067E-12)*((y**4)-(81E8));
  y0=1200;
  h1=240;
  a=0;
  b=480;

  func is name of function to be evaluated
  a & b are the limits of integration
  y0 is the initial condition
  h1 is the stepsize    

  t=[a];
  y=[y0];
  i=1;

  while t(i)<b

  h=h1
  k1=feval(func,t(i), y(i));
  k2=feval(func,t(i)+h/2,y(i)+k1*h/2);
  k3=feval(func,t(i)+h/2,y(i)+k2*h/2);
  k2=feval(func,t(i)+h,y(i)+k3*h);

  y1=y(i)+(k1+2*k2+2*k3+k4)*h/6;

  i=i+1;
  t(i)=t(i-1)+h1;

  stop
  end
根据下面bradys的建议进行了一些修改后,我现在只得到了错误,似乎与t的维数无关:

  `In file RK.f:21

  while t(i)<b
         1
  Error: Unexpected array reference at (1)

非常感谢

看起来您没有声明任何变量。每个变量的类型由变量名的第一个字符声明。除非您显式地为变量指定维度或大小,否则它将被视为标量变量。由于您没有声明任何内容,编译器不知道t和y应该是数组,因此会出现意外的数组引用警告消息

如果不能确定它是否是Fortran 77中的标准,我强烈建议您使用隐式NONE。无论哪种方法,都要声明您使用的每个变量。在您的情况下,您需要使用适当的大小声明t和y:

DIMENSION t(n), y(n)

将n替换为表示实际大小的整数。请记住,如果访问数组超出范围,则程序的行为是未定义的。其中未定义通常意味着您的程序将崩溃。

您从哪里获得此代码的?这不是FORTRAN 77-你运行过简单的FORTRAN程序吗?再见,你好,彼得。我以前写过几个简单的F77程序,但这是我第一次尝试使用RK方法来解决问题。我在维基文章的帮助下编写了这段代码,这篇文章介绍了常见的四阶龙格-库塔方法——库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-库塔-!我现在已经消除了文件RK.f:21中的所有错误,而ti