我有一个问题可以简化为下面的陈述(真正的方程和函数要复杂得多):
系统:dot_X1 = -A*X1; dot_X2 = B*(X2-5) + u;
dot_表示与时间t区分,X1和X2分别是系统状态,A和B都是中间变量,u是系统控制输入,可以是我自己定义的斜坡或步进输入。
我知道当A和B没有耦合时,如何使用ode来解决正常的类似问题,例如,当A和B分别只是X1,X2和u的函数时。但现在在我的问题中,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非常复杂,我不知道如何处理这个问题。
你可以给我一些帮助吗?非常感谢!答案 0 :(得分:0)
您需要使用牛顿方法或预先打包的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