(*********************************************************************** 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[ 18856, 750]*) (*NotebookOutlinePosition[ 19829, 781]*) (* CellTagsIndexPosition[ 19785, 777]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["Session 4 Notebook", "Title", TextAlignment->Center, TextJustification->0, FontSize->18, FontColor->RGBColor[0, 0, 1]], Cell["\<\ This notebook cleans up various odds and ends: more on functions, \ plotting, manipulating data and animation.\ \>", "Text"], Cell[CellGroupData[{ Cell["Clear symbols", "Section", Evaluatable->False, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], Cell["\<\ In order to avoid interference from symbols defined in other \ notebooks or from re-running this notebook, we first Clear all symbols. We \ assume that the relevant symbols are in the Global` context.\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell["ClearAll[\"Global`*\"]", "Input", AspectRatioFixed->True], Cell["A more complete \"clearing\" uses Remove:", "Text", Evaluatable->False, AspectRatioFixed->True], Cell["Remove[\"Global`*\"]", "Input", AspectRatioFixed->True], Cell["\<\ You will probably need to Clear individual symbols \ frequently!\ \>", "Text", Evaluatable->False, AspectRatioFixed->True] }, Closed]], Cell[CellGroupData[{ Cell["More on defining functions", "Section", Evaluatable->False, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], Cell["\<\ By now you've encountered the difference between immediate and \ deferred assignment. For example, this is immediate:\ \>", "Text"], Cell[BoxData[{ \(a\ = \ 1; \ b = \ a; \ a\ = \ 2\ ; \ b\), "\[IndentingNewLine]", \(\.08\)}], "Input"], Cell["and this is deferred:", "Text"], Cell[BoxData[ \(\.08a = \ 1; \ b := \ a; \ a = \ 2; \ b\)], "Input"], Cell["\<\ Make sure you understand the behavior here: in the 1st case the \ right hand side of \"b=a\" gets evaluated immediately, while in the 2nd one, \ the value b should have is only computed when you ask for b.\ \>", "Text"], Cell["\<\ Using deferred evaluation you can define functions recursively. \ What is this function?\ \>", "Text"], Cell[BoxData[ \(f[n_]\ := \ f[n - 1]\ + \ f[n - 2]\)], "Input"], Cell[BoxData[ \(f[0]\ = \ 0; \ f[1]\ = \ 1;\)], "Input"], Cell["Check out what we know about f:", "Text"], Cell[BoxData[ \(\(?f\)\)], "Input"], Cell[BoxData[ \(f[10]\)], "Input"], Cell["\<\ Here is a way to speed successive function evaluations. We \ computed all those f[n]'s in between, so how about saving them for next time:\ \ \>", "Text"], Cell[BoxData[ \(f[n_]\ := \ \(f[n]\ = \ f[n - 1]\ + f[n - 2]\)\)], "Input"], Cell["Now check what is known about f:", "Text"], Cell[BoxData[ \(\(?f\)\)], "Input"], Cell[BoxData[ \(f[10]\)], "Input"], Cell[BoxData[ \(\(?f\)\)], "Input"], Cell["Next, what happens when we try some non-integer argument?", "Text"], Cell[BoxData[ \(f[5.5]\)], "Input"], Cell["\<\ One solution: put on conditionals. The dummy argument n_ we use in \ the function definition matches *anything*. The syntax n_ matches only \ symbols for which returns true. \ \>", "Text"], Cell["Here is the test if a given symbol is an integer.", "Text"], Cell[BoxData[ \({IntegerQ[1], \ IntegerQ[5.5], IntegerQ[n]}\)], "Input"], Cell["(Why isn't n an integer?)", "Text"], Cell["So here is the reviesed function:", "Text"], Cell[BoxData[ \(g[n_?IntegerQ]\ := g[n - 1]\ + \ g[n - 2]; \ g[0]\ = \ 1; \ g[1]\ = \ 1;\)], "Input"], Cell[BoxData[ \(g[n_]\ := \ Print["\"]\)], "Input"], Cell[BoxData[ \(g[10]\)], "Input"], Cell[BoxData[ \(g[5.5]\)], "Input"], Cell["Or being even more precise about it, we should add:", "Text"], Cell[BoxData[ \(g[n_?\((IntegerQ[#]\ && \ Negative[#] &)\)]\ := \ Print["\"]\)], "Input"], Cell["\<\ Here is another way of doing the same thing, where now the \ conditionals are written as the last thing on the line.\ \>", "Text"], Cell[BoxData[{ \(\(h[n_]\ := h[n - 1]\ + \ h[n - 2] /; \((IntegerQ[ n] && \((n > 1)\))\);\)\), "\[IndentingNewLine]", \(\ \(h[0]\ = \ 1;\)\), "\[IndentingNewLine]", \(\(h[n_]\ := \ 1 /; \ n == 1;\)\)}], "Input"], Cell[CellGroupData[{ Cell["Exercise: Factorial Function", "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell["\<\ Write a recursively defined factorial function. (For a solution, \ and many other ways to define this function, check out the Factorial notebook \ on the web page.)\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Exercise: Legendre Polynomials", "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "The Legendre polynomials (which arise in quantum mechanics) satisfy the \ recursion relation (n+1)", Cell[BoxData[ \(TraditionalForm\`P\_\(n + 1\)\)]], "(x) = (2n+1) x ", Cell[BoxData[ \(TraditionalForm\`P\_n\)]], "(x) - n ", Cell[BoxData[ \(TraditionalForm\`P\_\(n - 1\)\)]], "(x). Write a function to generate ", Cell[BoxData[ \(TraditionalForm\`P\_n\)]], " recursively. You can check against the builtin LegendreP[x]." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Exercise: Step Funtion", "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell["\<\ Use conditionals to define a step function, e.g. f(x) =1 for x<0, \ f(x)=2 for 02. Check your result by plotting it. Can \ you integrate this function?\ \>", "Text"], Cell[CellGroupData[{ Cell["Solution", "Subsubsection", FontSize->14, FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \(step[x_]\ := \ 1 /; \ x \[LessEqual] 0\)], "Input"], Cell[BoxData[ \(step[x_]\ := \ 2\ /; \ \((x > \ 0)\)\ && \ \((x < 2)\)\)], "Input"], Cell[BoxData[ \(step[x_]\ := \ 0\ /; \ x > \ \ 2\)], "Input"], Cell[BoxData[ \(\(Plot[step[x], {x, \(-4\), 4}];\)\)], "Input"], Cell["Here is another syntax using \"pure functions\".", "Text"], Cell[BoxData[ \(step2[x_?\((# <= \ 0\ &)\)]\ := \ 1; \ \ step2[x_?\((\((# > 0)\) && \((# <= 2)\) &)\)]\ := \ 2; \ step2[x_?\((# > 2 &)\)]\ := \ 0\)], "Input"] }, Open ]] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["More on graphics", "Section", Evaluatable->False, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], Cell["Here are some neat 3D and other advanced graphics functions:", "Text"], Cell[CellGroupData[{ Cell["3D Graphics", "Subsubsection"], Cell[BoxData[ \(v\ = \ 1/Sqrt[\((x - 1)\)^2\ + \ y^2 + z^2]\ - \ 1/Sqrt[\((x + 1)\)^2 + y^2 + z^2]\)], "Input"], Cell[BoxData[ \(Plot3D[v /. z -> 1, {x, \(-3\), 3}, {y, \(-2\), 2}]\)], "Input"], Cell["Change the point of view:", "Text"], Cell[BoxData[ \(Plot3D[v /. z -> 1, {x, \(-3\), 3}, {y, \(-2\), 2}, ViewPoint -> {\(-1.271\), \ \(-1.665\), \ 2.657}]\)], "Input"], Cell[BoxData[ \(Clear["\"]\)], "Input"], Cell[BoxData[ \(f\ = \ \((x^2 + y^2 - 3)\)^2 + \((\ \((x - 1)\)^2 + \((y + 1)\)^2\ - 3)\)^3\)], "Input"], Cell[BoxData[ \(Plot3D[f, {x, \(-1\), 2}, {y, \(-2\), 1}]\)], "Input"], Cell["Here is a 2D visualization using densities:", "Text"], Cell[BoxData[ \(dplot\ = \ DensityPlot[f, {x, \(-1\), 2}, {y, \(-2\), 1}]\)], "Input"], Cell["Or contours.", "Text"], Cell[BoxData[ \(cplot\ = \ ContourPlot[f, {x, \(-1\), 2}, {y, \(-2\), 1}]\)], "Input"], Cell["\<\ Suppose we were interested in the critical points of this \ functions:\ \>", "Text"], Cell[BoxData[ \(q = Solve[{D[f, x] == 0, D[f, y] == 0}, {x, y}] // N\)], "Input"], Cell["And we wanted to mark them on one of the other plots:", "Text"], Cell[BoxData[ \(lplot\ = \ ListPlot[{x, y} /. q, PlotStyle -> {PointSize[ .03], RGBColor[1, 0, 0]}]\)], "Input"], Cell[BoxData[ \(Show[cplot, lplot]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Vector Fields", "Subsubsection"], Cell[BoxData[ \(\(?*Vector*\)\)], "Input"], Cell[BoxData[ \(Needs["\"]\)], "Input"], Cell[BoxData[ \(\(?*Vector*\)\)], "Input"], Cell[BoxData[ \(\(?PlotVectorField\)\)], "Input"], Cell[BoxData[ \(v\ = \ 1/Sqrt[\((x - 1)\)^2\ + \ y^2 + z^2]\ - \ 1/Sqrt[\((x + 1)\)^2 + y^2 + z^2]\)], "Input"], Cell[BoxData[ \(vec\ = \ {\ D[v, x], D[v, y]}\)], "Input"], Cell[BoxData[ \(PlotVectorField[vec /. z -> 1, {x, \(-3\), 3}, {y, \(-2\), 2}, \n\t ScaleFactor -> Automatic]\)], "Input"], Cell[BoxData[ \(PlotVectorField[vec /. z -> 1, {x, \(-3\), 3}, {y, \(-2\), 2}, \n\t ScaleFactor -> 1]\)], "Input"], Cell["Or vectors in 3D", "Text"], Cell[BoxData[ \(vec3\ = \ {D[v, x], D[v, y], D[v, z]}\)], "Input"], Cell[BoxData[ \(Needs["\"]\)], "Input"], Cell[BoxData[ \(PlotVectorField3D[ vec3, {x, \(-3\), 3}, {y, \(-2\), 2}, {z, \(-2\), 2}]\)], "Input"], Cell[BoxData[ \(PlotGradientField3D[ v, {x, \(-3\), 3}, {y, \(-2\), 2}, {z, \(-2\), 2}]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Surface of Revolution", "Subsubsection"], Cell[BoxData[ \(Needs["\"]\)], "Input"], Cell[BoxData[ \(f = x*\((1 - x)\)\)], "Input"], Cell[BoxData[ \(Plot[f, {x, 0, 1}]\)], "Input"], Cell[BoxData[ \(SurfaceOfRevolution[f, {x, 0, 1}]\)], "Input"], Cell[BoxData[ \(SurfaceOfRevolution[{Sin[x], x}, {x, 0, 4 Pi}]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["3D Parametric Plot", "Subsubsection"], Cell[BoxData[ \(\(?Spher*\)\)], "Input"], Cell[BoxData[ \(Needs["\"]\)], "Input"], Cell[BoxData[ \(\(\(?Spher*\)\(\n\)\)\)], "Input"], Cell[BoxData[ \(\(plot[l_, m_]\ := \ SphericalPlot3D[\n\t\t\((Abs[SphericalHarmonicY[l, m, theta, phi]] // Evaluate)\), \n\t\t{theta, 0, Pi}, {phi, 0, 2\ Pi}, Boxed -> False, \n\t\tAxes -> False, DisplayFunction -> Identity];\)\)], "Input"], Cell[BoxData[ \(\(pt1\ = \ Table[plot[el, m], {el, 0, 2}, {m, \(-el\), el}];\)\)], "Input"], Cell[BoxData[ \(Show[GraphicsArray[pt1]]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Animation", "Subsubsection"], Cell[TextData[{ "If you create a table of graphics, ", StyleBox["Mathematica", FontSlant->"Italic"], " will animate the frame for you: just double click on one of the plots \ generated." }], "Text"], Cell[BoxData[ \(Table[ Plot[Sin[2\ x\ + \ Pi\ t], {x, 0, 10}], {t, 0, 2, .2}]\)], "Input"], Cell[BoxData[""], "Input"], Cell["Try it with 3D graphics:", "Text"], Cell[BoxData[ \(Table[ Plot3D[10* Sin[Pi*Sqrt[x^2 + y^2] + \ Pi*t/10]/ Sqrt[\((x^2 + y^2)\)], {x, \(-3\), 3}, {y, \(-3\), 3}, PlotRange \[Rule] {\(-1\), 10}], {t, 0, 19}]\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["Challenge: Use your imagination", "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell["Use some of the above to make your own graphics.", "Text"] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["Input/Output", "Section", Evaluatable->False, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], Cell[TextData[{ "Here are examples of how to make ", StyleBox["Mathematica", FontSlant->"Italic"], " interact with the rest of the world. E.g. one can save expressions in \ different formats, and read and write data." }], "Text"], Cell[CellGroupData[{ Cell[TextData[{ "Saving ", StyleBox["Mathematica", FontSlant->"Italic"], " Expressions" }], "Subsection"], Cell[CellGroupData[{ Cell[TextData[{ "Plain ", StyleBox["Mathematica", FontSlant->"Italic"], " expressions" }], "Subsubsection"], Cell["Send an expression out to a text file:", "Text"], Cell[BoxData[ \(Expand[\((1 + x)\)^10]\ >> \ outfile\)], "Input"], Cell["Append to the same file", "Text"], Cell[BoxData[ \(Factor[\((1 - x^2)\)]\ >>> \ outfile\)], "Input"], Cell["Take a look at the file from within Mathematica", "Text"], Cell[BoxData[ \(\(! \(! outfile\)\)\)], "Input"], Cell[BoxData[ \(poly\ = \ Expand[\((1 + x)\)^4 - 8 x^3]\)], "Input"], Cell[BoxData[ \(roots\ = \ Solve[poly == 0, x]\)], "Input"], Cell[BoxData[ \(Save["\", {poly, roots}]\)], "Input"], Cell[BoxData[ \(CopyFile["\", "\"]\)], "Input"], Cell[BoxData[ \(roots\ = \ . ; \ \(?roots\)\)], "Input"], Cell[BoxData[ \(<< infile\)], "Input"], Cell[BoxData[ \(\(?roots\)\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["C, Fortran, TeX format", "Subsubsection"], Cell[BoxData[ \(mess\ = \ Integrate[Sin[x + I]^2/Cos[x], x]\)], "Input"], Cell[BoxData[ \(TraditionalForm[mess]\)], "Input"], Cell[BoxData[ \(FortranForm[mess]\)], "Input"], Cell[BoxData[ \(CForm[mess]\)], "Input"], Cell[BoxData[ \(TeXForm[mess]\)], "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["ASCII data", "Subsection"], Cell["Generate some random data", "Text"], Cell[BoxData[ \(mydata\ = \ Table[Random[Real], {10}]\)], "Input"], Cell["Dump it to a file", "Text"], Cell[BoxData[ \(out\ = \ OpenWrite["\"]\)], "Input"], Cell[BoxData[ \(Write[out, mydata]; \ Close[out]\)], "Input"], Cell["Now read it back in", "Text"], Cell[BoxData[ \(in\ = \ OpenRead["\"]\)], "Input"], Cell[BoxData[ \(data\ = \(ReadList[in]\)[\([1]\)]\)], "Input"], Cell[BoxData[ \(Close[in]\)], "Input"], Cell["\<\ Or a \"real world\" example: suppose you have a file of rows of \ data of the form {x,f(x),g(x)}, and you want to interpolate to some value of \ x not in your data. Here is how:\ \>", "Text"], Cell["First just look at the file:", "Text"], Cell[BoxData[ \(\(!! rho.data\)\)], "Input"], Cell["Then read in using:", "Text"], Cell[BoxData[ \(data\ = \ ReadList["\", {Real, Real, Real}]\)], "Input"], Cell["\<\ Aside: what happens if you forget the {Real,Real,Real}? Understand \ the following:\ \>", "Text"], Cell[BoxData[ \(datawrong\ = \ ReadList["\"]\)], "Input"], Cell["\<\ OK back on track: we aren't interested in the third datum, so \ define a pure function and have it act on the list of data:\ \>", "Text"], Cell[BoxData[ \(plaqdata = \ \(\(({#[\([1]\)], #[\([2]\)]}\ )\) &\)\ /@ \ data\)], "Input"], Cell["Fit to a polynomial", "Text"], Cell[BoxData[ \(Fit[plaqdata, {1, x, x^2}, x]\)], "Input"], Cell[BoxData[ \(p[y_]\ = \ \((Fit[plaqdata, {1, x, x^2}, x])\) /. \ x \[Rule] y\)], "Input"], Cell["Look at the data points and the fit polynomial.", "Text"], Cell[BoxData[ \(Show[{ListPlot[plaqdata, PlotStyle -> {PointSize[ .03], RGBColor[1, 0, 0]}, DisplayFunction -> Identity], Plot[p[x], {x, 5.7, 6.6}, PlotStyle -> RGBColor[0, 0, 1], DisplayFunction -> Identity]}, DisplayFunction -> $DisplayFunction]\)], "Input"], Cell["\<\ Finally, since everything looks good, evaluate the polynomial to \ get some interpolated value.\ \>", "Text"], Cell[BoxData[ \(p[6.3]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Binary Data Files", "Subsection"], Cell["We can also deal with binary files as streams of bytes.", "Text"], Cell["\<\ IF you want to fill the screen with some garbage, take a look at \ the binary file:\ \>", "Text"], Cell[BoxData[ \(\(\(!!\)\(\ \)\(datafile.bin\)\(\[IndentingNewLine]\)\)\)], "Input"], Cell["Open the file:", "Text"], Cell[BoxData[ \(in\ = \ OpenRead["\"]\)], "Input"], Cell["\<\ This particular format starts with an ASCII header with two lines \ of comments,and then three integers declaring the size (width*depth) of the \ array, and the range of possible data values. So ... begin by reading in the \ ASCII header at the top of the file:\ \>", "Text"], Cell[BoxData[ \({label1, label2, width, height, depth}\ = \ Read[in, {String, String, Number, Number, Number}]\)], "Input"], Cell["\<\ Then read in one big list of data, and break it up into sublists of \ length \"width\", i.e. arrange the data in an array.\ \>", "Text"], Cell[BoxData[ \(array\ = \ Partition[ReadList[in, Byte], width]; \ Close[in]\)], "Input"], Cell["Now try plotting the data to make sense of it.", "Text"], Cell[BoxData[ \(ListPlot3D[array]\)], "Input"], Cell["\<\ Sometimes other plot formats make the data more \ understandable:\ \>", "Text"], Cell[BoxData[ \(\(ListDensityPlot[Reverse[array], Frame -> False, Mesh -> False, AspectRatio -> Automatic];\)\)], "Input"], Cell["But other views are revealing too:", "Text"], Cell[BoxData[ \(\(ListContourPlot[Reverse[array], Frame -> False, AspectRatio -> Automatic];\)\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Challenge: more imagination", "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell["\<\ On the website you will find links to more images in the same \ format as above. Load them and try your own graphics transformations.\ \>", "Text"] }, Closed]] }, Open ]] }, Open ]] }, FrontEndVersion->"4.0 for X", ScreenRectangle->{{0, 1024}, {0, 768}}, WindowToolbars->"EditBar", WindowSize->{629, 716}, WindowMargins->{{134, Automatic}, {3, Automatic}}, PrintingPageRange->{Automatic, Automatic}, PrintingOptions->{"PaperSize"->{612, 792}, "PaperOrientation"->"Portrait", "PostScriptOutputFile":>FrontEnd`FileName[{$RootDirectory, "home", \ "furnstah", "public_html", "reu", "nbs"}, "trajectory.nb.ps", \ CharacterEncoding -> "ISO8859-1"], "Magnification"->1} ] (*********************************************************************** 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, 132, 4, 81, "Title"], Cell[1874, 57, 134, 3, 62, "Text"], Cell[CellGroupData[{ Cell[2033, 64, 112, 3, 70, "Section", Evaluatable->False], Cell[2148, 69, 273, 6, 83, "Text", Evaluatable->False], Cell[2424, 77, 65, 1, 31, "Input"], Cell[2492, 80, 105, 2, 41, "Text", Evaluatable->False], Cell[2600, 84, 63, 1, 31, "Input"], Cell[2666, 87, 136, 5, 41, "Text", Evaluatable->False] }, Closed]], Cell[CellGroupData[{ Cell[2839, 97, 125, 3, 42, "Section", Evaluatable->False], Cell[2967, 102, 142, 3, 62, "Text"], Cell[3112, 107, 113, 2, 50, "Input"], Cell[3228, 111, 37, 0, 41, "Text"], Cell[3268, 113, 72, 1, 34, "Input"], Cell[3343, 116, 229, 5, 83, "Text"], Cell[3575, 123, 112, 3, 62, "Text"], Cell[3690, 128, 69, 1, 34, "Input"], Cell[3762, 131, 62, 1, 34, "Input"], Cell[3827, 134, 47, 0, 41, "Text"], Cell[3877, 136, 39, 1, 33, "Input"], Cell[3919, 139, 38, 1, 34, "Input"], Cell[3960, 142, 165, 4, 62, "Text"], Cell[4128, 148, 82, 1, 34, "Input"], Cell[4213, 151, 48, 0, 41, "Text"], Cell[4264, 153, 39, 1, 33, "Input"], Cell[4306, 156, 38, 1, 34, "Input"], Cell[4347, 159, 39, 1, 33, "Input"], Cell[4389, 162, 73, 0, 41, "Text"], Cell[4465, 164, 39, 1, 34, "Input"], Cell[4507, 167, 214, 4, 83, "Text"], Cell[4724, 173, 65, 0, 41, "Text"], Cell[4792, 175, 76, 1, 34, "Input"], Cell[4871, 178, 41, 0, 41, "Text"], Cell[4915, 180, 49, 0, 41, "Text"], Cell[4967, 182, 114, 2, 52, "Input"], Cell[5084, 186, 110, 2, 70, "Input"], Cell[5197, 190, 38, 1, 34, "Input"], Cell[5238, 193, 39, 1, 34, "Input"], Cell[5280, 196, 67, 0, 41, "Text"], Cell[5350, 198, 135, 2, 52, "Input"], Cell[5488, 202, 140, 3, 62, "Text"], Cell[5631, 207, 267, 6, 88, "Input"], Cell[CellGroupData[{ Cell[5923, 217, 98, 2, 64, "Subsection", Evaluatable->False], Cell[6024, 221, 189, 4, 62, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[6250, 230, 100, 2, 64, "Subsection", Evaluatable->False], Cell[6353, 234, 494, 15, 83, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[6884, 254, 92, 2, 64, "Subsection", Evaluatable->False], Cell[6979, 258, 199, 4, 83, "Text"], Cell[CellGroupData[{ Cell[7203, 266, 81, 2, 52, "Subsubsection"], Cell[7287, 270, 72, 1, 34, "Input"], Cell[7362, 273, 90, 1, 34, "Input"], Cell[7455, 276, 67, 1, 34, "Input"], Cell[7525, 279, 67, 1, 34, "Input"], Cell[7595, 282, 64, 0, 41, "Text"], Cell[7662, 284, 178, 3, 70, "Input"] }, Open ]] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[7901, 294, 115, 3, 42, "Section", Evaluatable->False], Cell[8019, 299, 76, 0, 41, "Text"], Cell[CellGroupData[{ Cell[8120, 303, 36, 0, 56, "Subsubsection"], Cell[8159, 305, 134, 3, 52, "Input"], Cell[8296, 310, 84, 1, 34, "Input"], Cell[8383, 313, 41, 0, 41, "Text"], Cell[8427, 315, 141, 2, 52, "Input"], Cell[8571, 319, 54, 1, 34, "Input"], Cell[8628, 322, 125, 2, 34, "Input"], Cell[8756, 326, 74, 1, 34, "Input"], Cell[8833, 329, 59, 0, 41, "Text"], Cell[8895, 331, 91, 1, 34, "Input"], Cell[8989, 334, 28, 0, 41, "Text"], Cell[9020, 336, 91, 1, 34, "Input"], Cell[9114, 339, 94, 3, 41, "Text"], Cell[9211, 344, 85, 1, 34, "Input"], Cell[9299, 347, 69, 0, 41, "Text"], Cell[9371, 349, 133, 3, 52, "Input"], Cell[9507, 354, 51, 1, 34, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[9595, 360, 38, 0, 34, "Subsubsection"], Cell[9636, 362, 46, 1, 33, "Input"], Cell[9685, 365, 65, 1, 34, "Input"], Cell[9753, 368, 46, 1, 33, "Input"], Cell[9802, 371, 53, 1, 33, "Input"], Cell[9858, 374, 134, 3, 52, "Input"], Cell[9995, 379, 63, 1, 34, "Input"], Cell[10061, 382, 132, 2, 70, "Input"], Cell[10196, 386, 124, 2, 70, "Input"], Cell[10323, 390, 32, 0, 41, "Text"], Cell[10358, 392, 71, 1, 34, "Input"], Cell[10432, 395, 67, 1, 34, "Input"], Cell[10502, 398, 111, 2, 52, "Input"], Cell[10616, 402, 110, 2, 52, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[10763, 409, 46, 0, 34, "Subsubsection"], Cell[10812, 411, 75, 1, 34, "Input"], Cell[10890, 414, 50, 1, 34, "Input"], Cell[10943, 417, 51, 1, 34, "Input"], Cell[10997, 420, 66, 1, 34, "Input"], Cell[11066, 423, 80, 1, 34, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[11183, 429, 43, 0, 34, "Subsubsection"], Cell[11229, 431, 44, 1, 34, "Input"], Cell[11276, 434, 72, 1, 34, "Input"], Cell[11351, 437, 54, 1, 50, "Input"], Cell[11408, 440, 291, 5, 142, "Input"], Cell[11702, 447, 105, 2, 34, "Input"], Cell[11810, 451, 57, 1, 34, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[11904, 457, 34, 0, 34, "Subsubsection"], Cell[11941, 459, 208, 6, 62, "Text"], Cell[12152, 467, 102, 2, 52, "Input"], Cell[12257, 471, 26, 0, 33, "Input"], Cell[12286, 473, 40, 0, 41, "Text"], Cell[12329, 475, 224, 5, 106, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[12590, 485, 101, 2, 64, "Subsection", Evaluatable->False], Cell[12694, 489, 64, 0, 41, "Text"] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell[12807, 495, 111, 3, 70, "Section", Evaluatable->False], Cell[12921, 500, 240, 6, 62, "Text"], Cell[CellGroupData[{ Cell[13186, 510, 115, 5, 65, "Subsection"], Cell[CellGroupData[{ Cell[13326, 519, 117, 5, 56, "Subsubsection"], Cell[13446, 526, 54, 0, 41, "Text"], Cell[13503, 528, 70, 1, 34, "Input"], Cell[13576, 531, 39, 0, 41, "Text"], Cell[13618, 533, 70, 1, 34, "Input"], Cell[13691, 536, 63, 0, 41, "Text"], Cell[13757, 538, 52, 1, 33, "Input"], Cell[13812, 541, 74, 1, 34, "Input"], Cell[13889, 544, 64, 1, 34, "Input"], Cell[13956, 547, 67, 1, 34, "Input"], Cell[14026, 550, 70, 1, 34, "Input"], Cell[14099, 553, 62, 1, 34, "Input"], Cell[14164, 556, 42, 1, 33, "Input"], Cell[14209, 559, 43, 1, 33, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[14289, 565, 47, 0, 34, "Subsubsection"], Cell[14339, 567, 77, 1, 34, "Input"], Cell[14419, 570, 54, 1, 34, "Input"], Cell[14476, 573, 50, 1, 34, "Input"], Cell[14529, 576, 44, 1, 34, "Input"], Cell[14576, 579, 46, 1, 34, "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[14671, 586, 32, 0, 36, "Subsection"], Cell[14706, 588, 41, 0, 41, "Text"], Cell[14750, 590, 71, 1, 34, "Input"], Cell[14824, 593, 33, 0, 41, "Text"], Cell[14860, 595, 72, 1, 34, "Input"], Cell[14935, 598, 65, 1, 34, "Input"], Cell[15003, 601, 35, 0, 41, "Text"], Cell[15041, 603, 70, 1, 34, "Input"], Cell[15114, 606, 67, 1, 34, "Input"], Cell[15184, 609, 42, 1, 34, "Input"], Cell[15229, 612, 202, 5, 83, "Text"], Cell[15434, 619, 44, 0, 41, "Text"], Cell[15481, 621, 48, 1, 33, "Input"], Cell[15532, 624, 35, 0, 41, "Text"], Cell[15570, 626, 88, 1, 34, "Input"], Cell[15661, 629, 108, 3, 62, "Text"], Cell[15772, 634, 73, 1, 34, "Input"], Cell[15848, 637, 147, 3, 62, "Text"], Cell[15998, 642, 105, 2, 34, "Input"], Cell[16106, 646, 35, 0, 41, "Text"], Cell[16144, 648, 62, 1, 34, "Input"], Cell[16209, 651, 106, 2, 34, "Input"], Cell[16318, 655, 63, 0, 41, "Text"], Cell[16384, 657, 313, 6, 179, "Input"], Cell[16700, 665, 120, 3, 62, "Text"], Cell[16823, 670, 39, 1, 34, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[16899, 676, 39, 0, 36, "Subsection"], Cell[16941, 678, 71, 0, 41, "Text"], Cell[17015, 680, 107, 3, 41, "Text"], Cell[17125, 685, 88, 1, 49, "Input"], Cell[17216, 688, 30, 0, 41, "Text"], Cell[17249, 690, 70, 1, 34, "Input"], Cell[17322, 693, 286, 5, 104, "Text"], Cell[17611, 700, 135, 2, 70, "Input"], Cell[17749, 704, 146, 4, 62, "Text"], Cell[17898, 710, 99, 2, 52, "Input"], Cell[18000, 714, 62, 0, 41, "Text"], Cell[18065, 716, 50, 1, 34, "Input"], Cell[18118, 719, 89, 3, 41, "Text"], Cell[18210, 724, 135, 2, 52, "Input"], Cell[18348, 728, 50, 0, 41, "Text"], Cell[18401, 730, 120, 2, 52, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[18558, 737, 98, 2, 36, "Subsection", Evaluatable->False], Cell[18659, 741, 157, 4, 62, "Text"] }, Closed]] }, Open ]] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)