❝
歡迎關注「工科男的Maltab學習日誌」,採用Mardown文本編輯器編寫文章,全新排版升級,內容、代碼更簡潔,同時開通了視頻號,「工科男的日常」歡迎大家關注。 ——工科男
❞1 微分方程的解析解
求微分方程(組)的解析解命令:dsolve(『方程1』,『方程2』,…『方程n』,『初始條件',『自變量』)
記號: 在表達微分方程時,用字母D表示求微分,D2、D3等表示求高階微分.任何D後所跟的字母為因變量,自變量可以指定或由系統規則選定為確省。例如,微分方程
例1求
dsolve('Du=1+u^2','t')
結果:u = tan(t+c)
例2求
y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x')
結果為:
例3求微分方程組的通解。
[x,y,z]=dsolve('Dx=2*x-3*y+3*z','Dy=4*x-5*y+3*z','Dz=4*x-4*y+2*z', 't');
x=simple(x) % 將x化簡
y=simple(y)
z=simple(z)
結果為:
2 微分方程的數值解2.1 常微分方程的定義在生產和科研中所處理的微分方程往往很複雜且大多得不出一般解。而在實際上對初值問題,一般是要求得到解在若干個點上滿足規定精確度的近似值,或者得到一個滿足精確度要求的便於計算的表達式。因此,研究常微分方程的數值解法是十分必要的。
對常微分方程: 其數值解是指開始的若干離散的值處,求出準確值的近似值
2.2 建立數值解法的一些途徑設 可用以下離散化方法求解微分方程:
[1] 用差商代替導數若步長h較小,則有
故有公式:
此即歐拉法。
[2] 使用數值積分
對方程y'=f(x,y), 兩邊由x_到x_i+1積分,並利用梯形公式,有:
故有公式:實際應用時,與歐拉公式結合使用:對於已給的精確度 當滿足 時, 取 然後繼續下一步 的計算。此即改進的歐拉法。[3] 使用泰勒公式以此方法為基礎,有龍格-庫塔法、線性多步法等方法。[4] 數值公式的精度當一個數值公式的截斷誤差可表示為()時(為正整數,為步長),稱它是一個階公式。k越大,則數值公式的精度越高。
2.2 用Matlab軟體求常微分方程的數值解「注意」
[1] 在解n個未知函數的方程組時,x0和x均為n維向量,m-文件中的待解方程組應以x的分量形式寫成。
[2]使用Matlab軟體求數值解時,高階微分方程必須等價地變換成一階微分方程組。
「例四」
解:令
則微分方程變為一階微分方程組:
[1] 建立m-文件vdp1000.m如下:
function dy=vdp1000(t,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=1000*(1-y(1)^2)*y(2)-y(1);
[2] 取t0=0,tf=3000,輸入命令:
[T,Y]=ode15s('vdp1000',[0 3000],[2 0]);plot(T,Y(:,1),'-')
[3] 結果如圖
「例五」
解微分方程組 解
[1] 建立m-文件rigid.m如下:
function dy=rigid(t,y)
dy=zeros(3,1);
dy(1)=y(2)*y(3);
dy(2)=-y(1)*y(3);
dy(3)=-0.51*y(1)*y(2);
[2] 取t0=0,tf=12,輸入命令:
[T,Y]=ode45('rigid',[0 12],[0 1 1]);
plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')
[3] 結果如圖
圖中,y1的圖形為實線,y2的圖形為「*」線,y3的圖形為「+」線。
3思考題一個慢跑者在平面上沿橢圓以恆定的速率v=1跑步,設橢圓方程為: 。突然有一隻狗攻擊他. 這隻狗從原點出發,以恆定速率w跑向慢跑者,狗的運動方向始終指向慢跑者。分別求出w=20,w=5時狗的運動軌跡。
往期精彩閱讀點擊即可閱讀原文
「在學習中得到樂趣,在樂趣中收穫學習」歡迎關注和分享該公眾號。如果您有什麼建議可以公眾號直接回復即可。期待您的加入,也希望您分享給您身邊有需要的人,建議直接將該公眾號設為星標記公眾號,以免錯失精內容,該公眾號同時開通了視頻號「工科男的日常」,歡迎掃描下方二維碼關注。
QQ技術交流群:272558566
微信視頻號微信公眾號