我想用一组二阶方程模拟粒子的运动 等式是
d2x/dt2 = 1 + dy/dt + dz/dt
d2y/dt2 = 1 + dx/dt + dz/dt
d2z/dt2 = 1 + dx/dt + dy/dt
向量V
为(dx/dt dy/dt dz/dt)
,X
为(x y z)
,
V = [0 0 0]
,X = [0 0 0]
最初
我将其实现为下面的一个ODE的C代码 CODE;
double X_function(double a[], double t, double at[],double b[],double c[]) {
//double yt, zt;
at[0] = a[0];
at[1] = 1 + b[0] + c[0];
double F = at[1];
return F;
}
我需要帮助了解如何在这种情况下使用R-K
答案 0 :(得分:1)
你有一个等式
x''=F(x,x')
你重写为一阶系统
x' = v
v' = F(x,v)
将这个耦合的六维系统实现为一个功能
void derivs(double u[], double t, double du[]) {
int j,k;
for(k=0; k<3; k++) {
du[k] = u[3+k];
du[3+k] = 1;
for(j=0;j<3; j++)
if(j!=k) du[3+k] += u[j]
}
}
然后你可以以一般形式为一阶系统实现Runge-Kutta方法。