Main Content

residue

部分分数展開 (部分分数分解)

説明

[r,p,k] = residue(b,a) は、2 つの多項式の比の部分分数展開の留数、極および直接項を求めます。ここで展開は次の形式になります。

b(s)a(s)=bmsm+bm1sm1++b1s+b0ansn+an1sn1++a1s+a0=rnspn+...+r2sp2+r1sp1+k(s).

residue への入力は、多項式 b = [bm ... b1 b0] および a = [an ... a1 a0] の係数のベクトルです。出力は、留数 r = [rn ... r2 r1]、極 p = [pn ... p2 p1] および多項式 k です。教科書に出てくるような問題では、ほとんどの場合において k0 または定数になります。

[b,a] = residue(r,p,k) は、部分分数展開を 2 つの多項式の比に変換し直して、ba に係数を返します。

すべて折りたたむ

residue を使用して、次の多項式 F(s) の比の部分分数展開を求めます。

F(s)=b(s)a(s)=-4s+8s2+6s+8.

b = [-4 8];
a = [1 6 8];
[r,p,k] = residue(b,a)
r = 2×1

   -12
     8

p = 2×1

    -4
    -2

k =

     []

これは次の部分分数展開を表現します。

-4s+8s2+6s+8=-12s+4+8s+2.

residue を使用して、部分分数展開を多項式の係数に変換し直します。

[b,a] = residue(r,p,k)
b = 1×2

    -4     8

a = 1×3

     1     6     8

この結果は元の分数 F(s) を表現します。

分子と分母の次数が等しい場合、出力 k は非ゼロになることがあります。

分子と分母が同次数で複素根をもつ 2 つの多項式の比 F(s) の部分分数展開を求めます。ここで F(s) は次のようになります。

F(s)=b(s)a(s)=2s3+s2s3+s+1.

b = [2 1 0 0];
a = [1 0 1 1];
[r,p,k] = residue(b,a)
r = 3×1 complex

   0.5354 + 1.0390i
   0.5354 - 1.0390i
  -0.0708 + 0.0000i

p = 3×1 complex

   0.3412 + 1.1615i
   0.3412 - 1.1615i
  -0.6823 + 0.0000i

k = 2

residue は、虚数根と極、および定数項 k を返し、これは部分分数展開を表します。

F(s)=b(s)a(s)=2s3+s2s3+s+1=0.5354+1.0390is-(0.3412+1.1615i)+0.5354-1.0390is-(0.3412-1.1615i)+-0.0708s+0.6823+2.

分子の次数が分母の次数より大きい場合、出力 ks の多項式の係数を表すベクトルになります。

residue を使用して、次の F(s) の部分分数展開を行います。

F(s)=b(s)a(s)=2s4+ss2+1=0.5-1is-1i+0.5+1is+1i+2s2-2.

b = [2 0 0 1 0];
a = [1 0 1];
[r,p,k] = residue(b,a)
r = 2×1 complex

   0.5000 - 1.0000i
   0.5000 + 1.0000i

p = 2×1 complex

   0.0000 + 1.0000i
   0.0000 - 1.0000i

k = 1×3

     2     0    -2

k は、多項式 2s2-2 を表します。

入力引数

すべて折りたたむ

分子にある多項式の係数。多項式の係数を s の降べき順に表す数値のベクトルとして指定します。

データ型: single | double
複素数のサポート: あり

分母にある多項式の係数。多項式の係数を s の降べき順に表す数値のベクトルとして指定します。

データ型: single | double
複素数のサポート: あり

出力引数

すべて折りたたむ

部分分数展開の留数。数値の列ベクトルとして返されます。

部分分数展開の極。数値の列ベクトルとして返されます。

直接項。多項式の係数を s の降べき順に指定する数値の行ベクトルとして返されます。

詳細

すべて折りたたむ

部分分数展開

次数がそれぞれ n と m (n と m は正) である 2 つの多項式 b と a の分数 F(s) について考えてみます。

F(s)=b(s)a(s)=bnsn++b2s2+b1s+b0amsm++a2s2+a1s+a0.

分数 F(s) は単純な分数の和として表現することができます。

b(s)a(s)=rmspm+rm1spm1++r0sp0+k(s)

この和は、F の部分分数展開と呼ばれます。値 rm,...,r1 は留数で、値 pm,...,p1 は極であり、k(s) は s の多項式です。教科書に出てくるような問題では、ほとんどの場合において k (s) は 0 または定数になります。

極の個数 n は、次のようになります。

n = length(a)-1 = length(r) = length(p)

直接項ベクトルは、length(b)<length(a) の場合は空になり、その他の場合は次のようになります。

length(k) = length(b)-length(a)+1

p(j) = ... = p(j+m-1) が多重度 m の極の場合、展開は次の形式の項を含みます。

rjspj+rj+1(spj)2++rj+m1(spj)m.

ヒント

  • residue は、ラプラス領域における 2 つの多項式の比の部分分数展開を計算します。z 領域における部分分数展開を計算する場合は、residuez (Signal Processing Toolbox)を使用できます。

アルゴリズム

まず residueroots を使って極を求めます。次に、真分数でない場合は、deconv を使って多項式の長除法で直接項 k を求めます。最後に residue は、個々の根を除いた多項式を計算して留数を求めます。重根については、resi2 は重根の位置での留数を計算します。

数値的に、多項式の比からの部分分数展開は、不良設定問題になります。分母多項式 a(s) が重根をもつ多項式に近い場合、丸め誤差を含むデータのわずかな変化によって極や留数の結果が大きく変化することがあります。状態空間または零点-極表現を使った問題の定式化の方が好ましいといえます。

参照

[1] Oppenheim, A.V. and R.W. Schafer. Digital Signal Processing. Prentice-Hall, 1975, p. 56.

バージョン履歴

R2006a より前に導入