Re: Piecewise functions definition and usage
- To: mathgroup at smc.vnet.net
- Subject: [mg24109] Re: Piecewise functions definition and usage
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Wed, 28 Jun 2000 02:11:35 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <8j9ddk$50v@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, > 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 !! Surprise, surprise, and it will never work because it is nonsense. If[] evaluate Abs[x-3]<10 and find not True or False (x is an symbol) so it can't decide what part of Then/Else must be evaluated. So the expression is unevaluated no f[x] is defined and the full If[] expression is lost in the Out[] variables. f[x_?NumericQ]:=If[Abs[N[x-3]]<10, Sqrt[1- ( (x-3)/10)^2 ] , 0 ] do what you want because the pattern gets evaluated only when x is a number and the test evaluates to True or False Your first problem is more complicated. The Sqrt[] function has no derivative at x==0 and Mathematica can't estimate the numerical error of the integration when the function under the integral sign is evaluated at x==-7 and x==13 because it find no error estimation. That's why you get a message about the convergence. So you may carefull look at your function for x-values where no derivative exist, eventual split the integration range at this points and use a open integration formula like a midpoint rule or an open Newton Cotes formula. Hope that helps Regards Jens Viorel Ontalus wrote: > > 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 !!