メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

pole

説明

P = pole(sys) は、SISO または MIMO 動的システム モデル sys の極を返します。出力は sys.TimeUnit で指定される時間単位の逆数として表現されます。動的システムの極によって、システムの安定性と応答が決まります。

開ループ線形時不変システムは以下の場合に安定です。

  • 連続時間の場合、伝達関数のすべての極が負の実数部をもたなければなりません。極が複素 s 平面上に可視化される場合、安定性を確保するには、それらがすべて左半平面 (LHP) になければなりません。

  • 離散時間の場合、すべての極の振幅が厳密に 1 より小さくなければなりません。つまり、すべてが単位円内に収まらなければなりません。

スパース状態空間モデルの場合、この構文は最小の振幅をもつ最初の 1000 個までの極を計算します。 (R2025a 以降)

P = pole(sys,J1,...,JN) は、モデル配列 sys の添字 (J1,...,JN) をもつエントリの極 P を返します。

P = pole(___,Name=Value) は、指定した 1 つ以上の名前と値の引数に基づいて、スパース モデル sys の極のサブセットを計算します。名前と値の引数を指定しなかった場合、関数は最小の振幅をもつ最初の 1000 個までの極を計算します。sys が非スパース モデルの場合、関数は名前と値の引数を無視します。 (R2025a 以降)

すべて折りたたむ

次の離散時間の伝達関数の極を計算します。

sys(z)=0.0478z-0.0464z2-1.81z+0.9048

sys = tf([0.04798 0.0464],[1 -1.81 0.9048],0.1);
P = pole(sys)
P = 2×1 complex

   0.9050 + 0.2929i
   0.9050 - 0.2929i

安定な離散システムの場合、そのすべての極が厳密に 1 より小さい振幅をもたなければなりません。つまり、すべてが単位円内に収まらなければなりません。この例の極は複素共役の組であり、単位円内に収まっています。したがって、システム sys は安定です。

次の伝達関数の極を計算します。

sys(s)=4.2s2+0.25s-0.004s2+9.6s+17

sys = tf([4.2,0.25,-0.004],[1,9.6,17]);
P = pole(sys)
P = 2×1

   -7.2576
   -2.3424

安定な連続システムの場合、そのすべての極が負の実数部をもたなければなりません。極は負であり、つまり複素平面の左半平面にあるため、sys は安定です。

この例では、倒立振子モデルを含む 3 行 3 列の配列が格納された invertedPendulumArray.mat を読み込みます。振子の質量は sys の単一の列に沿ってモデル間を移動するにつれて変化し、振子の長さは単一の行に沿って移動するにつれて変化します。質量の値には 100g、200g、300g、振子の長さには 3m、2m、1m がそれぞれ使用されます。

Column1Column2Column3Row1100g,3m100g,2m100g,1mRow2200g,3m200g,2m200g,1mRow3300g,3m300g,2m300g,1m

load('invertedPendulumArray.mat','sys');
size(sys)
3x3 array of transfer functions.
Each model has 1 outputs and 1 inputs.

モデル配列の極を見つけます。

P = pole(sys);
P(:,:,2,1)
ans = 3×1

    2.1071
   -2.1642
   -0.1426

P(:,:,2,1) は、重さ 200g、長さ 3m の振子をもつモデルの極に対応します。

R2025a 以降

この例では、スパース ビーム モデルの極を計算する方法を示します。スパース状態空間モデルの場合、pole は対象の周波数範囲に基づいて極のサブセットを計算します。

モデルを読み込みます。

load linBeam.mat
size(sys)
Sparse second-order model with 1 outputs, 1 inputs, and 3303 degrees of freedom.

スパース モデルは大規模になることが多いため、すべての極を計算するのは実行不可能であったり、計算コストが高くなったりすることがあります。既定では、pole 関数は、最小の振幅をもつ最初の 1000 個までの極を計算します。

p = pole(sys);
size(p)
ans = 1×2

        1000           1

多数の極を計算しないようにするために、対象の周波数範囲などの追加オプションを指定できます。通常、低周波数帯域を指定します。すると、関数はその範囲内の固有振動数をもつ極のみを計算します。

p2 = pole(sys,Focus=[0 1e4]);
size(p2)
ans = 1×2

     4     1

入力引数

すべて折りたたむ

動的システム。SISO または MIMO 動的システム モデル、あるいは SISO または MIMO 動的システム モデルの配列として指定します。使用できる動的システムには、tf (Control System Toolbox)zpk (Control System Toolbox)ss (Control System Toolbox) モデルなどの連続時間または離散時間の数値 LTI モデルが含まれます。

sys が一般化状態空間モデル genss または不確かさをもつ状態空間モデル uss である場合、pole は、sys の現在の値またはノミナル値の極を返します。sys がモデルの配列である場合、pole は、sys の添字 J1,...,JN に対応するモデルの極を返します。モデル配列の詳細については、モデル配列 (Control System Toolbox)を参照してください。

