scipy.linalg.

funm#

scipy.linalg.funm(A, функция, disp=True)[источник]#

Вычислить матричную функцию, заданную вызываемым объектом.

Возвращает значение матричной функции f в A. Функция f является расширением скалярной функции функция к матрицам.

Документация написана в предположении, что аргументы-массивы имеют указанные «основные» формы. Однако аргументы-массивы этой функции могут иметь дополнительные «пакетные» измерения, добавленные перед основной формой. В этом случае массив обрабатывается как пакет низкоразмерных срезов; см. Пакетные линейные операции подробности.

Параметры:
A(N, N) array_like

Матрица, в которой вычисляется функция

функцияcallable

Вызываемый объект, который вычисляет скалярную функцию f. Должен быть векторизован (например, с использованием vectorize).

dispbool, необязательно

Выводить предупреждение, если ошибка в результате оценивается как большая, вместо возврата оценённой ошибки. (По умолчанию: True)

Возвращает:
funm(N, N) ndarray

Значение матричной функции, указанной func, вычисленное в A

ошибкаfloat

(если disp == False)

1-норма оценённой ошибки, ||err||_1 / ||A||_1

Примечания

Эта функция реализует общий алгоритм на основе разложения Шура (Алгоритм 9.1.1. в [1]).

Если известно, что входная матрица диагонализируема, то использование собственного разложения, вероятно, будет быстрее. Например, если ваша матрица эрмитова, вы можете сделать

>>> from scipy.linalg import eigh
>>> def funm_herm(a, func, check_finite=False):
...     w, v = eigh(a, check_finite=check_finite)
...     ## if you further know that your matrix is positive semidefinite,
...     ## you can optionally guard against precision errors by doing
...     # w = np.maximum(w, 0)
...     w = func(w)
...     return (v * w).dot(v.conj().T)

Ссылки

[1]

Gene H. Golub, Charles F. van Loan, Matrix Computations 4th ed.

Примеры

>>> import numpy as np
>>> from scipy.linalg import funm
>>> a = np.array([[1.0, 3.0], [1.0, 4.0]])
>>> funm(a, lambda x: x*x)
array([[  4.,  15.],
       [  5.,  19.]])
>>> a.dot(a)
array([[  4.,  15.],
       [  5.,  19.]])