用matlab解微分方程

研究了使用matlab如何解微分方程。

考虑如下微分方程。

{ x ˙ = − b y y ˙ = − a x , { x ( 0 ) = x 0 y ( 0 ) = y 0 \left\{\begin{matrix} \dot x = -by \\ \dot y = -ax \end{matrix}\right. ,\quad \left\{\begin{matrix} x(0) = x_0 \\ y(0) = y_0 \end{matrix}\right. {x˙=byy˙=ax,{x(0)=x0y(0)=y0

其解为

{ x = ( a x 0 + b y 0 ) e − a b t + ( a x 0 − b y 0 ) e a b t 2 a y = ( a x 0 + b y 0 ) e − a b t − ( a x 0 − b y 0 ) e a b t 2 b \left\{\begin{matrix} x = \frac{(\sqrt a x_0 + \sqrt b y_0)e^{-\sqrt{ab}t}+(\sqrt ax_0-\sqrt by_0)e^{\sqrt{ab}t}}{2\sqrt a} \\ y = \frac{(\sqrt a x_0 + \sqrt b y_0)e^{-\sqrt{ab}t}-(\sqrt ax_0-\sqrt by_0)e^{\sqrt{ab}t}}{2\sqrt b} \end{matrix}\right. x=2a (a x0+b y0)eab t+(a x0b y0)eab ty=2b (a x0+b y0)eab t(a x0b y0)eab t

用MATLAB代码来解这个微分方程,代码为

S1 = dsolve('Dx = -b*y', 'Dy = -a*x', 'y(0) = y0', 'x(0) = x0');
y = S1.y
x = S1.x

结果为

y =
 
(exp(-t*(a*b)^(1/2))*(a*x0 + y0*(a*b)^(1/2)))/(2*(a*b)^(1/2)) - (exp(t*(a*b)^(1/2))*(a*x0 - y0*(a*b)^(1/2)))/(2*(a*b)^(1/2))
 
 
x =
 
(exp(t*(a*b)^(1/2))*(a*x0 - y0*(a*b)^(1/2)))/(2*a) + (exp(-t*(a*b)^(1/2))*(a*x0 + y0*(a*b)^(1/2)))/(2*a)

把结果写成代数形式,为

{ x = e a b t ( a x 0 − a b y 0 ) + e − a b t ( a x 0 + a b y 0 ) 2 a y = e − a b t ( a x 0 + a b y 0 ) − e a b t ( a x 0 − a b y 0 ) 2 a b \left\{\begin{matrix} x = \frac{e^{\sqrt {ab}t}(ax_0 - \sqrt{ab}y_0) + e^{-\sqrt {ab}t }(ax_0 + \sqrt{ab} y_0) }{2a} \\ y = \frac{e^{- \sqrt {ab}t}(ax_0+ \sqrt{ab}y_0) - e^{\sqrt {ab}t }(ax_0- \sqrt{ab} y_0) }{2\sqrt{ab}} \\ \end{matrix}\right. x=2aeab t(ax0ab y0)+eab t(ax0+ab y0)y=2ab eab t(ax0+ab y0)eab t(ax0ab y0)

和用手算的结果一样,也就是说用MATLAB可以解代数微分方程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值