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?
Neeta Dsouza answered .
2025-11-20