I have a matrix M
with real entries in MachinePrecision
. I compute its eigenvectors and construct matrix U
:
ev = Eigenvectors[M];
U = Transpose @ ev;
U
is supposed to be an orthogonal matrix and thus Transpose[U].U == IdentityMatrix[ Length @ U]
.
Mathematica gives the latter equality with the accuracy of 10^(-16)
:
Transpose[U].U - IdentityMatrix[ Length @ U]// Abs// Max == 8.8131 * 10^(-16).
Is it possible to make this difference smaller, let's say, order of 10^(-32)
? I need to get eigenvectors which are orthonormal with accuracy of order of 10(-32)
or higher.
M
. So either you increase the precision of your matrix values "at source" or you artificially increase the precision, for example usingSetPrecision
. But usingSetPrecision
to increase precision is arbitrarily padding your values with (base 2) zeros, in reality the calculated eigenvectors will be no more precise. Browse the Related posts for more information. $\endgroup$