1

私は何週間もこの問題に悩まされてきました。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);

一部の色合いについては、結果を位相図 (つまり、x 対 y) にプロットし、初期条件 (X0) をうまくいくまで変化させます (つまり、経験に基づいた試行錯誤)。

この微分方程式のさまざまなバリエーションの安定領域を見つける必要があります。私の質問は次のとおりです。この地域を自動的に見つけるにはどうすればよいですか?

助けてくれてありがとう

4

1 に答える 1

2

非常に高い計算コストで、ブルート フォース検索を行うことができます。検索空間を離散化し、長い色合いを選択し (非常に長い時間で収束する解を説明するため)、開始点ごとに統合します。
プロセスを少し加速するために、統合にいくつかの停止条件を実装し、平衡点から遠すぎる枝と平衡点に近づく枝を剪定することができます。

もちろん、この方法では、1. 探索空間に対して選択された離散化ステップ、および 2. 解が平衡点からさらに離れた後に収束する場合に考えられる「ミスプルーニング」により、安定境界の近似値しか得られません。停止条件、または停止条件よりも平衡に近づいた後に発散します。

停止条件の実装については、 ode45 docのイベント関数の部分、この、またはこの例を参照してください。

于 2014-08-12T23:51:32.263 に答える