0

I have considered this linear system

Bx = (A + sI)x = b, s > 0 where s = 10^4 and A is a nxn matrix with n=986703.

I have used ichol command in matlab to compute the Cholesky factor L from As. After this I implemented the CG algorithm to the problem of solving Bx = b. b is the vector calculated from B*x where x= ones(n,1). So i know the "analytical" solution x to the problem.

When i perform the CG algorithm I get an x_tilde and calculate the largest componentwise relative error between x_tilde and x.

Is it theoretically possible to get this componentwise relative error down below 2^−53 using double precision numbers?

regards

Johh
  • 1
  • 6
    "*...relative error down below 2^−53 using double precision numbers...*" <-- no, never. – Andras Deak -- Слава Україні Dec 14 '16 at 18:19
  • What is the reason for that? – Johh Dec 14 '16 at 18:33
  • 1
    How would you decrease the error of `(0.1+0.2)-0.3` below 1e-18? – Andras Deak -- Слава Україні Dec 14 '16 at 18:48
  • 6
    Many answers to that question. Glibly: that's how it is, IEEE-754 standard, or non-infinite memory. Seriously: it's [floating](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) point's [fault](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html). Basically, the smallest difference between two normal numbers without being identical lies in the least-significant bits of the mantissa, which are volatile due to floating-point rounding. So while it doesn't hurt to know it is exists, it's better to accept it and move on. – TroyHaskin Dec 14 '16 at 19:02

0 Answers0