このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
isstable
動的システム モデルが安定であるかどうかの判定
説明
は、動的システム モデル B
= isstable(sys
)sys
が安定したダイナミクスをもつ場合に 1
(true
) の logical 値を返し、それ以外の場合は 0
(false
) の logical 値を返します。sys
がモデル配列の場合、関数は、sys
のすべてのモデルが安定である場合にのみ 1
を返します。
次の場合、isstable
は動的システムの安定性について logical 値 1
(true
) を返します。
連続時間システムでは、すべての極が複素平面の左開半平面内にある。
離散時間システムでは、すべての極が単位開円板内にある。
isstable
は、有限個の極をもつ解析モデルでのみサポートされます。
は、1 つ以上の指定された名前と値の引数を使用して指定されたオプションに基づいて極のサブセットを計算することで、スパース モデル B
= isstable(___,Name=Value
)sys
の安定性を判別します。sys
が非スパース モデルの場合、関数は名前と値の引数を無視します。 (R2025a 以降)
例
0.1
秒のサンプル時間をもつこの離散時間 SISO 伝達関数モデルの安定性を判別します。
離散時間伝達関数モデルを作成します。
sys = tf([2,0],[4,0,3,-1],0.1);
システムの極を調べます。
P = abs(pole(sys))
P = 3×1
0.9159
0.9159
0.2980
伝達関数モデルのすべての極は 1
より小さい振幅をもつため、すべての極は単位開円板内にあり、システムは安定です。
isstable
を使用してモデルの安定性を確認します。
B = isstable(sys)
B = logical
1
システム sys
は安定です。
この連続時間零点-極-ゲイン モデルの安定性を判別します。
零点、極、ゲインを指定してモデルを zpk
モデル オブジェクトとして作成します。
sys = zpk([],[-2-3*j,-2+3*j,0.5],2);
モデルの 1 つの極が複素平面の右半平面内にあるため、システムは不安定です。
isstable
を使用してモデルの不安定性を確認します。
B = isstable(sys)
B = logical
0
システム sys
は不安定です。
-2
から 2
まで変動する極をもつ SISO 伝達関数モデルの配列の安定性を判別します。
配列を作成するには、まずゼロ値の SISO 伝達関数をもつ次元 [length(a),1]
の配列を初期化します。
a = [-2:2]; sys = tf(zeros(1,1,length(a)));
その配列に 1/(s-a)
形式の伝達関数を設定します。
for j = 1:length(a) sys(1,1,j) = tf(1,[1 -a(j)]); end
isstable
によって、モデル配列内のすべてのモデルが安定か、または各個別のモデルが安定かを判定できます。
モデル配列の安定性を検証します。
B_all = isstable(sys)
B_all = logical
0
既定では、isstable
は配列内のすべてのモデルが安定な場合にのみ 1
(true
) となる単一の logical 値を返します。sys
には、安定でない非負の極をもついくつかのモデルが含まれています。したがって、isstable
は配列全体について 0
(false
) を返します。
'elem'
フラグを使用して配列内の各モデルの安定性を検証します。
B_elem = isstable(sys,'elem')
B_elem = 5×1 logical array
1
1
0
0
0
この関数は、モデル配列内の対応するエントリの安定性を示す logical 値の配列を返します。たとえば、B_elem(2)
は 1
です。これは、配列の 2 番目のモデル sys(1,1,2)
が安定であることを示しています。これは、sys(1,1,2)
が -1
に極をもつためです。
R2025a 以降
この例では、音叉のスパース 2 次モデルが含まれている tuningForkData.mat
について考えます。スパース状態空間モデルの場合、isstable
は、対象の周波数範囲内の計算のサブセットに基づいて安定性を判別します。
tuningForkData.mat
からワークスペースにスパース行列を読み込み、mechss
モデル オブジェクトを作成します。
load tuningForkData.mat;
sys = mechss(M,[],K,B,F)
Sparse continuous-time second-order model with 2 outputs, 1 inputs, and 3024 degrees of freedom. Model Properties Use "spy" and "showStateInfo" to inspect model structure. Type "help mechssOptions" for available solver options for this model.
10000 rad/s までの周波数範囲での安定性を確認します。
b = isstable(sys,Focus=[0 1e4])
b = logical
0
音叉モデル sys
は非減衰モデルであり、isstable
は期待どおりに 0
を返します。これは damp
関数を使用して確認できます。
damp(sys,Focus=[0 1e4])
Pole Damping Frequency Time Constant (rad/seconds) (seconds) 0.00e+00 + 2.96e+03i 0.00e+00 2.96e+03 Inf 0.00e+00 - 2.96e+03i 0.00e+00 2.96e+03 Inf 0.00e+00 + 2.96e+03i 0.00e+00 2.96e+03 Inf 0.00e+00 - 2.96e+03i 0.00e+00 2.96e+03 Inf 0.00e+00 + 3.01e+03i 0.00e+00 3.01e+03 Inf 0.00e+00 - 3.01e+03i 0.00e+00 3.01e+03 Inf 0.00e+00 + 3.02e+03i 0.00e+00 3.02e+03 Inf 0.00e+00 - 3.02e+03i 0.00e+00 3.02e+03 Inf
次に、周波数が 3000 rad/s で最小減衰が 0.01 のレイリー減衰 を追加します。
wmin = 3000; zmin = 0.01; alpha = zmin*wmin; beta = zmin/wmin; C_d = alpha*M+beta*K; sys_d = mechss(M,C_d,K,B,F)
Sparse continuous-time second-order model with 2 outputs, 1 inputs, and 3024 degrees of freedom. Model Properties Use "spy" and "showStateInfo" to inspect model structure. Type "help mechssOptions" for available solver options for this model.
この減衰モデルの安定性を確認します。
isstable(sys_d,Focus=[0 1e4])
ans = logical
1
減衰を追加すると、モデルの計算された極はすべて左半平面内に存在します。
damp(sys_d,Focus=[0 1e4])
Pole Damping Frequency Time Constant (rad/seconds) (seconds) -2.96e+01 + 2.96e+03i 1.00e-02 2.96e+03 3.38e-02 -2.96e+01 - 2.96e+03i 1.00e-02 2.96e+03 3.38e-02 -2.96e+01 + 2.96e+03i 1.00e-02 2.96e+03 3.38e-02 -2.96e+01 - 2.96e+03i 1.00e-02 2.96e+03 3.38e-02 -3.01e+01 + 3.01e+03i 1.00e-02 3.01e+03 3.33e-02 -3.01e+01 - 3.01e+03i 1.00e-02 3.01e+03 3.33e-02 -3.02e+01 + 3.02e+03i 1.00e-02 3.02e+03 3.31e-02 -3.02e+01 - 3.02e+03i 1.00e-02 3.02e+03 3.31e-02
入力引数
動的システム。SISO または MIMO 動的システム モデル、あるいは SISO または MIMO 動的システム モデルの配列として指定します。使用できる動的システムには、tf
、zpk
、ss
モデルなどの連続時間または離散時間の数値 LTI モデルが含まれます。
sys
が一般化状態空間モデル genss
または不確かさをもつ状態空間モデル uss
(Robust Control Toolbox) である場合、isstable
は、sys
の現在の値またはノミナル値の安定性を確認します。
sys
がスパース状態空間モデル (sparss
または mechss
) の場合、ソフトウェアは指定した焦点の周波数帯域内における極のサブセットを計算して安定性を確認します。スパース モデルの場合は、名前と値の引数を使用して計算オプションを指定します。オプションを指定しなかった場合、ソフトウェアは最小の振幅をもつ最初の 1000 個の極を計算します。レイリー減衰をもつ mechss
モデルの場合、ソフトウェアは (K,M) の固有値から極を計算します。それ以外の場合、ソフトウェアは同等の sparss
モデルから極を計算します。 (R2025a 以降)
sys
がモデルの配列である場合、isstable
は配列内のすべてのモデルの安定性を確認します。
B = isstable(sys)
を使用する場合、配列内のすべてのモデルが安定である場合にのみ、出力は1
(true
) です。B = isstable(sys,'elem')
を使用する場合、出力は logical 配列であり、そのエントリは、モデル配列内の対応するエントリの安定性を示しています。
モデル配列の詳細については、モデル配列を参照してください。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: B = isstable(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"
として指定します。
出力引数
True または false の結果。安定モデルの場合 1
、または不安定モデルの場合 0
として返されます。
'elem'
フラグによって isstable
はモデル配列と同じ次元をもつ logical 値の配列を返します。配列の値は、モデル配列の対応するエントリの安定性を示しています。
アルゴリズム
スパース状態空間モデルの場合、ソフトウェアは逆べき乗法に 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 で導入対象の周波数範囲内で計算された極のサブセットに基づいて、スパース モデルの安定性を判別できるようになりました。既定では、関数は、最小の振幅をもつ最初の 1000 個の極を計算します。多数の極を計算しないようにするために、新しい構文 B = isstable(sparseSys,Name=Value)
を使用して、対象の周波数範囲や計算する極の最大数などのオプションを指定できます。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)