Unexpected eigenvectors for circulant matrix

3 ビュー (過去 30 日間)
memductance
memductance 2022 年 4 月 21 日
コメント済み: memductance 2022 年 4 月 21 日
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?

採用された回答

Matt J
Matt J 2022 年 4 月 21 日
編集済み: Matt J 2022 年 4 月 21 日
It looks like your matrices have some eigenvalues with multiplicity greater than 1. The eigenvectors are therefore not unique.
  1 件のコメント
memductance
memductance 2022 年 4 月 21 日
Hello and thanks for your reply which explains the output of the eigenvalue decomposition. I think this solves my issue.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Find more on Linear Algebra in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by