scipy.linalg.

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