MathGroup Archive 2000

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

Search the Archive

Re: Derivative of Root objects

  • To: mathgroup at smc.vnet.net
  • Subject: [mg23843] Re: [mg23831] Derivative of Root objects
  • From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
  • Date: Mon, 12 Jun 2000 01:17:34 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Although it is rather dangerous to send an answer to this sort of question
before Adam Strzebonski or Daniel Lichtblau send theirs I am tempted to try.
Concerning the first part of the question I think you have found a genuine
bug in Mathematica. To see it clearly one only has to do a Trace:

In[1]:=
Clear[f]
In[2]:=
f[x_] = Root[#^3 - x &, 1];
In[3]:=
Trace[f'[x]]
Out[3]=
{{HoldForm[Derivative[1][f]], {HoldForm[f[#1]],
    HoldForm[Root[-#1 + #1^3 & , 1]],
    {HoldForm[(-#1 + #1^3 & )[Integrate`$$a[1]]],
     HoldForm[-Integrate`$$a[1] + Integrate`$$a[1]^3]},
    HoldForm[-1]}, HoldForm[0 & ]}, HoldForm[(0 & )[x]],
  HoldForm[0]}


You can see at once that Mathematica gets confused and instead of the
function x ->  Root[#^3 - x &, 1] actually considers the function x ->
Root[#^3 - # &, 1], which is in fact just x->-1. On the other hand

In[5]:=
Trace[D[f[x], x]]
Out[5]=
{{HoldForm[f[x]], HoldForm[Root[-x + #1^3 & , 1]],
   {HoldForm[(-x + #1^3 & )[Integrate`$$a[1]]],
    HoldForm[-x + Integrate`$$a[1]^3]},
   HoldForm[Root[-x + #1^3 & , 1]]},
  HoldForm[D[Root[-x + #1^3 & , 1], x]],
  HoldForm[1/(3*Root[-x + #1^3 & , 1]^2)]}

shows Mathematica solving the problem correctly.

However, I am not convinced that there is anything wrong in your second
example. I have not investigated it vary carefully but root objects with
parameters represent algebraic functions which are of course not smooth
(they can have complicated branch cuts). Of course in the case of functions
with singularities you can have a zero derivative (where it is defined)
without the function itself being constant. I expect that this is the cause
of the behaviour you observed in this case. For example, while it is true
that

In[26]:=
 D[expr, {y, 3}] // FullSimplify
Out[26]=
0

and 

In[28]:=
Series[expr, {y, 1, 3}]
\!\(Root::"sbr" \(\(:\)\(\ \)\)
    "Because of branch cuts, the series may represent a different root of \
\!\(\(\(\(\(\(\(-3\)\)\\ y\\ #1\)\) + \(\(2\\ #1\^3\)\)\)\) &\) for some \
values of \!\(y\)."\)
Out[28]=
SeriesData[y, 1, {3/2, 3, 3/2}, 0, 4, 1]

we get:

In[27]:=
Series[expr, {y, 0, 3}]
\!\(Series::"nmer" :
    "\!\(Root[\(\(\(\(\(\(\(\(\(\(-3\)\)\\ y\\ #1\)\) + \(\(2\\
#1\^3\)\)\)\) \
&\)\), 3\)\)]\) is not a meromorphic function of \!\(y\) at \!\(0\)."\)

Out[27]=
Series[y*Root[-3*y*#1 + 2*#1^3 & , 3]^2, {y, 0, 3}]


-- 
Andrzej Kozlowski
Toyama International University, JAPAN

For Mathematica related links and resources try:
<http://www.sstreams.com/Mathematica/>


on 6/10/00 4:00 PM, Gianluca Gorni at gorni at dimi.uniud.it wrote:

> 
> Hello!
> 
> It seems that the derivative in the form f'[x] and in the form D[f[x] ,x]
> behave differently when f[x] contains Root objects.
> 
> My version is 4.0 for PowerMac.
> 
> Example:
> 
> f[x_] = Root[#^3 - x &, 1];
> 
> f'[x]  gives  0  (wrong, of course)
> 
> D[f[x], x]  gives  1/(3*Root[-x + #1^3 & , 1]^2)  (right)
> 
> %%%%%%%%%%%
> 
> I take the opportunity to submit a shortcoming of FullSimplify that
> I have just found, for developer use:
> 
> expr = y*Root[-3*y*#1 + 2*#1^3 & , 3]^2;
> 
> The third derivative of expr is zero:
> 
> D[expr, {y, 3}]//FullSimplify  gives  0.
> 
> Still, FullSimplify does not realize that the second derivative is
> constant:
> 
> D[expr, {y,2}]//FullSimplify  gives a complicated expression.
> 
> Developer`ZeroQ fails too, because
> 
> Developer`ZeroQ[D[expr, {y,2}]-(D[expr, {y,2}] /. y->1)]
> 
> gives False.
> 
> Best regards,
> 
> Gianluca Gorni




  • Prev by Date: Re: Pattern Matching
  • Next by Date: Re: Pattern Matching
  • Previous by thread: Derivative of Root objects
  • Next by thread: Need help with integration.