我陷入这个问题已经好几个星期了。如何利用Matlab求非线性微分方程的稳定性(或吸引力)区域。
假设我有这样的方程式:
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代码:
f = @(t , x)[x(2) ; -10 * sin(x(1)) - x(2) + 9];
[T , X] = ode45(f , Tint , X0);对于某些Tint,我把结果绘制成一个相图图(即x对y),并且改变初始条件(X0),直到它工作为止(即一些受过教育的尝试和错误)。
我需要找到这个微分方程的许多不同变化的稳定区域。我的问题是:如何自动找到这个区域?
谢谢你的帮助
发布于 2014-08-12 23:51:32
在非常高的计算成本中,您可以进行强力搜索:对搜索空间进行离散化,选择一个long Tint (用于说明在很长时间内收敛的解决方案),并为每个起点进行集成。
为了加速这个过程,你可以为集成实现一些停止条件,修剪那些离你的平衡点太远的分支,以及那些接近平衡点的分支。
当然,这样,你就只能得到稳定边界的近似,因为1.为你的搜索空间选择了离散化的步骤;2.如果一个解在离平衡点比停止条件更远的地方收敛,或者在接近平衡后发散,而不是你的停止条件,则可能会出现“错剪枝”。
有关实现停止条件的帮助,请查看ode45文档的事件函数部分以及这个例子或这一个。
https://stackoverflow.com/questions/25167265
复制相似问题