MATLAB Answers

0

Matrix product error accumulated during iteration

Asked by zhao hongzheng on 25 Jun 2019 at 10:36
Latest activity Edited by Jan
on 26 Jun 2019 at 8:23
Accepted Answer by Jan
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 all
M = rand(10);
M=0.5*(M+M');
U = expm(-1i*M);
for t_i = 1:100
U = U*U;
norm = trace(U*U'-eye(10))
end

  2 Comments

Why not let expm handle all of that and skip the iteration?
I am acutually constructing a fibonacci sequence of a matrix, for instance
U_n = U_{n-2}*U_{n-1}, with the first two unitaries as U_1=expm(-1i*M1),U_2=expm(-1i*M2). Thus in each step, I need build matrix by iteration, which can not be simply use a single expm.

Sign in to comment.

1 Answer

Answer by Jan
on 25 Jun 2019 at 14:51
Edited by Jan
on 26 Jun 2019 at 8:23
 Accepted Answer

You can find the nearest unitary matrix in each iteration using an SVD:
for t_i = 1:100
[S,~,D] = svd(U * U);
U = S * D';
norm = trace(U * U' - eye(10))
end

  2 Comments

Thank you so much! It's very helpful.
Does it solve your problem? Then please mark the answer as accepted.

Sign in to comment.