scipy.linalg.

solve_toeplitz#

scipy.linalg.solve_toeplitz(c_or_cr, b, check_finite=True)[источник]#

Решить уравнение T @ x = b для x, где T является матрицей Тёплица, определяемой как c_or_cr.

Матрица Тёплица имеет постоянные диагонали, с c в качестве первого столбца и r в качестве своей первой строки. Если r не задан, r == conjugate(c) предполагается.

Предупреждение

Начиная с SciPy 1.17, многомерный ввод будет обрабатываться как пакет, а не ravelред. Чтобы сохранить существующее поведение, ravel аргументы перед передачей их в solve_toeplitz.

Параметры:
c_or_crarray_like или кортеж из (array_like, array_like)

Вектор c, или кортеж массивов (c, r). Если не указан, r = conjugate(c) предполагается; в этом случае, если c[0] является вещественным, матрица Тёплица эрмитова. r[0] игнорируется; первая строка матрицы Тёплица [c[0], r[1:]].

b(M,) или (M, K) array_like

Правая часть в T x = b.

check_finitebool, необязательно

Проверять ли, что входные матрицы содержат только конечные числа. Отключение может дать прирост производительности, но может привести к проблемам (результат полностью NaN), если входные данные содержат бесконечности или NaN.

Возвращает:
x(M,) или (M, K) ndarray

Решение системы T @ x = b. Форма возврата соответствует форме b.

Смотрите также

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]

Чтобы задать матрицу Тёплица, нужны только первый столбец и первая строка.

>>> 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])

Проверьте результат, создав полную матрицу Тёплица и умножив её на x. Мы должны получить b.

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