Main Content

getSectorIndex

線形システムの円錐セクター インデックスの計算

説明

RX = getSectorIndex(H,Q) は、線形システム HQ で指定した円錐セクターの相対インデックス RX を計算します。RX < 1 の場合、すべての出力軌跡 y(t) = Hu(t) が次のように定義されるセクター内に収まります。

0Ty(t)TQy(t)dt<0,

すべての T ≥ 0 について上記が成り立つとします。

また、getSectorIndex は、線形システム G のすべての I/O 軌跡 {u(t),y(t)} が次のように定義されるセクター内に収まっているかどうかもチェックできます。

0T(y(t)u(t))TQ(y(t)u(t))dt<0,

すべての T ≥ 0 について上記が成り立つとします。これを行うには、getSectorIndexH = [G;I] を使用します。ここで I = eyes(nu) であり、nuG の入力数です。

セクター境界と相対インデックスの詳細については、セクター境界とセクター インデックスについてを参照してください。

RX = getSectorIndex(H,Q,tol) は、tol で指定した相対精度をもつインデックスを計算します。

RX = getSectorIndex(H,Q,tol,fband) は、インデックスを定義する不等式を指定した周波数範囲に制限して受動性インデックスを計算します。この構文は、QH の入力と同数の負の固有値をもつ場合にのみ使用可能です。

[RX,FX] = getSectorIndex(___) は、インデックス値 RX が得られた周波数 FX も返します。Q の負の固有値数が H の入力数と異なる場合、FXNaN に設定されます。この構文では、入力引数を前述の任意の組み合わせで使用できます。

[RX,FX,W1,W2,Z] = getSectorIndex(___) は、Q の正の部分と負の部分への分解も返します。また、Q が動的な場合はスペクトル因子 Z を返します。Q が行列 (定数のセクター境界) の場合は Z = 1 です。この構文では、入力引数を前述の任意の組み合わせで使用できます。

DX = getSectorIndex(H,Q,dQ) は、行列 dQ で指定した方向のインデックスを計算します。DX > 0 の場合、H の出力軌跡は Q で指定した円錐セクター内に収まります。方向インデックスの詳細については、セクター境界とセクター インデックスについてを参照してください。

H が周波数応答データ (frd) モデルの場合、方向インデックスは使用できません。

DX = getSectorIndex(H,Q,dQ,tol) は、tol で指定した相対精度をもつインデックスを計算します。

すべて折りたたむ

G(s)=(s+2)/(s+1) の I/O 軌跡が、次のように定義されるセクター内に平均で収まっているかどうかをテストします。

S={(y,u):0.1u2<uy<10u2}.

U/Y 領域では、このセクターは次の図の影付きの領域になります。

このセクターに対応する行列 Q は次のようになります。

Q=[1-(a+b)/2-(a+b)/2ab];a=0.1,b=10.

軌跡 y(t)=Gu(t) は、すべての T > 0 について次が成り立つとき、セクター S 内にあります。

0.10Tu(t)2<0Tu(t)y(t)dt<100Tu(t)2dt.

G の軌跡が Q で表されるセクター境界を満たすかどうかをチェックするには、H = [G;1]R インデックスを計算します。

G = tf([1 2],[1 1]); 

a = 0.1;  b = 10;
Q = [1 -(a+b)/2 ; -(a+b)/2 a*b];

R = getSectorIndex([G;1],Q)
R = 0.4074

この結果として得られる R は 1 より小さく、軌跡がセクター内に収まっていることが示されます。R の値は、軌跡がセクター内にどれだけ厳密に収まるかを示します。この値 R = 0.41 は、底辺が 1/0.41 つまり 2.4 倍小さい、さらに狭いセクター内に軌跡が収まることを意味します。

複素係数を持つシステムでは、指定する fband によって、getSectorIndex は負の周波数または正の周波数でのインデックスを返す場合があります。

複素係数と複素数のセクター行列をもつ状態空間モデルを読み込みます。

load dataSysQ sys Q

R インデックスとその周波数を 0.0001% の相対精度で計算します。また、fband = [1,10] と指定して、周波数範囲 [–10,–1] ∪ [1,10] でインデックスを計算します。

[R,FX] = getSectorIndex(sys,Q,1e-6,[1,10])
R = 1.5811
FX = -7.2320

この範囲で、sys は負の周波数値 –7.2320 rad/s でインデックス 1.5811 に達します。sectorplot を使用してこの範囲のインデックスをプロットします。

opt = sectorplotoptions;
opt.FreqScale = 'Linear';
opt.IndexScale = 'Linear';
w = linspace(-10,10,1000);
sectorplot(sys,Q,w,opt)

ここで、周波数範囲 [–5,–1] ∪ [1,5] でインデックスを計算します。これを行うには fband = [1,5] と指定します。

