MATLAB如何求解符号微分方程:dsolve函数
在MATLAB中,用大写字母D表示导数。例如,Dy表示y',D2y表示y",Dy(0)=5表示y' (0)=5。D3y+D2y+Dy-x+8=0表示微分方程y'''+y"+y'-x+8=0。符号常微分方程求解可以通过函数dsolve来实现,其调用格式如下。
·dsolve(e,c,v):该函数求解常微分方程e在初值条件c下的特解。参数v描述方程中的自变量,省略时按默认原则处理,若没有给出初值条件c,则求方程的通解。
·dsolve(e1,e2,…,en,c1,…,cn,v1,…,vn):该函数求解常微分方程组e1,…,en在初值条件c1,…,cn下的特解,若不给出初值条件,则求方程组的通解,v1,…,vn给出求解变量。若边界条件少于方程的阶数,则返回的结果中会出现任意常数C1,C2,…。
例题 符号微分方程的求解。
>> dsolve('Dx=-a*x')
ans =
C2/exp(a*t)
>> x=dsolve('Dx=-a*x','x(0)=1','s')
x =
1/exp(a*s)
>> y=dsolve('(Dy)^2+y^2=1','y(0)=0')
y =
cosh((pi*i)/2 + t*i)
cosh((pi*i)/2 - t*i)
>> s=dsolve('Df=f+g','Dg=-f+g','f(0)=1','g(0)=2')
s =
g: [1x1 sym]
f: [1x1 sym]
>> w=dsolve('Dw=w^2*(1-w)')
w =
0
1
1/(lambertw(0, -C23/exp(t + 1))+ 1)
>> y3=dsolve('Dx=4*x-2*y','Dy=2*x-y','t')
y3 =
y: [1x1 sym]
x: [1x1 sym]
>> [x y]=dsolve('Dx=4*x-2*y','Dy=2*x-y','t')
x =
C29/2 + 2*C30*exp(3*t)
y =
C29 + C30*exp(3*t)
dsolve命令最多可以接受12个输入参量(包括方程组与定解条件个数)。若没有给定输出参量,则在命令窗口显示解列表。若该命令得不到解析解,则返回一个警告信息,同时返回一个空的sym对象。这时,用户可以用命令ode23或ode45求解方程组的数值解。