sqrtm - Matrix square root - MATLAB (original) (raw)
Syntax
Description
X = sqrtm([A](#buw3%5F2t-A))
returns the principal square root of the matrix A
, that is, X*X = A
.
X
is the unique square root for which every eigenvalue has nonnegative real part. If A
has any eigenvalues with negative real parts, then a complex result is produced. If A
is singular, then A
might not have a square root. If exact singularity is detected, a warning is printed.
[X,residual] = sqrtm([A](#buw3%5F2t-A))
also returns the residual, residual = norm(A-X^2,1)/norm(A,1)
. This syntax does not print warnings if exact singularity is detected.
[X,alpha,condx] = sqrtm([A](#buw3%5F2t-A))
returns stability factor alpha
and an estimate of the matrix square root condition number of X
in 1-norm, condx
. The residual norm(A-X^2,1)/norm(A,1)
is bounded approximately by n*alpha*eps
and the 1-norm relative error in X
is bounded approximately by n*alpha*condx*eps
, where n = max(size(A))
.
Examples
Create a matrix representation of the fourth difference operator, A
. This matrix is symmetric and positive definite.
A = [5 -4 1 0 0; -4 6 -4 1 0; 1 -4 6 -4 1; 0 1 -4 6 -4; 0 0 1 -4 6]
A = 5×5
5 -4 1 0 0
-4 6 -4 1 0
1 -4 6 -4 1
0 1 -4 6 -4
0 0 1 -4 6
Calculate the unique positive definite square root of A
using sqrtm
. X
is the matrix representation of the second difference operator.
X = 5×5
2 -1 0 0 0
-1 2 -1 0 0
0 -1 2 -1 0
0 0 -1 2 -1
0 0 0 -1 2
Consider a matrix that has four square roots, A
.
A=[7101522]
Two of the square roots of A
are given by Y1
and Y2
:
Y1=[1.56671.74082.61124.1779]
Y2=[1234]
Confirm that Y1
and Y2
are square roots of matrix A
.
A = [7 10; 15 22]; Y1 = [1.5667 1.7408; 2.6112 4.1779]; A - Y1*Y1
ans = 2×2 10-3 ×
-0.1258 -0.1997 -0.2995 -0.4254
Y2 = [1 2; 3 4]; A - Y2*Y2
The other two square roots of A
are -Y1
and -Y2
. All four of these roots can be obtained from the eigenvalues and eigenvectors of A
. If [V,D] = eig(A)
, then the square roots have the general form Y = V*S/V
, where D = S*S
and S
has four choices of sign to produce four different values of Y
:
S=[±0.372300±5.3723]
Calculate the square root of A
with sqrtm
. The sqrtm
function chooses the positive square roots and produces Y1
, even though Y2
seems to be a more natural result.
Y = 2×2
1.5667 1.7408
2.6112 4.1779
Input Arguments
Input matrix, specified as a square matrix.
Data Types: single
| double
Complex Number Support: Yes
Tips
- Some matrices, like
A = [0 1; 0 0]
, do not have any square roots, real or complex, andsqrtm
cannot be expected to produce one.
Algorithms
The algorithm sqrtm
uses is described in [3].
References
[1] N.J. Higham, “Computing real square roots of a real matrix,” Linear Algebra and Appl., 88/89, pp. 405–430, 1987
[2] Bjorck, A. and S. Hammerling, “A Schur method for the square root of a matrix,” Linear Algebra and Appl., 52/53, pp. 127–140, 1983
[3] Deadman, E., Higham, N. J. and R. Ralha, “Blocked Schur algorithms for computing the matrix square root,” Lecture Notes in Comput. Sci., 7782, Springer-Verlag, pp. 171–182, 2013
Extended Capabilities
Usage notes and limitations:
- When the input matrix contains a nonfinite value, the generated code does not issue an error. Instead, the output contains
NaN
values. - In the generated code, the output of
sqrtm
is always complex. - Code generation does not support sparse matrix inputs for this function.
Version History
Introduced before R2006a