Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用matlab求解含有耦合中间变量的常微分方程?_Matlab_Ode - Fatal编程技术网

如何使用matlab求解含有耦合中间变量的常微分方程?

如何使用matlab求解含有耦合中间变量的常微分方程?,matlab,ode,Matlab,Ode,我有一个问题可以简化为下面的陈述(实际方程和函数要复杂得多): 系统:dot_X1=-A*X1;dot_X2=B*(X2-5)+u dot_u表示与时间差分t,X1和X2分别是系统状态,A和B都是中间变量,u是系统控制输入,可以是我自己定义的斜坡或阶跃输入 我知道如何使用ode来解决A和B不耦合时的正常类似问题,例如,当A和B分别是X1、X2和u的函数时。但现在在我的问题中,A和B是耦合的,就像: A=f(X1,X2,u,B),B=g(X1,X2,u,A),f和g是非常复杂的函数 现在,在解决o

我有一个问题可以简化为下面的陈述(实际方程和函数要复杂得多):

系统:
dot_X1=-A*X1;dot_X2=B*(X2-5)+u

dot_u表示与时间差分t,X1和X2分别是系统状态,A和B都是中间变量,u是系统控制输入,可以是我自己定义的斜坡或阶跃输入

我知道如何使用ode来解决A和B不耦合时的正常类似问题,例如,当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非常复杂,我不知道如何处理这个问题


你能给我一些帮助吗?非常感谢

您需要使用牛顿法或预先打包的matlab解算器将此耦合作为非线性方程组进行求解

或你可以认为系统是微分代数方程组< /P>

(X1',X2') = F(t,(X1,X2),(A,B),u)
        0 = G(t,(X1,X2),(A,B),u)
并使用适当的解算器包DASSL或DAEPACK或类似软件。看