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 !! > > > > > > > > > >