用matlab解微分方程

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

考虑如下微分方程。

{˙x=by˙y=ax,{x(0)=x0y(0)=y0

其解为

{x=(ax0+by0)eabt+(ax0by0)eabt2ay=(ax0+by0)eabt(ax0by0)eabt2b

用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=eabt(ax0aby0)+eabt(ax0+aby0)2ay=eabt(ax0+aby0)eabt(ax0aby0)2ab

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