Using polyeig with scaling matrices

7 visualizaciones (últimos 30 días)
Mohamed Hajjaj
Mohamed Hajjaj el 25 de Feb. de 2022
Respondida: Rushil el 24 de En. de 2025
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;

Respuestas (1)

Rushil
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:

Categorías

Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.

Productos


Versión

R2014a

Community Treasure Hunt

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

Start Hunting!

Translated by