sys がスパース状態空間モデル (sparss (Control System Toolbox) または mechss (Control System Toolbox)) の場合、ソフトウェアは指定した焦点の周波数帯域内における極のサブセットを計算します。スパース モデルの場合は、名前と値の引数を使用して計算オプションを指定します。オプションを指定しなかった場合、ソフトウェアは最小の振幅をもつ最初の 1000 個までの極を計算します。レイリー減衰をもつ mechss モデルの場合、ソフトウェアは (K,M) の固有値から極を計算します。それ以外の場合、ソフトウェアは同等の sparss モデルから極を計算します。 (R2025a 以降)

抽出する極をもつ配列内モデルのインデックス。正の整数として指定します。sys における配列の次元数と同じ数のインデックスを指定できます。たとえば、sys が動的システム モデルの 4 行 5 列の配列である場合、次のコマンドは配列のエントリ (2,3) の極を抽出します。

P = pole(sys,2,3);

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: B = pole(sparseSys,Focus=[0 10],Display="off")

R2025a 以降

対象の周波数範囲。[fmin,fmax] の形式のベクトルとして指定します。焦点の周波数範囲を指定すると、アルゴリズムはこの範囲内の固有振動数をもつ極のみを計算します。離散時間モデルの場合、ソフトウェアは双一次変換を使用して同等の固有振動数を近似します。

対称半正定値スパース モデルの場合、0 ≤ fmin < fmax の任意の周波数範囲を指定できます。非対称 sparss モデルの場合、周波数範囲を [0,fmax] または [fmin,inf] のいずれかとして指定する必要があります。

ソフトウェアは指定した周波数範囲内のすべての極を計算するため、通常は低周波数範囲を指定して多数の極を計算しないように制限します。既定では、焦点は未指定 ([0 Inf]) であり、アルゴリズムは MaxNumber 個までの極を計算します。

R2025a 以降

計算する極と零点の最大数。正の整数として指定します。この値は、アルゴリズムによって計算される極の数を制限します。

R2025a 以降

スペクトル シフト。有限スカラーとして指定します。

ソフトウェアは A-sigma*E に逆べき乗法を使用して、指定した範囲 [0,fmax] 内の固有振動数をもつ極を計算し、シフト sigma に最も近い固有値を取得します。A が特異で、sigma がゼロの場合、逆が存在しないためアルゴリズムは失敗します。したがって、積分動作をもつスパース モデル (s = 0 または z = 1 (離散時間モデルの場合)) では、このオプションを使用して、極または零点をこのシフト値に最も近い値に暗黙的にシフトできます。元のモデルの既存の極値と等しくないシフト値を指定します。

R2025a 以降

計算された極の精度の許容誤差。正の有限スカラーとして指定します。この値は、逆べき乗法における計算された固有値の収束を制御します。

R2025a 以降

進捗レポートの表示または非表示。"off" または "on" として指定します。

出力引数

すべて折りたたむ

動的システムの極。スカラーまたは配列として返されます。動作は sys により異なります。

  • 単一のモデルの場合、P は動的システム モデル sys の極の列ベクトルです。

  • モデル配列の場合、Psys の各モデルの極からなる配列です。

Psys.TimeUnit で指定される時間単位の逆数として表現されます。たとえば、sys.TimeUnit = 'minutes' の場合、極は 1/分で表されます。

システム モデルのタイプによって、極は次の方法で計算されます。

  • 状態空間モデルでは、極は行列 A の固有値、または、記述子の場合、AλE の一般化固有値です。

    スパース状態空間モデルの場合、極は逆べき乗法 [1] を使用して取得された固有値のサブセットです。 (R2025a 以降)

  • SISO 伝達関数または零点-極-ゲイン モデルでは、極は分母の根です。詳細については、roots を参照してください。

  • MIMO 伝達関数 (または零点-極-ゲイン モデル) では、極は各 SISO 要素の極の和集合として返されます。一部の I/O ペアが共通分母をもつ場合、それらの I/O ペアの分母の根は 1 回だけカウントされます。

制限

  • 複数の極は数値的に敏感なため、高い精度で計算できません。多重度が m の極 λ では通常、中央が λ で半径が次のようになる円に、計算された極のクラスターが生成されます。

    ρε1/m,

    ここで ε はマシンの相対精度 (eps) です。

    複数の極の詳細については、複数の根の感度 (Control System Toolbox)を参照してください。

  • sys に内部遅延がある場合、極は最初にすべての内部遅延をゼロに設定することによって得られます。そのため、システムには有限個の極が存在し、ゼロ次パデ近似が作成されます。システムによっては、遅延をゼロに設定すると、特異値の代数ループが作成されることがあります。そのため、ゼロ遅延の近似が正しく行われないか、間違って定義されることになります。このようなシステムでは、pole はエラーを返します。

    内部遅延をもつモデルの安定性を評価するには、step または impulse を使用します。

アルゴリズム

スパース状態空間モデルの場合、pole は逆べき乗法に Krylov-Schur アルゴリズム [1] を使用して、指定した周波数帯域内の極を計算します。

参照

[1] Stewart, G. W. “A Krylov--Schur Algorithm for Large Eigenproblems.” SIAM Journal on Matrix Analysis and Applications 23, no. 3 (January 2002): 601–14. https://doi.org/10.1137/S0895479800371529.

バージョン履歴

R2012a で導入

すべて展開する

参考

| | | | |

トピック