Using polyeig with scaling matrices
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I'm using the function polyeig to solve a quadratic eigenvalue problem with complex matrices A0.A1 and A2 (A2 is singular; has only two non-zero rows).
The result was so bad, and according to the help center of Mathworks : (Scaling A0,A1,...,Ap to have norm(Ai) roughly equal to 1 might increase the accuracy of polyeig)
Is there any function in Matlab to do this scaling?
Thanks in advance;
0 comentarios
Respuestas (1)
Rushil
el 24 de En. de 2025
Hi Mohamed
One of the possible ways to accomplish this is by dividing each matrix by its norm. You may try to use different variants of the norm, such as the “frobenius” norm or the usual norm (also called "2-norm"), which is based on the largest singular value of the matrix. These should help making “norm(A(i))” have values closer to 1.
You may do this for all your input matrices (as suggested by the “polyeig” documentation) as follows:
A0 = A0 / norm(A0) % 2-norm
% or
A0 = A0 / norm(A0,'fro') % frobenius norm
As the documentation for “polyeig” states, improved accuracy may not be achievable in the general case. So, you may try different choices for the norm function and choose the one which suits you best. You can read more about different norm functions here:
0 comentarios
Ver también
Categorías
Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!