huzhaolin 发表于 2006-12-22 22:55

一道微分方程的难题!(动力学微分方程求解)

x''+a*y''+c*x'+d*(x*x+y*y)+e=0;
y''+k*x''+f*y'+g*y+h=0;
用四阶Runge-Kutta法解此微分方程组,matlab程序如何表示该方程组?我令u1=x,u2=y,u3=x',u4=y',来表示方程不行.大家有什么好的方法来解决这个问题吗?
u=;
du=;
du=[u3;
      u4;
        ....;(不知怎么表示啊)
       ....;
   ]

shenyongjun 发表于 2006-12-22 23:32

很简单的Matlab问题啊。
先进行代数处理,
设x''+a*y''+c*x'+d*(x*x+y*y)+e=0;为方程1,
y''+k*x''+f*y'+g*y+h=0;为方程2,
方程1乘以k再减去方程2得到方程3(其中最高阶数为(a*k-1)*y",其它为一阶导数或者常数项),
然后方程2乘以a再减去方程1得到方程4(其中最高阶数为(a*k-1)*x",其它为一阶导数或者常数项),
方城3和方程4构成的微分方程组与原微分方程组等价,求之即可。


当然,以上处理的前提是a、k不等于0,如果它们等于0就可以直接数值积分了

supervb 发表于 2006-12-23 09:19

如果方程组里的系数不能确定的话,建议用隐函数格式展开迭代,要不就用差分方程离散化后再迭代。
页: [1]
查看完整版本: 一道微分方程的难题!(动力学微分方程求解)