[sage-support] Re: Precision in (Real) Vector Space / Working with reflection groups

2011-01-26 Thread D. S. McNeil
 (-6.66133814775094e-16, -1.00)
 ---???

 Why isn't the first coordinate 0??? In theory it should be...

Such things are basically inevitable with floating point whenever any
number involved can't be perfectly represented-- and in this case
sqrt(2) is irrational to boot.  Sometimes you luck out and sometimes
you don't.  help(RR) gives a brief warning.  Here I think you can
avoid the problem by working not in RR (2^(-53) ~ 1e-16) but the
symbolic ring SR.

sage: V=VectorSpace(RR,2,inner_product_matrix=[[1, -sqrt(2)/2], [-
sqrt(2)/2, 1]])
sage: V.basis()
[
(1.00, 0.000),
(0.000, 1.00)
]
sage: V=VectorSpace(SR,2,inner_product_matrix=[[1, -sqrt(2)/2], [-
sqrt(2)/2, 1]])
sage: a,b = V.basis()
sage: a,b
((1, 0), (0, 1))
sage: r1=Sigma(a,b);r1
(sqrt(2), 1)
sage: r2=Sigma(r1,a);r2
(-1, -sqrt(2))
sage: r3=Sigma(r2,r1);r3
(0, -1)

If you really want to work in floating point you're going to have to
loosen your definition of equality -- see, e.g.,
http://floating-point-gui.de/errors/comparison/ -- possibly doing so
rigorously with interval arithmetic.


Doug

--
Department of Earth Sciences
University of Hong Kong

-- 
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org


[sage-support] Re: Precision in (Real) Vector Space / Working with reflection groups

2011-01-26 Thread jplab


On 26 jan, 12:47, D. S. McNeil dsm...@gmail.com wrote:
  (-6.66133814775094e-16, -1.00)
  ---???

  Why isn't the first coordinate 0??? In theory it should be...

 Such things are basically inevitable with floating point whenever any
 number involved can't be perfectly represented-- and in this case
 sqrt(2) is irrational to boot.  Sometimes you luck out and sometimes
 you don't.  help(RR) gives a brief warning.  Here I think you can
 avoid the problem by working not in RR (2^(-53) ~ 1e-16) but the
 symbolic ring SR.

I wasn't sure if it was the representation problem...


 sage: V=VectorSpace(RR,2,inner_product_matrix=[[1, -sqrt(2)/2], [-
 sqrt(2)/2, 1]])
 sage: V.basis()
 [
 (1.00, 0.000),
 (0.000, 1.00)
 ]
 sage: V=VectorSpace(SR,2,inner_product_matrix=[[1, -sqrt(2)/2], [-
 sqrt(2)/2, 1]])
 sage: a,b = V.basis()
 sage: a,b
 ((1, 0), (0, 1))
 sage: r1=Sigma(a,b);r1
 (sqrt(2), 1)
 sage: r2=Sigma(r1,a);r2
 (-1, -sqrt(2))
 sage: r3=Sigma(r2,r1);r3
 (0, -1)


This change does the thing!!! It is perfect for me!!


 If you really want to work in floating point you're going to have to
 loosen your definition of equality -- see, 
 e.g.,http://floating-point-gui.de/errors/comparison/-- possibly doing so
 rigorously with interval arithmetic.

 Doug

 --
 Department of Earth Sciences
 University of Hong Kong

Thanks a lot!
J-P

-- 
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org