Unexpected eigenvectors for circulant matrix
1 view (last 30 days)
Show older comments
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):
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/972280/image.png)
with
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/972285/image.png)
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 Comments
Accepted Answer
More Answers (0)
See Also
Categories
Find more on Linear Algebra in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!