簡體   English   中英

如何使用Matlab求解內部耦合中間變量的常微分方程?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM