極-零点の簡略化
極-零点の簡略化は、極-零点のペアを相殺するか、全体のモデル応答に影響がない状態を削除することで、モデルの次数を減らします。極-零点のペアは、たとえば閉ループ アーキテクチャを構築する際に導入されます。数値計算に関連する小さい標準誤差は、そのような相殺ペアからほぼ相殺ペアに変換できます。これらの状態を削除すると、解析および制御設計を簡略化しながらモデル応答の特性が保持されます。極-零点の簡略化のタイプには次のものがあります。
構造的削除 — 入力や出力に構造的に接続されていない状態をモデルから消去します。構造的に接続されていない状態の削除は、数値計算を行わないことから、モデルの低次元化における最初のステップとして良い方法です。これは、残りの状態の状態の構造体も保持します。このような構造的に非最小状態は、たとえば接続されていない状態空間または伝達関数のブロックがいくつかある Simulink® モデルを線形化すると生じます。コマンド ラインで、
sminreal
を使用して構造体の消去を実行します。極-零点相殺または最小実現 — 伝達関数から相殺またはほぼ相殺となる極-零点のペアを除去します。状態空間モデルから不可観測状態または非可制御状態を削除します。コマンド ラインで、
minreal
を使用してこの種の簡略化を行います。
Model Reducer アプリおよび モデル次数の低次元化 ライブ エディター タスクでは、[極-零点の簡略化] の方法により、構造的に接続されていない状態の自動削除に加えて極-零点相殺や最小実現も行われます。
Model Reducer アプリでの極-零点の簡略化
Model Reducer は、モデルを低次元化し、元のモデルと低次元化されたモデルの応答を調査および比較する、対話型のツールを提供します。Model Reducer で極-零点の簡略化によってモデルを低次元化するには、次の手順を実行します。
アプリを開いて、低次元化するモデルをインポートします。たとえば、MATLAB® ワークスペースに
build
という名前のモデルがあるとします。次のコマンドは、Model Reducer を開いて LTI モデルbuild
をインポートします。modelReducer(build)
データ ブラウザーで、低次元化するモデルを選択します。 [極-零点の簡略化] をクリックします。
[極-零点の簡略化] タブで、Model Reducer は元のモデルと、低次元化されたモデルの周波数応答のプロットを表示します。アプリは、両方のモデルの極-零点配置図も表示します。
極-零点配置図は、極配置を
x
でマークし、零点の位置をo
でマークします。メモ
周波数応答は、SISO モデルの場合はボード線図であり、MIMO モデルの場合は特異値プロットです。
必要に応じて Model Reducer が極-零点のペアの相殺を特定する許容誤差を変更します。Model Reducer は、[極-零点ペアの簡略化] の値によって指定された許容誤差の範囲内の極-零点のペアを相殺します。この場合、どの極-零点のペアも Model Reducer が既定の許容誤差
1e-05
でそれらを相殺するほどには互いに近くありません。もう少し離れているペアを相殺するには、スライダーを右に動かすか、テキスト ボックスにより大きい値を入力します。極-零点配置図上の青色の
x
およびo
のマークは、簡略化されたモデルからは削除された、元のモデル上のほぼ相殺される極-零点のペアを示します。簡略化されたモデルに残っている極と零点は、赤色のx
およびo
でマークされています。元のモデルと簡略化されたモデルの周波数応答を観察しながら、異なる簡略化の許容誤差を試します。アプリケーションにとって重要な周波数範囲内のシステム動作を保持しながら、極と零点をできるだけ多く削除します。必要に応じて、元のモデルと簡略化されたモデルの間の絶対誤差または相対誤差を調べます。[極-零点の簡略化] タブにあるボタンを使用して、誤差のプロット タイプを選択します。
解析プロットの使用方法の詳細については、低次元化されたモデルの Model Reducer アプリによる可視化を参照してください。
さらに格納して解析する簡略化モデルがある場合、[低次元化されたモデルの保存] をクリックします。新しいモデルが、低次元化されたモデルの次数を反映する名前と共にデータ ブラウザーに表示されます。
低次元化されたモデルをデータ ブラウザーに作成した後、引き続き簡略化パラメーターを変更して、解析や比較用に異なる次数をもつ低次元化されたモデルを作成することができます。
これで、低次元化されたモデルを使用してさらに解析を行うことができるようになります。以下に例を示します。
低次元化されたシステムの、ステップ応答またはニコルス線図などの他の応答を調べます。これを行うには、[プロット] タブのツールを使用します。詳細については、低次元化されたモデルの Model Reducer アプリによる可視化を参照してください。
さらに解析または制御設計を行うために、低次元化されたモデルを MATLAB ワークスペースにエクスポートします。[Model Reducer] タブで、 [エクスポート] をクリックします。
極-零点の簡略化のための MATLAB コードの生成
コマンド ラインでモデルの低次元化タスクをさらに行うために使用できる MATLAB スクリプトを作成するには、[低次元化されたモデルの保存] をクリックして、[MATLAB スクリプトの生成] を選択します。
Model Reducer は、[極-零点の簡略化] タブで設定したパラメーターによるモデルの低次元化を、minreal
コマンドを使用して実行するスクリプトを作成します。スクリプトが MATLAB エディターで開きます。
コマンド ラインでの極-零点相殺
コマンド ラインで極-零点相殺によってモデルの次数を低次元化するには、minreal
を使用します。
次のシステムのモデルを作成します。ここで、C
は PI コントローラーであり、G
は rad/s に零点をもちます。このような低周波の零点は、プラント ダイナミクスのどこかで微分動作を行うことによって生じます。たとえば、プラントに位置測定から速度を計算するコンポーネントが含まれているとします。
G = zpk(3e-8,[-1,-3],1); C = pid(1,0.3); T = feedback(G*C,1)
T = (s+0.3) (s-3e-08) ---------------------- s (s+4.218) (s+0.7824) Continuous-time zero/pole/gain model.
閉ループ モデル T
では、C
の積分器 によって、G
の低周波数の零点がほぼ相殺されます。
原点近傍の零点を使用して、積分器の相殺を強制します。
Tred = minreal(T,1e-3)
Tred = (s+0.3) -------------------- (s+4.218) (s+0.7824) Continuous-time zero/pole/gain model.
既定では、minreal
は sqrt(eps)
内の厳密に同じ極-零点のペア、またはほぼ同じ極-零点のペアを相殺することによって、伝達関数を低次元化します。1e-3
を 2 番目の入力として指定すると、minreal
は互いに rad/s 以内の極-零点のペアを除去します。
低次元化されたモデル Tred
には、ほぼ相殺される極-零点のペアを除く、元の閉ループ モデル T
のすべてのダイナミクスが含まれています。
元のシステムと低次元化されたシステムの周波数応答を比較します。
bode(T,Tred,'r--') legend('T','Tred')
相殺された極と零点は完全には一致していないため、元のモデルでは明らかな極端に低周波数のダイナミクスの一部が Tred
で不在になっています。多くのアプリケーションでは、そのように極端に周波数が低いダイナミクスは無視して構いません。minreal
の一致の許容誤差を大きくする場合、アプリケーションに関連する動的な機能を排除しないように注意してください。