pfss
部分分数分解
呼び出し手順
elts = pfss(Sl) elts = pfss(Sl,rmax) elts = pfss(Sl,'cord') elts = pfss(Sl, rmax,'cord')
パラメータ
- Sl
A linear dynamical system in state-space, or a transfer function representation (see syslin), or any rational fraction.
- rmax
A real number controlling the conditioning of block diagonalization (see bdiag).
- cord
A character string with possible values
'c'
or'd'
.- elts
List of linear systems, or list of rationals: the components of the decomposition.
If
Sl
is a transfer function or any other rational and has an integer part (degree(Sl.num)>=degree(Sl.den)),elts(1:$-1)
are rational components andelts($)
is the integer part (polynomial).
説明
線形システムSl
(状態空間形式,伝達行列は
tf2ss
により自動的に状態空間形式に変換されます)の部分分数分解:
elts
は,
加算するとSl
となる
線形システムのリストです.
すなわち elts=list(S1,S2,S3,...,Sn)
:
ただし,Sl = S1 + S2 +... +Sn
.
各 Si
は
S
のA
行列のブロック対角に基づく
Sのいくつかの極を含みます.
プロパーでないシステムの場合,Sl
の多項式部分が
elts
の最後のエントリに置かれます.
Sl
が伝達形式で指定された場合, まず状態空間に変換され,
その後,各サブシステムSi
が伝達形式に変換されます.
A 行列の状態空間形式は,
関数bdiag
によりブロック対角形式に変換されます.
オプションのパラメータ
rmax
はbdiag
に送られます.
rmax
はブロック対角化を成立させるために
大きな数に設定する必要があります.
オプションフラグ cord='c'
が指定された場合,
elts
の要素はA行列の固有値の実部
(cord='d'
の場合は大きさ)でソートされます.
例
// With a linear system (state-space): W = ssrand(1,1,6); elts = pfss(W); W1 = 0; for k = 1:size(elts) W1 = W1 + ss2tf(elts(k)); end clean(ss2tf(W) - W1)
// With a rational (transfer function or any other one), without integer part: num = 22801+4406.18*%s + 382.37*%s^2 + 21.02*%s^3; den = 22952.25 + 4117.77*%s + 490.63*%s^2 + 33.06*%s^3 + %s^4; // degree(den)>degree(num) h2 = syslin('c',num/den) d = pfss(h2) // With a rational with an integer part: degree(num)>=degree(den): num = 22801+4406.18*%s + 382.37*%s^2 + 21.02*%s^3 + %s^5; h2 = syslin('c',num/den) d = pfss(h2) typeof(d($)) // last component = integer part = polynomial
Report an issue | ||
<< markp2ss | Linear System Representation | pol2des >> |