How to calculate all the square roots of a matrix?
Show older comments
I have a matrix [5/8 3/8; 3/8 5/8] and it has more than one square root. If I perform sqrtm on it, it returns only one square root. How do I obtain all of its square roots?
Answers (2)
Walter Roberson
on 19 Dec 2017
x = sym('x', [2 2]);
xsq = x^2;
sol = solve(xsq == [5/8 3/8; 3/8 5/8]);
all_roots = arrayfun(@(x11, x12, x21, x22) [x11,x12;x21,x22], sol.x1_1, sol.x1_2, sol.x2_1, sol.x2_2, 'uniform', 0);
2 Comments
Viswanath Hariharan
on 21 Dec 2017
Walter Roberson
on 22 Dec 2017
T = sqrt(sym(2)); U = [-1/T -1/T;-1/T/2 1/T/2] double(U) %verify that U is the matrix you are talking about U^2
The result is
[ 3/4, 1/4]
[ 1/8, 3/8]
which is not your original matrix, so the matrix you indicate is not a square root of the original matrix.
Irshad Khan
on 10 Aug 2018
0 votes
How do I get only real roots?
Categories
Find more on Numerical Integration and Differential Equations 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!