天天看點

matlab中常微分方程數值計算的方法

數學上求解數值解

利用數學理論推導的方法求得微分方程解稱為解析解或者精确解,其特點是得到一個狀态變量關于自變量的函數關系表達式。

利用數值計算方法求連續問題的近似解稱為數值解。數值解的基本特點是利用數值計算方法和計算機程式設計得到一系列離散點上的近似解。

通常采用 歐拉方法、龍格-庫塔方法進行數值計算

首先 把區間離散化: [a,b] 變成離散的點:  

matlab中常微分方程數值計算的方法

同時 記:      

matlab中常微分方程數值計算的方法

     即網格步長

歐拉格式:

當                                                   

matlab中常微分方程數值計算的方法

使用泰勒展開式:                    

matlab中常微分方程數值計算的方法

将高階無窮小舍去,我們就可以得到了 歐拉顯示格式,也叫作向前歐拉格式:

matlab中常微分方程數值計算的方法

其中

matlab中常微分方程數值計算的方法

                                  向後歐拉格式,也叫作向前歐拉格式

matlab中常微分方程數值計算的方法

當然,也可以用差分法、積分法、梯形公式等等方法來求數值解,還有龍格-庫塔方法,就不仔細闡述了

matlab函數

用 dsolve 函數來 求解析解:

                                                            dsolve('方程式',‘條件’,'變量')

比如方程:                                 

matlab中常微分方程數值計算的方法
y=dsolve('D3y-D2y=x','y(1)=8','Dy(1)=7','Dy(2)=4','x')
           

 求數值解,用龍格-庫塔方法            [t,y]=ode45(odefun,tspan,y0)

odefun 為 以表示微分方程的右端項

matlab中常微分方程數值計算的方法

的函數句柄或者 内聯函數

tspan 表示自變量的範圍

y0 是微分方程的初始值向量

比如:                      

matlab中常微分方程數值計算的方法
[email protected](x,y)-2*y+2*x^2+2*x;
[x,y]=ode45(f,[0,0.5],1)
           

會出現,x沿着步長增加、y也會随之變化一系列數值解

把 

matlab中常微分方程數值計算的方法

有方程:

matlab中常微分方程數值計算的方法
[t,Y]=ode45(@vdp,[0 20],[1 0]);
plot(t,Y(:,1),'k-o');


function dy= vdp(t,y)
dy=[y(2);(1-y(1)^2)*y(2)-y(1)];
end
           
matlab中常微分方程數值計算的方法

方程如下、使用方法一樣,方程類型不一樣:

matlab中常微分方程數值計算的方法

繼續閱讀