I have a problem when multiplying unitary matrix many times. Initially, a unitary(or symmetric in the following example) matrix is constructed as U. Then I multiply the matrix in an iteractive way and check the unitarity of the results by comparing U*U' with identity. They are close in the first few steps but deviate gradually. Any suggestions to reduce the error and always keep U unitary?
The following is the code.
clear allM = rand(10);M=0.5*(M+M');U = expm(-1i*M);for t_i = 1:100U = U*U;norm = trace(U*U'-eye(10))end