通过函数dsolve可以对微分方程求解,该函数的语法格式为[大谦MATLAB,dqmatlab点com]
r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v')
r = dsolve('eq1','eq2',...,'cond1','cond2',...,'v')
输入参数eq1, eq2,…表示微分方程,v为独立变量,cond1,cond2,…表示边界条件和(或)初始条件。默认的独立变量是t,用户也可以使用别的变量来代替t,只要把别的变量放在输入变量的最后即可。D代表微分算子,即d/dt, D后面所跟的数字代表几阶微分,如D2代表d^2/dt^2。跟在微分算子后面的字母是被微分的变量,如D3y代表对y(t)的三阶微分。注意,在符号变量中不能再出现字母D。初始/边界条件可以用这样的形式给出:y(a)=b'或Dy(a) = b。此处的y是被微分的变量,a和b是常量。如果初始条件的个数少于被微分的变量的个数,则解中会出现C1、C2这样的不定常数。
函数的输出结果可能存在如下3种情况:
(1)有一个方程和一个输出,则返回符号向量中非线性方程的联立解。
(2)有多个方程与相同个数的输出,则返回的结果是按字母顺序排序的,并且分配给输出参数。
(3)有多个方程和一个输出,则返回解的结构。
如果函数找不到显式解,则会试图计算隐式解。当返回隐式解时,会给出警告。如果既找不到显式解,也找不到隐式解,则给出警告信息并返回一个空的sym。此时,可以用MATLAB中的函数ode23或ode45求数值解。在一些有非线性方程的情况下,输出结果可能与更低阶的微分方程或积分等价。
求解微分方程 \(\frac{dy}{dx}=1+{y}^{2}\) 的通解。y为应变量,t为默认的自变量。
解 输入下面的命令行
>> dsolve('Dy=1+y^2')
ans =
tan(t+C1)
即为所求的通解。
下面指定初始条件y|x=0=1。
>> y = dsolve('Dy=1+y^2','y(0)=1')
y =
tan(t+1/4*pi)
求解2阶微分方程 \(\frac{{d}^{2}y}{d{x}^{2}}=\operatorname{cos}{(}2x)-y\)。有两个初始条件,即y|x=0=1,\(\frac{dy}{dx}{\left| \right.}_{x=0}=0\)。
解 在命令窗口中输入下面的命令行:
>> y = dsolve('D2y=cos(2*x)-y','y(0)=1','Dy(0)=0', 'x');
>> simplify(y)
ans =
1 - (8*sin(x/2)^4)/3