PDF version (NAG web site
, 64-bit version, 64-bit version)
NAG Toolbox: nag_matop_real_gen_matrix_sqrt (f01en)
Purpose
nag_matop_real_gen_matrix_sqrt (f01en) computes the principal matrix square root, , of a real by matrix .
Syntax
[
a,
ifail] = nag_matop_real_gen_matrix_sqrt(
a, 'n',
n)
Description
A square root of a matrix is a solution to the equation . A nonsingular matrix has multiple square roots. For a matrix with no eigenvalues on the closed negative real line, the principal square root, denoted by , is the unique square root whose eigenvalues lie in the open right half-plane.
is computed using the algorithm described in
Higham (1987). This is a real arithmetic version of the algorithm of
Björck and Hammarling (1983). In addition a blocking scheme described in
Deadman et al. (2013) is used.
References
Björck Å and Hammarling S (1983) A Schur method for the square root of a matrix Linear Algebra Appl. 52/53 127–140
Deadman E, Higham N J and Ralha R (2013) Blocked Schur Algorithms for Computing the Matrix Square Root Applied Parallel and Scientific Computing: 11th International Conference, (PARA 2012, Helsinki, Finland) P. Manninen and P. Öster, Eds Lecture Notes in Computer Science 7782 171–181 Springer–Verlag
Higham N J (1987) Computing real square roots of a real matrix Linear Algebra Appl. 88/89 405–430
Higham N J (2008) Functions of Matrices: Theory and Computation SIAM, Philadelphia, PA, USA
Parameters
Compulsory Input Parameters
- 1:
– double array
-
The first dimension of the array
a must be at least
.
The second dimension of the array
a must be at least
.
The by matrix .
Optional Input Parameters
- 1:
– int64int32nag_int scalar
-
Default:
the first dimension of the array
a.
, the order of the matrix .
Constraint:
.
Output Parameters
- 1:
– double array
-
The first dimension of the array
a will be
.
The second dimension of the array
a will be
.
Contains, if , the by principal matrix square root, . Alternatively, if , contains an by non-principal square root of .
- 2:
– int64int32nag_int scalar
unless the function detects an error (see
Error Indicators and Warnings).
Error Indicators and Warnings
Errors or warnings detected by the function:
-
-
has a semisimple vanishing eigenvalue. A non-principal square root is returned.
-
-
has a defective vanishing eigenvalue. The square root cannot be found in this case.
-
-
has a negative real eigenvalue. The principal square root is not defined.
nag_matop_complex_gen_matrix_sqrt (f01fn) can be used to return a complex, non-principal square root.
-
-
An internal error occurred. It is likely that the function was called incorrectly.
-
-
Constraint: .
-
-
Constraint: .
-
An unexpected error has been triggered by this routine. Please
contact
NAG.
-
Your licence key may have expired or may not have been installed correctly.
-
Dynamic memory allocation failed.
Accuracy
The computed square root
satisfies
, where
, where
is
machine precision.
For further discussion of the condition of the matrix square root see Section 6.1 of
Higham (2008).
Further Comments
The cost of the algorithm is
floating-point operations; see Algorithm 6.7 of
Higham (2008).
of real allocatable memory is required by the function.
If condition number and residual bound estimates are required, then
nag_matop_real_gen_matrix_cond_sqrt (f01jd) should be used.
Example
This example finds the principal matrix square root of the matrix
Open in the MATLAB editor:
f01en_example
function f01en_example
fprintf('f01en example results\n\n');
a = [ 507 622 300 -202;
237 352 126 -60;
751 950 440 -286;
-286 -326 -192 150];
[as, ifail] = f01en(a);
disp('Square root of A:');
disp(as);
f01en example results
Square root of A:
15.0000 14.0000 8.0000 -6.0000
6.0000 14.0000 3.0000 0.0000
21.0000 24.0000 12.0000 -8.0000
-5.0000 -4.0000 -7.0000 8.0000
PDF version (NAG web site
, 64-bit version, 64-bit version)
© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015