Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

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

Search the Archive

Re: Solve vs. NSolve

  • To: mathgroup at smc.vnet.net
  • Subject: [mg92862] Re: Solve vs. NSolve
  • From: SigmundV <sigmundv at gmail.com>
  • Date: Wed, 15 Oct 2008 06:01:28 -0400 (EDT)
  • References: <gd1n2c$e6o$1@smc.vnet.net>

Thank you, Bill, for pointing this out. I was aware of the PowerExpand
issue, but I guess I hadn't thought it fully through.

On Oct 14, 10:59 am, Bill Rowe <readn... at sbcglobal.net> wrote:
> On 10/13/08 at 6:21 AM, sigmu... at gmail.com (SigmundV) wrote:
>
>
>
> >Consider
> >f[a_, b_, c_, k_, t_] :=
> >With[{\[Alpha] = a k, \[Beta] = b k}, (x - \[Alpha] Cos[t])^2/a^2 +
> >(y - (\[Beta] Sin[t] + c) - c)^2/b^2 - 1 == 0]; df[a_, b_, c_, k_,
> >t_] := D[f[a, b, c, k, t], t];
> >and execute
> >{x, y} /. Simplify@PowerExpand@Simplify@Solve[{f[1, 2, 1/2, 4/5, t],
> >df[1, 2, 1/2, 4/5, t]}, {x, y}] // Chop // N
> >and
> >{x, y} /. Simplify@PowerExpand@Simplify@NSolve[{f[1, 2, 1/2, 4/5,
> >t], df[1, 2, 1/2, 4/5, t]}, {x, y}] // Chop
> >Simplify@PowerExpand@Chop@Simplify[% /. Cos[2 t] -> (1 - 2
> >Sin[t]^2)]
> >respectively.
> >As you see, Solve and NSolve yield two different solutions, with the
> >solution from Solve being the correct one, as can be verified by
> >plugging in to the equations -- the solution from NSolve does not
> >satisfy the second equation, but only the first. Can anyone explain
> >this behaviour to me?
>
> The issue isn't NSolve vs Solve since,
>
> In[5]:= Solve[{f[1, 2, 1/2, 4/5, t], df[1, 2, 1/2, 4/5, t]}, {x,
>     y}] // FullSimplify
>
> Out[5]= {{x -> (4*Cos[t])/5 - Cot[t]*Sqrt[Sin[t]^2],
>       y -> (8*Sin[t])/5 - 2*Sqrt[Sin[t]^2] + 1},
>     {x -> (4*Cos[t])/5 + Cot[t]*Sqrt[Sin[t]^2],
>       y -> (8*Sin[t])/5 + 2*Sqrt[Sin[t]^2] + 1}}
>
> and
>
> In[8]:= NSolve[{f[1, 2, 1/2, 4/5, t], df[1, 2, 1/2, 4/5, t]}, {x,
>      y}] // FullSimplify // Chop
>
> Out[8]= {{x -> 0.8*Cos[t] - 1.*Cot[t]*Sqrt[Sin[t]^2],
>       y -> 1.6*Sin[t] - 2.*Sqrt[0.49999999999999994 -
>                 0.49999999999999994*Cos[2*t]] + 1.},
>     {x -> 0.8*Cos[t] + 1.*Cot[t]*Sqrt[Sin[t]^2],
>       y -> 1.6*Sin[t] + 2.*Sqrt[0.49999999999999994 -
>                 0.49999999999999994*Cos[2*t]] + 1.}}
>
> The issue is the transformations you do to these solutions. In
> particular, note
>
> In[14]:= Sqrt[Sin[t]^2] == Sin[t] /. t -> -.5
>
> Out[14]= False
>
> That is PowerExpand needs to be used with a lot of care since
> the transformation it does is not valid for all possible values.
>
> =46or the case where you used Solve, PowerExpand transforms
> 2*Sqrt[Sin[t]^2] to 2 Sin[t]. In the case where you used NSolve,
> the mathematically equivalent expression 2.*Sqrt[0.5 -
> 0.5*Cos[2*t]] is unaffected by PowerExpand. The result is two
> expressions that are not equal although they started as equal.



  • Prev by Date: Mathematica 6.0.0 on Suse 11.0
  • Next by Date: Re: time based moving average (and other newbie mathematica
  • Previous by thread: Re: Solve vs. NSolve
  • Next by thread: UTS discrete math packages: missing DiscreteMath package(s)