(************** Content-type: application/mathematica ************** Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 32532, 948]*) (*NotebookOutlinePosition[ 33247, 972]*) (* CellTagsIndexPosition[ 33203, 968]*) (*WindowFrame->Normal*) Notebook[{ Cell["\<\ The Mathematics of Modeling Part 1: Time-Stepping Methods\ \>", "Subtitle", TextAlignment->Center], Cell["\<\ \tIn many ways, science is the art of predicting the future. By \ observing how something changes over the course of time, we learn about the \ conditions that affect those changes and learn to expect, and thus predict, \ similar changes for similar things given similar conditions. The more \ information we have, the more likely it is that we can make a prediction that \ is correct.\ \>", "Text", FontSize->14], Cell[TextData[{ StyleBox["\tSuppose I ask you to predict the weather for tomorrow. If \ you've been working hard in your windowless office, and only vaguely know \ that it is early March, you might predict 'sunny, with some wind'. If you \ had recently been outside and noticed that today's conditions were actually \ cloudy and windy, you would be inclined to predict much the same for \ tomorrow. If you were able to access an internet weather station that showed \ a major stormfront moving in your direction, you might intead predict 'very \ windy, with rain and thunderstorms'. The conditions you know at the start of \ your prediction are called ", FontSize->14], StyleBox["initial conditions", FontSize->14, FontSlant->"Italic"], StyleBox[".", FontSize->14] }], "Text"], Cell[TextData[StyleBox["\tThe accuracy of a prediction will also depend on \ the length of time that you are trying to predict over. Continuing with our \ weather example - you would probably be able to make a very good prediction \ of the weather five minutes from now, even with only limited personal \ observations. Predicting twenty-four hours from now is much less likely to be \ accurate, and predicting a month from now becomes little more than a guess, \ even if you have the complete array of technology to determine your initial \ conditions.", FontSize->14]], "Text"], Cell[TextData[{ StyleBox["Time Stepping\n", "Section"], StyleBox["\t", FontSize->14], StyleBox["Time-stepping methods", FontSize->14, FontSlant->"Italic"], StyleBox[" try to take advantage of the idea that changes in a system can \ be predicted pretty well, if the prediction time is small. Presume for \ example that we are tracking a hurricane in the Atlantic, and that we expect \ landfall in twenty-four hours, but would like to predict where the hurricane \ will be at that point. We start by dividing our prediction time into many \ smaller pieces - small enough so that we think we can make a good prediction, \ but not too small! - the more pieces we have the more work we have to do, and \ it doesn't help if it takes more than 5 minutes to figure out what happens \ (happened!) in those five minutes! A good sized piece for this example might \ be an hour.", FontSize->14] }], "Text"], Cell[TextData[{ StyleBox["\tThis small piece of time has a special name - it is known as a \ time step, and it represents a ", FontSize->14], StyleBox["change in time", FontSize->14, FontSlant->"Italic"], StyleBox[". We represent change mathematically using the greek letter \ delta, capitalized, so if we use t to represent time, our time step would be \ represented as \[CapitalDelta]t", FontSize->14], ". ", StyleBox["We also label our start time with a zero or 'naught' so that \ 't-naught' (t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_0\)]], StyleBox[") is the start time, and after the first time step we are at t", FontSize->14], Cell[BoxData[ FormBox[ RowBox[{\(\_1\), ",", StyleBox["then", FontSize->14], StyleBox[" ", FontSize->14]}], TraditionalForm]]], StyleBox["t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_2\)]], ", ", StyleBox["t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\(\(\_3\)\(,\)\)\)]], StyleBox["t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\(\(\_4\)\(,\)\)\)]], StyleBox["etc... To talk about 'some time step' in general, we label the \ 'time now' as t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_n\)]], StyleBox["(\"t sub n\"), which will represent the beginning of a time step, \ and the time at 'now plus one time step', or the end of the time step, \ becomes t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\(\ \_\(n + 1\)\)\)]], ". ", StyleBox["(\"t sub n plus one\"). ", FontSize->14] }], "Text"], Cell[TextData[{ StyleBox["\tIn general, time will be what we call and ", FontSize->14], StyleBox["independent variable", FontSize->14, FontSlant->"Italic"], StyleBox[", meaning that we don't expect anything to affect how time goes \ by. Other information we are interested in, like the position of the \ hurricane, might require the current time, as well as other information, to \ determine a value. Variables whose values depend on other variables are \ called ", FontSize->14], StyleBox["dependent variables", FontSize->14, FontSlant->"Italic"], StyleBox[". If our variables are dependent on time, we will often label \ them in the same way that we label our times. If we keep track of position \ using x and y as variables, the ", FontSize->14], StyleBox["initial position", FontSize->14, FontSlant->"Italic"], StyleBox[" is the position that corresponds with the start time, and so we \ label those variables with a naught as well, giving starting position {x", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_0\)]], ",", StyleBox[" y", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_0\)]], StyleBox["}. The position at the beginning of any time step would then be \ {x", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_n\)]], ",", StyleBox[" y", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_n\)]], StyleBox["}, and at the end would be {x", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_\(n + 1\)\)]], ",", StyleBox[" y", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_\(n + 1\)\)]], StyleBox["}. ", FontSize->14] }], "Text"], Cell[TextData[{ StyleBox["\tThe key piece in any time stepping method is determining ", FontSize->14], StyleBox["how", FontSize->14, FontWeight->"Bold"], StyleBox[" things change in time. Velocity is the measurement of how \ position changes in time, in calculus, \n\t\t\t\t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`v\ = \ dx\/dt\)]], ",", StyleBox["\nWhere v is the velocity, x is a position variable, t is time, \ and the d is another represention of 'the change in' (like the delta!), \ although with the calculus assumption that this change is infinitesimally \ small and that all we care about is the relationship between the two changes \ (in x and in t). We are not dealing with infinitesimally small pieces, \ instead we are insterested in an 'average velocity', with bigger (\ \[CapitalDelta]) changes:\n\t\t\t\t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`v\ = \ \[CapitalDelta]x\/\[CapitalDelta]t\)]], ".", StyleBox["\nSo velocity becomes the 'change in position' over the 'change \ in time' (which is our time step). We can rewrite the change in position as \ 'the position at the end of a time step' (", FontSize->14], StyleBox["x", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_\(n + 1\)\)]], StyleBox[") minus 'the position at the beginning of the time step (", FontSize->14], StyleBox["x", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_n\)]], StyleBox["). Now the velocity description looks like:\n\t\t\t\t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`v\ = \ \(x\_n - x\_\(n + \ 1\)\)\/\[CapitalDelta]t\)]], ".", StyleBox["\nWe assume that we know the position at the beginning and that \ we want to calculate the position at the end, so we manipulate the equation \ above to get\n\t\t\t\t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`x\_\(n + 1\) = x\_n + \(\(\[CapitalDelta]\)\(\ \)\(t\)\(\ \)\)\)]], " ", Cell[BoxData[ \(TraditionalForm\`\(\(v\)\(\ \)\)\)]], ".", StyleBox["\nWe also know the time step (we choose it!), so the only \ question is what the velocity is. Officially it is an 'average' velocity \ over the time, and the velocity could change quite a bit during that time! \ However, we will use a method called ", FontSize->14], StyleBox["Euler's method ", FontSize->14, FontWeight->"Bold"], StyleBox["and assume that we know (or will have calculated) the velocity at \ the beginning of the time step ", FontSize->14], StyleBox["(", FontSize->14], StyleBox["v", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\_n\)]], StyleBox["), and that this velocity will be a good estimate of the average \ velocity for a short period of time. So now we have a time-stepping equation:\ \n\t\t\t\t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`x\_\(n + 1\) = x\_n + \(\(\[CapitalDelta]\)\(\ \)\(t\)\(\ \)\)\)]], " ", Cell[BoxData[ \(TraditionalForm\`\(\(v\_n\)\(\ \)\)\)]], ".", StyleBox["\n\tIf we have a second position variable (like y), we would need \ a second velocity variable (let's use w) and a second equation:\n\t\t\t\t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`y\_\(n + 1\) = y\_n + \(\(\[CapitalDelta]\)\(\ \)\(t\)\(\ \)\)\)]], " ", Cell[BoxData[ \(TraditionalForm\`\(\(w\_n\)\(\ \)\)\)]], ".", StyleBox["\n\tHow do we find the velocities? The change in velocity is \ knows as acceleratio", FontSize->14], StyleBox["us, \n\t\t\t\t", FontSize->14], Cell[BoxData[ \(TraditionalForm\`a\ = \ dv\/dt\)]], ",", StyleBox["\nso, following the same process, we can get time stepping \ equations for velocities, too!\n\t\t\t ", FontSize->14], Cell[BoxData[ \(TraditionalForm\`v\_\(n + 1\) = v\_n + \(\(\[CapitalDelta]\)\(\ \)\(t\)\(\ \)\)\)]], " ", Cell[BoxData[ \(TraditionalForm\`\(\(a\_n\)\(\ \)\)\)]], ",\n\t\t\t", Cell[BoxData[ \(TraditionalForm\`w\_\(n + 1\) = w\_n + \(\(\[CapitalDelta]\)\(\ \)\(t\)\(\ \)\)\)]], " ", Cell[BoxData[ \(TraditionalForm\`b\)]], Cell[BoxData[ \(TraditionalForm\`\(\(\_n\)\(\ \)\)\)]], ".", StyleBox["\n\tEventually we need to stop making new variables, and in \ position problems, that usually occurs with the acceleration. If we were \ dealing with gravity, we might say that the accelerations are constant - for \ every time step there might be no acceleration in the x direction and \ acceleration equal to gravity in the negative (downwards) y direction.\n\t\t\t\ \t", FontSize->14], Cell[BoxData[{ \(TraditionalForm\`a\_n\ = \ 0\), "\[IndentingNewLine]", \(TraditionalForm\`b\_n\ = \ \(-9.81\)\)}]], "\n\t", StyleBox["One thing to notice is that for every variable we have, we will \ need an ", FontSize->14], StyleBox["initial condition", FontSize->14, FontSlant->"Italic"], StyleBox["! We already know that we need starting positions, ", FontSize->14], Cell[BoxData[ \(TraditionalForm\`x\_0\)]], StyleBox["and ", FontSize->14], Cell[BoxData[ \(TraditionalForm\`y\_0\)]], StyleBox[", but we will also need starting velocities ", FontSize->14], Cell[BoxData[ \(TraditionalForm\`v\_0\)]], StyleBox["and ", FontSize->14], Cell[BoxData[ \(TraditionalForm\`\(\(w\_0\)\(,\)\(\ \)\)\)]], StyleBox["as well as starting accelerations (although we may be able to \ calculate those if we have formulas). \n\tAfter we have calculated the values \ at the end of each time step, we use those values for the beginning of the ", FontSize->14], StyleBox["next", FontSize->14, FontSlant->"Italic"], StyleBox[" time step, so what was ", FontSize->14], Cell[BoxData[ \(TraditionalForm\`x\_\(n + 1\)\)]], StyleBox["is stored as ", FontSize->14], Cell[BoxData[ \(TraditionalForm\`x\_n\)]], ",", Cell[BoxData[ \(TraditionalForm\`v\_\(n + 1\)\)]], Cell[BoxData[ FormBox[ RowBox[{ StyleBox["becomes", FontSize->14], StyleBox[" ", FontSize->14], SubscriptBox[ StyleBox["v", FontSize->14], "n"]}], TraditionalForm]]], StyleBox["and so forth.Let's look at an example...", FontSize->14] }], "Text"], Cell[TextData[{ StyleBox["Projectile Motion\n", "Section"], StyleBox["\t", FontSize->14], StyleBox["We can do a simple time-stepping simulation of the motion of a \ shotput. First we define our initial positions, in meters, presuming that the \ shotputter is average height.", FontSize->14] }], "Text"], Cell[BoxData[{ \(\(x\_0 = \ 0;\)\), "\[IndentingNewLine]", \(\(y\_0 = \ 2;\)\)}], "Input"], Cell["\<\ \tThen we estimate initial values for velocity (in meters per \ second) - we will make them equal assuming a 45 degree release.\ \>", "Text", FontSize->14], Cell[BoxData[{ \(\(v\_0 = \ 4;\)\), "\[IndentingNewLine]", \(\(w\_0 = \ 4;\)\)}], "Input"], Cell[TextData[StyleBox["\tOur time step will be one tenth of a second, and \ our accelerations will be constant.", FontSize->14]], "Text"], Cell[BoxData[{ \(\(\[CapitalDelta]t\ = \ 0.1;\)\), "\[IndentingNewLine]", \(a\ = \ 0; \ b\ = \ \(-9.81\);\)}], "Input"], Cell[TextData[StyleBox["\tNow we make Euler method function:", FontSize->14]], "Text"], Cell[BoxData[ \(\(EulerCalc[val_, rate_, timestep_]\ := \ val\ + \ timestep*rate;\)\)], "Input"], Cell[TextData[StyleBox["\tWe then set our n values to the starting values:", FontSize->14]], "Text"], Cell[BoxData[ \(x\_n = \ x\_0; y\_n = \ y\_0; v\_n = \ v\_0; w\_n = \ w\_0; t\_n = \ 0;\)], "Input"], Cell[TextData[StyleBox["\tTo calculate the first step, we use Euler's method \ for each variable, and add a time step to the time.", FontSize->14]], "Text"], Cell[BoxData[{ \(\(x\_\(n + 1\)\ = \ EulerCalc[x\_n, v\_n, \[CapitalDelta]t];\)\), "\[IndentingNewLine]", \(\(y\_\(n + 1\)\ = \ EulerCalc[y\_n, w\_n, \[CapitalDelta]t];\)\), "\[IndentingNewLine]", \(\(v\_\(n + 1\)\ = \ EulerCalc[v\_n, a, \[CapitalDelta]t];\)\), "\[IndentingNewLine]", \(\(w\_\(n + 1\)\ = \ EulerCalc[w\_n, b, \[CapitalDelta]t];\)\), "\[IndentingNewLine]", \(\(t\_\(n + 1\) = \ t\_n + \ \[CapitalDelta]t;\)\)}], "Input"], Cell[TextData[StyleBox["\tThen we output the position results", FontSize->14]], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \({x\_\(n + 1\), y\_\(n + 1\)}\)], "Input"], Cell[BoxData[ \({0.4`, 2.4`}\)], "Output"] }, Open ]], Cell[TextData[StyleBox["\tWe then take all the values at n+1 (the 'end' of \ the first time step) and store them in the n variables (the 'beginning' of \ the next time step).", FontSize->14]], "Text"], Cell[BoxData[ \(x\_n = \ x\_\(n + 1\); y\_n = \ y\_\(n + 1\); v\_n = \ v\_\(n + 1\); w\_n = \ w\_\(n + 1\); t\_n = \ t\_\(n + 1\);\)], "Input"], Cell[TextData[StyleBox["\tAnd repeat the process", FontSize->14]], "Text"], Cell[BoxData[{ \(\(x\_\(n + 1\)\ = \ EulerCalc[x\_n, v\_n, \[CapitalDelta]t];\)\), "\[IndentingNewLine]", \(\(y\_\(n + 1\)\ = \ EulerCalc[y\_n, w\_n, \[CapitalDelta]t];\)\), "\[IndentingNewLine]", \(\(v\_\(n + 1\)\ = \ EulerCalc[v\_n, a, \[CapitalDelta]t];\)\), "\[IndentingNewLine]", \(\(w\_\(n + 1\)\ = \ EulerCalc[w\_n, b, \[CapitalDelta]t];\)\), "\[IndentingNewLine]", \(\(t\_\(n + 1\) = \ t\_n + \ \[CapitalDelta]t;\)\)}], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \({x\_\(n + 1\), y\_\(n + 1\)}\)], "Input"], Cell[BoxData[ \({0.8`, 2.7019`}\)], "Output"] }, Open ]], Cell[TextData[{ StyleBox["\tThis is obviously a good use for repeating and storing the \ result using the ", FontSize->14], StyleBox["Table", "Input", FontSize->14], StyleBox[" function.", FontSize->14] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(x\_n = \ x\_0; y\_n = \ y\_0; v\_n = \ v\_0; w\_n = \ w\_0; t\_n = \ 0;\), "\[IndentingNewLine]", \(Trajectory\ = \ Table[\[IndentingNewLine]\((x\_\(n + 1\)\ = \ EulerCalc[x\_n, v\_n, \[CapitalDelta]t]; \[IndentingNewLine]y\_\(n + 1\)\ = \ EulerCalc[y\_n, w\_n, \[CapitalDelta]t]; \[IndentingNewLine]v\_\(n + 1\)\ = \ EulerCalc[v\_n, a, \[CapitalDelta]t]; \[IndentingNewLine]w\_\(n + 1\)\ = \ EulerCalc[w\_n, b, \[CapitalDelta]t]; \[IndentingNewLine]t\_\(n + 1\) = \ t\_n + \ \[CapitalDelta]t; \[IndentingNewLine]x\_n = \ x\_\(n + 1\); y\_n = \ y\_\(n + 1\); v\_n = \ v\_\(n + 1\); w\_n = \ w\_\(n + 1\); t\_n = \ t\_\(n + 1\); \[IndentingNewLine]{x\_\(n + 1\), y\_\(n + 1\)})\), {i, 12}]\)}], "Input"], Cell[BoxData[ \({{0.4`, 2.4`}, {0.8`, 2.7019`}, {1.2000000000000002`, 2.9057000000000004`}, {1.6`, 3.0114000000000005`}, {2.`, 3.0190000000000006`}, {2.4`, 2.9285000000000005`}, {2.8`, 2.7399000000000004`}, {3.1999999999999997`, 2.4532000000000003`}, {3.5999999999999996`, 2.0684000000000005`}, {3.9999999999999996`, 1.5855000000000006`}, {4.3999999999999995`, 1.0045000000000006`}, {4.8`, 0.3254000000000006`}}\)], "Output"] }, Open ]], Cell[TextData[StyleBox["\tWhich can then be plotted...", FontSize->14]], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ListPlot[Trajectory, Prolog \[Rule] AbsolutePointSize[3]]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.198413 0.0147151 0.194966 [ [.22222 .00222 -3 -9 ] [.22222 .00222 3 0 ] [.42063 .00222 -3 -9 ] [.42063 .00222 3 0 ] [.61905 .00222 -3 -9 ] [.61905 .00222 3 0 ] [.81746 .00222 -3 -9 ] [.81746 .00222 3 0 ] [.01131 .1122 -18 -4.5 ] [.01131 .1122 0 4.5 ] [.01131 .20968 -6 -4.5 ] [.01131 .20968 0 4.5 ] [.01131 .30716 -18 -4.5 ] [.01131 .30716 0 4.5 ] [.01131 .40465 -6 -4.5 ] [.01131 .40465 0 4.5 ] [.01131 .50213 -18 -4.5 ] [.01131 .50213 0 4.5 ] [.01131 .59961 -6 -4.5 ] [.01131 .59961 0 4.5 ] [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g .25 Mabswid [ ] 0 setdash .22222 .01472 m .22222 .02097 L s [(1)] .22222 .00222 0 1 Mshowa .42063 .01472 m .42063 .02097 L s [(2)] .42063 .00222 0 1 Mshowa .61905 .01472 m .61905 .02097 L s [(3)] .61905 .00222 0 1 Mshowa .81746 .01472 m .81746 .02097 L s [(4)] .81746 .00222 0 1 Mshowa .125 Mabswid .06349 .01472 m .06349 .01847 L s .10317 .01472 m .10317 .01847 L s .14286 .01472 m .14286 .01847 L s .18254 .01472 m .18254 .01847 L s .2619 .01472 m .2619 .01847 L s .30159 .01472 m .30159 .01847 L s .34127 .01472 m .34127 .01847 L s .38095 .01472 m .38095 .01847 L s .46032 .01472 m .46032 .01847 L s .5 .01472 m .5 .01847 L s .53968 .01472 m .53968 .01847 L s .57937 .01472 m .57937 .01847 L s .65873 .01472 m .65873 .01847 L s .69841 .01472 m .69841 .01847 L s .7381 .01472 m .7381 .01847 L s .77778 .01472 m .77778 .01847 L s .85714 .01472 m .85714 .01847 L s .89683 .01472 m .89683 .01847 L s .93651 .01472 m .93651 .01847 L s .97619 .01472 m .97619 .01847 L s .25 Mabswid 0 .01472 m 1 .01472 L s .02381 .1122 m .03006 .1122 L s [(0.5)] .01131 .1122 1 0 Mshowa .02381 .20968 m .03006 .20968 L s [(1)] .01131 .20968 1 0 Mshowa .02381 .30716 m .03006 .30716 L s [(1.5)] .01131 .30716 1 0 Mshowa .02381 .40465 m .03006 .40465 L s [(2)] .01131 .40465 1 0 Mshowa .02381 .50213 m .03006 .50213 L s [(2.5)] .01131 .50213 1 0 Mshowa .02381 .59961 m .03006 .59961 L s [(3)] .01131 .59961 1 0 Mshowa .125 Mabswid .02381 .03421 m .02756 .03421 L s .02381 .05371 m .02756 .05371 L s .02381 .07321 m .02756 .07321 L s .02381 .0927 m .02756 .0927 L s .02381 .13169 m .02756 .13169 L s .02381 .15119 m .02756 .15119 L s .02381 .17069 m .02756 .17069 L s .02381 .19018 m .02756 .19018 L s .02381 .22918 m .02756 .22918 L s .02381 .24867 m .02756 .24867 L s .02381 .26817 m .02756 .26817 L s .02381 .28767 m .02756 .28767 L s .02381 .32666 m .02756 .32666 L s .02381 .34616 m .02756 .34616 L s .02381 .36565 m .02756 .36565 L s .02381 .38515 m .02756 .38515 L s .02381 .42414 m .02756 .42414 L s .02381 .44364 m .02756 .44364 L s .02381 .46314 m .02756 .46314 L s .02381 .48263 m .02756 .48263 L s .02381 .52163 m .02756 .52163 L s .02381 .54112 m .02756 .54112 L s .02381 .56062 m .02756 .56062 L s .02381 .58012 m .02756 .58012 L s .25 Mabswid .02381 0 m .02381 .61803 L s 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath 3 Mabswid .10317 .48263 Mdot .18254 .5415 Mdot .2619 .58123 Mdot .34127 .60184 Mdot .42063 .60332 Mdot .5 .58567 Mdot .57937 .5489 Mdot .65873 .49301 Mdot .7381 .41798 Mdot .81746 .32383 Mdot .89683 .21056 Mdot .97619 .07816 Mdot % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 177.938}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHg[oool00`000?ooooooo`0Koooo000?oooo00<0003ooooo ool00oooo`<0003Yoooo0`0001coool000ooool00`000?ooooooo`03oooo00<0003oooooool0j_oo o`030000oooooooo01_oool000ooool00`000?ooooooo`03oooo00<0003oooooool0ooooo`Woool0 00koool200001Oooo`030000oooooooo0?ooool9oooo000Eoooo00<0003oooooool0ooooo`Woool0 01Goool00`000?ooooooo`3ooooo2Oooo`005Oooo`80003ooooo2_ooo`005Oooo`030000oooooooo 0?ooool9oooo000Eoooo00<0003oooooool0ooooo`Woool001Goool00`000?ooooooo`3ooooo2Ooo o`005Oooo`030000oooooooo0?ooool9oooo000Eoooo0P000?ooool:oooo000Eoooo00<0003ooooo ool0ooooo`Woool001Goool00`000?ooooooo`3ooooo2Oooo`005Oooo`030000oooooooo0?ooool9 oooo000Eoooo00<0003oooooool0ooooo`Woool001Goool20000ooooo`[oool001Goool00`000?oo ooooo`3ooooo2Oooo`005Oooo`030000oooooooo0?ooool9oooo000Eoooo00<0003oooooool0oooo o`Woool001Goool00`000?ooooooo`3ooooo2Oooo`005Oooo`80003ooooo2_ooo`005Oooo`030000 oooooooo0?ooool9oooo000Eoooo00<0003oooooool0ooooo`Woool001Goool00`000?ooooooo`3o oooo2Oooo`0000?oool0000000000`0000;oool200001?ooo`800005oooo00<0003oooooool0oooo o`Woool000?oool00`000?ooooooo`07oooo00@0003oooooool00004oooo00<0003oooooool0oooo o`Woool000?oool00`000?ooooooo`0:oooo00<0003oooooool00_ooo`<0003ooooo2Oooo`000ooo o`030000oooooooo00Soool200001Oooo`030000oooooooo0?ooool9oooo0003oooo00<0003ooooo ool02?ooo`030000oooooooo00Coool00`000?ooooooo`3ooooo2Oooo`000_ooo`80000:oooo0`00 00Coool00`000?ooooooo`3Eoooo00<0003oooooool0"], ImageRangeCache->{{{0, 287}, {176.938, 0}} -> {-0.39646, -0.237444, \ 0.0185243, 0.0188518}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[TextData[StyleBox["\tThe Stella software is particularly good for time \ stepping routines, as it determines the formulas from the stocks and flows, \ using the converters to make the relationships. You can see these \ relationships if you look at the equation (bottom) level of a Stella model, \ where you will see equations that include a time step, labelled dt in Stella. \ The key behind accurate modeling is ensuring that you have these \ relationships correct - if you do, you too, can 'predict the future'!", FontSize->14]], "Text"], Cell[TextData[StyleBox["This notebook created by Dr. Garrett R. Love for the \ Shodor Education Foundation. Copyright 2001", "SmallText"]], "Text", FontSize->14] }, FrontEndVersion->"4.1 for Microsoft Windows", ScreenRectangle->{{0, 800}, {0, 527}}, ScreenStyleEnvironment->"Working", WindowSize->{520, 500}, WindowMargins->{{55, Automatic}, {Automatic, -5}}, StyleDefinitions -> "Classroom.nb" ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[1705, 50, 110, 4, 66, "Subtitle"], Cell[1818, 56, 426, 8, 110, "Text"], Cell[2247, 66, 801, 16, 170, "Text"], Cell[3051, 84, 580, 8, 150, "Text"], Cell[3634, 94, 918, 18, 229, "Text"], Cell[4555, 114, 1660, 53, 204, "Text"], Cell[6218, 169, 1694, 53, 218, "Text"], Cell[7915, 224, 6396, 182, 1310, "Text"], Cell[14314, 408, 316, 8, 109, "Text"], Cell[14633, 418, 99, 2, 81, "Input"], Cell[14735, 422, 167, 4, 50, "Text"], Cell[14905, 428, 99, 2, 81, "Input"], Cell[15007, 432, 140, 2, 50, "Text"], Cell[15150, 436, 131, 2, 81, "Input"], Cell[15284, 440, 88, 1, 30, "Text"], Cell[15375, 443, 111, 2, 81, "Input"], Cell[15489, 447, 102, 1, 30, "Text"], Cell[15594, 450, 109, 2, 81, "Input"], Cell[15706, 454, 158, 2, 50, "Text"], Cell[15867, 458, 500, 9, 159, "Input"], Cell[16370, 469, 89, 1, 30, "Text"], Cell[CellGroupData[{ Cell[16484, 474, 61, 1, 55, "Input"], Cell[16548, 477, 46, 1, 54, "Output"] }, Open ]], Cell[16609, 481, 202, 3, 50, "Text"], Cell[16814, 486, 152, 2, 81, "Input"], Cell[16969, 490, 76, 1, 30, "Text"], Cell[17048, 493, 500, 9, 159, "Input"], Cell[CellGroupData[{ Cell[17573, 506, 61, 1, 55, "Input"], Cell[17637, 509, 49, 1, 54, "Output"] }, Open ]], Cell[17701, 513, 232, 8, 51, "Text"], Cell[CellGroupData[{ Cell[17958, 525, 918, 17, 315, "Input"], Cell[18879, 544, 492, 8, 179, "Output"] }, Open ]], Cell[19386, 555, 82, 1, 30, "Text"], Cell[CellGroupData[{ Cell[19493, 560, 90, 1, 81, "Input"], Cell[19586, 563, 12081, 364, 186, 3561, 254, "GraphicsData", "PostScript", \ "Graphics"], Cell[31670, 929, 130, 3, 54, "Output"] }, Open ]], Cell[31815, 935, 547, 7, 130, "Text"], Cell[32365, 944, 163, 2, 26, "Text"] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)