函数 :dsolve
格式 :r = dsolve('eq1,eq2,…','cond1,cond2,…','v')
说明 :对给定的常微分方程(组)eq1,eq2,…中指定的符号自变量 v,与给定的边界条件和初始条件 cond1,cond2,….求符号解(即解析解)r;若没有指定变量 v,则缺省变量为 t;在微分方程(组)的表达式 eq 中,大写字母 D 表示对自变量(设为 x)的微分算子:D=d/dx,D2=d2/dx2,…。微分算子 D 后面的字母则表示为因变量,即待求解的未知函数。
初始和边界条件由字符串表示:y(a)=b,Dy(c)=d,D2y(e)=f,等等,分别表示;若边界条件少于方程(组)的阶数,则返回的结果 r 中会出现任意常数 C1,C2,…;
dsolve 命令最多可以接受 12 个输入参量(包括方程组与定解条件个数,当然我们可以做到输入的方程个数多于 12 个,只要将多个方程置于一字符串内即可)。若没有给定输出参量,则在命令窗口显示解列表。若该命令找不到解析解,则返回一警告信息,同时返回一空的 sym 对象。这时,用户可以用命令 ode23 或 ode45 求解方程组的数值解。
【例 1】求 的解。
matlab代码:
S=dsolve('Dx=y,Dy=-x')
disp([blanks(12),'x',blanks(21),'y']),disp([S.x,S.y])
运行结果:
S =
x: [1x1 sym]
y: [1x1 sym]
x y
[ -C1*cos(t)+C2*sin(t), C1*sin(t)+C2*cos(t)]
【例 2】图示微分方程 的通解和奇解的关系。
matlab 代码:
y=dsolve('(Dy)^2-x*Dy+y=0','x')
clf,hold on,
ezplot(y(1),[-6,6,-4,8],1)
cc=get(gca,'Children');
set(cc,'Color','r','LineWidth',5)
for k=-2:0.5:2
ezplot(subs(y(2),'C1',k),[-6,6,-4,8],1);
end
hold off,title('\fontname{ 隶书}\fontsize{16} 通解和奇解')
运行结果:
y =
1/4*x^2
-C1^2+x*C1
【例 3】求解两点边值问题:。
%matlab代码:
y=dsolve('x*D2y-3*Dy=x^2','y(1)=0,y(5)=0','x')
%运行结果:
y =
31/468*x^4-1/3*x^3+125/468
画图:
ezplot(y,[-1,6])
hold on
plot([1,5],[0,0],'.r','MarkerSize',20)
text(1,1,'y(1)=0')
text(4,1,'y(5)=0')
title(['x*D2y-3*Dy=x^2',', y(1)=0,y(5)=0'])
hold off
备注
>>D1 = dsolve('D2y – Dy =exp(x)')
>>D2 = dsolve('t*D2f = Df*log((Dy)/t)')
>>D3 = dsolve('(Dy)^2 + y^2 = 1','s')
>>D4 = dsolve('Dy = a*y', 'y(0) = b') % 带一个定解条件
>>D5 = dsolve('D2y = -a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0') % 带两个定解条件
>>[x,y] = dsolve('Dx = y', 'Dy = -x') % 求解线性微分方程组
>>[u,v] = dsolve(‘Du=u+v,Dv=u-v’)
计算结果为:
D1 =
-exp(x)*t+C1+C2*exp(t)
D2 =
y(t)=Int(exp(t*diff(f(t),`$`(t,2))/diff(f(t),t))*t,t)+C1
D3 =
[ -1]
[ 1]
[ sin(s-C1)]
[ -sin(s-C1)]
D4 =
b*exp(a*t)
D5 =
cos(a*t)
x =
cos(t)*C1+sin(t)*C2
y =
-sin(t)*C1+cos(t)*C2
u =
1/2*C1*exp(2^(1/2)*t) - 1/4*C1*2^(1/2)*exp(-2^(1/2)*t) + 1/4*C1*2^(1/2) *exp (2^(1/2)*t) +
1/2*C1*exp(-2^(1/2)*t) - 1/4*C2*2^(1/2)*exp(-2^(1/2)*t) + 1/4*C2 *2^(1/2)*exp(2^(1/2)*t)
v =
-1/4*C1*2^(1/2)*exp(-2^(1/2)*t)+1/4*C1*2^(1/2)*exp(2^(1/2)*t)+1/2*C2*exp
(2^(1/2)*t)+1/4*C2*2^(1/2)*exp(-2^(1/2)*t)-1/4*C2*2^(1/2)*exp(2^(1/2)*t)+
1/2*C2*exp(-2^(1/2)*t)