solve_toeplitz#
- scipy.linalg.solve_toeplitz(c_or_cr, b, check_finite=True)[source]#
- Solve the equation - T @ x = bfor- x, where- Tis a Toeplitz matrix defined by c_or_cr.- The Toeplitz matrix has constant diagonals, with - cas its first column and- ras its first row. If- ris not given,- r == conjugate(c)is assumed.- Warning - Beginning in SciPy 1.17, multidimensional input will be treated as a batch, not - raveled. To preserve the existing behavior,- ravelarguments before passing them to- solve_toeplitz.- Parameters:
- c_or_crarray_like or tuple of (array_like, array_like)
- The vector - c, or a tuple of arrays (- c,- r). If not supplied,- r = conjugate(c)is assumed; in this case, if c[0] is real, the Toeplitz matrix is Hermitian. r[0] is ignored; the first row of the Toeplitz matrix is- [c[0], r[1:]].
- b(M,) or (M, K) array_like
- Right-hand side in - T x = b.
- check_finitebool, optional
- Whether to check that the input matrices contain only finite numbers. Disabling may give a performance gain, but may result in problems (result entirely NaNs) if the inputs do contain infinities or NaNs. 
 
- Returns:
- x(M,) or (M, K) ndarray
- The solution to the system - T @ x = b. Shape of return matches shape of b.
 
 - See also - toeplitz
- Toeplitz matrix 
 - Notes - The solution is computed using Levinson-Durbin recursion, which is faster than generic least-squares methods, but can be less numerically stable. - Examples - Solve the Toeplitz system - T @ x = b, where:- [ 1 -1 -2 -3] [1] T = [ 3 1 -1 -2] b = [2] [ 6 3 1 -1] [2] [10 6 3 1] [5] - To specify the Toeplitz matrix, only the first column and the first row are needed. - >>> 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]) - Check the result by creating the full Toeplitz matrix and multiplying it by - x. We should get b.- >>> T = toeplitz(c, r) >>> T.dot(x) array([ 1., 2., 2., 5.])