我在懷疑如何使用ode45
,因爲我知道它使用內部變量步長。例如,在我的特定情況下,我有一個ODE模型,我使用5分鐘的採樣時間。因此,在我的主要模擬迴路我有以下行通過使用ode45
解決它,以獲得我的模型的輸出:Matlab ode45內部步驟
[T,X] = ode45(@(t,x) model(t,x,u,data),[t t+scenario.Ts],x0);
凡u
是模型的輸入,data
是帶有參數的結構,x0
是當前時間步的初始條件和[t t+scenario.Ts]
是初始和最終時間。我的疑問是t
和t+scenario.Ts
ode45
-solver使用可變時間步驟,因此我介紹我的輸入操作u
的方式可能會受到影響。因此,我瞭解到,特定輸入u
的值在[t t+scenario.Ts]
之間的內部時間步長內保持不變。然後,如果我有例如助焊劑,即水進入罐中,則時間步驟對此具有直接影響u
。
讓我再舉一個例子來解釋一下。如果超過[t t+scenario.Ts]
我知道u(1) = 10
。那麼我應該使用的實際輸入是u(1)=10/(# of time steps between [t0 tend])
。但是,由於內部步驟是可變的,我必須使用哪個輸入?
我希望你明白我的問題,可以幫助我。
@ykaragol如果在[建議編輯](http://stackoverflow.com/review/suggested-edits/12534423)中格式化代碼,請在下次格式化所有代碼。否則,你的編輯可能會被拒絕,因爲沒有任何改進... – Matt
很難說沒有看到'模型'(或一個代表性的可運行示例)的代碼。它看起來像你可能是你試圖改變參數的時間。您可能正在創建一個僵硬的系統,這可能會導致效率低下甚至不正確的結果。你的'model'函數不應該是時間步數的函數。 'u'應該是't'或者你的狀態向量'x'的函數。 – horchler