當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy linalg.solve_toeplitz用法及代碼示例


本文簡要介紹 python 語言中 scipy.linalg.solve_toeplitz 的用法。

用法:

scipy.linalg.solve_toeplitz(c_or_cr, b, check_finite=True)#

使用 Levinson 遞歸求解 Toeplitz 係統

Toeplitz 矩陣有恒定的對角線,c 為第一列,r 為第一行。如果沒有給出 r,則假定為 r == conjugate(c)

參數

c_or_cr 數組 或 (數組, 數組) 的元組

向量 c 或數組元組( cr )。無論 c 的實際形狀如何,它將被轉換為一維數組。如果未提供,則假定為 r = conjugate(c);在這種情況下,如果 c[0] 是實數,則 Toeplitz 矩陣是 Hermitian。 r[0] 被忽略; Toeplitz 矩陣的第一行是 [c[0], r[1:]] 。無論 r 的實際形狀如何,它將被轉換為一維數組。

b (M,) 或 (M, K) 數組

T x = b 的右側。

check_finite 布爾型,可選

是否檢查輸入矩陣是否僅包含有限數。禁用可能會提高性能,但如果輸入確實包含無窮大或 NaN,則可能會導致問題(結果完全是 NaN)。

返回

x (M,) 或 (M, K) ndarray

係統的解決方案T x = b.返回的形狀匹配的形狀b.

注意

使用 Levinson-Durbin 遞歸計算解,該方法比通用最小二乘法更快,但數值穩定性較差。

例子

求解 Toeplitz 係統 T x = b,其中:

[ 1 -1 -2 -3]       [1]
T = [ 3  1 -1 -2]   b = [2]
    [ 6  3  1 -1]       [2]
    [10  6  3  1]       [5]

要指定 Toeplitz 矩陣,隻需要第一列和第一行。

>>> import numpy as np
>>> c = np.array([1, 3, 6, 10])    # First column of T
>>> r = np.array([1, -1, -2, -3])  # First row of T
>>> b = np.array([1, 2, 2, 5])
>>> from scipy.linalg import solve_toeplitz, toeplitz
>>> x = solve_toeplitz((c, r), b)
>>> x
array([ 1.66666667, -1.        , -2.66666667,  2.33333333])

通過創建完整的 Toeplitz 矩陣並將其乘以 x 來檢查結果。我們應該得到b。

>>> T = toeplitz(c, r)
>>> T.dot(x)
array([ 1.,  2.,  2.,  5.])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.linalg.solve_toeplitz。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。