How many arithmetic operations does matlab require to determine the Schur decomposition?
Show older comments
Consider a matrix A of size n.
I would like to determine the square root of this matrix which can be done like this:
n = 10; % variable size
A = rand(n); % random square matrix A of size n by n
A_sqrt = sqrtm(A); % square root of matrix A
Inside the sqrtm command, matlab requires the Schur decomposition for determining the square root of a matrix.
[S, T] = schur(A); % with A = S*T*S and S*S' = I and T = (quassi) upper triangular matrix
To determine the speed of sqrtm, I would like an expression of the amount of required distinguisable operations (summation, subtraction, multiplication, division and square root) expressed in the matrix size n. To get this expression, I would like to know how Matlab determines the Schur decomposition of a matrix.
I read that the first step is to determine the upper Hessenberg form H by means of
[G,H] = hess(A); % with A = G*H*G' and G*G' = I
After this, a QR decomposition of H is executed
[Q,R] = qr(H); % with H = Q*R and Q*Q' = I and R = upper triangular matrix
How does one continue from here to a Schur decomposition?
If this is not the way how Matlab determines a Schur decomposition, what is it?
Accepted Answer
More Answers (0)
Categories
Find more on Matrix Computations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!