首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Matlab求非线性微分方程的稳定边界

用Matlab求非线性微分方程的稳定边界
EN

Stack Overflow用户
提问于 2014-08-06 18:13:17
回答 1查看 1.2K关注 0票数 1

我陷入这个问题已经好几个星期了。如何利用Matlab求非线性微分方程的稳定性(或吸引力)区域。

假设我有这样的方程式:

代码语言:javascript
复制
x' = y;
y' = -10*sin(x)  - y + 9;

这个方程的平衡点是x,y= 1.1198,0。我想画出这个非线性微分方程的稳定边界。我的意思是,我想找出任何初始点都会收敛到平衡点的区域,该区域之外的任何一点都会发散。请在http://www.mathworks.com/matlabcentral/answers/146562-finding-the-stability-boundary-or-attraction-region-of-a-nonlinear-differential-equation查看附呈的图像

现在,我运行以下Matlab代码:

代码语言:javascript
复制
f = @(t , x)[x(2) ; -10 * sin(x(1)) - x(2) + 9];
[T , X] = ode45(f , Tint , X0);

对于某些Tint,我把结果绘制成一个相图图(即x对y),并且改变初始条件(X0),直到它工作为止(即一些受过教育的尝试和错误)。

我需要找到这个微分方程的许多不同变化的稳定区域。我的问题是:如何自动找到这个区域?

谢谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2014-08-12 23:51:32

非常高的计算成本中,您可以进行强力搜索:对搜索空间进行离散化,选择一个long Tint (用于说明在很长时间内收敛的解决方案),并为每个起点进行集成。

为了加速这个过程,你可以为集成实现一些停止条件,修剪那些离你的平衡点太远的分支,以及那些接近平衡点的分支。

当然,这样,你就只能得到稳定边界的近似,因为1.为你的搜索空间选择了离散化的步骤;2.如果一个解在离平衡点比停止条件更远的地方收敛,或者在接近平衡后发散,而不是你的停止条件,则可能会出现“错剪枝”。

有关实现停止条件的帮助,请查看ode45文档的事件函数部分以及这个例子这一个

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25167265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档