expm_frechet#
- scipy.linalg.expm_frechet(A, E, метод=None, compute_expm=True, check_finite=True)[источник]#
Производная Фреше матричной экспоненты A в направлении E.
Документация написана в предположении, что аргументы-массивы имеют указанные «основные» формы. Однако аргументы-массивы этой функции могут иметь дополнительные «пакетные» измерения, добавленные перед основной формой. В этом случае массив обрабатывается как пакет низкоразмерных срезов; см. Пакетные линейные операции подробности.
- Параметры:
- A(N, N) array_like
Матрица, для которой вычисляется матричная экспонента.
- E(N, N) array_like
Направление матрицы, в котором берется производная Фреше.
- методstr, optional
Выбор алгоритма. Должен быть одним из
SPS (по умолчанию)
blockEnlarge
- compute_expmbool, необязательно
Вычислять ли также expm_A в дополнение к expm_frechet_AE. По умолчанию True.
- check_finitebool, необязательно
Проверять ли, что входная матрица содержит только конечные числа. Отключение может повысить производительность, но может привести к проблемам (сбоям, незавершению) если входные данные содержат бесконечности или NaN.
- Возвращает:
- expm_Andarray
Матричная экспонента A.
- expm_frechet_AEndarray
Производная Фреше матричной экспоненты A в направлении E.
- Для
compute_expm = False, только expm_frechet_AE возвращается.
Смотрите также
expmВычислить экспоненту матрицы.
Примечания
В этом разделе описаны доступные реализации, которые можно выбрать с помощью метод параметр. Метод по умолчанию - SPS.
Метод blockEnlarge является наивным алгоритмом.
Метод SPS является Scaling-Pade-Squaring [1]#20670
Добавлено в версии 0.13.0.
Ссылки
[1]Awad H. Al-Mohy и Nicholas J. Higham (2009) Вычисление производной Фреше матричной экспоненты, с приложением к оценке числа обусловленности. SIAM Journal On Matrix Analysis and Applications., 30 (4). стр. 1639-1657. ISSN 1095-7162
Примеры
>>> 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))
Создать матрицу 6x6, содержащую [[A, E], [0, A]]:
>>> 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