[r,f] = getSectorIndex(sys,Q,1e-6,[1,5])
r = 1.4630
f = 2.2499

この範囲で、sys は正の周波数値 2.2499 rad/s でインデックス 1.4630 に達します。この範囲でインデックスをプロットして結果を確認します。

w = linspace(-5,5,500);
sectorplot(sys,Q,w,opt)

入力引数

すべて折りたたむ

セクター境界に対して解析するモデル。tf モデル、ss モデル、または genss モデルなどの動的システム モデルとして指定します。H は連続または離散のどちらにすることもできます。H が調整可能なブロックまたは不確かさをもつブロックを含む一般化モデルの場合、getSectorIndexH の現在のノミナル値を解析します。

線形システム G のすべての I/O 軌跡 {u(t),y(t)} が特定のセクター内に収まっているかどうかを解析するには、H = [G;I] を使用します。

H がモデル配列の場合、getSectorIndex は受動性インデックスを同じサイズの配列として返します。

index(k) = getSectorIndex(H(:,:,k),___)

ここで、index は使用する入力引数に応じて RX または DX のいずれかになります。

セクターの形状。次のように指定します。

  • 定数のセクター形状の場合は行列。Q は 1 辺が ny の対称正方行列です。ここで、nyH の出力数です。

  • 周波数依存のセクター形状の場合は LTI モデル。QQ(s)’ = Q(–s) を満たします。つまり、Q(s) は各周波数でエルミート行列と評価されます。

行列 Q は適切に定義された円錐セクターを表すために不定でなければなりません。不定行列には、正と負両方の固有値があります。

詳細については、セクター境界とセクター インデックスについてを参照してください。

計算するセクター インデックスの相対精度。既定では、許容誤差は 1% です。つまり、返されるインデックスは実際のインデックスの 1% 以内です。

セクター インデックスを計算するための周波数範囲。0 ≤ fmin < fmax である [fmin,fmax] 形式の配列として指定します。fband を指定すると、getSectorIndex はインデックスを定義する不等式を指定した周波数範囲に制限します。

複素係数をもつモデルでは、getSectorIndex は、[–fmax,–fmin][fmin,fmax] の範囲でインデックスを計算します。その結果、関数は負の周波数でのインデックスを返す場合があります。

周波数は rad/TimeUnit 単位で指定します。ここで、TimeUnit は動的システム モデル HTimeUnit プロパティです。

方向セクター インデックスを計算する方向。非負定値行列として指定します。行列 dQ は 1 辺が ny の対称正方行列です。ここで、nyH の出力数です。

出力引数

すべて折りたたむ

Q で指定したセクターに対するシステム H の相対インデックス。スカラー値または配列 (H が配列の場合) として返されます。RX < 1 の場合、H の出力軌跡は Q の円錐内に収まります。

RX の値は、H の出力軌跡が円錐内にどれだけ厳密に収まるかを測定します。次の式を正の部分と負の部分への対称行列 Q の直交分解にします。

Q=W1W1TW2W2T,W1TW2=0.

(このような分解は、Q の Schur 分解から簡単に得ることができます)。このとき、RX は次を満たす R の最小値です。

0Ty(t)T(W1W1TR2W2W2T)y(t)dt<0,

すべての T ≥ 0 について上記が成り立つとします。R を変更することは、H の出力軌跡が Q で指定した円錐内に厳密に収まるまで円錐の傾斜角度を調整することと同じです。円錐の底辺/高さ比は R に比例します。

相対インデックスの解釈の詳細については、セクター境界とセクター インデックスについてを参照してください。

インデックス RX が得られた周波数。スカラーまたは配列 (H が配列の場合) として返されます。一般に、インデックスは周波数によって異なります (sectorplot を参照)。戻り値は、すべての周波数における最大値です。FX はこの値が発生している周波数で、rad/TimeUnit 単位で返されます。ここで、TimeUnitHTimeUnit プロパティです。

FX は複素係数をもつシステムに対して負になる場合があります。

Q の正の因子と負の因子。行列として返されます。定数 Q に対して W1W2 は以下を満たします。

Q=W1W1TW2W2T,W1TW2=0.

Q の因数分解における双安定モデル。以下のように返されます。

  • Q が定数行列の場合、Z = 1 です。

  • Q が周波数に依存している場合、Z は次のような状態空間 (ss) モデルです。

Q(jω)=Z(jω)H(W1W1TW2W2T)Z(jω).

Q で指定したセクターに対するシステム H の方向 dQ の方向セクター インデックス。スカラー値または配列 (H が配列の場合) として返されます。方向インデックスは次を満たす τ の最大値です。

0Ty(t)T(Q+τdQ)y(t)dt<0,

すべての T ≥ 0 について上記が成り立つとします。

バージョン履歴

R2016a で導入