Inversion of ill Contioned Matrices

12 vues (au cours des 30 derniers jours)
Harsha
Harsha le 23 Fév 2011
In my code I have to take inversion of matrices at a certain point. When I am trying to take the inverse of ill conditioned matrices, I am getting a weird result.
I am not trying to solve equations. I have to take inverse of a matrix, as part of a similarity measure process. I was trying to take the inverse directly, but it was being scaled badly and when I tried to multiply the inverse with the matrix itself, I was nowhere near an Identity matrix. I even tried Singular Value Decomposition (SVD) but no luck. To get a good answer I need to be as close as possible to the inverse as possible.
[U,S,V] = svd(C1);
S1 = zeros(16,16);
for j = 1:16
if S(j,j) ~= 0
S1(j,j) = 1/S(j,j);
end
end
C1_1 = V*S1*transpose(U);
C1*C1_1 was nowhere equal to identity
Can anyone suggest me a method about how to take inversion of ill conditioned matrices other than SVD. Thanks in advance.
  1 commentaire
John D'Errico
John D'Errico le 23 Fév 2011
I don't even know from this example if C1 is a square matrix!!!!!!! Note that if C1 is not square, then it would NEVER result in an identity.

Connectez-vous pour commenter.

Réponses (3)

Jan
Jan le 24 Fév 2011
Have you tried Rump's INTLab?
Alain Barraud has publsihed some methods for accurate linear algebra also: http://www.mathworks.com/matlabcentral/fileexchange/10668-a-forward-stable-linear-solver

Andrew Newell
Andrew Newell le 23 Fév 2011
If you have the Symbolic Toolbox, you could try variable precision arithmetic:
C1 = vpa(C1);
C1_1 = inv(C1);
EDIT: If you don't have it, you could try downloading Multiple Precision Toolbox for MATLAB from the File Exchange and do the same thing with mp in place of vpa. I haven't used this toolbox myself, but judging by the list of functions you'll probably want to do this:
C1 = mp(C1);
C1_1 = inv(C1);
  2 commentaires
Harsha
Harsha le 23 Fév 2011
I'm sorry but can you be a bit clearer.
Andrew Newell
Andrew Newell le 24 Fév 2011
I have added explicit commands above, but they're just guesses. You'll have to click on the link, download the package, and read the documentation.

Connectez-vous pour commenter.


Harsha
Harsha le 23 Fév 2011
I don't think I have the symbolic tool box, do you have any other suggestions by chance.
  1 commentaire
Andrew Newell
Andrew Newell le 23 Fév 2011
See above. This Answer should really be a Comment.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by