scipy.signal.

residue#

scipy.signal.residue(b, a, tol=0.001, rtype='avg')[原始碼]#

計算 b(s) / a(s) 的部分分式展開式。

如果 M 是分子 b 的階數,而 N 是分母 a 的階數

        b(s)     b[0] s**(M) + b[1] s**(M-1) + ... + b[M]
H(s) = ------ = ------------------------------------------
        a(s)     a[0] s**(N) + a[1] s**(N-1) + ... + a[N]

則部分分式展開式 H(s) 定義為

    r[0]       r[1]             r[-1]
= -------- + -------- + ... + --------- + k(s)
  (s-p[0])   (s-p[1])         (s-p[-1])

如果存在任何重複根(彼此之間的距離小於 tol),則 H(s) 具有如下形式的項

  r[i]      r[i+1]              r[i+n-1]
-------- + ----------- + ... + -----------
(s-p[i])  (s-p[i])**2          (s-p[i])**n

此函數用於 s 或 z 正冪的多項式,例如控制工程中的類比濾波器或數位濾波器。對於 z 的負冪(DSP 中數位濾波器的典型情況),請使用 residuez

請參閱「Notes」章節以瞭解關於演算法的詳細資訊。

Parameters:
barray_like

分子多項式係數。

aarray_like

分母多項式係數。

tolfloat, optional

兩個根在它們之間距離方面被視為相等的容忍度。預設值為 1e-3。請參閱 unique_roots 以瞭解更多詳細資訊。

rtype{‘avg’, ‘min’, ‘max’}, optional

用於計算代表一組相同根的方法。預設值為 ‘avg’。請參閱 unique_roots 以瞭解更多詳細資訊。

Returns:
rndarray

對應於極點的殘值。對於重複極點,殘值會排序為對應於依冪次分數升序排列。

pndarray

依大小升序排列的極點。

kndarray

直接多項式項的係數。

Notes

「通過減法縮減」演算法用於計算 — [1] 中的方法 6。

部分分式展開式的形式取決於精確數學意義上的極點重數。但是,在數值計算中,無法精確確定多項式根的重數。因此,您應該將給定 tolresidue 結果視為針對由計算出的極點組成的分母計算的部分分式展開式,並具有經驗確定的重數。tol 的選擇可能會在存在接近的極點時大幅改變結果。

References

[1]

J. F. Mahoney, B. D. Sivazlian, “Partial fractions expansion: a review of computational methodology and efficiency”, Journal of Computational and Applied Mathematics, Vol. 9, 1983.