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...