速度verlet算法c ++

时间:2016-10-14 02:48:15

标签: c++ arrays

我尝试使用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;
    }
}

1 个答案:

答案 0 :(得分:0)

... h2*gx;

h2doublegx是一个数组。显然,您不能将单个double值乘以数组。这是一个错误,而这正是编译器的错误消息所说的。

这不是唯一出现此错误的行。

你可能想在这里写gx[i],在下一行写gy[i]