Result of A(:,:,1,1) coming as result of A(:,:,1,2)

조회 수: 2 (최근 30일)
Gözde Üstün
Gözde Üstün 2020년 7월 6일
댓글: Christine Tobler 2020년 7월 10일
Hello,
Ihave this code:
function [A,B] = trying(d)
A=zeros(d,d,2,d);
sigma_x = [0,1;1,0];
sigma_z = [1,0;0,-1];
if d==2
x = sigma_x;
z = sigma_z;
end
if d==4
x = kron(sigma_x,sigma_x);
z = kron(sigma_z,sigma_z);
end
[xv1,xv2] = eig(x);
%xv1 = [xv1(:,2),xv1(:,1)];
[zv1,zv2] = eig(z);
%zv1 = [zv1(:,2),zv1(:,1)];
for i=1:d
% for k = 1:2
A(:,:,1,i)= xv1(:,i)*transpose(xv1(:,i));
A(:,:,2,i)= zv1(:,i)*transpose(zv1(:,i));
% end
end
end
However, I have inverse result For instance the result should be like that:
A(:,:,1,1) =
0.5000 0.5000
0.5000 0.5000
A(:,:,2,1) =
1 0
0 1
A(:,:,1,2) =
0.5000 -0.5000
-0.5000 0.5000
But I have this result:
A(:,:,1,1) =
0.5000 -0.5000
-0.5000 0.5000
A(:,:,2,1) =
0 0
0 1
A(:,:,1,2) =
0.5000 0.5000
0.5000 0.5000
So I tried the that But it did not work
xv1 = [xv1(:,2),xv1(:,1)];
zv1 = [zv1(:,2),zv1(:,1)];
for i=1:d
for k = 1:2
A(:,:,1,i)= xv1(:,k)*transpose(xv1(:,k));
A(:,:,2,i)= zv1(:,k)*transpose(zv1(:,k));
end
end
Any idea?
  댓글 수: 2
Geoff Hayes
Geoff Hayes 2020년 7월 6일
Gözde - why should the output look like the first block of output that you have shown? What algorithm or equations are you basing your code on? Also, note the following
for i=1:d
% for k = 1:2
A(:,:,1,i)= xv1(:,i)*transpose(xv1(:,i));
A(:,:,2,i)= zv1(:,i)*transpose(zv1(:,i));
% end
end
Since i is either 1 or 2, then this means that you also have A(:,:,2,2) set with a value which in this case is
A(:,:,2,2) =
1 0
0 0
Is this expected or should you just have populated A(:,:1,1), A(:,:,1,2), and A(:,:,2,1)?
Gözde Üstün
Gözde Üstün 2020년 7월 6일
Hello,
Because I am using "eig" function and in the eig function, first eigenvector is coming as second eigen vector.
You are right I (should) have also A(:,:,2,2) but for showing you I just put the other values.

댓글을 달려면 로그인하십시오.

답변 (1개)

Christine Tobler
Christine Tobler 2020년 7월 7일
The eigenvectors returned by EIG are returned in the same order as the eigenvalues, but the eigenvalues are not necessarily sorted. Could this be the issue here?
  댓글 수: 2
Gözde Üstün
Gözde Üstün 2020년 7월 7일
Yeah How can I solve this prolem? I used that:
xv1 = [xv1(:,2),xv1(:,1)];
zv1 = [zv1(:,2),zv1(:,1)];
for i=1:d
for k = 1:2
A(:,:,1,i)= xv1(:,k)*transpose(xv1(:,k));
A(:,:,2,i)= zv1(:,k)*transpose(zv1(:,k));
end
end
But it did not work for me
Christine Tobler
Christine Tobler 2020년 7월 10일
You can sort the eigenvalues and eigenvectors before using them further, see this example for how to do that.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Linear Algebra에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by