matlab中使用ode方法解范德波尔微分方程的数值解
微分方程的解析解要求比較嚴(yán)苛,只有在特定的條件下才能寫(xiě)出解析解表達(dá)式,而在現(xiàn)實(shí)的科研問(wèn)題當(dāng)中,絕大多數(shù)情況我們會(huì)采用數(shù)值解(numeric solution)的方法來(lái)求解微分方程。這個(gè)時(shí)候就要用到ode方法了,ode是常微分方程英文名ordinary differential equation的縮寫(xiě)。我們將通過(guò)范德波爾方程為例演示求解的過(guò)程。大致可以分為2步:列方程和解方程。
一、列方程。
范德波爾方程用數(shù)學(xué)表達(dá)式可以寫(xiě)成一下形式:
由常微分理論可知,列方程需要給出兩個(gè)條件
1.方程式:即帶有未知數(shù)的等式
2.初始值:初始值不一樣,解也不一樣,這是解方程必須給出的數(shù)據(jù)。理論研究的時(shí)候,我們可以用C來(lái)表示常量,但是在做數(shù)值解的時(shí)候,必須給出具體的數(shù)值,比如上式中的2,0
如何把上面的數(shù)學(xué)表達(dá)式呢,需要在matlab中編寫(xiě)函數(shù),本例中的范德波爾如下,特別要注意的是y和dy代表的意義,在代碼的注釋中有詳細(xì)的解釋:
function dy = vdp1000(t,y) %這個(gè)似乎是規(guī)定的范式,要記住,其中y是代表函數(shù)的解,y(1)就是需要求的解y,y(2)是y的微分y',相當(dāng)于y(n)'=y(n+1) dy = zeros(2,1); %作為函數(shù)返回值的列向量,我猜測(cè)里面存儲(chǔ)的是解函數(shù)的微分,dy和y的區(qū)別在于相同索引的dy和y差一個(gè)微分d,相當(dāng)于dy(1)=y(1)'=y(2) dy(1)=y(2); %dy(1)存儲(chǔ)的的是y',可以簡(jiǎn)單記憶dy(1)=y',dy(2)=y'',y(n)=dy(n-1)=y的n-1個(gè)' dy(2)=1000*(1-y(1)^2)*y(2)-y(1); %注意到方恒的左邊都是關(guān)于dy(n)的表達(dá)式,右邊都是關(guān)于y(n)的表達(dá)式 end二、解方程
在matlab中,我們使用ode系列方法來(lái)解方程,ode方法有很多,對(duì)于非剛性問(wèn)題,我們可以使用ode45/ode23/ode113等方法,對(duì)于剛性問(wèn)題,我們使用ode15s/ode23s/ode23t/ode23t等,對(duì)于范德波爾方程,我們使用ode15s來(lái)進(jìn)行求解,代碼如下。
注意方法的參數(shù)包括:方程@開(kāi)頭的句柄,求解時(shí)間范圍tspan,以及解的初始值,具體的解釋在代碼的注釋中有詳細(xì)的說(shuō)明
我們?cè)谶\(yùn)行之后可以得到這個(gè)方程解的圖像如下:
這樣我們就完成了matlab中使用ode方法解范德波爾微分方程的數(shù)值解的任務(wù)。
總結(jié)
以上是生活随笔為你收集整理的matlab中使用ode方法解范德波尔微分方程的数值解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android 判断摄像头权限方法
- 下一篇: 计算机视觉的就业如何?计算机视觉好找工作