matlab ode45與ode15s有什麼區別應該怎

2021-05-12 21:03:19 字數 5880 閱讀 4749

1樓:匿名使用者

以下是我個人的一些理解,供參考:

matlab提供了7個常微分方程求解器(solver),分別是ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb,其中前3個適用於求解非剛性(nonstiff)問題,後4個適用於剛性問題。所謂剛性問題,簡單點說,就是系統包含多個相互作用但變化速度相差十分懸殊的子過程。

ode45基於顯式4-5階龍格庫塔公式,其演算法屬於單步法;ode15s是一個變階求解器,用的是多步法。

對於很多問題,這些求解器都是可以使用的,儘管可能存在一些效率和精度方面的差異。

但是,這些求解器並不是可以互相取代的,它們分別適用於不同的精度要求和問題的型別。也就是說,沒有任何一個求解器在任何情況下都優於或劣於其它求解器。否則,matlab也沒必要提供這麼多求解器。

要徹底搞清楚這些求解器的差別和適用範圍是有一定難度的,需要對其背後的演算法有一定了解才行。matlab在函式參考裡對演算法做了簡要的說明,並給出了多個參考文獻,如果有興趣,可以進一步查閱。

如果對於問題的性質比較清楚,也知道什麼演算法可能比較有效,可以直接選擇適當的求解器。在沒有對於問題是否剛性的先驗知識的條件下,根據matlab的建議,ode45是大多數情況下應該嘗試的首選,如果ode45求解失敗或效率很低,次選就是ode15s。

2樓:地表最帥

matlab提供了7個常微分方程求解器(solver),分別是ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb,其中前3個適用於求解非剛性(nonstiff)問題,後4個適用於剛性問題。所謂剛性問題,簡單點說,就是系統包含多個相互作用但變化速度相差十分懸殊的子過程。

這些求解器並不是可以互相取代的,它們分別適用於不同的精度要求和問題的型別。也就是說,沒有任何一個求解器在任何情況下都優於或劣於其它求解器。否則,matlab也沒必要提供這麼多求解器。

要徹底搞清楚這些求解器的差別和適用範圍是有一定難度的,需要對其背後的演算法有一定了解才行。matlab在函式參考裡對演算法做了簡要的說明,並給出了多個參考文獻,如果有興趣,可以進一步查閱。

如果對於問題的性質比較清楚,也知道什麼演算法可能比較有效,可以直接選擇適當的求解器。在沒有對於問題是否剛性的先驗知識的條件下,根據matlab的建議,ode45是大多數情況下應該嘗試的首選,如果ode45求解失敗或效率很低,次選就是ode15s。

matlab 程式中 ode 都有哪些? 比如ode15、ode23 ode45,各有什麼優缺點?適用範圍有哪些?

3樓:

這張圖來自於matlab 技術論壇,這是一個非常有價值的**,裡面高手雲集,希望你可以進去看看,裡面有非常詳細的關於ode的介紹

matlab中ode45,4和5分別代表什麼?

4樓:匿名使用者

matlab中求微分方

程數值解的函式有五個:ode45,ode23,ode113,ode15s,ode23s。

ode是matlab專門用於解微分方程的功能函式,他有ode23,ode45,ode23s等等,採用的是runge-kutta演算法。ode45表示採用四階,五階runge-kutta單步演算法,截斷誤差為(δx)3。解決的是nonstiff(非剛性)的常微分方程.

是解決數值解問題的首選方法,若長時間沒結果,應該就是剛性的,換用ode23來解.

matlab ode45和ode23有什麼區別

5樓:

引用一下matlab論壇裡大神的回答:

總得來說:二者演算法相似,只不過ode45比ode23精度要高一點,其它沒什麼差別。

具體ode是matlab專門用於解微分方程的功能函式;solver有變步長(variable-step)和定步長(fixed-step)兩種型別,不同型別有著不同的求解器。ode45求解器屬於變步長的一種,採用runge-kutta演算法;和他採用相同演算法的變步長求解器還有ode23。ode45表示採用四階,五階runge-kutta單步演算法,截斷誤差為(δx)3。

解決的是nonstiff(非剛性)的常微分方程.是解決數值解問題的首選方法,若長時間沒結果,應該就是剛性的,換用ode23來解。

6樓:匿名使用者

ode23 是 bogacki 和 shampine 的顯式 runge-kutta (2,3) 對的實現。在容

差較寬鬆且剛度適中的情況下,它可能比 ode45 更加有效。ode23 是單步求解器,是求解非剛性微分方程的低階方法。(在數學中,剛性方程是指一個微分方程,其數值分析的解只有在時間間隔很小時才會穩定,只要時間間隔略大,其解就會不穩定。

目前很難去精確地去定義哪些微分方程是剛性方程,但是大體的想法是:這個方程的解包含有快速變化的部分。)

參考其中ode23和ode45的對比網頁連結

你好,你在{matlab 程式中 ode 都有哪些? 比如ode15、ode23 ode45,各有什麼優缺點?適用範圍有哪些?}

7樓:山水阿銳

您好,以下這張圖來自於matlab 技術論壇,這是一個非常有價值的**,裡面高手雲集,希望你可以進去看看,裡面有非常詳細的關於ode的介紹:

8樓:

之前給你的論壇裡面已經有寫啦。剛性方程是指一個微分方程,其數值分析的解只有在時間間隔很小時才會穩定,只要時間間隔略大,其解就會不穩定

matlab ode45用法

9樓:大野瘦子

用法:[t,y] = ode45(odefun,tspan,y0)1、odefun 是函式

控制代碼,可以是函式檔名,匿名函式控制代碼或行內函數名。

2、tspan是區間 [t0 tf] 或者一系列散點[t0,t1,...,tf]。

3、y0是初始值向量。

