null_space#
- scipy.linalg.null_space(A, rcond=None, *, overwrite_a=False, check_finite=True, lapack_driver='gesdd')[Quellcode]#
Erzeugt eine orthonormale Basis für den Nullraum von A mittels SVD
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:
- A(M, N) array_like
Eingabearray
- rcondfloat, optional
Relative Konditionszahl. Singulärwerte
s, die kleiner alsrcond * max(s)sind, werden als Null betrachtet. Standard: Floating-Point-Epsilon * max(M,N).- overwrite_abool, optional
Ob a überschrieben werden soll; kann die Leistung verbessern. Standard ist False.
- 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.
- lapack_driver{‘gesdd’, ‘gesvd’}, optional
Ob der effizientere Divide-and-Conquer-Ansatz (
'gesdd') oder der allgemeine rechteckige Ansatz ('gesvd') zur Berechnung der SVD verwendet werden soll. MATLAB und Octave verwenden den'gesvd'-Ansatz. Standard ist'gesdd'.
- Rückgabe:
- Z(N, K) ndarray
Orthonormale Basis für den Nullraum von A. K = Dimension des effektiven Nullraums, bestimmt durch rcond.
Beispiele
1-D Nullraum
>>> import numpy as np >>> from scipy.linalg import null_space >>> A = np.array([[1, 1], [1, 1]]) >>> ns = null_space(A) >>> ns * np.copysign(1, ns[0,0]) # Remove the sign ambiguity of the vector array([[ 0.70710678], [-0.70710678]])
2-D Nullraum
>>> from numpy.random import default_rng >>> rng = default_rng() >>> B = rng.random((3, 5)) >>> Z = null_space(B) >>> Z.shape (5, 2) >>> np.allclose(B.dot(Z), 0) True
Die Basisvektoren sind (bis auf Rundungsfehler) orthonormal
>>> Z.T.dot(Z) array([[ 1.00000000e+00, 6.92087741e-17], [ 6.92087741e-17, 1.00000000e+00]])