資源簡介
使用龍格庫塔法求解二階微分方程。可以設置仿真步長、初值,輕松更改函數
代碼片段和文件信息
#include
#include
int?main()
{??
double?timet[1000]y[1000]z[1000]h;?
int?y0=0z0=0;
time=10;
t[0]=0;
y[0]=y0;
z[0]=z0;
h=0.01;
functionA(t?y?z);
functionB(t?y?z);
RungeKutta(timey0?z0?h?*t?*y?*z?(*functionA)(tyz)(*functionB)(tyz));
}
int?RungeKutta(double?timedouble?y0double?z0double?hdouble?*tdouble?*ydouble?*zdouble?(*functionA)(doubledoubledouble)double?(*functionB)(doubledoubledouble))
???{
double?k11k21k12k22k13k23k14k24;
int?i;
time=10;//這里設置仿真步長及初值?
t[0]=0;
y[0]=y0;
z[0]=z0;
h=0.01;
for(i=0;i<(time/h+1);i++)
{
t[i+1]=t[i]+h;?
k11=h*functionA(t[i]y[i]z[i]);?
k21=h*functionB(t[i]y[i]z[i]);
評論
共有 條評論