4、t返回列向量的時間點。

5、y返回對應t的求解列向量。

算例程式:

function testode45

tspan=[3.9 4.0]; %求解區間y0=[8 2]; %初值

[t,x]=ode45(@odefun,tspan,y0);

plot(t,x(:,1),'-o',t,x(:,2),'-*')legend('y1','y2')

title('y'' ''=-t*y + e^t*y'' +3sin2t')

xlabel('t')

ylabel('y')

function y=odefun(t,x)y=zeros(2,1); % 列向量

y(1)=x(2);

y(2)=-t*x(1)+exp(t)*x(2)+3*sin(2*t); %常微分方程公式

endend

10樓:機智的煎餅

ode45,常微分方程的數值求解。matlab提供了求常微分方程數值解的函式。當難以求得微分方程的解析解時,可以求其數值解。matlab ode45用法如下:

[t,y] = ode45(odefun,tspan,y0)

[t,y] = ode45(odefun,tspan,y0,options)

[t,y,te,ye,ie] = ode45(odefun,tspan,y0,options)

sol = ode45(odefun,[t0tf],y0...)

[t,y] = ode45(odefun,tspan,y0)

odefun 是函式控制代碼,可以是函式檔名,匿名函式控制代碼或行內函數名

tspan 是區間 [t0 tf] 或者一系列散點[t0,t1,...,tf]

y0 是初始值向量

t 返回列向量的時間點

y 返回對應t的求解列向量

[t,y] = ode45(odefun,tspan,y0,options)

options 是求解引數設定,可以用odeset在計算前設定誤差,輸出引數,事件等

[t,y,te,ye,ie] =ode45(odefun,tspan,y0,options)

在設定了事件引數後的對應輸出

te 事件發生時間

ye 事件發生時之答案

ie 事件函式消失時之指標i

sol =ode45(odefun,[t0 tf],y0...)

sol 結構體輸出結果

ode的作用

ode是matlab專門用於解微分方程的功能函式。該求解器有變步長(variable-step)和定步長(fixed-step)兩種型別。

不同型別有著不同的求解器,其中ode45求解器屬於變步長的一種,採用runge-kutta演算法;其他採用相同演算法的變步長求解器還有ode23。

ode45表示採用四階-五階runge-kutta演算法,它用4階方法提供候選解,5階方法控制誤差,是一種自適應步長(變步長)的常微分方程數值解法,其整體截斷誤差為(δx)^5。

解決的是nonstiff(非剛性)常微分方程。ode45是解決數值解問題的首選方法,若長時間沒結果,應該就是剛性的,可換用ode15s試試。

11樓:ieio啊

ode45表示採用四階-五階runge-kutta演算法,它用4階方法提供候選解,5階方法控制誤差,是一種自適應步長(變步長)的常微分方程數值解法,其整體截斷誤差為(δx)^5。解決的是nonstiff(非剛性)常微分方程。

ode45語法:

[t,y] = ode45(odefun,tspan,y0)

[t,y] = ode45(odefun,tspan,y0,options)

[t,y,te,ye,ie] = ode45(odefun,tspan,y0,options)

sol = ode45(odefun,[t0tf],y0...)

[t,y] = ode45(odefun,tspan,y0)

odefun 是函式控制代碼,可以是函式檔名,匿名函式控制代碼或行內函數名

tspan 是區間 [t0 tf] 或者一系列散點[t0,t1,...,tf]

y0 是初始值向量

t 返回列向量的時間點

y 返回對應t的求解列向量

[t,y] = ode45(odefun,tspan,y0,options)

options 是求解引數設定,可以用odeset在計算前設定誤差,輸出引數,事件等

[t,y,te,ye,ie] =ode45(odefun,tspan,y0,options)

在設定了事件引數後的對應輸出

te 事件發生時間

ye 事件發生時之答案

ie 事件函式消失時之指標i

sol =ode45(odefun,[t0 tf],y0...)

sol 結構體輸出結果

如何在function裡使用ode45輸出值

(1) 主程式 (test.m)

邊界值為 y(1/1.5)=alpha=0 y(1)=beta=0

用 shooting method 去解二階 ode 的邊界值問題,

解 ode 使用的指令為 ode45

(2)function (funtest1.m)

解4 條first-order initial value problems

但a 的值是要從判斷解出來的值運算後,是否有大於 1 來設定

h=0.25;

m=1.2;

si=((y/x)^2-y*y'/x+(y')^2)^0.5

if si>1

a=(si.^m-1)/(h*si)

elseif si<=1

a=0end

matlab ode45如何傳遞除t,y以外的其他的變數

用assignin儲存 你是要傳什麼變數,從哪傳到哪?如果從主函式往odefun傳遞引數,可以用附加引數的做法,更可取的是用巢狀函式。但這個似乎不能用assignin作為替代手段啊。matlab ode45用法 用法 t,y ode45 odefun,tspan,y0 1 odefun 是函式 控制...

SC45與S45C分別對應什麼GB材料?哪種是鍛件

s45c是日標,在gb裡對應是45鋼,s c在日本牌號裡對應冷拔無縫鋼管。就是普碳鋼45號。s45c是什麼意思?其中 s 是什麼意思 以s表示鋼 steel 哪個行業的?機械 日本材料 490ya和s45c用什麼中國材料代替好 490ya有q345a代替s45c用45號鋼代替。s45c是什麼材料 是...

列式計算113與45的和除以3與23的差,商是多少

1 1.3 4 5 3 23 13 10 8 10 93 2 3 2110 73 21 10 37,910 答 商是9 10 2 除數 81 5 5 5 1 5 81 15 6,66 6,11 被除數 11 5 5 60 答 被除數 除數各是60 11 3 2.1 1.2 11 4 49,2.1 1...