方程2:\( \mathrm{y}''=\mathrm{\mu y}'+\text{y,初值y}\left( 0 \right) =1,\mathrm{y}'\left( 0 \right) =0 \)
syms y(x) mu; eqn = diff(y,2) == mu*diff(y)+y; cond1 = y(0) == 1; Dy = diff(y); cond2 = Dy(0) == 0; dsolve(eqn,cond1, cond2)ans =
ex μ2-μ2+42 μ+μ2+42 μ2+4-ex μ2+μ2+42 μ-μ2+42 μ2+4
方程组1:
y1=y2y2=-y1,初值y10=1y20=1 syms y1(x) y2(x) eqn1 = diff(y1) == y2; eqn2 = diff(y2) == -y1; cond1 = y1(0) == 1; cond2 = y2(0) == 1; res = dsolve(eqn1,eqn2,cond1,cond2); res.y12 cos(x-π4)
2 cos(x+π4)
方程组2:\( \begin{cases} \mathrm{y}_1=\mathrm{a}-\left( \mathrm{b}+1 \right) \mathrm{y}_1+{\mathrm{y}_1}^2\mathrm{y}_2\\ \mathrm{y}_2'=\mathrm{by}_1-{\mathrm{y}_1}^2\mathrm{y}_2\\ \end{cases}\text{,初值}\begin{cases} \mathrm{y}_1\left( 0 \right) =3\\ \mathrm{y}_2\left( 0 \right) =4\\ \end{cases} \)
syms y1(x) y2(x) a b eqn1 = diff(y1) == a-(b+1)*y1+y1^2*y2; eqn2 = diff(y2) == b*y1 - y1^2*y2; dsolve(eqn1,eqn2) % 警告: Unable to find symbolic solution.比较复杂的方程无法求出解析解,此时需要寻求数值解
常微分方程与常微分方程组的数值解 ode45(函数句柄,积分区间,初值)基本思想:
例如y' =2x,可以转化为(y[n]一y[n-1])/△x=2x→ y[n]= y[n-1]+2x△x,然后通过迭代的方式来求解y。
也因此,数值解法必须提供初值。
常微分方程(组)求解solver = ode45, ode23, ode113, ode15s, ode23s
ode45: 4-5阶Runge-Kutta法
ode23: 2-3阶Runge-Kutta法
ode113: Adams-Bashforth-Moutlon PECE算法
ode15s: 后向差分
ode23s: 修正的二阶Rosenbrock公式
方程1: \( y'=2x,初值y(0)=10,积分区间[0,10] \)
% 匿名函数必须同时接受两个输入(x,y),计数其中一个输入未使用也是如此 f = @(x,y)2*x; tspan = [0,10]; % 积分区间 y0 = 10; [x,y] = ode45(f,tspan,y0); plot(x,y)方程2:\(
y''=u(1-y^2)y'+y,初值y(0)=1,y'(0)=0,积分区间[0,20]
\)
\(
首先转化为MATLAB标准求解格式:令y_1=y,y_2=y'\text{,则转化为}
\\
\begin{cases}
\mathrm{y}_1'=\mathrm{y}_2\\
\mathrm{y}_2'=\mathrm{\mu}\left( 1-{\mathrm{y}_1}^2 \right) \mathrm{y}_2+\mathrm{y}_1\\
\end{cases}
\)