日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab中使用ode方法解范德波尔微分方程的数值解

發布時間:2023/12/14 循环神经网络 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab中使用ode方法解范德波尔微分方程的数值解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微分方程的解析解要求比較嚴苛,只有在特定的條件下才能寫出解析解表達式,而在現實的科研問題當中,絕大多數情況我們會采用數值解(numeric solution)的方法來求解微分方程。這個時候就要用到ode方法了,ode是常微分方程英文名ordinary differential equation的縮寫。我們將通過范德波爾方程為例演示求解的過程。大致可以分為2步:列方程和解方程。
一、列方程。
范德波爾方程用數學表達式可以寫成一下形式:

由常微分理論可知,列方程需要給出兩個條件
1.方程式:即帶有未知數的等式
2.初始值:初始值不一樣,解也不一樣,這是解方程必須給出的數據。理論研究的時候,我們可以用C來表示常量,但是在做數值解的時候,必須給出具體的數值,比如上式中的2,0

如何把上面的數學表達式呢,需要在matlab中編寫函數,本例中的范德波爾如下,特別要注意的是y和dy代表的意義,在代碼的注釋中有詳細的解釋:

function dy = vdp1000(t,y) %這個似乎是規定的范式,要記住,其中y是代表函數的解,y(1)就是需要求的解y,y(2)是y的微分y',相當于y(n)'=y(n+1) dy = zeros(2,1); %作為函數返回值的列向量,我猜測里面存儲的是解函數的微分,dy和y的區別在于相同索引的dy和y差一個微分d,相當于dy(1)=y(1)'=y(2) dy(1)=y(2); %dy(1)存儲的的是y',可以簡單記憶dy(1)=y',dy(2)=y'',y(n)=dy(n-1)=y的n-1個' dy(2)=1000*(1-y(1)^2)*y(2)-y(1); %注意到方恒的左邊都是關于dy(n)的表達式,右邊都是關于y(n)的表達式 end

二、解方程
在matlab中,我們使用ode系列方法來解方程,ode方法有很多,對于非剛性問題,我們可以使用ode45/ode23/ode113等方法,對于剛性問題,我們使用ode15s/ode23s/ode23t/ode23t等,對于范德波爾方程,我們使用ode15s來進行求解,代碼如下。
注意方法的參數包括:方程@開頭的句柄,求解時間范圍tspan,以及解的初始值,具體的解釋在代碼的注釋中有詳細的說明

[T,Y] = ode15s(@vdp1000,[0 3000],[2,0]); %T和Y表示解,也就是Y關于T的函數,@vdp1000表示微分方程句柄,可以認為是方程的名字,比如這里就是范德波爾方程,[0,3000]代表的是時間范圍,也就是限定了區間,顯然區間越大,計算量越大,所以要想清楚自己要哪一段的數據,給多了也沒用。[2,0]表示的是解的初始值,因為初始值不一樣,解也不一樣,這是解方程必須給出的數據。這里給出了兩個初始值,2表示y的初始值,0表示dy的初始值。 plot(T,Y(:,1),'o')

我們在運行之后可以得到這個方程解的圖像如下:

這樣我們就完成了matlab中使用ode方法解范德波爾微分方程的數值解的任務。

總結

以上是生活随笔為你收集整理的matlab中使用ode方法解范德波尔微分方程的数值解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。