scipy.linalg.

sqrtm#

scipy.linalg.sqrtm(A, disp=True, blocksize=64)[source]#

Matrix square root.

The documentation is written assuming array arguments are of specified “core” shapes. However, array argument(s) of this function may have additional “batch” dimensions prepended to the core shape. In this case, the array is treated as a batch of lower-dimensional slices; see Batched Linear Operations for details.

Parameters:
A(N, N) array_like

Matrix whose square root to evaluate

dispbool, optional

Print warning if error in the result is estimated large instead of returning estimated error. (Default: True)

blocksizeinteger, optional

If the blocksize is not degenerate with respect to the size of the input array, then use a blocked algorithm. (Default: 64)

Returns:
sqrtm(N, N) ndarray

Value of the sqrt function at A. The dtype is float or complex. The precision (data size) is determined based on the precision of input A.

errestfloat

(if disp == False)

Frobenius norm of the estimated error, ||err||_F / ||A||_F

References

[1]

Edvin Deadman, Nicholas J. Higham, Rui Ralha (2013) “Blocked Schur Algorithms for Computing the Matrix Square Root, Lecture Notes in Computer Science, 7782. pp. 171-182.

Examples

>>> import numpy as np
>>> from scipy.linalg import sqrtm
>>> a = np.array([[1.0, 3.0], [1.0, 4.0]])
>>> r = sqrtm(a)
>>> r
array([[ 0.75592895,  1.13389342],
       [ 0.37796447,  1.88982237]])
>>> r.dot(r)
array([[ 1.,  3.],
       [ 1.,  4.]])