# Find the set of eigenvectors of a 4x4 matrix elements whose matrix elements have some VARIABLE PARAMETERS.

72 views (last 30 days)
Muhsin on 11 Nov 2022
Edited: Torsten on 12 Nov 2022
Below is how I defined the matrix. It is a 4x4 matrix with variables B and N on the off diagonal. Since each of these variable takes certain values in a given range, my goal is to read and display the eigenvectors for each of the values in the range of the variables.
delta=45;
%create a 4x4 zeros matrix
mat=zeros(4,4);
%set values for corresponding entries of the matrix
mat(1,1)= delta;
mat(1,2)= 0 ;
mat(1,3)=0;
mat(2,1)=0 ;
mat(2,2)= delta;
mat(2,4)=0;
mat(3,1)=0;
mat(3,3)= -delta;
mat(3,4)= 0 ;
mat(4,2)=0;
mat(4,3)=0 ;
mat(4,4)= -delta;
%define the off diagonal elements of the matrix
for N = 0:1:5
for B = 0:0.001:10
mat(1,4)=sqrt(750*B*N);
mat(2,3)=sqrt(750*B*N);
mat(3,2)=sqrt(750*B*N);
mat(4,1)=sqrt(750*B*N);
end
end
##### 2 CommentsShowHide 1 older comment
Muhsin on 11 Nov 2022
I realized I could edit the original question after I did it.

Jon on 11 Nov 2022
If I understand what you are trying to do I think this should do what you want.
The resulting values of the eigenvector for each value of the parameter B*N will be stored in the columns of matrix V
delta=45;
%set values for corresponding diagonal entries of the matrix
mat = diag([delta,delta,-delta,-delta]);
% define vectors of variable parameters
N = 0:1:5;
B = 0:0.001:10;
% matrix is parameterized by product B*N, so just compute for unique
% values of this parameter
BN = unique(N'*B);
%define the off diagonal elements of the matrix and compute the
%eigenvectors
numParam = numel(BN); % number of parameter values to be evaluated
V = zeros(4,numParam); % preallocate array to hold eigenvectors
for k = 1:numParam
a = sqrt(750*BN(k));
mat(1,4)=a;
mat(2,3)=a;
mat(3,2)=a;
mat(4,1)=a;
V(:,k) = eig(mat);
end
Muhsin on 11 Nov 2022
Thanks.
[V(:,:,k),~] = eig(mat); is a significant improvement. It, returns a set of eigenvectors but they are the same eigenvectors repeated. Some of the values of the eigenvectors are controlled by B*N, hence the eigenvectors shouldn't be exactly the same.

Torsten on 11 Nov 2022
Edited: Torsten on 12 Nov 2022
I set a = sqrt(750*B*N) in the below code. So for every combination of B and N, it gives you the eigenvalues (diagonal of D) and eigenvectors (columns of V) of your matrix "mat".
syms delta a real
mat = delta*sym(eye(4));
mat(3,3) = -mat(3,3);
mat(4,4) = -mat(4,4);
mat(1,4) = a;
mat(4,1) = a;
mat(3,2) = a;
mat(2,3) = a;
[V,D] = eig(mat)
V =
D =
simplify(mat*V-V*D)
ans =
Torsten on 12 Nov 2022
Edited: Torsten on 12 Nov 2022
mat = diag([delta,delta,delta,delta]);
mat = diag([delta,delta,-delta,-delta]);
But nevertheless, after incorporating the changes in the symbolic computation (see above), the results are still easy to implement for the numerical case.

Walter Roberson on 11 Nov 2022

### Categories

Find more on Linear Algebra in Help Center and File Exchange

R2022b

### Community Treasure Hunt

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

Start Hunting!