Main Content

stabsep

    説明

    [G1,G2] = stabsep(G) は、線形時不変 (LTI) モデル G を安定な部分と不安定な部分に分けます。

    G=G1+G2

    G1 は、数値的に安定な方法で不安定なモードから分離できるすべての安定なモード (極) を含み、G2 は、残りのモードを含みます。G1 は常にプロパーであり、直達項を含みます (存在する場合)。

    [G1,G2] = stabsep(G,Offset) は、以下を満たすすべての極が G1 に含まれるように安定境界をシフトします。 (R2023b 以降)

    • Re(s) < -Offset × max(1,|Im(s)|) (連続時間)

    • |z| < 1 - Offset (離散時間)

    [G1,G2] = stabsep(G,___,Name=Value) は、精度を制御するか不安定なモードにフォーカスするための追加オプションを指定します。 (R2023b 以降)

    [G1,G2,info] = stabsep(___) は、ブロック対角化変換行列が含まれている構造体 info を返します。 (R2023b 以降)

    すべて折りたたむ

    この例では、零点-極-ゲイン モデルを安定な部分と不安定な部分に分ける方法を示します。

    以下のシステムを考えます。

    H(s)=0.1(s+2)(s+1)(s-1)(s+0.001)

    システムには 3 つの安定した極と 1 つの不安定な極が含まれています。1 つの安定した極は安定境界のごく近くにあります。

    このシステムの zpk モデルを作成し、安定/不安定分解を得ます。

    h = zpk(1,[-2 -1 1 -0.001],0.1);
    [h1,h2] = stabsep(h)
    h1 =
     
               0.1
      ---------------------
      (s+0.001) (s+1) (s+2)
     
    Continuous-time zero/pole/gain model.
    
    h2 =
     
      -2.8326e-18
      -----------
         (s-1)
     
    Continuous-time zero/pole/gain model.
    

    安定な部分 h1 にはすべての安定な極が含まれます。Offset 引数を使用して安定境界をシフトし、名目上は安定している極 (s = –0.001) を分解の安定な部分から除外できます。

    シフトした境界を使用して分解を計算します。

    [h1,h2] = stabsep(h,0.1)
    h1 =
     
      -0.050075 (s+2.999)
      -------------------
          (s+1) (s+2)
     
    Continuous-time zero/pole/gain model.
    
    h2 =
     
      0.050075 (s-1)
      ---------------
      (s+0.001) (s-1)
     
    Continuous-time zero/pole/gain model.
    

    この分解では、名目上は安定な極は、不安定な部分 h2 に含まれます。

    既定では、関数は安定な部分を最初の出力引数に入れ、不安定な部分を 2 番目の出力引数に入れて返します。Focus オプションを使用して順序を入れ替えることができます。

    [h1,h2] = stabsep(h,Focus="unstable")
    h1 =
     
      -2.1943e-18
      -----------
         (s-1)
     
    Continuous-time zero/pole/gain model.
    
    h2 =
     
               0.1
      ---------------------
      (s+0.001) (s+1) (s+2)
     
    Continuous-time zero/pole/gain model.
    

    この分解では、h1 に不安定な極と名目上は安定な極が含まれます。

    入力引数

    すべて折りたたむ

    分解する動的システム。ss または tf モデルなどの数値 LTI モデルとして指定します。

    R2023b 以降

    安定/不安定境界のオフセット。スカラーとして指定します。安定/不安定分解では、安定項は次の条件を満たす極のみを含みます。

    • Re(s) < -Offset × max(1,|Im(s)|) (連続時間)

    • |z| < 1 - Offset (離散時間)

    安定境界の近くの極を G1 から除外するには、Offset の値を増加します。

    名前と値の引数

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

    例: [G1,G2] = stabsep(G,0.1,SepTol=100)

    R2023b 以降

    分解のフォーカス。"stable" または "unstable" として指定します。

    • "stable" — 最初の引数 G1 には以下を満たすすべての極が含まれます。

      • Re(s) < -Offset × max(1,|Im(s)|) (連続時間)

      • |z| < 1 - Offset (離散時間)

    • "unstable" — 最初の引数 G1 には以下を満たすすべての極が含まれます。

      • Re(s) > Offset × max(1,|Im(s)|) (連続時間)

      • |z| > 1 + Offset (離散時間)

    安定な部分と不安定な部分に等しく分けることが数値的に不可能な場合、G1 に望ましいモードの最大のサブセットが含まれ、G2 に残りの安定なモードと不安定なモードが混ぜ合わさって含まれます。

    R2023b 以降

    安定/不安定分解の精度損失係数。正のスカラー値として指定します。モデル G(s) を分解するときに、stabsep は、G と G1 + G2 の周波数応答の差が、G(s) の計算値の絶対精度の SepTol 倍よりも大きくならないようにします。SepTol を増やすことは、精度を犠牲にして、近傍の安定モードと不安定モードを分離する場合には役立ちます。

    出力引数

    すべて折りたたむ

    分解の安定な部分。G と同じタイプのモデルとして返されます。

    Focus"unstable" に設定されている場合、関数は G1 引数で分解の不安定な部分を返します。

    分解の不安定な部分。G と同じタイプのモデルとして返されます。

    Focus"unstable" に設定されている場合、関数は G2 引数で分解の安定な部分を返します。

    R2023b 以降

    分解に関する追加情報。次のフィールドをもつ構造体として返されます。

    フィールド説明
    TLブロック対角化変換の左辺の行列。Nx 行 Nx 列の次元をもつ行列として返されます。ここで Nx はモデル G 内の状態の数です。
    TRブロック対角化変換の右辺の行列。Nx 行 Nx 列の次元をもつ行列として返されます。ここで Nx はモデル G 内の状態の数です。

    アルゴリズムはモデルの状態空間実現 (A, B, C, D) を以下に変換します。

    TLATR=(A100A2),TLB=(B1B2),CTR=(C1C2)

    変換はシステムをスケーリングし、安定な部分と不安定な部分を分離します。A1 のすべてのモードは不安定で、A2 のすべてのモードは安定しています。

    入力モデル G が状態空間モデルでない場合、関数はこの引数に対して空の値 [] を返します。

    参照

    [1] Bartels, R. H., and G. W. Stewart. “Algorithm 432 [C2]: Solution of the Matrix Equation AX + XB = C [F4].” Communications of the ACM 15, no. 9 (September 1972): 820–26. https://doi.org/10.1145/361573.361582.

    [2] Bavely, Connice A., and G. W. Stewart. “An Algorithm for Computing Reducing Subspaces by Block Diagonalization.” SIAM Journal on Numerical Analysis 16, no. 2 (April 1979): 359–67. https://doi.org/10.1137/0716028.

    [3] Demmel, James. “The Condition Number of Equivalence Transformations That Block Diagonalize Matrix Pencils.” SIAM Journal on Numerical Analysis 20, no. 3 (June 1983): 599–610. https://doi.org/10.1137/0720040.

    バージョン履歴

    R2006a より前に導入

    すべて展開する