MATLAB 學習筆記 第二章
- 用 MATLAB 解ODE
對於一個常微分方程(ODE),通常可以利用積分來找到其答案。但是我們遇到的大多數的微分方程很難求出解析解,特別是實際應用中的數學建模。MATLAB提供豐富的微分方程的數值解函數,如 ode23 、ode45、ode15s。MATLAB的通過無限逼近來求數值解,精度也由於計算機的性能的不斷提升在不斷提高。以 ode23 為例去解 初始值 :
>> function dydx = odefun(x,y); %寫出這個微分方程n>> dydx = 2*x/y;n>> [x,y] = ode23(odefun,[0,0.5],10); %括弧內第一項為函數名,第二項x的積分範圍,第三 項y的初始值(即x取0時的初始值)。n>> plot(x,y) ; xlabel(x) ; ylabel(y);n
結果如下:
可以手算比較一下已經非常精確了,看一下工作區生成的X,Y矩陣,可以看到MATLAB是在區間
[0,0.5]之間取11個點,並算出值來擬合曲線的。雖然很精確了,但精度不是很高。
如果我們來試一試ode45來解決呢?在上面代碼下加入以下代碼:
>> hold on;n>> [x,y] = ode45(odefun,[0,0.5],10);n>> plot(x,y);n
可以看出兩個解差不多,曲線幾乎重合。
放大看一下,還是有區別的。
看一下工作區,ode45取了41個點來擬合曲線,明顯ode45比ode23精度高。
實際上,事實卻是如此,只是本例比較簡單,差別比較小,特別是運算時間上。一般,當我們需要快速得出結果而不太在乎精度時,我們可以選擇ode23,而當我們在乎結果的精確度,而不在乎花費時間時,可以用ode45。一般簡單微分方程在時間上兩個函數幾乎感覺不到差別,這得益於計算機計算能力的不斷增強。
推薦閱讀:
※學術論文中用什麼軟體可以繪製這樣的圖?
※有正整數1~10,出現的概率分布給定,如何利用MATLAB按照各數字出現的概率輸出一個數字?
※用matlab實現樂曲演奏的難度?在網上聽到一首用matlab編寫的卡農,求分析一下實現及難度所在?
※MATLAB神經網路(四):基於Adaboost的強分類器設計
※推崇Mathematica的那些人,理由是什麼?
TAG:MATLAB |