funm#
- scipy.linalg.funm(A, func, disp=True)[source]#
- Evaluate a matrix function specified by a callable. - Returns the value of matrix-valued function - fat A. The function- fis an extension of the scalar-valued function func to matrices.- Parameters:
- A(N, N) array_like
- Matrix at which to evaluate the function 
- funccallable
- Callable object that evaluates a scalar function f. Must be vectorized (eg. using vectorize). 
- dispbool, optional
- Print warning if error in the result is estimated large instead of returning estimated error. (Default: True) 
 
- Returns:
- funm(N, N) ndarray
- Value of the matrix function specified by func evaluated at A 
- errestfloat
- (if disp == False) - 1-norm of the estimated error, ||err||_1 / ||A||_1 
 
 - Notes - This function implements the general algorithm based on Schur decomposition (Algorithm 9.1.1. in [1]). - If the input matrix is known to be diagonalizable, then relying on the eigendecomposition is likely to be faster. For example, if your matrix is Hermitian, you can do - >>> 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) - References [1]- Gene H. Golub, Charles F. van Loan, Matrix Computations 4th ed. - Examples - >>> 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.]])