sqrtm#
- scipy.linalg.sqrtm(A, disp=<object object>, blocksize=<object object>)[Quelle]#
Berechnet, falls vorhanden, die Matrix-Quadratwurzel.
Die Matrix-Quadratwurzel von
Aist eine MatrixX, sodassX @ X = A. Es ist nicht garantiert, dass jede quadratische Matrix eine Matrix-Quadratwurzel hat, zum Beispiel hat die Matrix[[0, 1], [0, 0]]keine Quadratwurzel.Darüber hinaus hat nicht jede reelle Matrix eine reelle Quadratwurzel. Daher kann der Rückgabetyp für reellwertige Matrizen komplex sein, wenn numerisch ein Eigenwert auf der negativen reellen Achse liegt.
- Parameter:
- Andarray
Eingabe, bei der die letzten beiden Dimensionen quadratisch sind
(..., n, n).- dispbool, optional
Gibt eine Warnung aus, wenn der geschätzte Fehler im Ergebnis groß ist, anstatt den geschätzten Fehler zurückzugeben. (Standard: True)
Veraltet seit Version 1.16.0: Das Argument disp ist veraltet und wird in SciPy 1.18.0 entfernt. Die zuvor zurückgegebene Fehlerschätzung kann berechnet werden als
norm(X @ X - A, 'fro')**2 / norm(A, 'fro')- blocksizeInteger, optional
Veraltet seit Version 1.16.0: Das Argument blocksize ist veraltet, da es vom Algorithmus nicht verwendet wird, und wird in SciPy 1.18.0 entfernt.
- Rückgabe:
- sqrtmndarray
Berechnete Matrix-Quadratwurzel von A mit gleicher Größe
(..., n, n).- errestfloat
Frobenius-Norm des geschätzten Fehlers, ||err||_F / ||A||_F. Nur zurückgegeben, wenn
dispaufFalsegesetzt ist. Dieses Rückgabeargument wird in Version 1.20.0 entfernt und nur das sqrtm-Ergebnis wird zurückgegeben.Veraltet seit Version 1.16.0.
Hinweise
Diese Funktion verwendet die Schur-Zerlegungsmethode zur Berechnung der Matrix-Quadratwurzel gemäß [1] und für reelle Matrizen [2]. Darüber hinaus ist zu beachten, dass es Matrizen gibt, die Quadratwurzeln haben, die keine Polynome in
Asind. Ein klassisches Beispiel aus [2] ist die Matrix, die erfüllt:[ a, a**2 + 1]**2 [-1, 0] [-1, -a] = [ 0, -1]
für jeden Skalar
a, aber sie ist kein Polynom in-I. Daher werden sie von dieser Funktion nicht gefunden.Referenzen
[1]Edvin Deadman, Nicholas J. Higham, Rui Ralha (2013) „Blocked Schur Algorithms for Computing the Matrix Square Root, Lecture Notes in Computer Science, 7782. S. 171-182. DOI:10.1016/0024-3795(87)90118-2
[2] (1,2)Nicholas J. Higham (1987) „Computing real square roots of a real matrix“, Linear Algebra and its Applications, 88/89:405-430. DOI:10.1016/0024-3795(87)90118-2
Beispiele
>>> import numpy as np >>> from scipy.linalg import sqrtm >>> a = np.array([[1.0, 3.0], [1.0, 4.0]]) >>> r = sqrtm(a) >>> r array([[ 0.75592895, 1.13389342], [ 0.37796447, 1.88982237]]) >>> r.dot(r) array([[ 1., 3.], [ 1., 4.]])