Matlab 常微分方程表示中的误差
更新 我试图找到link中给出的Lyapunov指数。我试图通过对我的案例采用以下等式来理解它。这是一组常微分方程(这些只是为了测试如何使用cos和sin作为ODE) 和Matlab 常微分方程表示中的误差,matlab,ode,differential-equations,Matlab,Ode,Differential Equations,更新 我试图找到link中给出的Lyapunov指数。我试图通过对我的案例采用以下等式来理解它。这是一组常微分方程(这些只是为了测试如何使用cos和sin作为ODE) 和x=x(1);y=X(2);cos(y)=X(3) f1表示dx/dt;在这种情况下,f2dy/dt和f3将是-10sinx。然而,当表示为x=x(1)时;y=X(2);我不确定如何表示cos。这只是一个尝试性的例子,我这样做是为了知道如何处理方程,其中cos,sin等项是另一个变量的函数 当使用ode45求解这些等式时 [T,
x=x(1);y=X(2);cos(y)=X(3)代码>
f1表示dx/dt
;在这种情况下,f2dy/dt
和f3将是-10sinx
。然而,当表示为x=x(1)时;y=X(2);我不确定如何表示cos。这只是一个尝试性的例子,我这样做是为了知道如何处理方程,其中cos,sin等项是另一个变量的函数
当使用ode45求解这些等式时
[T,Res]=sol(3,@test_eq,@ode45,0,0.01,20,[7 2 100 ],10);
它抛出以下错误
???试图访问(2);索引必须是正整数或逻辑索引
Error in ==> Eq at 19
x=X(1); y=X(2); cos(x)=X(3);
是我的表述x=x(1);y=X(2);cos(y)=X(3)代码>好吗
如何解决错误?
多谢各位
不,你的陈述是完全错误的。
您不可能以这种方式设置值!
首先,您尝试将值X(3)
分配给函数
首先,我不确定你是否理解
x=4
及
这是完全不同的意思。如果您理解这一点,您将看到您不可能使用cos(x)=x(3)
进行赋值
第二:您正在调用的函数是什么?你给它下定义了吗
第三,要求解或评估ODE,您应该使用matlab中的deval
或solve
函数。他们的帮助文件应该会给你一些例子。谢谢你的回复。好吧,我正在尝试做一些类似链接中给出的事情,所以在链接中,作者使用ode_45并设置类似的值。在我的例子中,问题在于余弦函数,因为它依赖于x变量,因此如何区分并为其赋值?请帮助。您链接的页面似乎是用于查找lyapunov指数。这就是你想做的吗?如果没有,你想做什么?您在上述陈述中的f
是否表示X
的导数,即dX/dt?如果是这样,请发布您的完整功能定义(以单词function
开头)和sol
的完整定义。没有这个,我们就没办法了!我试图找到李雅普诺夫指数,f1表示dx/dt;在这种情况下,f2 dy/dt和f3为-10sinx。然而,当表示为x=x(1)时;y=X(2);我不确定如何表示cos。这只是一个尝试性的例子,我这样做是为了知道如何处理方程,其中cos,sin等项是另一个变量的函数。
x=4
4=x