用matlab解微分方程
研究了使用matlab如何解微分方程。
考虑如下微分方程。
{˙x=−by˙y=−ax,{x(0)=x0y(0)=y0其解为
{x=(√ax0+√by0)e−√abt+(√ax0−√by0)e√abt2√ay=(√ax0+√by0)e−√abt−(√ax0−√by0)e√abt2√b用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√abt(ax0−√aby0)+e−√abt(ax0+√aby0)2ay=e−√abt(ax0+√aby0)−e√abt(ax0−√aby0)2√ab和用手算的结果一样,也就是说用MATLAB可以解代数微分方程。