MathGroup Archive 2010

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

Search the Archive

Re: Square root of a square

  • To: mathgroup at smc.vnet.net
  • Subject: [mg108214] Re: Square root of a square
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Wed, 10 Mar 2010 06:30:16 -0500 (EST)
  • References: <201002270813.DAA11868@smc.vnet.net> <4E497595-481A-4F1F-9E33-86865698E172@mimuw.edu.pl> <201003091125.GAA07180@smc.vnet.net>

On 9 Mar 2010, at 12:25, janjitse at gmail.com wrote:

> On Feb 28, 10:52 am, Adam Strzebonski <ad... at wolfram.com> wrote:
>> Andrzej Kozlowski wrote:
>>> On 27 Feb 2010, at 09:13, Mariano Su=E1rez-Alvarez wrote:
>>
>>>> Hi all,
>>
>>>> Mathematica evaluates FullSimplify[Sqrt[x^2]] to Sqrt[x^2], while it
>>>> tells me that FullSimplify[Sqrt[x^2] == x] is True.
>>>> Are these the expected answers?
>>
>>>> -- m
>>
>>> The second certainly not the answer I would expect, in fact this looks to me like a serious (perhaps even "shocking")  bug. It certainly contradicts this answer:
>>
>>> FindInstance[Sqrt[x^2] != x, x]
>>
>>> {{x -> -(109/5) + (11*I)/5}}
>>
>>> Andrzej Kozlowski
>>
>> It is a bug in V7.0. The function used by FullSimplify to
>> simplify equations involving holonomic functions does not
>> handle branch cuts correctly. It can be disabled with
>>
>> In[1]:= Unprotect[Holonomic`HolonomicFullSimplify];
>> Clear[Holonomic`HolonomicFullSimplify];
>>
>> In[2]:= FullSimplify[Sqrt[x^2] == x]
>>
>>               2
>> Out[2]= Sqrt[x ] == x
>>
>> Best Regards,
>>
>> Adam Strzebonski
>> Wolfram Research
>
> This type of error seems to be more wide-spread in Mathematica.
> The following Mathematica code gives two answers, one of which is
> incorrect, even after entering the unprotect and clear commands above:
>
> DSolve[{y'[x] == 2 y[x] (x Sqrt[y[x]] - 1), y[0] == 1}, y[x], x]
>
> {{y[x] -> 1/(-1 + 2 E^x - x)^2}, {y[x] -> 1/(1 + x)^2}}
>
> The error appears for me in all Mathematica versions I could test,
> that is 5.2, 6.0 and 7.0. The first solution can only be imagined to
> be correct if you assume Sqrt[x^2] ==x.
>
> Regards,
>
> Jan Jitse Venselaar
>

I think this is a different issue and may not involve any bug. This looks to me just the "usual" problem with parasite solutions that inevitably appear in functions like Solve when equations involving parameters are involved. I do not think DSolve attempts to verify the correctness of the solutions it returns (just as Solve does not in parametric cases), so there is no alternative to doing it by hand. However, when doing so its certainly a good idea to clear Holonomic`HolonomicFullSimplify, although in this particular case it does not matter.



In[1]:= sols =
  DSolve[{Derivative[1][y][x] == 2*y[x]*(x*Sqrt[y[x]] - 1),
         y[0] == 1}, y, x];

In[2]:= (FullSimplify[#1, x > 0] & )[
   {Derivative[1][y][x] == 2*y[x]*(x*Sqrt[y[x]] - 1), y[0] == 1} /.
  sols]

Out[2]= {{False, True}, {True, True}}

Andrzej Kozlowski=


  • Prev by Date: Re: ZTransform for a non-causal unstable signal. How to make Mathematica gives correct result?
  • Next by Date: Re: Why can't Mathematica tell when something is algebraically
  • Previous by thread: Re: Square root of a square
  • Next by thread: Not-convergence in NDSolve