函數 :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)