expm_frechet#
- scipy.linalg.expm_frechet(A, E, method=None, compute_expm=True, check_finite=True)[Quelle]#
Frechet-Ableitung der Matrixexponentialfunktion von A in Richtung E.
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(N, N) array_like
Matrix, von der die Matrixexponentialfunktion berechnet werden soll.
- E(N, N) array_like
Matrixrichtung, in der die Frechet-Ableitung genommen werden soll.
- methodstr, optional
Auswahl des Algorithmus. Sollte einer der folgenden sein:
SPS (Standard)
blockEnlarge
- compute_expmbool, optional
Ob expm_A zusätzlich zu expm_frechet_AE berechnet werden soll. Standard ist True.
- 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:
- expm_Andarray
Matrixexponentialfunktion von A.
- expm_frechet_AEndarray
Frechet-Ableitung der Matrixexponentialfunktion von A in Richtung E.
- Für
compute_expm = Falsewird nur expm_frechet_AE zurückgegeben.
Siehe auch
expmBerechnet die Exponentialfunktion einer Matrix.
Hinweise
Dieser Abschnitt beschreibt die verfügbaren Implementierungen, die über den Parameter method ausgewählt werden können. Die Standardmethode ist SPS.
Die Methode blockEnlarge ist ein naiver Algorithmus.
Die Methode SPS ist Scaling-Pade-Squaring [1]. Sie ist eine ausgeklügelte Implementierung, die nur etwa 3/8 der Zeit der naiven Implementierung benötigt. Die Asymptotik ist dieselbe.
Hinzugefügt in Version 0.13.0.
Referenzen
[1]Awad H. Al-Mohy und Nicholas J. Higham (2009) Computing the Frechet Derivative of the Matrix Exponential, with an application to Condition Number Estimation. SIAM Journal On Matrix Analysis and Applications., 30 (4). pp. 1639-1657. ISSN 1095-7162
Beispiele
>>> import numpy as np >>> from scipy import linalg >>> rng = np.random.default_rng()
>>> A = rng.standard_normal((3, 3)) >>> E = rng.standard_normal((3, 3)) >>> expm_A, expm_frechet_AE = linalg.expm_frechet(A, E) >>> expm_A.shape, expm_frechet_AE.shape ((3, 3), (3, 3))
Erstellt eine 6x6-Matrix, die [[A, E], [0, A]] enthält
>>> M = np.zeros((6, 6)) >>> M[:3, :3] = A >>> M[:3, 3:] = E >>> M[3:, 3:] = A
>>> expm_M = linalg.expm(M) >>> np.allclose(expm_A, expm_M[:3, :3]) True >>> np.allclose(expm_frechet_AE, expm_M[:3, 3:]) True