ZKX's LAB

python龙格库塔随机微分方程 龙格-库塔方法求解三阶常微分方程

2020-07-21知识11

用 四阶龙格库塔 解三阶微分方程 公式和程序 初值给的不够啊.不仅要给y,还要给y的一阶导和二阶导.否则数值解没法弄.理论解的话,可能还可以含有一些系数.在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存function DYDt=zhidao_amanm(t,Y)y=Y(1);dydt=Y(2);d2ydt2=Y(3);DYDt=[Y(2);Y(3);(10-10*y-dydt-0.11d2ydt2)/0.001];在Matlab命令行下面输入:t_start=0;t_end=1;yy0=[0.1;0;0];初值[t,y]=ode45('zhidao_amanm',[0,t_end],yy0);plot(t,y(:,1));xlabel('t');ylabel('y')y(end,1)得到的结果:ans=1.0056用昨天给的C代码计算出来的结果是:1.005630用四阶龙格-库塔求微分方程 fun=(s,f)10./(s.^4+8*s.^3+36*s.^2+40*s+10);s0=0;send=1;ds=0.001;s=s0:ds:send;f=0;初值i=1;for ss=s(1:end-1)k1=fun(ss,f(i));k2=fun(ss+ds/2,f(i)+ds/2*k1);k3=fun(ss+ds/2,f(i)+ds/2*k2);k4=fun(ss+ds,f(i)+ds*k3);f(i+1)=f(i)+ds/6*(k1+2*k2+2*k3+k4);i=i+1;endplot(s,f);龙格库塔求解微分方程组 龙格库塔方法求微分方程的初值问题的前提是初值已知,但请问对给定的一个微分方程如何确定一个初值呢? 方程是实际应用是列出来的,列方程的过程要得到一个初值是不难的各种物理测量都可以应用比如要列微分方程求某物体的运动轨迹,完全可以人为的设定物体在零时刻处于零位置龙格库塔求解微分方程组 只要理解了龙格库塔,这就很容易了。定义函数,f=func(x,y)if y(1)>;126,f=[f1(y(1),y(2)),f2(y(1),y(2))];elsef=[g1(y(1),y(2)),g2(y(1),y(2))];end然后就简单了什么是微分方程的龙格库塔数值方法 龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。该算法是构建在数学支持的基础。

#微分方程#龙格库塔法#微分

随机阅读

qrcode
访问手机版