I am working on a problem that involves taking fractional powers of particular matrices.
For the matrix A with 2 on the main diagonal and -1 on the sub and super diagonal (the finite difference matrix for the Dirichlet Laplacian in 1D), there was basically no difference between using MATLAB's
sqrtm(A) function and diagonalizing the matrix (
A = V\D*V) and computing
V\D^(1/2)*V even if the matrix was as large as 1000x1000. This made me think I could compute other fractional powers
V\D^(1/n)*V that MATLAB does not have built in functions for.
However when I consider the matrix A for the Dirichlet Laplacian in 2D, there is a significant difference between MATLAB's sqrtm function and the diagonalization procedure I used above even if the matrix was as small as 100x100. In particular, MATLAB's sqrtm function is better and my results don't make any sense if I do it the other way.
I am wondering if anyone can explain why this happens and if there is a way to fix it so that I can compute fractional powers of a large matrix in MATLAB.