1樓:山水阿銳
您好,以下這張圖來自於matlab 技術論壇,這是一個非常有價值的**,裡面高手雲集,希望你可以進去看看,裡面有非常詳細的關於ode的介紹:
2樓:
之前給你的論壇裡面已經有寫啦。剛性方程是指一個微分方程,其數值分析的解只有在時間間隔很小時才會穩定,只要時間間隔略大,其解就會不穩定
matlab 程式中 ode 都有哪些? 比如ode15、ode23 ode45,各有什麼優缺點?適用範圍有哪些?
3樓:
這張圖來自於matlab 技術論壇,這是一個非常有價值的**,裡面高手雲集,希望你可以進去看看,裡面有非常詳細的關於ode的介紹
matlab ode45和ode23有什麼區別
4樓:
引用一下matlab論壇裡大神的回答:
總得來說:二者演算法相似,只不過ode45比ode23精度要高一點,其它沒什麼差別。
具體ode是matlab專門用於解微分方程的功能函式;solver有變步長(variable-step)和定步長(fixed-step)兩種型別,不同型別有著不同的求解器。ode45求解器屬於變步長的一種,採用runge-kutta演算法;和他採用相同演算法的變步長求解器還有ode23。ode45表示採用四階,五階runge-kutta單步演算法,截斷誤差為(δx)3。
解決的是nonstiff(非剛性)的常微分方程.是解決數值解問題的首選方法,若長時間沒結果,應該就是剛性的,換用ode23來解。
5樓:匿名使用者
ode23 是 bogacki 和 shampine 的顯式 runge-kutta (2,3) 對的實現。在容
差較寬鬆且剛度適中的情況下,它可能比 ode45 更加有效。ode23 是單步求解器,是求解非剛性微分方程的低階方法。(在數學中,剛性方程是指一個微分方程,其數值分析的解只有在時間間隔很小時才會穩定,只要時間間隔略大,其解就會不穩定。
目前很難去精確地去定義哪些微分方程是剛性方程,但是大體的想法是:這個方程的解包含有快速變化的部分。)
參考其中ode23和ode45的對比網頁連結
matlab ode45 與ode15s 有什麼區別 應該怎麼選擇?
6樓:匿名使用者
以下是我個人的一些理解,供參考:
matlab提供了7個常微分方程求解器(solver),分別是ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb,其中前3個適用於求解非剛性(nonstiff)問題,後4個適用於剛性問題。所謂剛性問題,簡單點說,就是系統包含多個相互作用但變化速度相差十分懸殊的子過程。
ode45基於顯式4-5階龍格庫塔公式,其演算法屬於單步法;ode15s是一個變階求解器,用的是多步法。
對於很多問題,這些求解器都是可以使用的,儘管可能存在一些效率和精度方面的差異。
但是,這些求解器並不是可以互相取代的,它們分別適用於不同的精度要求和問題的型別。也就是說,沒有任何一個求解器在任何情況下都優於或劣於其它求解器。否則,matlab也沒必要提供這麼多求解器。
要徹底搞清楚這些求解器的差別和適用範圍是有一定難度的,需要對其背後的演算法有一定了解才行。matlab在函式參考裡對演算法做了簡要的說明,並給出了多個參考文獻,如果有興趣,可以進一步查閱。
如果對於問題的性質比較清楚,也知道什麼演算法可能比較有效,可以直接選擇適當的求解器。在沒有對於問題是否剛性的先驗知識的條件下,根據matlab的建議,ode45是大多數情況下應該嘗試的首選,如果ode45求解失敗或效率很低,次選就是ode15s。
7樓:地表最帥
matlab提供了7個常微分方程求解器(solver),分別是ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb,其中前3個適用於求解非剛性(nonstiff)問題,後4個適用於剛性問題。所謂剛性問題,簡單點說,就是系統包含多個相互作用但變化速度相差十分懸殊的子過程。
這些求解器並不是可以互相取代的,它們分別適用於不同的精度要求和問題的型別。也就是說,沒有任何一個求解器在任何情況下都優於或劣於其它求解器。否則,matlab也沒必要提供這麼多求解器。
要徹底搞清楚這些求解器的差別和適用範圍是有一定難度的,需要對其背後的演算法有一定了解才行。matlab在函式參考裡對演算法做了簡要的說明,並給出了多個參考文獻,如果有興趣,可以進一步查閱。
如果對於問題的性質比較清楚,也知道什麼演算法可能比較有效,可以直接選擇適當的求解器。在沒有對於問題是否剛性的先驗知識的條件下,根據matlab的建議,ode45是大多數情況下應該嘗試的首選,如果ode45求解失敗或效率很低,次選就是ode15s。
matlab中ode23是什麼意思?
8樓:唯我最逍遙
算微分方程的
有ode23、ode45等等好多種
都是 龍格-庫塔 方法但是ode45個精確一些用法例如
[t,y] = ode23(@f,[0 2*pi],2)第一引數是迭代函式
第二個引數是t的取值範圍
第三個引數是y的初值
9樓:匿名使用者
ode23 解非剛性微分方程,低精度,使用runge-kutta法的二三階演算法。
ode45 解非剛性微分方程,中等精度,使用runge-kutta法的四五階演算法。
ode113 解非剛性微分方程,變精度變階次adams-bashforth-moulton pece演算法。
ode23t 解中等剛性微分方程,使用自由內插法的梯形法則。
ode15s 解剛性微分方程,使用可變階次的數值微分(ndfs)演算法。
ode23s 解剛性微分方程,低階方法,使用修正的rosenbrock公式。
ode23tb 解剛性微分方程,低階方法,使用tr-bdf2方法,即runger-kutta公式的第一級採用梯形法則,第二級採用gear法。
10樓:飲水蒹葭
一種定步長的微分方程解法
11樓:百度使用者
微分方程解法器的一種,使用runge-kutta演算法
matlab中ode45,4和5分別代表什麼?
12樓:匿名使用者
matlab中求微分方
程數值解的函式有五個:ode45,ode23,ode113,ode15s,ode23s。
ode是matlab專門用於解微分方程的功能函式,他有ode23,ode45,ode23s等等,採用的是runge-kutta演算法。ode45表示採用四階,五階runge-kutta單步演算法,截斷誤差為(δx)3。解決的是nonstiff(非剛性)的常微分方程.
是解決數值解問題的首選方法,若長時間沒結果,應該就是剛性的,換用ode23來解.
matlab/simulink中,什麼叫oder45和ode23bt演算法?
13樓:匿名使用者
ode45是基於
四點法和五點法的解微分方程數值解的方法,ode23等也一樣,都是基於已知點「**」下一個點的函式值的方法,不同的演算法「**」的方法不一樣。比較著名的「**」方法有尤拉法,改進的尤拉法,龍格庫塔法,多點法等。在matlab一般使用中這些方法的差別不大,可以不予理會,會用一個即可,推薦ode4。
14樓:matlab課設**
ode45,典型的解微分方程的演算法。matlab自帶的。專門解微分方程的。ode32bt也類似,只是各自針對的微分方程型別略有不同。還有ode15s ,ode23s等等
matlab ode45用法
15樓:大野瘦子
用法:[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
16樓:機智的煎餅
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試試。
在matlab中polyintA,C引數為什麼
可以用polyder p 求導,可以用polyint p 求積分,可以用polyint p,n 求n次積分。大家好!matlab中函式polyder 又是幹什麼用的?謝謝!該函式用於求特徵多項式 poly a 當a是一個n n矩陣式,poly a 命令求出a的特徵多項式det lambda eye ...
請問,在MATLAB中,有一條程式語句寫著是a 1,1257 0表示的是什麼意思呢?MATLAB裡面區分大小寫的
a 1,1257 0 表示a矩陣中第1行第1257列元素賦值為0 a 0 1 這個在matlab裡面是什麼意思 b end 表示矩陣b的最後一列,所以這句命令的意思就是把向量a中與b矩陣最後一列元素等於零的相同位置元素置為1 表明事件 將0賦值給元素a 為真 matlab中x ones 1,n 以及...
在MATLAB環境下設計帶阻濾波器的程式除錯問題
1 4.設計一巴特沃斯帶阻數字濾波器,要求通帶上下截至頻率為0.8 pi 0.2 pi,通帶衰減不大於1db,阻帶上下截至頻率0.7 pi 0.4 pi 阻帶衰減不小於30db,wp1 0.8 pi wp2 0.2 pi ws1 0.7 pi ws2 0.4 pi ap 0.5 as 40 fs 1...