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