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

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

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。

老師您好 我的筆記本是thinkpad e40的

必須找人修理一下,現看看風扇的電機軸是不是進灰了,要是的話建議更換,一般的是灰大引起的轉數慢,照成溫度公升高的,要是時間長了不清理會燒壞顯示卡的,還有的顯示卡的溫度因為機器不一樣溫度也不一樣的,一般的正常的時候溫度在40多度,當然的是看內室的溫度多少的,要是室內的溫度高,筆記本的溫度相應的會高一些的...

我使用小公尺手機,卡是聯通4G卡,上次在設定中把4G網路優先改

在設定裡邊選擇流動網路,網路型別選擇,選擇3g網路優先即可。3g網路 第三代移動通回信技術 英語 答3rd generation 是指支援高速資料傳輸的蜂窩移動通訊技術。3g服務能夠同時傳送聲音 通話 及資料資訊 電子郵件 即時通訊等 代表特徵是提供高速資料業務。相對第一代模擬制式手機 1g 和第二...

4G手機在現有的農村網路上能使用嗎

目前為止,手機4g卡聯通的好些,一般情況下4g卡在農村沒有4g訊號的 建議選擇聯通4g,移動4g是中國自己研發的4g,並不是國際4g,相對網速較慢一點。雖然現在聯通4g制式與移動一樣,但已經取得國際4g的牌照,很快就是混合4g,兩個4g都可以用。現在4g網路覆蓋率還在小。一般情況下4g網路在農村現在...