generalized eignvalues/eignvectors

I want to solve the following generalized eignvalues/eignvector problem:
A*w=D*B*w
Where A is my first square matrix and B my second one, D is the eignvalues and w contains the eignvectors.
I tried to look at https://www.mathworks.com/help/matlab/ref/eig.html#d120e309738 but I did not get the same form I want.
is it just enough to state my problem as the following:
[w,D]=eig(A,B)
or there is another solution. Any suggestion? Thanks very much

3 comentarios

Bruno Luong
Bruno Luong el 4 de Sept. de 2020
Editada: Bruno Luong el 4 de Sept. de 2020
I think your formulation is wrong (or more milly said not "standard"). The eigen value generalized decomposition is
% right eigen vectors
A*V = B*V*D
% left eigen vectors
W'*A = D*W'*B
Where D is diagonal.
Only with these forms that you can arrange with diagonal element of D (eigen values) and colums of V or W (right/left eigen vectors) to satisfy eigen equations.
In the strange form you wrote there is no separation equation between eigen vectors.
David Goodmanson
David Goodmanson el 5 de Sept. de 2020
Hello MA,
For the w matrix, one finds column eigenvectors, each with its own eigenvalue, and concatenates them to produce w. Is it the case that for each eigenevector u and its associated eigenvalue lambda, you are solving the equation
A*u = lamda*B*u?
Because if so, the correct resulting equation is
A*w = B*w*D
where D is the diagonal matrix of eigenvalues, and it multiplies on the right. You obtain the generalized eigenvalue form that is solved by Matlab.
Bruno Luong
Bruno Luong el 5 de Sept. de 2020
Editada: Bruno Luong el 5 de Sept. de 2020
The left eigen vectors
w'A= lamdda*w'*B % marix equation: W'*A = D*W'*B
can also be returned by MATLAB with 3-output syntax of EIG
[~,D,W] = eig(A,B)
w is columns of W, lambda diagonal elements of D.
Note that both left/right can be also obtained by Schur's decomposition with MATLAB QZ, but this is another topic.

Iniciar sesión para comentar.

Respuestas (1)

Asad (Mehrzad) Khoddam
Asad (Mehrzad) Khoddam el 4 de Sept. de 2020
If you multiply both sides by inv(D) we will have:
B*w = inv(D) * A * B
So you can use:
[w, invD] = eig(B, A);
D = inv(InvD);

3 comentarios

Hi Asad,
you meant to say
B*w = inv(D) * A * w
but unfortunately that is not in the specified form for either the left or right generalized eigenvalue problem.
Asad (Mehrzad) Khoddam
Asad (Mehrzad) Khoddam el 5 de Sept. de 2020
Yes, you are right
MA
MA el 5 de Sept. de 2020
Thanks for your answers.

Iniciar sesión para comentar.

Categorías

Más información sobre Linear Algebra en Centro de ayuda y File Exchange.

Preguntada:

MA
el 4 de Sept. de 2020

Comentada:

MA
el 5 de Sept. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by