Stepwise Function Mathematica

1. Aug 1, 2007

laminatedevildoll

How do I define a stepwise function in Mathematica? I am trying to model the behavior of a detector up in the atmosphere. For instance, the detector might experience temperature drops in the atmosphere over a 24 hour period. I would like to know if there's any way of using a step function in Mathematica to do that. Thanks.

2. Aug 2, 2007

George Jones

Staff Emeritus
Yes, you can use the Heavisde step function to do this. For exmple,

$$\left( Heaviside \Heaviside \left( x-1 \right) - Heaviside \left( x-3 \right) \right) x^2$$

is the the function $x^2$ for $1 < x < 3$, and zero elsewhere.

Heaviside is a Maple function, but Mathematica will have a similar function, with maybe a different name.

3. Aug 2, 2007

CompuChip

Which version of Mathematica are you using?

As George suggested, you can use the Heaviside function
Code (Text):

( HeavisideTheta[x - 1] - HeavisideTheta[x - 3] ) x^2

You can do
Code (Text):

f[x_] := 0;
f[x_] := x^2 /; (x > 1 && x < 3)

which is ugly but works.

You can use Which
Code (Text):

g[x_] := Which[x < 1, 0, x > 3, 0, True, x^2];

which is better, but has the unfortunate property that it Hold[]s its arguments, so this won't do if you want to apply functions and replacements to this.

The most elegant way, in my opinion, is using the Piecewise function
Code (Text):

h[x_] := Piecewise[{{x^2, 1 < x < 3}}, 0]

but this function was implemented in 5.1 so that won't help you if you have an older version.

Last edited: Aug 2, 2007
4. Aug 3, 2007

laminatedevildoll

I am using version 6.0.

I actually tried to do a piecewise function but it didn't quite work out. Instead, I just plot the points and connected it so that it looks like a stepwise function. I have attached the plot I want to this post. However, I need to learn how to do achieve this shape the right way with a stepwise function and not just points, because in the future I will need to replace this function instead of a sine function into two differential equations to solve it.

The points I am using are for the attached plot are
The x values are fixed. The y values can change but the same shape needs to be achieved. If this is impossible to do with a step function, is it possible to model this using a cubic spline function with the same general shape as the step function?
I would appreciate any help.

Attached Files:

• stepwise.JPG
File size:
4.4 KB
Views:
106
Last edited: Aug 3, 2007
5. Aug 4, 2007

CompuChip

Code (Text):

Plot[Piecewise[{{1, x < 3.5}, {2, x < 5.5}, {1.5, x < 9.5}, {2,
x < 15}}, 1], {x, 0, 25}, PlotRange -> {0, 2}]

worked fine here (Mathematica 6.0), without the vertical lines (they finally fixed that bug ).

But if you insist on the vertical lines, you can use
Code (Text):

Plot[Which[x < 3.5, 1, x < 5.5, 2, x < 9.5, 1.5, x < 15, 2, True,
1], {x, 0, 25}, PlotRange -> {0, 2}]

6. Aug 4, 2007

Moo Of Doom

For the vertical lines, you can also use the Exclusions option:

Code (Text):
Plot[Piecewise[{{1, x < 3.5}, {2, x < 5.5}, {1.5, x < 9.5}, {2,
x < 15}}, 1], {x, 0, 25}, PlotRange -> {0, 2}, Exclusions -> None]

7. Aug 7, 2007