svd prescision is very bad.
Mostra commenti meno recenti
it appears to be that when i use SVD i loose prescision how can i avoid loosing prescision and use svd function?
[U,S,V]=svd(T);
T=U*S*V'
the first T Matrix and the second are not the same.
here a comparation of the matrix before svd and after:
>> T
T =
-0.4609 + 0.4970i 0.0023 + 0.0267i -0.0267 + 0.0028i
0.0023 + 0.0270i -0.5192 - 0.4982i -0.0023 - 0.0267i
-0.0267 + 0.0028i -0.0023 - 0.0270i -0.4609 + 0.4970i
>> [U,S,V]=svd(T); >> Tsvd=U*S*V'
Tsvd =
-0.4609 + 0.4970i 0.0023 + 0.0267i -0.0267 + 0.0028i
0.0023 + 0.0270i -0.5192 - 0.4982i -0.0023 - 0.0267i
-0.0267 + 0.0028i -0.0023 - 0.0270i -0.4609 + 0.4970i
>> difference=T-Tsvd
difference =
1.0e-15 *
-0.0555 - 0.1110i 0.0247 - 0.0312i -0.4025 + 0.3092i
-0.0278 - 0.0173i 0.0000 - 0.3331i -0.0494 + 0.0555i
-0.0486 + 0.0867i 0.0694 + 0.1076i 0.0000 + 0.0555i
4 Commenti
Oleg Komarov
il 14 Ott 2014
Post a concrete example.
Kobi
il 14 Ott 2014
Roger Stafford
il 14 Ott 2014
Kobi, that is just expected round-off error out at the fifteenth decimal place. You can't expect any better precision than that using double precision floating point numbers. After all, these numbers have only 53 bits in their significands. Your description of "very bad" is quite unfair.
Some information on Floating Point Numbers in MATLAB:
Risposta accettata
Più risposte (1)
Roger Stafford
il 14 Ott 2014
Modificato: Roger Stafford
il 14 Ott 2014
2 voti
You cannot expect them to be exactly the same because of rounding errors. Have you compared them using "format long" to see how significant the differences are?
If you are still unsatisfied, please give a representative sample of what you have observed.
1 Commento
Kobi
il 14 Ott 2014
Categorie
Scopri di più su Creating and Concatenating Matrices in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!