svd prescision is very bad.

5 Ansichten (letzte 30 Tage)
Kobi
Kobi am 13 Okt. 2014
Kommentiert: Andreas Goser am 14 Okt. 2014
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 Kommentare
Roger Stafford
Roger Stafford am 14 Okt. 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.
Stephen23
Stephen23 am 14 Okt. 2014
Bearbeitet: Stephen23 am 14 Okt. 2014
Some information on Floating Point Numbers in MATLAB:

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Andreas Goser
Andreas Goser am 14 Okt. 2014
Please let us know how familiar your are with numerical mathematics. The effect you see here is to be expected, but I do not want to come across as too blunt just pointing you to
eps
I could find a document that describes a bit about the why.
  3 Kommentare
Oleg Komarov
Oleg Komarov am 14 Okt. 2014
Bearbeitet: Oleg Komarov am 14 Okt. 2014
Where do you take 25 digits from?
>> fprintf('%.20f\n',pi)
3.14159265358979310000
>> fprintf('%.20f\n',eps(pi))
0.00000000000000044409
>> fprintf('%.20f\n',pi+eps(pi))
3.14159265358979360000
Andreas Goser
Andreas Goser am 14 Okt. 2014
I can recommend this article for a deeper understanding.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Roger Stafford
Roger Stafford am 14 Okt. 2014
Bearbeitet: Roger Stafford am 14 Okt. 2014
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 Kommentar
Kobi
Kobi am 14 Okt. 2014
example has been posted in the original question.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by