10
$\begingroup$

Context

In[855]:= D[Abs[x], x] /. x -> 1

Out[855]= Derivative[1][Abs][1]

In[856]:= D[x, x] /. x -> 1

Out[856]= 1

Question

Why is Derivative[1][Abs][x] not simplifed to 1 when x -> 1?

$\endgroup$
20
$\begingroup$

$\mathrm{abs}(z)$ defined on the set of complex numbers $\mathbb{C}$ is not a holomorphic function because it violates the Cauchy-Riemann conditions, and the derivative is not well defined. $\mathrm{abs}(x)$ defined on the set of real numbers $\mathbb{R}$ is differentiable everywhere except at $x=0$.

Mathematica treats Abs[x] as a function defined on complex numbers and so will not simplify Abs'[x] when it occurs in expressions. However, you can force it to simplify by explicitly stating that the argument is real as follows:

FullSimplify[Abs'[x], x ∈ Reals]
(* Sign[x] *)

Also see this question for a very closely related problem.

$\endgroup$
  • $\begingroup$ This should be corrected "...hence is differentiable nowhere." because it may be misleading. Obvoiusly it is directionally differentiable, but not holomorphic. Besides that it would deserve the enlightened tag. $\endgroup$ – Artes Jul 12 '12 at 12:02
  • $\begingroup$ Alternatively, you could phrase this as "the derivative depends on the direction the limit is taken from". So, if you take the derivative along a direction $\theta$, you get $\left(\partial_z|z|\right)_{\theta}=|z|^{-1}\left(\Re(z)\cos(\theta)+\Im(z)\sin(\theta)\right)$(or something like that) $\endgroup$ – acl Jul 12 '12 at 12:03
  • $\begingroup$ @Artes acl: Thanks, I've edited it :) $\endgroup$ – rm -rf Jul 12 '12 at 13:43
  • $\begingroup$ It is correct to say that abs, as a complex function, is differentiable nowhere -- meaning that at each complex number it fails to have a derivative. (And then, a fortiori, of course it is nowhere holomorhpic.) The language "the derivative depends on the direction the limit is taken from" is misleading; there is nothing about "direction" involved in what "differentiable" means. $\endgroup$ – murray Jul 12 '12 at 15:10
  • $\begingroup$ Thanks, I've removed that sentence. I think I'll stop with the mathematical language edits, because this could go on, but I'm not a mathematician and the basic idea and the solution is there. $\endgroup$ – rm -rf Jul 12 '12 at 15:31
5
$\begingroup$

FunctionExpand will resolve this (I think FullSimplify also calls FunctionExpand in the background):

FunctionExpand[Abs'[x], x \[Element] Reals]

(* ==> Sign[x] *)

Abs'[1] // FunctionExpand

(* ==> 1 *)
$\endgroup$
  • 1
    $\begingroup$ ComplexExpand works as well. $\endgroup$ – Michael E2 Apr 8 '15 at 12:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy