cholesky_banded#
- scipy.linalg.cholesky_banded(ab, overwrite_ab=False, lower=False, check_finite=True)[Quelle]#
Cholesky-Zerlegung einer hermiteschen positiv definiten Bandmatrix
Die Matrix a wird in ab entweder in unterer oder oberer Diagonalform gespeichert.
ab[u + i - j, j] == a[i,j] (if upper form; i <= j) ab[ i - j, j] == a[i,j] (if lower form; i >= j)
Beispiel für ab (Form von a ist (6,6), u=2)
upper form: * * a02 a13 a24 a35 * a01 a12 a23 a34 a45 a00 a11 a22 a33 a44 a55 lower form: a00 a11 a22 a33 a44 a55 a10 a21 a32 a43 a54 * a20 a31 a42 a53 * *
Die Dokumentation wurde unter der Annahme verfasst, dass die Array-Argumente bestimmte „Kern“-Formen haben. Array-Argumente dieser Funktion können jedoch zusätzliche „Batch“-Dimensionen vorangestellt haben. In diesem Fall wird das Array als Stapel von niedrigdimensionalen Schnitten behandelt; siehe Gestapelte lineare Operationen für Details.
- Parameter:
- ab(u + 1, M) array_like
Bandmatrix
- overwrite_abbool, optional
Verwirft Daten in ab (kann die Leistung verbessern)
- lowerbool, optional
Ist die Matrix in unterer Form. (Standard ist obere Form)
- check_finitebool, optional
Ob überprüft werden soll, ob die Eingabematrix nur endliche Zahlen enthält. Das Deaktivieren kann zu einer Leistungssteigerung führen, kann aber zu Problemen (Abstürze, Nichtterminierung) führen, wenn die Eingaben Unendlichkeiten oder NaNs enthalten.
- Rückgabe:
- c(u + 1, M) ndarray
Cholesky-Zerlegung von a, im gleichen Bandformat wie ab
Siehe auch
cho_solve_bandedLöst ein lineares Gleichungssystem unter Verwendung der Cholesky-Zerlegung einer hermiteschen Bandmatrix.
Beispiele
>>> import numpy as np >>> from scipy.linalg import cholesky_banded >>> from numpy import allclose, zeros, diag >>> Ab = np.array([[0, 0, 1j, 2, 3j], [0, -1, -2, 3, 4], [9, 8, 7, 6, 9]]) >>> A = np.diag(Ab[0,2:], k=2) + np.diag(Ab[1,1:], k=1) >>> A = A + A.conj().T + np.diag(Ab[2, :]) >>> c = cholesky_banded(Ab) >>> C = np.diag(c[0, 2:], k=2) + np.diag(c[1, 1:], k=1) + np.diag(c[2, :]) >>> np.allclose(C.conj().T @ C - A, np.zeros((5, 5))) True