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

조회 수: 69(최근 30일)
Muhsin 2022년 11월 11일
편집: Torsten 2022년 11월 12일
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표시숨기기 이전 댓글 수: 1
Muhsin 2022년 11월 11일
I realized I could edit the original question after I did it.

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

### 답변(3개)

Jon 2022년 11월 11일
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
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
Muhsin 2022년 11월 11일
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 2022년 11월 11일
편집: Torsten 2022년 11월 12일
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 = ##### 댓글 수: 4표시숨기기 이전 댓글 수: 3
Torsten 2022년 11월 12일
편집: Torsten 2022년 11월 12일
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 2022년 11월 11일

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

### 범주

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!