當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。