scipy.linalg.funm

scipy.linalg.funm(A, func, disp=True)[源代码]

对象指定的矩阵函数求值。

返回矩阵值函数的值 f 在… A 。该函数 f 是标量值函数的推广。 func 到矩阵。

参数
A(n,N)类数组

用于计算函数的矩阵

func可调用

计算标量函数f的可调用对象。必须矢量化(例如,使用矢量化)。

disp布尔值,可选

如果结果中的误差估计较大,则打印警告,而不是返回估计误差。(默认值:TRUE)

退货
funm(N,N)ndarray

由函数指定的矩阵函数的值在 A

errest浮动

(如果disp==false)

1-估计误差的范数, ||err||_ 1/ ||A||_ 1

注意事项

此函数实现基于Schur分解的通用算法(算法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

吉恩·H·戈卢布,查尔斯·范洛,“矩阵计算”第4版。

示例

>>> 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.]])