主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

求解微分方程

在具有或不具有初始条件的情况下使用 dsolve 函数以解析方式求解微分方程。要求解微分方程组,请参阅Solve a System of Differential Equations

一阶线性 ODE

求解下列微分方程。

dydt=ty.

首先,通过使用 syms 创建符号函数 y(t),来表示 y

syms y(t)

使用 == 定义该方程,并使用 diff 函数表示微分。

ode = diff(y,t) == t*y
ode(t) = 

t y(t)=ty(t)

使用 dsolve 求解该方程。

ySol(t) = dsolve(ode)
ySol(t) = 

C1et22

求解具有条件的微分方程

在上一个解中,由于未指定条件,因此出现了常量 C1。求解具有初始条件 y(0) == 2 的方程。dsolve 函数用于求满足条件的 C1 值。

cond = y(0) == 2;
ySol(t) = dsolve(ode,cond)
ySol(t) = 

2et22

如果 dsolve 无法求解方程,则尝试以数值方式求解方程。请参阅Solve a Second-Order Differential Equation Numerically

具有初始条件的非线性微分方程

求解具有初始条件的下列非线性微分方程。该方程有多个解。

(dydt+y)2=1,y(0)=0.

syms y(t)
ode = (diff(y,t)+y)^2 == 1;
cond = y(0) == 0;
ySol(t) = dsolve(ode,cond)
ySol(t) = 

(e-t-11-e-t)

具有初始条件的二阶 ODE

求解具有两个初始条件的下列二阶微分方程。

d2ydx2=cos(2x)-y,y(0)=1,y(0)=0.

定义方程和条件。第二个初始条件涉及 y 的一阶导数。通过创建符号函数 Dy = diff(y) 表示该导数,然后使用 Dy(0)==0 定义条件。

syms y(x)
Dy = diff(y);

ode = diff(y,x,2) == cos(2*x)-y;
cond1 = y(0) == 1;
cond2 = Dy(0) == 0;

求解 yode。使用 simplify 函数简化解。

conds = [cond1 cond2];
ySol(x) = dsolve(ode,conds);
ySol = simplify(ySol)
ySol(x) = 

1-8sin(x2)43

具有初始条件的三阶 ODE

求解具有三个初始条件的下列三阶微分方程。

d3udx3=u,u(0)=1,u(0)=-1,u(0)=π.

由于初始条件包含一阶和二阶导数,因此请创建两个符号函数 Du = diff(u,x)D2u = diff(u,x,2) 以指定初始条件。

syms u(x)
Du = diff(u,x);
D2u = diff(u,x,2);

创建方程和初始条件,并对其求解。

ode = diff(u,x,3) == u;
cond1 = u(0) == 1;
cond2 = Du(0) == -1;
cond3 = D2u(0) == pi;
conds = [cond1 cond2 cond3];

uSol(x) = dsolve(ode,conds)
uSol(x) = 

πex3-e-x2cos(3x2)π3-1-3e-x2sin(3x2)π+13

更多 ODE 示例

下表显示了微分方程及其 Symbolic Math Toolbox™ 语法的示例。

微分方程

使用 Symbolic Math Toolbox 的命令

dydt+4y(t)=e-t,y(0)=1.

>> syms y(t)

>> ode = diff(y)+4*y == exp(-t);

>> cond = y(0) == 1;

>> ySol(t) = dsolve(ode,cond)

ySol(t) =

exp(-t)/3 + (2*exp(-4*t))/3

2x2d2ydx2+3xdydx-y=0.

>> syms y(x)

>> ode = 2*x^2*diff(y,x,2)+3*x*diff(y,x)-y == 0;

>> ySol(x) = dsolve(ode)

ySol(x) =

C1/(3*x) + C2*x^(1/2)

艾里方程。

d2ydx2=x y(x).

>> syms y(x)

>> ode = diff(y,x,2) == x*y;

>> ySol(x) = dsolve(ode)

ySol(x) =

C1*airy(0,x) + C2*airy(2,x)

皮瑟级数解。

(x2+1)d2ydx2-2xdydx+y=0.

>> syms y(x) a

>> ode = (x^2+1)*diff(y,x,2)-2*x*diff(y,x)+y == 0;

>> Dy = diff(y,x);

>> cond = [Dy(0) == a; y(0) == 5];

>> ySol(x) = dsolve(ode,cond,ExpansionPoint=0)

ySol(x) =

- (a*x^5)/120 - (5*x^4)/24 + (a*x^3)/6 - (5*x^2)/2 + a*x + 5

另请参阅

| | | |

主题