Unexpected eigenvectors for circulant matrix
3 次查看(过去 30 天)
显示 更早的评论
Hello everyone
I am trying to compute the eigenvalues and eigenvectors of a 3x3 matrix that happens to be circulant. The matrix itself is a 3x3 transfer function that is circulant.
Now I would expect the eigenvectors of this matrix to be the so-called fourier-modes (as described here https://en.wikipedia.org/wiki/Circulant_matrix):
with
The problem is that when I call the 'eig' function, the eigenvectors that are computed do not appear to be these fourier modes.
The following script computes the eigenvalues of these matrices, it also prints the matrix and its eigenvalues at each step to the terminal, this is the program output:
System Matrix
1.0e-03 *
0.0064 + 0.5864i -0.0003 - 0.0158i -0.0003 - 0.0158i
-0.0003 - 0.0158i 0.0064 + 0.5864i -0.0003 - 0.0158i
-0.0003 - 0.0158i -0.0003 - 0.0158i 0.0064 + 0.5864i
Eigenvectors
0.5774 + 0.0000i 0.7507 + 0.0000i -0.1463 + 0.2933i
0.5774 + 0.0000i -0.1253 + 0.1218i -0.5577 - 0.2933i
0.5774 + 0.0000i -0.6254 - 0.1218i 0.7040 + 0.0000i
Complex Angles of Eigenvectors
0.0000 0 2.0335
0 2.3706 -2.6574
0.0000 -2.9493 0
click enter to compute next frequency
System Matrix
1.0e-03 *
0.0064 + 0.5867i -0.0003 - 0.0159i -0.0003 - 0.0159i
-0.0003 - 0.0159i 0.0064 + 0.5867i -0.0003 - 0.0159i
-0.0003 - 0.0159i -0.0003 - 0.0159i 0.0064 + 0.5867i
Eigenvectors
0.5774 + 0.0000i 0.7545 + 0.0000i -0.0922 + 0.2888i
0.5774 + 0.0000i -0.1286 + 0.1056i -0.5944 - 0.2888i
0.5774 + 0.0000i -0.6260 - 0.1056i 0.6866 + 0.0000i
Complex Angles of Eigenvectors
0.0000 0 1.8797
0 2.4540 -2.6894
0.0000 -2.9745 0
.......
From the output above it can be seen that while the "System Matrix" Ymatres is circulant, its eigenvectors do not seem to be the Fourier-Modes.
Code to reproduce the issue:
%% Multi Coil Decoupling Computations for three coils
s=tf('s');
C=1/12*1e-6;
L=108e-3;
%DC Resistance
%R=3.2;
%Resonant Resistance
R=18.5;
M=9e-3;
omegares=1/(sqrt(L*C));
Zres=s*L+R+1/(s*C);
%compute system impedance and admittance matrices
Zmat=[Zres,-s*M,-s*M;-s*M,Zres,-s*M;-s*M,-s*M,Zres];
Ymat=inv(Zmat);
%simulate current response if the three input voltages are chosen the same
N=10000;
omegas=linspace(0.5*omegares,2*omegares,N);
currents=zeros(3,N);
for i=1:1:N
Ymatres=evalfr(Ymat,j*omegas(i));
currents(:,i)=Ymatres*[24;24;24];
end
figure(1);
plot(omegas/omegares,abs(currents(1,:)));
grid();
xlabel("Frequency $\frac{\omega}{\omega_{0}}$",'interpreter','latex');
ylabel("Current Amplitude [A]");
%compute the SVD of the impedance matrix as a function of frequency
eigenvalues=zeros(3,N);
for i=1:1:N
Ymatres=evalfr(Ymat,j*omegas(i));
[V,D]=eig(Ymatres);
eigenvalues(1,i)=D(1,1);
eigenvalues(2,i)=D(2,2);
eigenvalues(3,i)=D(3,3);
disp("System Matrix");
disp(Ymatres);
disp("Eigenvectors");
disp(V);
disp("Complex Angles of Eigenvectors")
disp(angle(V));
input("click enter to compute next frequency");
end
%plot the singular values of the impedance matrix
figure(3);
plot(omegas/omegares,abs(eigenvalues(1,:)),"blue");
hold on;
plot(omegas/omegares,abs(eigenvalues(2,:)),"black");
hold on;
plot(omegas/omegares,abs(eigenvalues(3,:)),"r--");
grid();
xlabel("Frequency $\frac{\omega}{\omega_{0}}$",'interpreter','latex');
ylabel("Admittance Eigenvalue $\sigma$ [S]",'interpreter','latex');
Does anyone have an idea what the issue could be?
0 个评论
采纳的回答
更多回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!