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