Re: Piecewise functions
- To: mathgroup at smc.vnet.net
- Subject: [mg51581] Re: [mg51553] Piecewise functions
- From: "David Park" <djmp at earthlink.net>
- Date: Sat, 23 Oct 2004 00:22:36 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Luca, Not totally clear. But here are two ways to define the function. Clear[y] y[x_] /; x > 3 := x y[x_] /; -1 < x <= 3 := -x y[x_] := 1 Plot[y[x], {x, -2, 4}]; But this method does not allow you to correctly calculate y'[x] 0 So, UnitStep is usually the better way. Clear[y] y[x_] := 1(1 - UnitStep[x + 1]) - x(UnitStep[x + 1] - UnitStep[x - 3]) + x UnitStep[x - 3] This can also be written as Clear[y] y[x_] := 1(UnitStep[x + Infinity] - UnitStep[x + 1]) - x(UnitStep[x + 1] - UnitStep[x - 3]) + x UnitStep[x - 3] which has the form of a sum of (value expression)(turn on point - turn off point) Plot[y[x], {x, -2, 4}]; Now, you could integrate the function... yintegral[x_] = Integrate[y[t], {t, -2, x}] 2 + x - 9*UnitStep[-3 + x] + x^2*UnitStep[-3 + x] - (1/2)*UnitStep[1 + x] - x*UnitStep[1 + x] - (1/2)*x^2*UnitStep[1 + x] Plot[yintegral[x], {x, -2, 4}]; or differentiate it. y'[x] x DiracDelta[-3 + x] - DiracDelta[1 + x] - x (-DiracDelta[-3 + x] + DiracDelta[1 + x]) + 2 UnitStep[-3 + x] - UnitStep[1 + x] But the plot usually doesn't catch the deltas. Plot[y'[x], {x, -2, 4}, PlotRange -> All]; With DrawGraphics, from my web site, it's easy to make somewhat better plots. Needs["DrawGraphics`DrawingMaster`"] DrawUnitStep eliminates the jump lines at the discontinuities. Draw2D[ {DrawUnitStep[y[x], {x, -2, 4}]}, Frame -> True, PlotLabel -> HoldForm[y[x]], Background -> Linen, ImageSize -> 400]; We can even get in the DiracDeltas by converting them to Arrows with the following routine. Notice that the second delta is actually zero. Cases[Collect[y'[x], DiracDelta[_]], a_ DiracDelta[x + b_]] diracs = % /. a_ DiracDelta[x + b_] :> Arrow[{-b, 0}, {-b, (a /. x -> -b)}, HeadCenter -> 1/2] Draw2D[ {DrawUnitStep[y'[x], {x, -2, 4}], Red, diracs}, Frame -> True, PlotRange -> All, Background -> Linen, PlotLabel -> HoldForm[y'[x]], ImageSize -> 400]; David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: Luca [mailto:luca at nospam.it] To: mathgroup at smc.vnet.net Hi all. I'm studying for the exam of signals and systems and I was trying to plot some kind of functions I transformed for exercise. So, I need to plot piecewise functions like: y(x) = x if x > 3 y(x) = -x if -1 < x < 3 y(x) = 1 else (should have been a system). I found out in the guide the chapter about this, and I learned that it is possible with the function UnitStep, which I know. Anyway, I found it difficult to determine the equation of the function using this method. Is it possible to do it simply writing everything like I did before, more or less? i.e. without having to determine the equation with the UnitStep function. Hope I've been clear enought. Many thanks. Luca