Is there any way to reduce the error in the calculation of eigenvectors when using eig function?

6 次查看(过去 30 天)
In the equation AV = BVD (cond(A) = 10^4, cond(B) = 10^8), my A and B matrices are highly ill-conditioned. The eigenvectors I am getting have an error around 100, whereas the actual value of eigenvector is in the order of 10^-2. I tried [V, D] = eig(A, B, 'qz'), but this didn't make much difference. So is there any way I can specify the error tolerance while using [V, D] = eig(A, B) or is there any other way of computing eigenvectors with the required tolerance in MATLAB?
Thanks.
  1 个评论
Adam
Adam 2018-7-10
Surely the fact that your matrices are highly ill-conditioned is the source of the problem? Pre-condition them and eig should be more accurate I would have thought.

请先登录,再进行评论。

回答(1 个)

Christine Tobler
Christine Tobler 2018-7-16
I'm just catching up on MATLAB Answers: Can you tell us some more about your problem? How are you measuring the error in the eigenvectors?
The error that EIG (and most eigensolvers) is trying to minimize is that norm(A*V - B*V*D) should be small. Is this the error you are measuring?
  5 个评论
Christine Tobler
Christine Tobler 2018-7-17
It seems that the problem is not the condition of A and B so much as the norms of A and B, which are both 3.1378e+15.
For any generalized eigenvalue problem, we can multiply both A and B by 1e15, and this will not affect the eigenvalues and eigenvectors, but the residual will be a factor 1e15 larger.
A colleague suggested that a good way to go would be to scale the residual by the norms of A and B:
>> norm(A*V - B*V*D) / max(norm(A), norm(B))
ans =
8.0423e-10
That this is not 1e-15, I would now blame on the condition numbers of A and B.
Yaswanth  Sai
Yaswanth Sai 2018-7-19
So is there any other way we can improve the condition of matrices and then get the eigenvectors? I tried using 'balance'([V,D]=eig(balance(A),balance(B)), but that doesn't seem to work.
Thanks.

请先登录,再进行评论。

类别

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