Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1999
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 1999

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

Search the Archive

Re: Problem with conditional definitions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg19535] Re: [mg19464] Problem with conditional definitions
  • From: "David Park" <djmp at earthlink.net>
  • Date: Tue, 31 Aug 1999 00:52:24 -0400
  • Sender: owner-wri-mathgroup at wolfram.com

Kevin McCann wrote:

>I have recently uncovered a problem with conditional definitions of
>functions.  The following is a simple example
>
>Remove[f]
>
>f[x_ /; x <= 0] := x^2
>f[x_ /; 0 < x < 1] := x^3
>f[x_ /; x >= 1] := x^4
>
>{f[1.], f'[1.],f''[1.]}
>
>{1.,3.54208,18.8746}
>
>Clearly incorrect. Or
>
>{f[1.1],f'[1.1],f''[1.1]}
>
>             {1.4641, 5.28974, 8.77428}
>Correct: {1.4641, 5.324,  14.52}
>
>So it is not that the function was evaluated at a boundary.
>
>Also, if I use exact arguments:
>
>{f[1],f'[1],f''[1]}
>
>{1,f'[1],f''[1]}
>
>None of the function definitions lead to the answers I got. Did I miss
>something?
>--
>
>Kevin J. McCann
>Johns Hopkins University APL
>


Kevin,

For piecewise functions, it is far better to use UnitStep. Then derivatives and
integrals all work properly.

g[x_] :=
  x^2*(1 - UnitStep[x]) +
   x^3*(UnitStep[x] -
     UnitStep[x - 1]) +
   x^4*UnitStep[x - 1]

{g[1], g'[1], g''[1]}
{1, 4, 12 + 2 DiracDelta[0]}

{g[1.1], g'[1.1], g''[1.1]}
{1.4641, 5.324, 14.52}

I am sending a notebook giving more detail in a separate email.

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/



  • Prev by Date: RE: Automatic Display in MatrixForm
  • Next by Date: Avoid out of memory in Simplify
  • Previous by thread: Re: Problem with conditional definitions
  • Next by thread: Freeing memory in Mathematica