How Can I Define a Stepwise Function in Mathematica for Atmospheric Modeling?

  • Context: Mathematica 
  • Thread starter Thread starter laminatedevildoll
  • Start date Start date
  • Tags Tags
    Function Mathematica
Click For Summary

Discussion Overview

The discussion focuses on defining a stepwise function in Mathematica for atmospheric modeling, particularly in relation to simulating temperature changes experienced by a detector over a 24-hour period. Participants explore various methods to implement this function, including the use of piecewise definitions and the Heaviside step function.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Homework-related

Main Points Raised

  • One participant inquires about defining a stepwise function in Mathematica to model atmospheric temperature drops.
  • Another participant suggests using the Heaviside step function, providing an example of its application.
  • Several participants discuss different implementations, including using the HeavisideTheta function and defining functions with conditions using Which and Piecewise.
  • A participant mentions difficulties with the Piecewise function in an older version of Mathematica and shares a plot created with points instead of a proper step function.
  • Multiple participants provide examples of how to plot stepwise functions, discussing the use of Exclusions to manage vertical lines in the plots.

Areas of Agreement / Disagreement

Participants generally agree on the utility of the Heaviside function and Piecewise function for defining stepwise functions, but there is no consensus on the best approach, particularly regarding compatibility with different versions of Mathematica and the desired visual output.

Contextual Notes

Some participants note limitations related to the version of Mathematica being used, which affects the implementation of certain functions. There are also unresolved questions about achieving specific visual characteristics in the plots.

laminatedevildoll
Messages
211
Reaction score
0
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.
 
Physics news on Phys.org
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.
 
Which version of Mathematica are you using?

As George suggested, you can use the Heaviside function
Code:
( HeavisideTheta[x - 1] - HeavisideTheta[x - 3] ) x^2

You can do
Code:
f[x_] := 0;
f[x_] := x^2 /; (x > 1 && x < 3)
which is ugly but works.

You can use Which
Code:
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:
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:
CompuChip said:
Which version of Mathematica are you using?
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
{{0, 0}, {0, 1}, {3.5`, 1}, {3.5`, 2}, {5.5`, 2}, {5.5`, 1.5`}, {9.5`,
1.5`}, {9.5`, 2}, {15, 2}, {15, 1}, {24, 1}}
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.
 

Attachments

  • stepwise.JPG
    stepwise.JPG
    4.4 KB · Views: 662
Last edited:
Code:
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 :smile:).

But if you insist on the vertical lines, you can use
Code:
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}]
 
For the vertical lines, you can also use the Exclusions option:

Code:
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]
 
CompuChip said:
Code:
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 :smile:).

But if you insist on the vertical lines, you can use
Code:
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}]

Thanks for your help. :smile:
 
Moo Of Doom said:
For the vertical lines, you can also use the Exclusions option:

Code:
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]

Thanks. :smile: I am still trying to get adjusted to Mathematica.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
6K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 0 ·
Replies
0
Views
995
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 6 ·
Replies
6
Views
4K
  • · Replies 2 ·
Replies
2
Views
3K
Replies
3
Views
3K