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/