Question about to_poly_solve



I'm surprised %solve does so poorly on this case, when algsys does just
fine with

    algsys( [ trigexpand( sin(x)+cos(x)=cos(2*x) ), sin(x)^2+cos(x)^2=1 ],
[sin(x),cos(x)] )

          -s


On Thu, Jun 13, 2013 at 12:50 PM, Barton Willis <willisb at unk.edu> wrote:

>  Try setting algexact to true:
>
>   (%i1) sol : to_poly_solve(eq : sin(x)+cos(x)=cos(2*x),x),algexact : true$
>
> If you enjoy huge messy symbolic answers, look at sol. I do not know of a
> way to simplify sol to something that is publishable.
>
> Check the solutions numerically
>
>   (%i2) eq : lhs(eq)-rhs(eq)$
>
> Reindex new variables starting with zero:
>
>   (%i3) sol : trigexpand(nicedummies(sol))$
>   (%i4) map(lambda([s],  float(rectform(subst(s,eq)))),sol);
>
> Oh, the %zXXX variables get in the way
>
>   (%o4)
> %union(0.0,2.2204460492503131*10^-16-1.0*cos(2.0*(6.283185307179586*%z0-0.78539816339745)),%i*(3.1401849173675493*10^-16-4.4408920985006252*10^-16*sin(2.0*
> (6.283185307179586*%z1+2.356194490192345)))-1.0*cos(2.0*(6.283185307179586*%z1+2.356194490192345))-2.2204460492503131*10^-16,1.0-1.0*cos(2.0*(6.283185307179586*%z2-4.71238898038469)))
>
> Say uncle and set each %zXXX variable to zero
>
>   (%i5) subst([%z0=0,%z1=0,%z2=0],%);
>   (%o5)
> %union(-6.1230317691118863*10^-17,0.0,2.0,7.581077015868174*10^-16*%i-3.8353651851674719*10^-17)
>
> OK fine--the residules are small multiples of the binary64 machine
> epsilon.
>
>  --Barton
>   ------------------------------
> *From:* Karl-Dieter Crisman [kcrisman at gmail.com]
> *Sent:* Thursday, June 13, 2013 10:16
> *Cc:* Barton Willis; maxima at math.utexas.edu
> *Subject:* Re: [Maxima] Question about to_poly_solve
>
>    Yes, it does call algsys, but usually the approximate methods end up
> looking like decimals, I haven't noticed these fractions before.   I guess
> I was just surprised that this particular one went crazy, since it ends up
> being sin+cos=0 and cos-sin=1.  Thanks.
>
>
> On Thu, Jun 13, 2013 at 10:25 AM, Stavros Macrakis <macrakis at alum.mit.edu>wrote:
>
>>  It looks like to_poly_solve is calling algsys, which is using
>> approximate methods and thus giving bogus results.
>>
>>  You might try:
>>
>>           sols: solve( [ trigexpand( sin(x)+cos(x)=cos(2*x) ),
>> sin(x)^2+cos(x)^2=1 ], [sin(x),cos(x)] )
>>
>>  To get explicit results (rather than sin(x)=...), you can then use
>> %solve:
>>
>>            map(lambda([eq],%solve(eq,x)), sols);
>>
>>            -s
>>
>>
>>
>  Essentially doing the same thing with directly gives me the following.
>  I think I see what is happening here within Sage, thanks for the help.
>
>  (%i3) sols:solve(trigexpand( sin(x)+cos(x)=cos(2*x)),x);
> (%o3)              [sin(x) = - cos(x), sin(x) = cos(x) - 1]
> (%i6) load(to_poly_solve);
>
>  Loading maxima-grobner $Revision: 1.6 $ $Date: 2009-06-02 07:49:49 $
> (%o6) /Users/.../sage-5.9.rc1/local/share/maxima/5.29.1/sha\
> re/to_poly_solve/to_poly_solve.mac
>  (%i8) map(lambda([eq],%solve(eq,x)), sols);
>                                                %pi
>                                                --- - 4 %pi %z28
>                                 3 %pi           2
> (%o8) [%union([x = 2 %pi %z26 + -----], [x = - ----------------]),
>                                   4                   2
>
>  %pi
>                               %union([x = 2 %pi %z36], [x = 2 %pi %z38 -
> ---])]
>                                                                           2
>
>
>
>
>   2
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>
>