Main Content

不安定、またはほぼ不安定な極を使用したモデルの近似

この例では、システムが不安定またはほぼ不安定な極をもつ場合に、低次元化近似を計算する方法を示します。

reducespec コマンド (または "Model Reducer" アプリ) は低次元化近似を計算するときに、不安定な極を削除しません。削除すると、システムのダイナミクスが根底から変わってしまうからです。代わりに、ソフトウェアはモデルを安定した部分と不安定な部分に分解して、モデルの安定した部分を低次元化します。

モデルにほぼ不安定な極がある場合、低次元化近似がこれらのダイナミクスを確実に保持するようにしたい場合もあります。この例では、Offset オプションを使用して安定/不安定の境界に近い極を保持する方法を説明します。

不安定な極またはほぼ不安定な極をもつモデルを読み込みます。

load('reduce.mat','gasf35unst')

gasf35unst は、2 つの不安定な極 (Re(s) > 0) をもつ 25 状態の SISO モデルです。システムの極を調べて、ほぼ不安定な極を見つけます。

pzplot(gasf35unst)
axis([-0.0015 0.0015 -0.0005 0.0005])

極-零点プロットに、左半平面にある、比較的虚軸に近い複数の極 (x でマーク) が表示されます。これらはほぼ不安定な極です。そのうち 2 つは 0.0005 範囲内の不安定さにあります。さらに 3 つが 0.001 範囲内の不安定さにあります。

モデル次数の低次元化 (MOR) タスクを作成し、モデルのハンケル特異値プロットを調べます。

R = reducespec(gasf35unst,"balanced");
view(R)

このプロットは 2 つの不安定なモードを示しますが、ほぼ不安定な極のエネルギーの寄与を容易に判別することはできません。アプリケーションで、不安定性に最も近い極が比較的低エネルギーであってもこれを破棄せずに、モデルを低次元化したい場合があります。MOR タスクの R.Options.Offset オプションを使用して、虚軸に最も近い 2 つの安定した極を保持する、低次元化されたシステムを計算します。Offset オプションは、getrom が破棄できる極と getrom が保持しなければならない極 (不安定として処理) の間に境界を設定します。

R.Options.Offset = 0.0005;
gasf_arr = getrom(R,Order=[10,15]);

getrom にターゲット近似次数の配列 [10,15] を指定すると、getrom によって近似モデルの配列が返されます。配列 gasf_arr には、gasf35unst の 10 次近似と 15 次近似の 2 つのモデルが含まれています。いずれの近似の場合も、getrom が 2 つの不安定な極、または 2 つのほぼ不安定な極を廃棄することはありません。

低次元化近似を元のモデルと比較します。

 bodeplot(gasf35unst,gasf_arr(:,:,1),'r--',gasf_arr(:,:,2),'g-.')
 legend("Original","10th order","15th order")

15 次近似では、元のモデルに対して正確な周波数領域の一致がもたらされます。ただし、10 次近似は高周波数のダイナミクスで変化を示しており、この変化は大きすぎて受け入れられません。このため、15 次近似がふさわしい選択肢であると思われます。

参考

関数

ライブ エディター タスク

関連するトピック