我尝试使用verlet算法获取汽车下坡的位置和速度。但是我一直在
错误:类型无效的操作数' double'并且'加倍[(((sizetype)(((ssizetype)n)+ -1))+ 1)]'到二元'运算符*' |
为什么会这样?
#include <iostream>
#include <cmath>
#include <fstream>
#include <iomanip>
int n=100;
int m=100;
double const gx=0;
double const gy=-9.8;
using namespace std;
int main()
{
int i;
double t[n], x[n], y[n], r[n], vx[n], vy[n], gx[n], gy[n];
double h = 2.0/(n-1), h2=h*h/2, r2, r3;
//double t[0]=0,x[0]=0,y[0]=20;
//double r[0]=x[0],vx[0]=0,vy[0]=0;
double ke[n], mass=1500;
t[0]=0;
x[0]=0;
y[0]=20;
r[0]=x[0];
vx[0]=0;
vy[0]=0;
ke[0]=0;
for(i=0; i<n-1; i++){
t1=t[0]+h;
x[i+1]=x[i]+h*vx[i]+h2*gx;
y[i+1]=y[i]+h*vy[i]+h2*gy;
r2=x[i+1]*x[i+1]+y[i+1]*y[i+1];
r[i+1] = sqrt(r2);
r3=r2*r[i+1];
vx[i]=vx[i]+h*gx/2;
vy[i]=vy[i]+h*gy/2;
cout << t[i+1] << x[i+1] << y[i+1] << r[i+1] << vx[i] << vy[i] << endl;
}
}
答案 0 :(得分:0)
... h2*gx;
h2
是double
。 gx
是一个数组。显然,您不能将单个double
值乘以数组。这是一个错误,而这正是编译器的错误消息所说的。
这不是唯一出现此错误的行。
你可能想在这里写gx[i]
,在下一行写gy[i]
。