Find the set of eigenvectors of a 4x4 matrix elements whose matrix elements have some VARIABLE PARAMETERS.
조회 수: 69(최근 30일)
표시 이전 댓글
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
답변(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
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)
simplify(mat*V-V*D)
댓글 수: 4
Torsten
2022년 11월 12일
편집: Torsten
2022년 11월 12일
I misread
mat = diag([delta,delta,delta,delta]);
instead of
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일
I showed you in https://www.mathworks.com/matlabcentral/answers/1848378-how-to-read-the-eigenvectors-of-a-4x4-matrix-elements-for-a-given-range-of-variable-elements-b-and-n#answer_1096903 how to loop over the elements of B and record the values properly.
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!