当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy linalg.funm用法及代码示例


本文简要介绍 python 语言中 scipy.linalg.funm 的用法。

用法:

scipy.linalg.funm(A, func, disp=True)#

评估由可调用对象指定的矩阵函数。

返回matrix-valued函数的值fA.函数f是scalar-valued 函数的扩展函数到矩阵。

参数

A (N, N) 数组

评估函数的矩阵

func 可调用的

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

disp 布尔型,可选

如果结果中的错误估计很大,而不是返回估计的错误,则打印警告。 (默认:真)

返回

funm (N, N) 数组

由 func 指定的矩阵函数的值在 A 处求值

errest 浮点数

(如果 disp == False)

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

注意

该函数实现了基于 Schur 分解的通用算法(算法 9.1.1. in [1])。

如果已知输入矩阵是可对角化的,那么依靠特征分解可能会更快。例如,如果你的矩阵是 Hermitian,你可以做

>>> 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,矩阵计算第 4 版。

例子

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

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.funm。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。