[英]How to use matlab to solve ordinary differential equations with coupled intermediate variables inside?
我有一個問題可以簡化為下面的陳述(實際的方程和函數要復雜得多):
系統: dot_X1 = -A*X1; dot_X2 = B*(X2-5) + u;
dot_X1 = -A*X1; dot_X2 = B*(X2-5) + u;
dot_表示與時間t的區別,X1和X2分別是系統狀態,A和B都是中間變量,u是系統控制輸入,可以是我自己定義的斜坡輸入或步進輸入。
我知道當A和B而不耦合時,例如當A和B分別僅是X1,X2和u的函數時,如何使用ode解決正常的類似問題。 但是現在我的問題是,A和B耦合在一起,例如:
A = f(X1, X2, u, B), B = g(X1, X2, u, A),
f和g是非常復雜的函數。
現在在解決ode問題的每個時間間隔(例如[0s,0.01s])中,我都必須計算A和B才能在matlab中使用ode函數。 但是由於A和B耦合並且f和g非常復雜,我不知道如何處理。
你能給我些幫助嗎? 非常感謝!
您可能需要使用牛頓方法或預先打包的matlab求解器,將其作為非線性方程組求解。
或者您可以將系統視為微分代數方程組
(X1',X2') = F(t,(X1,X2),(A,B),u)
0 = G(t,(X1,X2),(A,B),u)
並使用適當的求解器程序包DASSL或DAEPACK或類似程序。 參見http://www.scholarpedia.org/article/Differential-algebraic_equations
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.