速度verlet算法c++
velocity verlet algorithm c++
我尝试使用verlet算法获得汽车下山的位置和速度。但是我总是得到
错误:类型'double'和'double [((sizetype)(((sizetype)n) + -1)) + 1)]'到二进制'operator*'的操作数无效|
为什么会发生这种情况?
#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;
}
}
... h2*gx;
h2
为double
。gx
为阵列。显然,您不能将单个double
值乘以一个数组。这是一个错误,而这正是编译器的错误信息所显示的。
并不是只有这一行出现了这个错误。
您可能想在这里写gx[i]
,在下一行写gy[i]
。
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- C++A*算法并不总是在路径中具有目标节点
- 排序算法c++
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 算法问题:查找从堆栈中弹出的所有序列
- 下面是排序算法O(n)吗
- KMP算法和LPS表构造的运行时间
- 为什么我的排序算法会更改数组值
- 求最大元素位置的分治算法
- 具有非整数边容量的最大流量的Dinic算法
- 到连接组件算法的问题(递归)
- STL算法函数在多个一维容器上的使用
- 读取最后一行代码算法 - c++ 时出现问题
- 括号更改 O(n) 算法
- std::unordered_map 搜索算法是如何实现的?
- 如何实现高效的算法来计算大型数据集的多个不同值?
- 如何在 Mac 上使用 c++17 并行标准库算法?