RE : Numerical problem



Look.this:

(%i1) display2d:false;
(%o1) false
(%i2) rat(192.6988);
`rat' replaced 192.6988 by 465753/2417 = 192.6988001654944
(%o2) 465753/2417
(%i3) rat(2*192.6988);
`rat' replaced 385.3976 by 449759/1167 = 385.3976006855184
(%o3) 449759/1167

But 449759/1167 is not equal to 2*465753/2417

The only workaround that I see here is to enter yourself floating value as rational.
Something like:

p:(1926988/10000)*sin(th)^2+(49619/10000)*cos(th)^2;

Laurent.

> -----Message d'origine-----
> De?: maxima-bounces at math.utexas.edu [mailto:maxima-bounces at math.utexas.edu] De la part de
> amli at comcast.net
> Envoy??: vendredi 14 septembre 2007 22:08
> ??: maxima at math.utexas.edu
> Objet?: Re: [Maxima] Numerical problem
> 
> Hello,
> 
> Thank you all for responding.  I still have a question regarding numerical evaluation.  This
> is part of a longer symbolic expressions which I am satisfied with.  I am not just trying to
> evaluate dot product (which in the case of symbolic expression can be verified to show that
> dot product is zero-as shown in the input).  When I remove
> keepfloat:true  I get very large numbers with exponents 10^.   I am  computing my symbolic
> expressions for some particular cases.  Am I losing precision when I see these large numbers
> due to ratsubst .   My numbers seems to be very manageable from numerical point of view.  Can
> I trust Maxima for numerical evaluations to back up my symbolic expresions?   Thank you.
> 
> 
> Ram
> 
> /**     A sample input  **/
> v1:[1,-(sqrt(4*t^2+q^2-2*p*q+p^2)-q+p)/(2*t),0];
> v2:[1,(sqrt(4*t^2+q^2-2*p*q+p^2)+q-p)/(2*t),0];
> radcan(v1.v2);
> 
> p:192.6988*sin(th)^2+4.9619*cos(th)^2;
> q:4.9619*sin(th)^2+8.0665*cos(th)^2;
> r:4.9619*sin(th)^2+2.4489*cos(th)^2;
> t:-7.69*cos(th)*sin(th);
> 
> 
> v11:ratsubst(1-sin(th)^2,cos(th)^2,ev(v1));
> v22:ratsubst(1-sin(th)^2,cos(th)^2,ev(v2));
> 
> ratsubst(%pi/3,th,[v1,v2,v1.v2]);
> ratsubst(%pi/3,th,[v11,v22,v11.v22]);
> 
> 
> 
>    sol2:[[1,-(sqrt(4*t^2+q^2-2*p*q+p^2)-q+p)/(2*t),0],
>    [-1,-(sqrt(4*t^2+q^2-2*p*q+p^2)+q-p)/(2*t),0]];
> 
>    print("dot product of 2 vect in sol2");
>    radcan(sol2[1].sol2[2]);
> 
> 
>    p:192.6988*sin(th)^2+4.9619*cos(th)^2$
>    q:4.9619*sin(th)^2+8.0665*cos(th)^2$
>    r:4.9619*sin(th)^2+2.4489*cos(th)^2$
>    t:-7.69*cos(th)*sin(th)$
> 
>    dd:ev(sol2[1].sol2[2]);
>    radcan(dd);
>    ratsubst(%pi/3,th,dd);
> 
>    ratsubst(%pi/3,th,ev(sol2[1].sol2[2]));
> 
> /**  sample output of the same input with keepfloat:true replaced by false  **/
> 
> (%o1) [1,(-sqrt(4*t^2+q^2-2*p*q+p^2)+q-p)/(2*t),0](%o2) [1,(sqrt(4*t^2+q^2-2*p*q+p^2)+q-
> p)/(2*t),0](%o3) 0(%o4) 192.6988*sin(th)^2+4.9619*cos(th)^2(%o5)
> 4.9619*sin(th)^2+8.0665*cos(th)^2(%o6) 4.9619*sin(th)^2+2.4489*cos(th)^2(%o7) -
> 7.69*cos(th)*sin(th)`rat' replaced 236.5444 by 61265/259 = 236.5444015444016`rat' replaced
> 8.0665 by 16133/2000 = 8.0665`rat' replaced 4.9619 by 10028/2021 = 4.961900049480455`rat'
> replaced 8.0665 by 16133/2000 = 8.0665`rat' replaced 4.9619 by 10028/2021 =
> 4.961900049480455`rat' replaced 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced
> 192.6988 by 465753/2417 = 192.6988001654944`rat' replaced 4.9619 by 10028/2021 =
> 4.961900049480455`rat' replaced 192.6988 by 465753/2417 = 192.6988001654944`rat' replaced -
> 0.06501950585176 by -50/769 = -0.06501950585176`rat' replaced 3.1046 by 15523/5000 =
> 3.1046`rat' replaced -187.7369 by -168400/897 = -187.736900780379(%o8)
> [1,(4485000*sqrt(894461110061138312575262099*sin(th)^4-23445005283459250158832198*sin!
>  (th)^2+
> 238263202973718267570099)+8361962780742334000*sqrt(259)*sin(th)^2-
> 136031992742334000*sqrt(259))/(673894237060200000*sqrt(259)*cos(th)*sin(th)),0]`rat' replaced
> 236.5444 by 61265/259 = 236.5444015444016`rat' replaced 8.0665 by 16133/2000 = 8.0665`rat'
> replaced 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 8.0665 by 16133/2000 =
> 8.0665`rat' replaced 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 4.9619 by
> 10028/2021 = 4.961900049480455`rat' replaced 192.6988 by 465753/2417 = 192.6988001654944`rat'
> replaced 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 192.6988 by 465753/2417 =
> 192.6988001654944`rat' replaced -0.06501950585176 by -50/769 = -0.06501950585176`rat'
> replaced 3.1046 by 15523/5000 = 3.1046`rat' replaced -187.7369 by -168400/897 = -
> 187.736900780379(%o9) [1,-(4485000*sqrt(894461110061138312575262099*sin(th)^4-
> 23445005283459250158832198*sin(th)^2+238263202973718267570099)-
> 8361962780742334000*sqrt(259)*sin(th)^2+136031992742334000*sqrt(259))/(67!
>  3894237
> 060200000*sqrt(259)*cos(th)*sin(th)),0](%o10) [[1,-(sqrt(4*t^2+q^2-2*p*q+p^2)-
> q+p)/(2*t),0],[1,(sqrt(4*t^2+q^2-2*p*q+p^2)+q-p)/(2*t),0],0](%o11)
> [[1,(17940*sqrt(7772622138396313303552494099)+98167041485030664*sqrt(259))/(2695576948240800*
> sqrt(3)*sqrt(259)),0],[1,-(17940*sqrt(7772622138396313303552494099)-
> 98167041485030664*sqrt(259))/(2695576948240800*sqrt(3)*sqrt(259)),0],400121737800690240511970
> 27/13068951296713755566761314040000](%o12) [[1,-(0.065019505851756*(-
> sqrt((192.6988*sin(th)^2+4.9619*cos(th)^2)^2-
> 2*(4.9619*sin(th)^2+8.0665*cos(th)^2)*(192.6988*sin(th)^2+4.9619*cos(th)^2)+(4.9619*sin(th)^2
> +8.0665*cos(th)^2)^2+236.5444*cos(th)^2*sin(th)^2)-
> 187.7369*sin(th)^2+3.1046*cos(th)^2))/(cos(th)*sin(th)),0],[-1,-(0.065019505851756*(-
> sqrt((192.6988*sin(th)^2+4.9619*cos(th)^2)^2-
> 2*(4.9619*sin(th)^2+8.0665*cos(th)^2)*(192.6988*sin(th)^2+4.9619*cos(th)^2)+(4.9619*sin(th)^2
> +8.0665*cos(th)^2)^2+236.5444*cos(th)^2*sin(th)^2)+187.7369*sin(th)^2-
> 3.1046*cos(th)^2))/(cos(th)*sin(th)),0]!
>  ]dot pr
> oduct of 2 vect in sol2 (%o13) dot product of 2 vect in sol2`rat' replaced 236.5444 by
> 61265/259 = 236.5444015444016`rat' replaced 8.0665 by 16133/2000 = 8.0665`rat' replaced
> 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 8.0665 by 16133/2000 = 8.0665`rat'
> replaced 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 4.9619 by 10028/2021 =
> 4.961900049480455`rat' replaced 192.6988 by 465753/2417 = 192.6988001654944`rat' replaced
> 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 192.6988 by 465753/2417 =
> 192.6988001654944`rat' replaced 0.0042275361412065 by 259/61265 = 0.0042275361136048`rat'
> replaced 3.1046 by 15523/5000 = 3.1046`rat' replaced -187.7369 by -168400/897 = -
> 187.736900780379`rat' replaced -3.1046 by -15523/5000 = -3.1046`rat' replaced 187.7369 by
> 168400/897 = 187.7369007803791(%o14) -(124038645614161686100000000*sin(th)^4-
> 11289350153068005045300000*cos(th)^2*sin(th)^2+152770644164093639139729*cos(th)^4)/(117620562
> 438370016951386500000000*cos(th)^2*!
>  sin(th)
> ^2)(%o19) (0.0042275361412065*(-sqrt((192.6988*sin(th)^2+4.9619*cos(th)^2)^2-
> 2*(4.9619*sin(th)^2+8.0665*cos(th)^2)*(192.6988*sin(th)^2+4.9619*cos(th)^2)+(4.9619*sin(th)^2
> +8.0665*cos(th)^2)^2+236.5444*cos(th)^2*sin(th)^2)-187.7369*sin(th)^2+3.1046*cos(th)^2)*(-
> sqrt((192.6988*sin(th)^2+4.9619*cos(th)^2)^2-
> 2*(4.9619*sin(th)^2+8.0665*cos(th)^2)*(192.6988*sin(th)^2+4.9619*cos(th)^2)+(4.9619*sin(th)^2
> +8.0665*cos(th)^2)^2+236.5444*cos(th)^2*sin(th)^2)+187.7369*sin(th)^2-
> 3.1046*cos(th)^2))/(cos(th)^2*sin(th)^2)-1`rat' replaced 236.5444 by 61265/259 =
> 236.5444015444016`rat' replaced 8.0665 by 16133/2000 = 8.0665`rat' replaced 4.9619 by
> 10028/2021 = 4.961900049480455`rat' replaced 8.0665 by 16133/2000 = 8.0665`rat' replaced
> 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 4.9619 by 10028/2021 =
> 4.961900049480455`rat' replaced 192.6988 by 465753/2417 = 192.6988001654944`rat' replaced
> 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 192.6988 by 465753/2417 =
> 192.698800165494!
>  4`rat'
> replaced 0.0042275361412065 by 259/61265 = 0.0042275361136048`rat' replaced 3.1046 by
> 15523/5000 = 3.1046`rat' replaced -187.7369 by -168400/897 = -187.736900780379`rat' replaced
> -3.1046 by -15523/5000 = -3.1046`rat' replaced 187.7369 by 168400/897 =
> 187.7369007803791(%o20) -(124038645614161686100000000*sin(th)^4-
> 11289350153068005045300000*cos(th)^2*sin(th)^2+152770644164093639139729*cos(th)^4)/(117620562
> 438370016951386500000000*cos(th)^2*sin(th)^2)`rat' replaced 236.5444 by 61265/259 =
> 236.5444015444016`rat' replaced 8.0665 by 16133/2000 = 8.0665`rat' replaced 4.9619 by
> 10028/2021 = 4.961900049480455`rat' replaced 8.0665 by 16133/2000 = 8.0665`rat' replaced
> 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 4.9619 by 10028/2021 =
> 4.961900049480455`rat' replaced 192.6988 by 465753/2417 = 192.6988001654944`rat' replaced
> 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 192.6988 by 465753/2417 =
> 192.6988001654944`rat' replaced 0.0042275361412065 by 259/61265 = 0.00422!
>  7536113
> 6048`rat' replaced 3.1046 by 15523/5000 = 3.1046`rat' replaced -187.7369 by -168400/897 = -
> 187.736900780379`rat' replaced -3.1046 by -15523/5000 = -3.1046`rat' replaced 187.7369 by
> 168400/897 = 187.7369007803791(%o21) -
> 40097501137496861237157027/13068951382041112994598500000000`rat' replaced 236.5444 by
> 61265/259 = 236.5444015444016`rat' replaced 8.0665 by 16133/2000 = 8.0665`rat' replaced
> 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 8.0665 by 16133/2000 = 8.0665`rat'
> replaced 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 4.9619 by 10028/2021 =
> 4.961900049480455`rat' replaced 192.6988 by 465753/2417 = 192.6988001654944`rat' replaced
> 4.9619 by 10028/2021 = 4.961900049480455`rat' replaced 192.6988 by 465753/2417 =
> 192.6988001654944`rat' replaced 0.0042275361412065 by 259/61265 = 0.0042275361136048`rat'
> replaced 3.1046 by 15523/5000 = 3.1046`rat' replaced -187.7369 by -168400/897 = -
> 187.736900780379`rat' replaced -3.1046 by -15523/5000 = -3.1046`rat' replaced!
>   187.73
> 69 by 168400/897 = 187.7369007803791(%o22) -
> 40097501137496861237157027/13068951382041112994598500000000
> 
> 
> 
> 
> 
>  -------------- Original message ----------------------
> From: maxima-request at math.utexas.edu
> > Send Maxima mailing list submissions to
> > 	maxima at math.utexas.edu
> >
> > To subscribe or unsubscribe via the World Wide Web, visit
> > 	http://www.math.utexas.edu/mailman/listinfo/maxima
> > or, via email, send a message with subject or body 'help' to
> > 	maxima-request at math.utexas.edu
> >
> > You can reach the person managing the list at
> > 	maxima-owner at math.utexas.edu
> >
> > When replying, please edit your Subject line so it is more specific
> > than "Re: Contents of Maxima digest..."
> >
> >
> > Today's Topics:
> >
> >    1. Numerical problem (amli at comcast.net)
> >    2. Re: About Maxima and MS-DOS ( Jordi Guti?rrez Hermoso )
> >    3. Re: Numerical problem (Harald Geyer)
> >    4. Re: Numerical problem (Barton Willis)
> >
> >
> > ----------------------------------------------------------------------
> >
> > Message: 1
> > Date: Wed, 12 Sep 2007 21:41:42 +0000
> > From: amli at comcast.net
> > Subject: Numerical problem
> > To: maxima at math.utexas.edu
> > Message-ID:
> >
> > <091220072141.21977.46E85D160002C1FD000055D922070209530704030E at comcast.net>
> >
> >
> > Hello,
> >          I am having some  problem with computing a dot products.   It is
> > probably something simple that I am not seeing it.   Some of the lines are
> > redundant but I am keeping it because the problem shows up.   The dot product
> > is supposed to be zero but I get different number (last line).  Thank you.
> >
> >
> > wxMaxima 0.7.3a http://wxmaxima.sourceforge.netMaxima 5.13.0
> > http://maxima.sourceforge.netUsing Lisp GNU Common Lisp (GCL) GCL 2.6.8 (aka
> > GCL)Distributed under the GNU Public License. See the file COPYING.Dedicated to
> > the memory of William Schelter.This is a development version of Maxima. The
> > function bug_report()provides bug reporting information.
> >
> >
> >
> > Here is the code
> > /**
> > --------------------------------------------------------------------------------
> > ---------------------------------- **/
> >
> > keepfloat:true;
> >    sol2:[[1,-(sqrt(4*t^2+q^2-2*p*q+p^2)-q+p)/(2*t),0],
> >    [-1,-(sqrt(4*t^2+q^2-2*p*q+p^2)+q-p)/(2*t),0]];
> >
> >    print("dot product of 2 vect in sol2");
> >    radcan(sol2[1].sol2[2]);
> >
> >
> >
> >    print("make trig substitution")$
> >    EA2:ratsubst(1.0-sin(th)^2,cos(th)^2,ev(sol2));
> >
> >
> >    v1:EA2[1]$
> >    v2:-EA2[2]$
> >
> >
> >    p:192.6988*sin(th)^2+4.9619*cos(th)^2$
> >    q:4.9619*sin(th)^2+8.0665*cos(th)^2$
> >    r:4.9619*sin(th)^2+2.4489*cos(th)^2$
> >    t:-7.69*cos(th)*sin(th)$
> >
> >    radcan(ev(v1.v2));
> >    ratsubst(%pi/3,th,ev([v1.v2]));
> >
> >
> > /**  Output
> > **************************************************************************/
> >
> > (%o1) true(%o2)
> > [[1,(-sqrt(4*t^2+q^2-2*p*q+p^2)+q-p)/(2*t),0],[-1,(-sqrt(4*t^2+q^2-2*p*q+p^2)-q+
> > p)/(2*t),0]]dot product of 2 vect in sol2 (%o3) dot product of 2 vect in
> > sol2(%o4) 0make trig substitution (%o6)
> > [[1,-(sqrt(4*t^2+q^2-2*p*q+p^2)-q+p)/(2*t),0],[-1,-(sqrt(4*t^2+q^2-2*p*q+p^2)+q-
> > p)/(2*t),0]](%o13) 0(%o14) [-6646.288740236717]
> >
> >
> >
> >
> > Ram
> >
> >
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima