您好我在使用ode45時也出現了類似的警告請問

2021-12-23 05:04:19 字數 3293 閱讀 2123

1樓:妲己玩兒壞了

你計算的公式應該是變數不只一個,然後兩個變數的數值差的比較大,導致經過相同的時間,兩引數數值變化過大。比如說如下式子

dx=@(t,x)[(x(1)-123*x(2)));

(x(2)-1234*x(1))];

[a,x]= ode45(dx,,[0 36000],[80 3000]);

x=x(end,:)

t1=@(t)v(t)-150000; %%%%v(t)是計算t時刻儲氣室體積的函式

t_zong=fzero(t1,10000) %%%%求函式t1在t=10000附近的零點

這個瞎寫的式子中,假設正確的結果是總時間t_zong=3600秒,即1個小時,x(1)代表溫度,開始為80,1個小時後為160;x(2)代表一個儲氣室的體積,開始為2500立方米,1個小時後為15萬立方米。那麼輸出結果應該為:

x=(160 150000)

t_zong=3600

這樣的話,3600秒內x(1)才變化80,而x(2)會變化十幾萬,相差太大,程式很容易報上面你寫的那個警告,無法運算下去。

那怎麼解決呢?

很簡單,把x(2)看成體積除以1000,算出來結果後,分別將x(2)中的各數值乘以1000就是你要算的數,即:

dx=@(t,x)[(x(1)-123*x(2)*1000));

(x(2)*1000-1234*x(1))];

[a,x]= ode45(dx,,[0 36000],[80 3]);

x=x(end,:)

t1=@(t)v(t)-150; %%%%v(t)是計算t時刻儲氣室體積的函式

t_zong=fzero(t1,10000) %%%%求函式t1在t=10000附近的零點

最後就應該能計算出結果了,結果應該是:

x=(160 150)

t_zong=3600

最後再把150乘上1000就是正確的體積了

具體除以多少是根據變化較小的那個確定的,在這個瞎寫假設的情境中,溫度變化是幾十,那體積除以某個數後也應該是幾十到幾百。

把這個方法套到你的方程中,把某個數縮小或者放大,應該就能解決問題了。

2樓:山水阿銳

您好,是這樣的:

提示是說你的model裡面不連續,應該使用variablestepdiscrete**模式,而不是ode45模式。

有兩種更改方法:

1、在該model的工具欄上選擇simulation,再選擇並進入configuration parameters介面,從solver裡面設定,type設定為variable-step,solver設定為discrete;

2、或者在diagnostics子選單裡將'automatic solver parameter selection' 設定為none。

matlab中ode45函式的使用 30

3樓:江湖做任務

t>=0即可用ode45,它的物理意義類似時間,但也不侷限於時間。你的問題比較模糊。

滿意請採納。

matlab的ode45求解的問題

4樓:匿名使用者

func = @(t,y)[y(2); sin(y(1))+y(1)];

[t,y]=ode45(func,[0,1],[0,2]);

figure(1); plot(t,y(:,1));  %這個是yfigure(2);plot(t,y(:,2));  %這個是y'

這樣試試?

matlab問題:使用ode45求如下微分方程的數值解,繪製y-t圖

5樓:匿名使用者

用ode45()求微分方程的格式為

[t,y] =ode45(odefun,tspan,y0)odefun——微分方程自定義函式;tspan——t的區間;y0——y,dy的初始值。

用plot()繪出微分方程的解,即y(t)函式圖形。

對於本提問,可以按下列**實施。

下圖是精確解與數值解的圖形比較。

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中ode45函式的使用

t 0即可用ode45,它的物理意義類似時間,但也不侷限於時間。你的問題比較模糊。滿意請採納。matlab ode45用法 用法 t,y ode45 odefun,tspan,y0 1 odefun 是函式 控制代碼,可以是函式檔名,匿名函式控制代碼或行內函數名。2 tspan是區間 t0 tf 或...

您好,我在雲南旅遊時由導遊帶著在滇西玉市買了個翡翠觀音吊墜,誰能幫忙看看值多少

這是一款天然翡翠baia貨,糯種,糯白du底色,略閃灰,帶若有zhi若無的淡灰dao紫色,觀音內菩薩吊墜,真 品無疑容問。種粗,棉厚,水頭短,色澤平普,雕工粗獷,整體屬於中低檔的翡翠吊墜。個頭較大,用料足實,算亮點。目前玉器市場 在600 800元左右為 上位。種質較好的翡翠吊墜圖示,可以比對 又是...

你好。我現在也是,在使用wincc時啟用過程中一直提未授權,麻煩告訴一下你的解決方法吧?不勝感激,急用啊

把授權全部移走或刪除,在重新裝授權,記得只要裝你要使用的,不要裝多了,有衝突的!哪個版本?6.2還是7.0 sp1 老師 你好 我現在遇到西門子安裝wincc組態軟體時,安裝完授權以後總是提示出現授權過期 我換了好幾個xp 15 你的系統日期是多少,應該是系統日期有問題 誰能告訴我上位機和plc之間...