(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 4.0, MathReader 4.0, or any compatible application. 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[ 16738, 469]*) (*NotebookOutlinePosition[ 17377, 492]*) (* CellTagsIndexPosition[ 17333, 488]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["Colliding Pulses", "Title", TextAlignment->Center, TextJustification->0, FontSize->18], Cell["\<\ In this notebook, we'll write functions to define left-moving and \ right-moving pulses, and then add them in various combinations with \ animation. The \"frames\" we generate can also be output as \"gif\" files and then \ combined externally into an animated gif file.\ \>", "Text"], Cell[CellGroupData[{ Cell["Clear symbols", "Section", Evaluatable->False, AspectRatioFixed->True], Cell["\<\ In order to avoid interference from symbols defined in other \ notebooks, we first Clear and Remove all symbols. We assume that the \ relevant symbols are in the Global` context.\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell["Clear[\"Global`*\"]", "Input", AspectRatioFixed->True], Cell["Remove[\"Global`*\"]", "Input", AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell["Define Pulse Parameters", "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "The pulses will be defined in terms of a standard amplitude a, wave number \ k, frequency \[Omega],\nand, if appropriate, width s.\n\nWe'll take the \ simplest values by default (so we choose units so that most are 1):"], "Text",\ Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(\(a = 1; \)\)], "Input"], Cell[BoxData[ \(\(k = 1; \)\)], "Input"], Cell[BoxData[ \(\(\[Omega] = 1; \)\)], "Input"], Cell[BoxData[ \(\(s = 2; \)\)], "Input"], Cell["\<\ Note the use of the semicolon ; at the end of each definition. \ This suppresses the output, which we really don't care about. We also could \ have put the definitions on a single line.\.13\ \>", "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell["Define Pulse Functions", "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "Here we define the pulses as functions of space (x) and time (t). Some \ things to note:\n * The variables x and t are \"dummy\" variables, indicated \ on the left side (only!) of the definition with an _ after the variable. \ This means that FullWaveRight[y,z] will have y substituted for anywhere x \ appears on the right side and z substituted everywhere for t.\n * We use \ \"delayed definition\" with := rather than just an = in each case. In \ general this is the preferred way to define functions. A side effect is \ there is no response from ", StyleBox["Mathematica", FontSlant->"Italic"], " when you evaluate the definition.\n * The pulses with \"Right\" in their \ name travel to the right (kx-\[Omega]t) while those with \"Left\" travel to \ the left as t increases (kx+\[Omega]t).\n * We use * for multiplication \ instead of simply leaving spaces to avoid errors." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "First, two pulses consisting of one full cycle of a sine wave. Note the use \ of the \"If\" statement: There are three arguments, if the first one is \ true, the second argument is returned; if the first one is false, the third \ argument is returned. So FullWaveRight is defined as a*sin(kx-\[Omega]t) if \ (kx-\[Omega]t) is between 0 and 2\[Pi], and 0 otherwise."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(FullWaveRight[x_, t_] := \n\t\ \ \ \ \ \ \ \ \ If[0 < k*x\ - \ \[Omega]*t < 2 \[Pi], \ \ a*Sin[k*x\ - \ \ \[Omega]*t], \ \ 0]\)], "Input"], Cell[BoxData[ \(FullWaveLeft[x_, t_] := \n\ \ \ \ \ \ \ \ \ \ \ If[0 < k*x\ + \ \ \[Omega]*t < 2 \[Pi], \ \ a*Sin[k*x\ + \ \ \[Omega]*t], \ 0]\)], "Input"], Cell[TextData[ "Next, the same type of definition, but only 1/2 cycle (2\[Pi] has become \ \[Pi]):"], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(HalfWaveRight[x_, t_] := \n\ \ \ \ \ \ \ \ \ \ If[0 < k*x\ - \ \ \[Omega]*t < \[Pi], a*Sin[k*x\ - \ \ \[Omega]*t], 0] \)], "Input"], Cell[BoxData[ \(HalfWaveLeft[x_, t_] := \n\ \ \ \ \ \ \ \ \ \ If[0 < k*x\ + \ \ \[Omega]*t < \[Pi], a*Sin[k*x\ + \ \ \[Omega]*t], 0] \)], "Input"], Cell["\<\ Finally, some pulses with smoother tails: gaussian shapes. The \ width is controlled by s.\.13\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(GaussRight[x_, t_] := \ a*Exp[\(-\((k*x\ - \ \ \[Omega]*t)\)^2\)/s^2]\)], "Input"], Cell[BoxData[ \(GaussLeft[x_, t_] := \ a*Exp[\(-\((k*x\ + \ \ \[Omega]*t)\)^2\)/s^2]\)], "Input"], Cell["\<\ Let's make a couple plots to see if we know what we're doing! Plot \ with respect to x from -16 (or -14) to +16 (or +14) for some fixed values of \ t:\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[BoxData[ \(Plot[FullWaveRight[x, \(-10\)], {x, \(-16\), 16}, \n \ \ \ \ \ \ \ \ \ \ \ \ \ PlotRange -> {{\(-16\), 16}, {\(-1\), 1}}] \)], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["\<\ We've used the \"PlotRange->\" option of Plot to force a plot from \ -16 to +16 on the x-axis and from -1 to +1 on the y-axis.\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[BoxData[ \(Plot[GaussLeft[x, \(+5\)], {x, \(-14\), 14}, \n\ \ \ \ \ PlotRange -> {{\(-16\), 16}, {\(-1\), 1}}]\)], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Animated Pulse \"Collisions\"", "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "There are several ways to create an animation in ", StyleBox["Mathematica", FontSlant->"Italic"], ". We'll use the \"Animate\" command. We first load the \"Animation\" \ package, which defines the Animate command:" }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(<< Graphics`Animation`\)], "Input"], Cell["\<\ Animate takes as its first argument a Plot command, which depends \ on a parameter, in this case the time t. The second argument is a range for \ that parameter: {t,-10,10,0.2} means t is the parameter, which should be \ varied between -10 and 10 in steps of 0.2. The first picture generated is \ t=-10, the next is t=-9.8, and so on. After all the pictures are generated, scroll back to the first one and double \ click on it. It should move! There will be controls at the lower left of \ the frame, which allow you to stop the animation and step forward and \ backwards through it.\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell["\<\ First add the one-cycle sine pulses. We'll turn off the coordinate \ axes with the \"Axes->False\" option to Plot.\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(\(Animate[\ Plot[FullWaveRight[x, t] + FullWaveLeft[x, t], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {x, \(-16\), 16}, \n\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotRange -> {{\(-10\), 16}, {\(-2\), 2}}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Axes -> False\n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ], \n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {t, \(-10\), 10, 0.2}\ ]; \)\)], "Input"], Cell["Now subtract the one-cycle sine pulses:", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(\(Animate[\ Plot[FullWaveRight[x, t] - FullWaveLeft[x, t], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {x, \(-16\), 16}, \n\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotRange -> {{\(-10\), 16}, {\(-2\), 2}}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Axes -> False\n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ], \n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {t, \(-10\), 10, 0.2}\ ]; \)\)], "Input"], Cell["Add then subtract the half-cycle sine pulses:", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(\(Animate[\ Plot[HalfWaveRight[x, t] + HalfWaveLeft[x, t], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {x, \(-16\), 16}, \n\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotRange -> {{\(-10\), 16}, {\(-2\), 2}}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Axes -> False\n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ], \n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {t, \(-10\), 10, 0.2}\ ]; \)\)], "Input"], Cell[BoxData[ \(\(Animate[\ Plot[HalfWaveRight[x, t] - HalfWaveLeft[x, t], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {x, \(-16\), 16}, \n\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotRange -> {{\(-10\), 16}, {\(-2\), 2}}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Axes -> False\n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ], \n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {t, \(-10\), 10, 0.2}\ ]; \)\)], "Input"], Cell["Add then subtract the gaussian pulses:", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(Animate[\ Plot[GaussRight[x, t] + GaussLeft[x, t], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {x, \(-16\), 16}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotRange -> {{\(-14\), 14}, {0, 2}}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Axes -> False\n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ], \n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {t, \(-10\), 10, .5}]\)], "Input"], Cell[BoxData[ \(Animate[\ Plot[GaussRight[x, t] - GaussLeft[x, t], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {x, \(-16\), 16}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotRange -> {{\(-14\), 14}, {\(-1\), 1}}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Axes -> False\n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ], \n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {t, \(-10\), 10, .5}]\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["Generating Animated Gifs", "Section", Evaluatable->False, AspectRatioFixed->True], Cell["\<\ Here we show how to output an animation as a series of .gif files. \ These can be combined into an animated GIF using a software program such as \ gifsicle (on unix or Windows) or ??? (on Macs). We give the code that was used to generate gaussian pulse animated gifs. \ Note that the Plot commands are the same as in the last section. The \ variable i serves as an index variable, which is used to label the files. \ Each file will be a gif-format image of one of the frames generated by Plot. We first make a table with two columns. In the first column is the index \ number i, with leading 0's added using ToString, NumberForm, and \ NumberPadding so that it has four digits and a decimal point. The second \ column has the plots, for values of t specified by the argument to Table, \ which here says to step t from -10 to +10 by .5 increments.\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(i = 0; \ \ MirrorPulses\ = \n\t Table[\ {\(i++\); \ ToString[ NumberForm[i, {3, 0}, NumberPadding -> {"\<0\>", "\<\>"}]], \n \t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ Plot[GaussRight[x, t] + GaussLeft[x, t], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {x, \(-16\), 16}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotRange -> {{\(-14\), 14}, {0, 2}}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Axes -> False, \n \t\t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ DisplayFunction -> Identity\n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ]}, \n \t\t\t\ \ \ \ \ \ \ \ \ \ {t, \(-10\), 10, .5}]; \)], "Input"], Cell["\<\ Now create the gif files with names mirror0001.gif, mirror0002.gif, \ and so on. The Scan command applies Display to each row of the table named \ MirrorPulses. The first element (the padded index i) is used to construct \ the file name (using the <> string concatenation operator) while the second \ element is the plot. The arguments to Display tell it to output in GIF \ format at a resolution of 72dpi (which is appropriate for screen \ display).\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(Scan[ Display["\"\ <> \ #[\([1]\)]\ <> \ "\", \ #[\([2]\)], \ \n\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "\", ImageResolution -> 72] &, \ MirrorPulses]\)], "Input"], Cell["A similar example:", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(i = 0; \ \ InvertedPulses\ = \n\t Table[\ {\(i++\); \ ToString[ NumberForm[i, {3, 0}, NumberPadding -> {"\<0\>", "\<\>"}]], \n \t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ Plot[GaussRight[x, t] - GaussLeft[x, t], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {x, \(-16\), 16}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotRange -> {{\(-14\), 14}, {\(-1\), 1}}, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Axes -> False, \n \t\t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ DisplayFunction -> Identity\n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ]}, \n \t\t\t\ \ \ \ \ \ \ \ \ \ {t, \(-10\), 10, .5}]; \)], "Input"], Cell[BoxData[ \(Scan[ Display["\"\ <>\ #[\([1]\)]\ <>\ "\", \ #[\([2]\)], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "\", ImageResolution -> 72]&, \ InvertedPulses]\)], "Input"], Cell["\<\ On unix, the command: gifsicle --delay=10 --loop mirror*.gif > mirror_pulse.gif will merge the mirror0001.gif, mirror0002.gif, etc. files into an animated \ gif named mirror_pulse.gif. The delay and loop arguments specify the time \ between frames and that the animation should repeat. The program gifsicle is \ available from http://www.lcdf.org/~eddietwo/gifsicle/\ \>", "Text",\ Evaluatable->False, AspectRatioFixed->True] }, Open ]] }, Open ]] }, FrontEndVersion->"4.0 for X", ScreenRectangle->{{0, 1280}, {0, 1024}}, WindowSize->{691, 889}, WindowMargins->{{0, Automatic}, {Automatic, 11}} ] (*********************************************************************** 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[CellGroupData[{ Cell[1739, 51, 98, 3, 93, "Title"], Cell[1840, 56, 294, 7, 86, "Text"], Cell[CellGroupData[{ Cell[2159, 67, 80, 2, 60, "Section", Evaluatable->False], Cell[2242, 71, 251, 6, 50, "Text", Evaluatable->False], Cell[2496, 79, 62, 1, 27, "Input"], Cell[2561, 82, 63, 1, 27, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[2661, 88, 90, 2, 60, "Section", Evaluatable->False], Cell[2754, 92, 295, 6, 86, "Text", Evaluatable->False], Cell[3052, 100, 44, 1, 27, "Input"], Cell[3099, 103, 44, 1, 27, "Input"], Cell[3146, 106, 51, 1, 27, "Input"], Cell[3200, 109, 44, 1, 27, "Input"], Cell[3247, 112, 263, 6, 50, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[3547, 123, 89, 2, 60, "Section", Evaluatable->False], Cell[3639, 127, 973, 17, 176, "Text", Evaluatable->False], Cell[4615, 146, 442, 7, 68, "Text", Evaluatable->False], Cell[5060, 155, 177, 3, 43, "Input"], Cell[5240, 160, 178, 3, 43, "Input"], Cell[5421, 165, 157, 4, 32, "Text", Evaluatable->False], Cell[5581, 171, 168, 3, 43, "Input"], Cell[5752, 176, 167, 3, 43, "Input"], Cell[5922, 181, 167, 5, 32, "Text", Evaluatable->False], Cell[6092, 188, 110, 2, 27, "Input"], Cell[6205, 192, 109, 2, 27, "Input"], Cell[6317, 196, 223, 6, 50, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[6565, 206, 167, 3, 43, "Input"], Cell[6735, 211, 130, 3, 27, "Output"] }, Open ]], Cell[6880, 217, 198, 5, 50, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[7103, 226, 139, 2, 43, "Input"], Cell[7245, 230, 130, 3, 27, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[7424, 239, 96, 2, 60, "Section", Evaluatable->False], Cell[7523, 243, 303, 8, 50, "Text", Evaluatable->False], Cell[7829, 253, 55, 1, 27, "Input"], Cell[7887, 256, 663, 13, 122, "Text", Evaluatable->False], Cell[8553, 271, 187, 5, 32, "Text", Evaluatable->False], Cell[8743, 278, 540, 10, 107, "Input"], Cell[9286, 290, 103, 2, 32, "Text", Evaluatable->False], Cell[9392, 294, 540, 10, 107, "Input"], Cell[9935, 306, 109, 2, 32, "Text", Evaluatable->False], Cell[10047, 310, 540, 10, 107, "Input"], Cell[10590, 322, 540, 10, 107, "Input"], Cell[11133, 334, 102, 2, 32, "Text", Evaluatable->False], Cell[11238, 338, 531, 10, 107, "Input"], Cell[11772, 350, 536, 10, 107, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[12345, 365, 91, 2, 60, "Section", Evaluatable->False], Cell[12439, 369, 928, 17, 194, "Text", Evaluatable->False], Cell[13370, 388, 865, 17, 155, "Input"], Cell[14238, 407, 525, 10, 86, "Text", Evaluatable->False], Cell[14766, 419, 243, 4, 43, "Input"], Cell[15012, 425, 82, 2, 32, "Text", Evaluatable->False], Cell[15097, 429, 872, 17, 155, "Input"], Cell[15972, 448, 249, 4, 43, "Input"], Cell[16224, 454, 486, 11, 104, "Text", Evaluatable->False] }, Open ]] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)