RE: Piecewise functions definition and usage
- To: mathgroup at smc.vnet.net
- Subject: [mg24142] RE: [mg24098] Piecewise functions definition and usage
- From: "David Park" <djmp at earthlink.net>
- Date: Wed, 28 Jun 2000 02:11:57 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Viorel,
Whenever you plan to integrate or differentiate piecewise functions use the
UnitStep function. In fact, UnitStep is so useful, and the multiple
conditional definition method is so limited, that it is a bit of a shame
that the Mathematica Book often leads people down the conditional definition
path. UnitStep is a regular part of Version 4, but a standard package in
earlier versions. So, here is how to do your problem using UnitStep. (I
think that you made an error in the second conditional using 3 instead of
10. An alternative method of expressing the condition is that the formula
applies for the range -7 < x < 13.) Using UnitStep we just turn the formula
on at x == -7 and off at x == 13.
f[x_] := Sqrt[ 1 - ( (x - 3)/10)^2 ](UnitStep[x + 7] - UnitStep[x - 13])
The following gives a warning message because NIntegrate has trouble with
the kink in the curve, but gives an approximately correct answer.
NIntegrate[f[x], {x, -1, 17}]
11.7447
This works better:
NIntegrate[f[x], {x, -1, 13}]
11.7446
You can actually obtain an exact answer using Mathematica.
Integrate[f[x], {x, -1, 17}]
N[%]
(2*Sqrt[21])/5 + (5*Pi)/2 + 5*ArcSin[2/5]
11.7446
Piecewise functions? Always think UnitStep.
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
> -----Original Message-----
> From: Viorel Ontalus [mailto:vio2 at mail.lehigh.edu]
To: mathgroup at smc.vnet.net
>
> It seems I got into an area where Mathematica has some problems, and I
> hope somebody can give me a hint on how to go around these problems.
>
> 1. I am trying to define a piecewise function and do some computations
> with it. When I integrate mathematica does not behave. Here is an simple
> example you can run and see what I am talking about
>
> Clear[f,x}
> f[x_] := Sqrt[ 1- ( (x-3)/10)^2 ] /;
> Abs[x-3]<10
> f[x_] := 0 /;
> Abs[x-3]>3 ; (*this is a very simple piecewise function but one
> must be sure the Sqrt is from a positive # )
>
> NIntegrate[f[x],{x,-1,17}] (* Here Mathematica goes nuts !!!*)
>
> Of course it gives an answer but if your program is more complex, then
> you never get an answer !!
> ( I tried to make the upper limit a variable etc !!)
> Does anybody know how to avoid the error , or non convergence messages I
> get !!
>
>
>
> 2. For fun I tried the only reference from the book on piecewise
> functions:
> If[Abs[x-3]<10, f[x_]:=Sqrt[1- ( (x-3)/10)^2 ] , f[x_]:=0 ]
>
> This definition does not work !!
>
>
>
>
>
>
>
>
>
>