MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: A strange bug in Solve

  • To: mathgroup at smc.vnet.net
  • Subject: [mg24356] Re: A strange bug in Solve
  • From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
  • Date: Sun, 9 Jul 2000 04:52:59 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

A couple of small additions to the earlier message. The natural question
that arises is: what will happen if we use the option MakeRules->False in
Solve?
Well this is what happens:


In[1]:=
eqns = {2*Cos[2*t]*Cos[u/2] + Cos[t]*Sin[u/2] == 0,
    (Cos[u/2]*Sin[t])/2 - (Sin[2*t]*Sin[u/2])/2 == 0};


In[2]:=
Solve[eqns, {t, u}, MakeRules -> False]

Out[2]=
{}

Another point, we can quickly get the solutions in the form used by Solve
(without using solrules)  with:

In[3]:=
{ToRules[Reduce[eqns, {t, u}]]}

Reduce::"ifun": "Inverse functions are being used by Reduce, so some
solutions may not be found."

Out[3]=
                             1
{{t -> 0, u -> 2 ArcCos[-(-------)]},
                          Sqrt[5]
 
                             1               Pi
  {t -> 0, u -> -2 ArcCos[-------]}, {t -> -(--), u -> -Pi},
                          Sqrt[5]            2
 
                                          3
                                     Sqrt[-]
        Pi                                2
  {t -> --, u -> Pi}, {t -> ArcCos[-(-------)],
        2                               2
 
                       3
   u -> 2 ArcCos[-Sqrt[-]]},
                       5
 
                    3
               Sqrt[-]
                    2                       3
  {t -> ArcCos[-------], u -> 2 ArcCos[Sqrt[-]]}}

                  2                         5

on 00.7.8 3:00 PM, Andrzej Kozlowski at andrzej at tuins.ac.jp wrote:

> I have long ago learned to be careful when making claims about kernel bugs
> in Mathematica, but this time I am pretty sure I have found a fairly serious
> one, even though it looks rather strange.
> 
> I asked Mathematica to solve a system of two trigonometric equations:
> 
> In[1]:=
> eqns = {2*Cos[2*t]*Cos[u/2] + Cos[t]*Sin[u/2] == 0,
> (Cos[u/2]*Sin[t])/2 - (Sin[2*t]*Sin[u/2])/2 == 0};
> 
> To my surprise Solve returned the empty list (I knew these equations do have
> solutions for geometric reasons):
> 
> In[2]:=
> Solve[eqns, {u, t}]
> Out[2]=
> {}
> 
> I then tried Reduce, and guess what, it gave the right answers:
> 
> In[3]:=
> sols = Reduce[eqns, {u, t}]
> From In[3]:=
> Reduce::ifun: Inverse functions are being used by Reduce, so some solutions
> may not be found.
> Out[3]=
> 1                                     1
> t == 0 && u == 2 ArcCos[-(-------)] || t == 0 && u == -2 ArcCos[-------] ||
> Sqrt[5]                               Sqrt[5]
> 
> -Pi                     Pi
> t == --- && u == -Pi || t == -- && u == Pi ||
> 2                      2
> 
> 3
> -Sqrt[-]
> 2                          3
> t == ArcCos[--------] && u == 2 ArcCos[-Sqrt[-]] ||
> 2                             5
> 
> 3
> Sqrt[-]
> 2                         3
> t == ArcCos[-------] && u == 2 ArcCos[Sqrt[-]]
> 2                           5
> 
> 
> We can check them as follows:
> 
> solrules = sols /. {Or -> List, And -> List, Equal -> Rule};
> In[5]:=
> FullSimplify[Unevaluated[eqns /. solrules]]
> Out[5]=
> {{True, True}, {True, True}, {True, True}, {True, True}, {True, True},
> {True, True}}
> 
> Here one might ask: why did I need to define solrules? Why not use the
> options MakeRules->True in Reduce? The answer is: try and see what happens!
> 
> This is  peculiar and rather unpleasant. When Solve returns an
> ampty list it ought to mean that there are no generic solutions (although
> solutions might exist for some particular values of the parameters). Reduce
> is supposed to try to work out these special cases. However, the solutions
> found by Reduce in this case are perfectly generic. Moreover, the
> spectacular failure of Reduce[eqns, MakeRules->True] suggest than somehting
> else than the difficulty of finding the solutions that is causing the
> problem here.
> 
> Andrzej Kozlowski
> 

-- 
Andrzej Kozlowski
Toyama International University
JAPAN

http://platon.c.u-tokyo.ac.jp/andrzej/
http://sigma.tuins.ac.jp/



  • Prev by Date: RE: Contour labeling
  • Next by Date: Re: Divisors
  • Previous by thread: A strange bug in Solve
  • Next by thread: Re: A strange bug in Solve