MathGroup Archive 2004

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

Search the Archive

Re: Re: Reduce/Solve

  • To: mathgroup at smc.vnet.net
  • Subject: [mg50078] Re: [mg50060] Re: Reduce/Solve
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Sat, 14 Aug 2004 01:50:31 -0400 (EDT)
  • References: <200408090829.EAA03580@smc.vnet.net> <200408101002.GAA19500@smc.vnet.net> <766AE111-EABF-11D8-BBFD-000A95B4967A@mimuw.edu.pl> <opsciyqjd6iz9bcq@monster.cox-internet.com> <395198E8-EB0D-11D8-AA51-000A95B4967A@mimuw.edu.pl> <cfcr2e$475$1@smc.vnet.net> <200408130956.FAA03676@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

On 13 Aug 2004, at 11:56, Andy Kowar wrote:

>
> I have a problem that the experts on Solve/Reduce participating in
> this thread might help me with.
>
> I define an ellipse in parametric form:
>    r[t_]:={a*Cos[t],b*Sin[t]}
> and the tangent
>    dr[t_]:=Evaluate[D[r[t], t]]
> I define a vector
>    q={k,l};
> I want to find points on the ellipse such that the tangent is parallel
> to a given vector:
>    q={k,l};
> I expect two two solutions.
>
> I define the equation:
>    eq = dr[t] == lambda q;
> The following command
>    sol = Simplify[Solve[eq, {t, lambda}], {a > b > 0, k > 0,
> l\[Element]Reals}]
> produces the following warning
>    "Solve::ifun: Inverse functions are being used by Solve,
>    so some solutions may not be found; use Reduce for complete
>    solution information"
> and the following four solutions (here in the InputForm)
> {{lambda -> -((a*b)/Sqrt[b^2*k^2 + a^2*l^2]),
>   t -> -ArcCos[-((a*l)/Sqrt[b^2*k^2 + a^2*l^2])]},
> {{lambda -> -((a*b)/Sqrt[b^2*k^2 + a^2*l^2]),
>   t -> -ArcCos[-((a*l)/Sqrt[b^2*k^2 + a^2*l^2])]},
>  {lambda -> -((a*b)/Sqrt[b^2*k^2 + a^2*l^2]),
>   t -> ArcCos[-((a*l)/Sqrt[b^2*k^2 + a^2*l^2])]},
>  {lambda -> (a*b)/Sqrt[b^2*k^2 + a^2*l^2],
>   t -> -ArcCos[(a*l)/Sqrt[b^2*k^2 + a^2*l^2]]},
>  {lambda -> (a*b)/Sqrt[b^2*k^2 + a^2*l^2],
>   t -> ArcCos[(a*l)/Sqrt[b^2*k^2 + a^2*l^2]]}}
>
> The warning suggests that some solutions might be missing. In fact,
> Solve produces two extra expressions that are not solutions.
>   eq /. sol //  Simplify[#, {a > b > 0, k > 0, l\[Element]Reals}] &
> returns
>   {False,True,True,False}
>
> My questions are:
>
> 1. Is that a bug or feature that Solve produces expressions that are
> not solutions for the original equations?
>
> 2. How to make Solve to return only 'true' solutions?
>
> On a side note, I tried Reduce only once because Mathematica froze my
> PC.
>
> AK
>
>
In this type of equations the appearance of "phantom" solutions is a 
consequence of the method used for solving them. It is not a feature of 
Mathematica or of Solve. The only way to eliminate these phantoms is to 
perform the sort of verification you have done. Mathematica does not do 
it automatically because in most cases of equations with non-numerical 
parameters such a verification is impossible and trying to do so would 
simply mean that Mathematica would appear to hang. In your case 
verification can be accomplished only with the additional information 
about the parameters included in Simplify but Solve cannot use it. 
Reduce, however, can:



FullSimplify[Reduce[Flatten[{Thread[eq],
      {a > b > 0, k > 0, l $B":(B Reals}}], {t, lambda}],
   {a > b > 0, k > 0, l $B":(B Reals}]


C[1] $B":(B Integers &&
   (
    t == 2*(ArcCot[(b*k)/(a*l - Sqrt[b^2*k^2 +
             a^2*l^2])] + Pi*C[1]) &&
     lambda == (a*b)/Sqrt[b^2*k^2 + a^2*l^2] ||
    t == 2*(ArcCot[(b*k)/(a*l + Sqrt[b^2*k^2 +
             a^2*l^2])] + Pi*C[1]) &&
     (a*b)/Sqrt[b^2*k^2 + a^2*l^2] + lambda == 0)

(Mathematica 5.0 under Mac OS X 10.3.5)

Andrzej Kozlowski
Chiba, Japan
http://www.mimuw.edu.pl/~akoz/


  • Prev by Date: Re: Smalest enclosing circle
  • Next by Date: Re: Listplot-Bug in Mathematica 5.0
  • Previous by thread: Re: Reduce/Solve
  • Next by thread: Re: Re: Re: Reduce/Solve