Computation of left eigenvectors of polyeig

40 次查看(过去 30 天)
Waqar Ahmed
Waqar Ahmed 2024-9-3,21:33
编辑: Umar 2024-9-4,4:29
The polyeig gives eigenvalues and right eigenvector. How can left eigenvectors be calculated from these

回答(2 个)

Torsten
Torsten 2024-9-3,23:00
编辑:Torsten 2024-9-3,23:05
Hint:
If you solve for s and x satisfying
(A0.'+s*A1.'+...+s^p*Ap.')*x = 0,
using
polyeig(A0.',A1.',...,Ap.')
, it follows
x.'*(A0+s*A1+...+s^p*Ap) = 0.

Umar
Umar 2024-9-4,3:10
编辑:Umar 2024-9-4,4:29

Hi @Waqar Ahmed,

You did brought up a good question. To address your query regarding,”The polyeig gives eigenvalues and right eigenvector. How can left eigenvectors be calculated from these”

You can derive left eigenvectors from the right eigenvectors obtained via polyeig in MATLAB by solving associated linear equations. I did review the documentation at the link provided below and it has bunch of quite technical information.

https://www.mathworks.com/help/matlab/ref/polyeig.html

% Define matrices A0 and A1
A0 = [0 1; -1 0]; % Example matrix (rotation matrix)
A1 = eye(2);      % Identity matrix as A1
% Compute eigenvalues and right eigenvectors
[X, e] = polyeig(A0, A1);
% Display the results
disp('Eigenvalues:');
disp(e);
disp('Right Eigenvectors:');
disp(X);
% Calculate left eigenvectors
% Initialize a matrix to hold left eigenvectors
Y = zeros(size(X));
% Loop through each eigenvalue and corresponding right eigenvector
for i = 1:length(e)
  % Get the current eigenvalue and right eigenvector
  lambda = e(i);
  x = X(:, i);
    % Check if the eigenvalue is finite
    if isfinite(lambda)
        % Construct the polynomial matrix P(lambda)
        P_lambda = A0 + lambda * A1;
        % Solve for the left eigenvector using the equation Y^T * P(lambda) = 0
        % This can be done by finding the null space of P_lambda'
        left_eigenvector = null(P_lambda');
        % Normalize the left eigenvector
        left_eigenvector = left_eigenvector / norm(left_eigenvector);
        % Store the left eigenvector
        Y(:, i) = left_eigenvector;
    else
        warning('Eigenvalue %f is not finite. Skipping left eigenvector   
        computation.', lambda);
        Y(:, i) = NaN; % Assign NaN if the eigenvalue is not finite
    end
  end
% Display the left eigenvectors
disp('Left Eigenvectors:');
disp(Y);

Please see attached.

Interpretation of output results

The output indicates:

Eigenvalues

( 0.0000 + 1.0000i ) ( 0.0000 - 1.0000i )

These complex eigenvalues suggest that the system exhibits oscillatory behavior, which is typical for rotation matrices.

Right Eigenvectors

( [0.0000 - 1.0000i, 0.0000 + 1.0000i] ) ( [-1.0000 + 0.0000i, -1.0000 + 0.0000i] )

The right eigenvectors correspond to the eigenvalues and indicate the directions in which the transformation defined by ( A_0 ) acts.

The left eigenvectors are displayed, yielding:

Left Eigenvectors

( [-0.4639 - 0.5336i, -0.4639 + 0.5336i] ) ( [-0.5336 + 0.4639i, -0.5336 - 0.4639i] )

These left eigenvectors correspond to the right eigenvectors and provide insight into the dual nature of the eigenvalue problem.

So, you can see that the above provided code successfully computes left eigenvectors from the right eigenvectors and eigenvalues derived from the polyeig function.

There are certain things to understand about interpreting left Eigenvectors. They can be particularly useful in various applications, including systems of differential equations and control theory and can be used to analyze controllability and observability of state-space representations, providing deeper insights into system dynamics.However, you have to be aware of numerical stability, when working with eigenvalues and eigenvectors, numerical stability can be a concern, especially for matrices that are nearly singular or ill-conditioned. It’s advisable to validate the results through consistency checks.

If you have further questions or need additional clarification on specific aspects, feel free to ask!

类别

Help CenterFile Exchange 中查找有关 Linear Algebra 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by