compiler-errors - Fortran 77中的“Unexpected Array Re

我是编程的新手,目前正在尝试使用Fortran 77编写程序,该程序将使用Runge-Kutta方程求解方法来确定某个特定时间值的球形温度。无论如何,方程式很好,似乎没有引起任何问题,这似乎是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

在按照下面的布雷迪斯建议进行了一些修改之后,我现在仅收到错误,看来无论t的维值如何:
  `In file RK.f:21

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

非常感谢!

最佳答案

看来您没有声明任何变量。每个变量的类型由变量名称的第一个字符声明。并且,除非您为变量明确分配尺寸(或大小),否则它将被视为标量变量。由于您未声明任何内容,因此编译器不知道ty应该是数组(因此出现“意外数组引用”警告消息)。

我强烈建议您使用IMPLICIT NONE(如果可以的话)(不确定Fortran 77是否为标准)。无论哪种方式,始终声明您使用的每个变量。在您的情况下,您需要以适当的大小声明ty:

DIMENSION t(n), y(n)

您将n替换为代表实际大小的整数。请记住,如果您越界访问数组,程序的行为是不确定的。未定义通常意味着您的程序将崩溃。

关于compiler-errors - Fortran 77中的“Unexpected Array Reference”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4760335/

相关文章:

c++ - C++中的模板类

java - 找不到符号—符号: method lastIndexOf(java.lang.Stri

iphone - 清除所有目标/清空缓存后,iPhone生成错误

gcc - gcc从stdin读取gnu readline()的编译错误

function - CUDA FORTRAN : function gives different

c# - 添加动态评级控件时出现奇怪的编译问题

xcode - 使用Xcode测试为Objective-C++代码库设置单元

c++ - 有人如何定义数据类型,然后在数据类型定义之后立即在同一文件中包含的其他文件中使用它

c# - C#编译器使用CodeDomProvider的详细输出

c# - Visual C#中的奇怪编译错误