(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.0' 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[ 38853, 1282]*) (*NotebookOutlinePosition[ 63293, 2166]*) (* CellTagsIndexPosition[ 63249, 2162]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["Excitable Media", "Title"], Cell["R.G. Palmer, Duke University, 3/4/05", "Subsubtitle"], Cell[CellGroupData[{ Cell["Background and Copyright", "Subsection"], Cell[TextData[{ "This ", StyleBox["Mathematica", FontSlant->"Italic"], " Notebook was written by Richard G. Palmer (Physics Department, Duke \ University) for use in a course he taught. As of 1999, it has been made \ available for general non-profit use under the following copyright \ provision." }], "Text"], Cell[TextData[{ StyleBox["This Mathematica Notebook is Copyright Richard G. Palmer, 1997", FontWeight->"Bold"], ". It may be freely used by individuals, and by classes at academic \ institutions, provided:\n1. Credit is given to Richard Palmer as the original \ author; and\n2. It is not bought or sold or exchanged for profit, or \ incorporated into material that is bought or sold or exchanged for profit.\n\ Any other use requires the written permission of Richard Palmer, Dept. of \ Physics, Box 90305, Duke University, Durham, NC 27708, USA.", "See ", StyleBox["http://www.phy.duke.edu/~palmer", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " for the email address." }], "Text"], Cell[TextData[{ "See ", StyleBox["http://www.phy.duke.edu/~palmer/notebooks/", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " for other ", StyleBox["Mathematica", FontSlant->"Italic"], " noteboks by Richard Palmer." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Introduction", "Section"], Cell[TextData[{ "This notebook demonstrates a simple cellular automaton (CA) for an \ excitable medium. It is simpler than a full system for the \ Belousov-Zhabotinsky reaction, but can nevertheless show a number of the \ properties of such systems. This implementation is sometimes called a \ \"Spiral CA\", and is based on the description given in ", StyleBox["Computer Simulations With Mathematica", FontSlant->"Italic"], " by R.J. Gaylord and P.R. Wellin (Springer 1995) which came from J.M. \ Greenberg and S.P. Hastings (1978).." }], "Text"], Cell["\<\ The CA consists of a two-dimensional square array of cells, of \ size L x L. There are \"periodic boundary conditions\", with the right side \ wrapping around to the left and the top side wrapping around to the bottom, \ so that every cell has four neighbors, to the North, South, East, and West. \ Every cell is in one of five states, represented by integer values 0, 1, 2, \ -1, and -2:\ \>", "Text", CellDingbat->None], Cell["Dormant (0) - an ordinary unexcited cell", "Text", CellDingbat->"\[FilledSmallSquare]", CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell["Excited (1) - a [temporaily] excited cell", "Text", CellDingbat->"\[FilledSmallSquare]", CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell["\<\ Refractory (-1) - a cell that [temporarily] can't become \ excited\ \>", "Text", CellDingbat->"\[FilledSmallSquare]", CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell["Inert (-2) - a cell that's stuck in a dormant state", "Text", CellDingbat->"\[FilledSmallSquare]", CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell["Wild (2) - a cell that's stuck in an excited state", "Text", CellDingbat->"\[FilledSmallSquare]", CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell["\<\ The last two (Inert and Wild) are special states that never change. \ They aren't used much in this notebook, but may be interesting to employ in \ further investigations.\ \>", "Text", CellDingbat->None], Cell["\<\ The CA rules for going from one timestep to the next are as \ follows:\ \>", "Text", CellDingbat->None], Cell["\<\ A dormant cell becomes excited if any of its four neighbors is \ excited or wild\ \>", "Text", CellDingbat->"\[FilledSmallCircle]", CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell["Otherwise, a dormant cell remains dormant", "Text", CellDingbat->"\[FilledSmallCircle]", CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell["An excited cell becomes refractory", "Text", CellDingbat->"\[FilledSmallCircle]", CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell["A refractory cell becomes dormant", "Text", CellDingbat->"\[FilledSmallCircle]", CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell["Inert cells and wild cells remain inert or wild respectively", "Text", CellDingbat->"\[FilledSmallCircle]", CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell["\<\ That's it -- apart from initial conditions, in which much of the \ subtlety lies.\ \>", "Text", CellDingbat->None], Cell[TextData[{ StyleBox["Note", FontSlant->"Italic"], ": You might want to look at the very last section of this notebook (the \ Exercise) first, so you can keep in mind what it is you'll need to do while \ you're working through the rest." }], "Text"], Cell[TextData[{ "This notebook is set up in the same way as the RBN one, and shares many \ features with that one and the Sandpile one. It first defines a lot of \ useful functions, and then explores their use. ", StyleBox[ "You do not need to understand the definitions, only how to use them", FontSlant->"Italic"], ". Do the following:" }], "Text"], Cell["\<\ Make sure that the following \"Definitions\" section is a closed \ group, showing just the title line. Select the whole section with a single \ click on the outer cell bracket (the one with the downward-pointing arrow). \ Press Enter (or Shift-Return) to evaluate the whole section -- this may take \ a little while; wait for \"Running\" to disappear from the title bar. Then \ go on to the next section, \"Making and Examining an Array\".\ \>", "Text", CellFrame->True, Background->GrayLevel[0.849989]] }, Closed]], Cell[CellGroupData[{ Cell["Definitions", "Section"], Cell[TextData[{ "Note: You do not need to read or understand any of this \"Definitions\" \ section. It uses some pretty sophisticated ", StyleBox["Mathematica", FontSlant->"Italic"], " constructs, and is definitely not for beginners. You can close up this \ whole section and evaluate it as a whole, as explained above." }], "Text", FontSlant->"Italic"], Cell["\<\ The explanatory text in this section is for documentation by the \ author, not a tutorial.\ \>", "Text"], Cell[BoxData[ \(Off[General::spell1]\)], "Input"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(Needs["\"];\)\)}], "Input"], Cell["Symbolic names for states", "Text"], Cell[BoxData[ \(EX = 1; DO = 0; RE = \(-1\); IN = \(-2\); WI = 2;\)], "Input"], Cell[BoxData[{ \(\(dormantGray = GrayLevel[0.5];\)\), "\n", \(\(excitedGray = GrayLevel[1];\)\), "\n", \(\(refractoryGray = GrayLevel[0];\)\), "\n", \(\(inertGray\ = \ GrayLevel[0.4];\)\), "\n", \(\(wildGray\ = \ GrayLevel[0.9];\)\)}], "Input"], Cell[BoxData[{ \(\(dormantColor = RGBColor[0.9, 0.9, 0.9];\)\), "\n", \(\(excitedColor = RGBColor[1, 0, 0];\)\), "\n", \(\(refractoryColor = RGBColor[0, 0, 0];\)\), "\n", \(\(inertColor\ = \ RGBColor[0, 0, 1];\)\), "\n", \(\(wildColor\ = \ RGBColor[0, 1, 0];\)\)}], "Input"], Cell["Gray and Color:", "Text"], Cell[BoxData[ \(excgray := {0 -> dormantGray, 1 -> excitedGray, \(-1\) -> refractoryGray, \(-2\) -> inertGray, 2 -> wildGray}\)], "Input"], Cell[BoxData[ \(exccolor := {0 -> dormantColor, 1 -> excitedColor, \(-1\) -> refractoryColor, \(-2\) -> inertColor, 2 -> wildColor}\)], "Input"], Cell[TextData[{ StyleBox["threeway[p1,p2]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " gives 1 with probability p1, -1 with probability p2, 0 otherwise." }], "Text"], Cell[BoxData[ \(threeway[p1_, p2_]\ := \ Which[\((rr = Random[Real])\) <= p1, 1, \ rr <= p1 + p2, \(-1\), \ True, 0]\)], "Input"], Cell["Various ways to make an array:", "Text"], Cell[BoxData[ \(MakeArray[L_]\ := \ \ \((side = L; carray = Table[0, {L}, {L}];)\)\)], "Input"], Cell[BoxData[ \(MakeArray[L_, 0, 0]\ := \ MakeArray[L]\)], "Input"], Cell[BoxData[ \(MakeArray[L_, pe_, pr_]\ := \ \((side = L; \n\t\tcarray = Table[threeway[pe, pr], {L}, {L}];)\)\)], "Input"], Cell["Initial:", "Text"], Cell[BoxData[ \(MakeArray[10]\)], "Input"], Cell["Ways to change specific cells or lines:", "Text"], Cell[BoxData[ \(SetCell[x_Integer, y_Integer, value_Integer]\ := \ \((\(carray[\([Mod[side - y, side] + 1, Mod[side + x - 1, side] + 1]\)]\ = \ value;\))\) /; \(-2\) <= value <= 2\)], "Input"], Cell[BoxData[ \(SetLine[x1_Integer, y1_Integer, x2_Integer, y2_Integer, value_Integer] := Module[{m, n, d}, \[IndentingNewLine]m = Abs[x2 - x1]; n = Abs[y2 - y1]; \[IndentingNewLine]Which[\[IndentingNewLine]m \ \[GreaterEqual] n\ && \ m \[NotEqual] 0, \[IndentingNewLine]d = Sign[x2 - x1]; \[IndentingNewLine]Do[ carray[\([Mod[ side - Round[side + y1 + i*\((y2 - y1)\)/m + 0.00001], side] + 1, Mod[side + x1 + i*d - 1, side] + 1]\)] = value, {i, 0, m}], \[IndentingNewLine]m < n, \[IndentingNewLine]d = Sign[y2 - y1]; \[IndentingNewLine]Do[ carray[\([Mod[side - \((y1 + i*d)\), side] + 1, Mod[Round[side + x1 + i*\((x2 - x1)\)/n - 1.00001], side] + 1]\)] = value, {i, 0, n}], \[IndentingNewLine]True, SetCell[x1, y1, value]\[IndentingNewLine]]\[IndentingNewLine]] /; \(-2\) <= value <= 2\)], "Input"], Cell["Undocumented:", "Text"], Cell[BoxData[ \(Rotate[x_, y_] := \((\(carray = RotateRight[carray, {\(-y\), x}];\))\)\)], "Input"], Cell["Subroutine by GraphicsArray by rows.", "Text"], Cell[BoxData[ \(cpart[row_, ca_] := If[Mod[Length[ca], row] \[Equal] 0, Partition[ca, row], Append[Partition[ca, row], Take[ca, \(-Mod[Length[ca], row]\)]]]\)], "Input"], Cell["\<\ Various ways to display it (undocumented ShowGrays). Each of these \ can be applied either to a single array or to a list of arrays, in which case \ they produce a series of drawings suitable for animation. With an empty \ argumant they display carray.\ \>", "Text"], Cell[BoxData[{ \(ShowMatrix[ca_List /; MatrixQ[ca]] := \ MatrixForm[ca]\), "\n", \(ShowMatrix[ ca : {{{__} .. } .. }] := \((\(\(Print[MatrixForm[#]] &\) /@ ca;\))\)\), "\n", \(ShowMatrix[] := ShowMatrix[carray]\)}], "Input"], Cell[BoxData[{ \(\(ShowStates[ca_List /; MatrixQ[ca]] := \ MatrixForm[ ca /. {1 -> "\", \(-1\) -> "\", \(-2\) -> "\", 2 -> "\"}];\)\), "\n", \(ShowStates[ ca : {{{__} .. } .. }] := \((\(\(Print[ShowStates[#]] &\) /@ ca;\))\)\), "\n", \(ShowStates[] := ShowStates[carray]\)}], "Input"], Cell[BoxData[{ \(ShowGrays[ ca_List /; MatrixQ[ca]] := \((\(Show[ Graphics[RasterArray[Reverse[ca] /. excgray]], AspectRatio -> Automatic];\))\)\), "\n", \(ShowGrays[ ca : {{{__} .. } .. }] := \((\(ShowGrays /@ ca;\))\)\), "\n", \(ShowGrays[row_Integer, ca : {{{__} .. } .. }] := \((\(Show[ GraphicsArray[ Map[\((Graphics[RasterArray[Reverse[#] /. excgray], AspectRatio -> Automatic])\) &, cpart[row, ca], {2}]]];\))\)\), "\[IndentingNewLine]", \(ShowGrays[]\ := \ ShowGrays[carray]\)}], "Input"], Cell[BoxData[{ \(ShowColors[ ca_List /; MatrixQ[ca]] := \((\(Show[ Graphics[RasterArray[Reverse[ca] /. exccolor]], AspectRatio -> Automatic];\))\)\), "\n", \(ShowColors[ ca : {{{__} .. } .. }] := \((\(ShowColors /@ ca;\))\)\), "\[IndentingNewLine]", \(ShowColors[row_Integer, ca : {{{__} .. } .. }] := \((\(Show[ GraphicsArray[ Map[\((Graphics[RasterArray[Reverse[#] /. exccolor], AspectRatio -> Automatic])\) &, cpart[row, ca], {2}]]];\))\)\), "\n", \(ShowColors[]\ := \ ShowColors[carray]\)}], "Input"], Cell[BoxData[ \(ColorsExample[]\ := \ Module[{}, excol = Table[threeway[0.1, 0.1], {10}, {10}]; \ excol[\([Random[Integer, {1, 10}], Random[Integer, {1, 10}]]\)] = \(-2\); excol[\([Random[Integer, {1, 10}], Random[Integer, {1, 10}]]\)] = 2; Show[Graphics[RasterArray[excol /. exccolor]], AspectRatio -> Automatic];]\)], "Input"], Cell[BoxData[{ \(ShowColumns[ ca_List /; MatrixQ[ca]] := \((\(BarChart3D[Transpose[Reverse[ca]], Axes \[Rule] False, Boxed \[Rule] False, PlotRange \[Rule] {0, 1}, BoxRatios -> {1, 1, 0.2}];\))\)\), "\n", \(ShowColumns[ ca : {{{__} .. } .. }] := \((\(ShowColumns /@ ca;\))\)\), "\n", \(ShowColumns[] := ShowColumns[carray]\)}], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(ShowTorus[ca_List /; MatrixQ[ca], x_: 0, y_: 0]\ := Module[{xs, ys}, {xs, ys} = Dimensions[ca]; Show[Graphics3D[ Transpose[{\((Flatten[RotateRight[ca, {\(-y\), x}]] /. exccolor)\), Torus[1, 0.5, xs, ys]}]], Lighting -> False, Boxed -> False];]\), "\[IndentingNewLine]", \(ShowTorus[ca : {{{__} .. } .. }, x_: 0, y_: 0] := \((\(\(ShowTorus[#, x, y] &\) /@ ca;\))\)\), "\[IndentingNewLine]", \(ShowTorus[row_Integer, ca : {{{__} .. } .. }, x_: 0, y_: 0] := Module[{xs, ys}, {xs, ys} = Drop[Dimensions[ca], 1]; Show[GraphicsArray[ Map[\((Graphics3D[ Transpose[{\((Flatten[RotateRight[#, {\(-y\), x}]] /. exccolor)\), Torus[1, 0.5, xs, ys]}], Lighting -> False, Boxed -> False])\) &, cpart[row, ca], {2}]]];]\), "\[IndentingNewLine]", \(ShowTorus[] := ShowTorus[carray]\)}], "Input"], Cell["Functions to return counts:", "Text"], Cell[BoxData[{ \(excited[ca_List /; MatrixQ[ca]] := Count[Flatten[ca], 1]\), "\n", \(excited[ca_List /; TensorRank[ca] == 3] := excited /@ ca\), "\n", \(excited[] := excited[carray]\), "\n", \(refractory[ca_List /; MatrixQ[ca]] := Count[Flatten[ca], \(-1\)]\), "\n", \(refractory[ca_List /; TensorRank[ca] == 3] := refractory /@ ca\), "\n", \(refractory[] := refractory[carray]\), "\n", \(dormant[ca_List /; MatrixQ[ca]] := Count[Flatten[ca], 0]\), "\n", \(dormant[ca_List /; TensorRank[ca] == 3] := dormant /@ ca\), "\n", \(dormant[] := dormant[carray]\), "\n", \(inert[ca_List /; MatrixQ[ca]] := Count[Flatten[ca], \(-2\)]\), "\n", \(inert[ca_List /; TensorRank[ca] == 3] := inert /@ ca\), "\n", \(inert[] := inert[carray]\), "\n", \(wild[ca_List /; MatrixQ[ca]] := Count[Flatten[ca], 2]\), "\n", \(wild[ca_List /; TensorRank[ca] == 3] := wild /@ ca\), "\n", \(wild[] := wild[carray]\)}], "Input"], Cell[BoxData[{ \(counts[ca_List /; MatrixQ[ca]] := Module[{fca = Flatten[ca]}, \((Count[fca, #] &)\) /@ {\(-2\), \(-1\), 0, 1, 2}]\), "\n", \(counts[ca_List /; TensorRank[ca] == 3] := counts /@ ca\), "\n", \(counts[] := counts[carray]\)}], "Input"], Cell["Functions to run the CA:", "Text"], Cell[BoxData[{ \(\(carule[a_, \ b_, \ 0, \ d_, \ e_]\ := \ Min[Max[a, b, d, e, 0], 1];\)\), "\n", \(\(carule[_, \ _, \ 1, \ _, \ _]\ := \(-1\);\)\ \), "\n", \(\(carule[_, \ _, \(-1\), \ _, \ _]\ := \ 0;\)\), "\n", \(\(carule[_, \ _, c_, \ _, \ _]\ := c;\)\), "\n", \(\(Attributes[carule]\ = \ Listable;\)\)}], "Input"], Cell[BoxData[ \(step[ca_] := carule[RotateRight[ca], \ Map[RotateLeft, \ ca], ca, \ \n\ \ \ \ \ \ \ \ \ \ \ \ \ RotateLeft[ca], \ Map[RotateRight, ca]]\)], "Input"], Cell[BoxData[ \(ExcitedNest[ca_List, nsteps_]\ := \ Module[{elist = {}, final}, \n\t\tfinal = Nest[\((elist = {elist, Count[Flatten[#], 1]}; step[#])\) &, ca, nsteps]; \nFlatten[{elist, excited[final]}]]\)], "Input"], Cell[BoxData[ \(\(On[General::spell1];\)\)], "Input", AspectRatioFixed->True] }, Closed]], Cell[CellGroupData[{ Cell["Making and Examining an Array", "Section"], Cell[TextData[{ "The first thing we need to do is to make an array of cells. Each cell \ will be randomly set to one of the three normal states initially. The \ parameters are:\nL - the size of the array in each dimension;\npe - the \ probability that a cell is ", StyleBox["excited", FontSlant->"Italic"], " initially;\npr - the probability that a cell is ", StyleBox["refractory", FontSlant->"Italic"], " initially.\nThe probability that a cell is dormant initially is 1 - pe - \ pr; we won't normally set any cells to inert or wild states. The function ", StyleBox["MakeArray[L,pe,pr]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " does the job, but doesn't produce any output:" }], "Text"], Cell[BoxData[ \(MakeArray[10, 0.1, 0.1]\)], "Input"], Cell[TextData[{ "There are several different ways to look at the array. First, you can \ look at it in raw ", StyleBox["Mathematica", FontSlant->"Italic"], " form, as a list of lists, just by giving its name, which is ", StyleBox["carray", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ":" }], "Text"], Cell[BoxData[ \(carray\)], "Input"], Cell["You can look at it as a matrix with", "Text"], Cell[BoxData[ \(ShowMatrix[carray]\)], "Input"], Cell["\<\ You can look at it as a matrix with the numerical values replaced \ by appropriate letters with\ \>", "Text"], Cell[BoxData[ \(ShowStates[carray]\)], "Input"], Cell["You can look at it as an array of colored cells:", "Text"], Cell[BoxData[ \(ShowColors[carray]\)], "Input"], Cell["\<\ The default colors are red for excited, black for refractory, and \ gray for dormant. Inert and wild cells would show up as blue and green \ respectively. But you can change the colors if you wish -- see the following \ optional section.\ \>", "Text"], Cell["\<\ You can make a 3D display, showing just the excited (and wild) \ states as raised; everything else is shown \"flat\":\ \>", "Text"], Cell[BoxData[ \(ShowColumns[carray]\)], "Input"], Cell[TextData[{ "Finally, you can make a display similar in principle to that of ", StyleBox["ShowColors[]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", but wrapped onto a torus, as implied by the period boundary conditions:" }], "Text"], Cell[BoxData[ \(ShowTorus[carray]\)], "Input", AnimationDisplayTime->0.0563277], Cell[TextData[{ StyleBox["ShowTorus[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["carray", FontFamily->"Courier", FontSize->12, FontWeight->"Bold", FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["x", FontFamily->"Courier", FontSize->12, FontWeight->"Bold", FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["y", FontFamily->"Courier", FontSize->12, FontWeight->"Bold", FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " allows you to see hidden parts of the system. Use (", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ") to specify which cell is shown on the torus where (0, 0) is ordinarily." }], "Text"], Cell[BoxData[ \(ShowTorus[carray, 0, \(-1\)]\)], "Input"], Cell[TextData[{ "If you want to change the state of a particular cell you can do so with ", StyleBox["SetCell[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["x", FontSlant->"Italic"], ",", StyleBox["y", FontSlant->"Italic"], ",", StyleBox["state", FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", where ", StyleBox["x", FontSlant->"Italic"], " and ", StyleBox["y", FontSlant->"Italic"], " are the cell's coordinates (measured across and up from the bottom left), \ and ", StyleBox["state", FontSlant->"Italic"], " is the desired state (-2 to 2). This changes ", StyleBox["carray", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " directly. You can use the constants ", StyleBox["EX", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", ", StyleBox["RE", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", ", StyleBox["DO", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", ", StyleBox["IN", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", and ", StyleBox["WI", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " for the states instead of the numerical values if you prefer. For \ example, to create a wild cell at (3,4):" }], "Text"], Cell[BoxData[ \(SetCell[3, 4, WI]\)], "Input"], Cell[BoxData[ \(ShowColors[carray]\)], "Input"], Cell[TextData[{ "You can also set a whole ", StyleBox["line", FontSlant->"Italic"], " of cells to a particular state with ", StyleBox["SetLine[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["x1", FontSlant->"Italic"], ",", StyleBox["y1", FontSlant->"Italic"], ",", StyleBox["x2", FontSlant->"Italic"], ",", StyleBox["y2", FontSlant->"Italic"], ",", StyleBox["state", FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", where (", StyleBox["x1", FontSlant->"Italic"], ",", StyleBox["y1", FontSlant->"Italic"], ") and (", StyleBox["x2", FontSlant->"Italic"], ",", StyleBox["y2", FontSlant->"Italic"], ") are the two ends of the line. This works for horizontal, vertical, and \ diagonal lines. For example:" }], "Text"], Cell[BoxData[ \(SetLine[1, 5, 5, 5, IN]\)], "Input"], Cell[BoxData[ \(ShowColors[carray]\)], "Input"], Cell["\<\ If you want to gather statistics, you can use the following \ functions to see how many cells are in each state:\ \>", "Text"], Cell[BoxData[ \(excited[carray]\)], "Input"], Cell[BoxData[ \(refractory[carray]\)], "Input"], Cell[BoxData[ \(dormant[carray]\)], "Input"], Cell[BoxData[ \(inert[carray]\)], "Input"], Cell[BoxData[ \(wild[carray]\)], "Input"], Cell["\<\ To get all at once (in the order -2..2, or inert, refractory, \ dormant, excited, wild), you can use:\ \>", "Text"], Cell[BoxData[ \(counts[carray]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Optional -- Changing the colors", "Section"], Cell[TextData[{ "You can change any of the colors if you like by changing anything on the \ right-hand side of the following assigments. In ", StyleBox["RGBColor[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["r,g,b", FontFamily->"Courier", FontSize->12], StyleBox["] ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "the three parameters must each be between 0 (none) and 1 (full), and give \ the amounts of red, green, and blue that make up the color." }], "Text"], Cell[BoxData[ \(\(dormantColor = RGBColor[0.9, 0.9, 0.9];\)\)], "Input"], Cell[BoxData[ \(\(excitedColor = RGBColor[1, 0, 0];\)\)], "Input"], Cell[BoxData[ \(\(refractoryColor = RGBColor[0, 0, 0];\)\)], "Input"], Cell[BoxData[ \(\(inertColor\ = \ RGBColor[0, 0, 1];\)\)], "Input"], Cell[BoxData[ \(\(wildColor\ = \ RGBColor[0, 1, 0];\)\)], "Input"], Cell["\<\ You can see color samples by executing the following command:\ \>", \ "Text"], Cell[BoxData[ \(ColorsExample[]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Running the CA", "Section"], Cell["\<\ The basic operation on the array is to update it by one step, so \ all the cells are set to what the CA rules say as a function of their own \ current state and their neighbor's states. That can be done with\ \>", "Text"], Cell[BoxData[ \(step[carray]\)], "Input"], Cell[TextData[{ "Note carefully that this doesn't reset the ", StyleBox["carray", "Input", FontSize->12], " variable itself; it just produces the successor state. If you want to \ reset ", StyleBox["carray", "Input", FontSize->12], " you need to say" }], "Text"], Cell[BoxData[ \(carray\ = \ step[carray]\)], "Input"], Cell[TextData[{ "To see these changes, you need to use one of the ", StyleBox["Show...", "Input", FontSize->12], " functions. E.g." }], "Text"], Cell[BoxData[ \(ShowColors[carray]\)], "Input"], Cell["\<\ Do you see what happened? All the cells that were originally \ excited are now refractory, but they're surrounded by a bloom of newly \ excited states (except where there was previously a refractory state).\ \>", "Text"], Cell[TextData[{ "Here's a new example, showing both the old and new state (all the ", StyleBox["Show...", "Input", FontSize->12], " functions can be given a ", StyleBox["list", FontSlant->"Italic"], " of things to display):" }], "Text"], Cell[BoxData[{ \(\(MakeArray[10, 0.1, 0.1];\)\), "\n", \(ShowColors[{carray, step[carray]}]\)}], "Input"], Cell[TextData[{ "Evaluate the above expression as many times as you wish until you're 100% \ comfortable with what's happening. Note the effect of the periodic boundary \ conditions. You may also want to change to a different display function (", StyleBox["ShowMatrix", "Input", FontSize->12], ", ", StyleBox["ShowStates", "Input", FontSize->12], ", ", StyleBox["ShowColors", "Input", FontSize->12], ", ", StyleBox["ShowColumns", "Input", FontSize->12], ", ", StyleBox["ShowTorus", "Input", FontSize->12], "), or try changing the parameters in ", StyleBox["MakeArray", "Input", FontSize->12], "." }], "Text"], Cell["You could do 3 steps, and then display, with", "Text"], Cell[BoxData[ \(ShowColors[step[step[step[carray]]]]\)], "Input"], Cell["or, equivalently, with", "Text"], Cell[BoxData[ \(ShowColors[Nest[step, carray, 3]]\)], "Input"], Cell[TextData[{ "(the last two results should be the same). Do you remember ", StyleBox["Nest[]", "Input", FontSize->12], " and ", StyleBox["NestList[]", "Input", FontSize->12], "? If not, check the following definitions:" }], "Text"], Cell[BoxData[ \(\(?Nest\)\)], "Input"], Cell[BoxData[ \(\(?NestList\)\)], "Input"], Cell[TextData[{ "Using ", StyleBox["NestList[]", "Input", FontSize->12], " we can show a sequence of steps:" }], "Text"], Cell[BoxData[ \(ShowColors[NestList[step, carray, 3]]\)], "Input", AnimationDisplayTime->0.123752, AnimationCycleOffset->1, AnimationCycleRepetitions->Infinity], Cell["\<\ Note that that includes the original state as the first element of \ the result, so we got 4 frames in all.\ \>", "Text"], Cell[TextData[{ "Also note again that none of the above operations (", StyleBox["Nest", "Input", FontSize->12], ", ", StyleBox["NestList", "Input", FontSize->12], ", or ", StyleBox["step", "Input", FontSize->12], " itself) resets ", StyleBox["carray", "Input", FontSize->12], " at all. You could use ", StyleBox["carray = Nest[...]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " or ", StyleBox["carray = Last[NestList[...]]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " if you wanted to reset ", StyleBox["carray", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " to the last state in a sequence." }], "Text"], Cell[TextData[{ "You can animate a sequence of frames, such as those above, by \ double-clicking beside one of them (or use the ", StyleBox["Animate Selected Graphics", FontWeight->"Bold"], " command on the ", StyleBox["Cell", FontWeight->"Bold"], " menu). You may want to slow this down to get a sensible movie, using the \ \"tape-recorder\" controls at the bottom of the window. " }], "Text"], Cell[TextData[{ "In order to get a general idea of what's going on, you could just look at \ the number of excited cells as a function of time. ", StyleBox["excited[]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " will also accept a list of states, so the following works:" }], "Text"], Cell[BoxData[{ \(\(MakeArray[10, 0.1, 0.1];\)\), "\n", \(\(statelist\ = \ NestList[step, carray, 30];\)\), "\n", \(\(excitedlist = excited[statelist];\)\), "\n", \(\(ListPlot[excitedlist, \ PlotJoined -> True];\)\)}], "Input"], Cell[TextData[{ "You'll probably see this settling down to a regular oscillation after a \ while. ", StyleBox["If not, try it again until you do.", FontSlant->"Italic", FontColor->RGBColor[1, 0, 0]], " What's going on? We can take a look by displaying a movie of the second \ part of statelist, after the transient. For example, if the repeating cycle \ started after 15 steps, and lasted for 4 steps, we could use" }], "Text"], Cell[BoxData[ \(ShowColors[Take[Drop[statelist, 15], 4]]\)], "Input", AnimationDisplayTime->0.353449], Cell[TextData[StyleBox["You'll need to adjust the 15 and the 4 to suit your \ own case.", FontSlant->"Italic", FontColor->RGBColor[1, 0, 0]]], "Text"], Cell["\<\ Are you wiser now? Probably not much. All sorts of patterns in \ this CA can become periodic, and they generally don't have any particularly \ transparent rhyme or reason.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Optional -- Saving memory for large cases", "Section"], Cell[TextData[{ "If you want to look at any large samples for large numbers of steps, it \ uses a lot of memory to use the above approach of first constructing a comple \ list (", StyleBox["statelist", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ") of the whole sequence of states, and then applying ", StyleBox["excited[]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " to it. If you just want the list of how many states are excited, you can \ use the following instead:" }], "Text"], Cell[BoxData[ \(excitedlist\ = \ ExcitedNest[carray, 30]\)], "Input"], Cell["\<\ The arguments are the starting state and the number of iterations. \ This has exactly the same effect as\ \>", "Text"], Cell[BoxData[{ \(\(statelist\ = \ NestList[step, carray, 30];\)\), "\n", \(excitedlist = excited[statelist]\)}], "Input"], Cell[TextData[{ "except that it doesn't produce ", StyleBox["statelist", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " (or save the final state at all)." }], "Text"], Cell["\<\ So you can plot the number of excited states efficiently with, for \ example:\ \>", "Text"], Cell[BoxData[ \(\(ListPlot[ExcitedNest[carray, 30], \ PlotJoined -> True];\)\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Spirals", "Section"], Cell["\<\ Weren't there supposed to be spirals? Well, this CA can produce \ spirals, but unless you're very lucky you won't see them from a random \ initial condition. Instead we need to make explore special starting \ conditions.\ \>", "Text"], Cell["\<\ Here's a starting condition with a single line of excited cells, \ and the rest dormant. Make sure you understand how I did this. I'm using \ L=20 now.\ \>", "Text"], Cell[BoxData[{ \(\(MakeArray[20, 0, 0];\)\), "\n", \(SetLine[1, 10, 20, 10, EX]\)}], "Input"], Cell[BoxData[ \(ShowColors[carray]\)], "Input"], Cell["Iterate it:", "Text"], Cell[BoxData[ \(ShowColors[NestList[step, carray, 12]]\)], "Input", AnimationDisplayTime->0.03333], Cell["\<\ Hmm, that's a bit disappointing. We get two waves, which then \ annihilate.\ \>", "Text"], Cell["\<\ To get a single wave (which can't then meet itself) we can start \ with a double strip, one of excited cellls and one of refractory cells right \ below it.\ \>", "Text"], Cell[BoxData[{ \(\(MakeArray[20, 0, 0];\)\), "\n", \(\(SetLine[1, 10, 20, 10, EX];\)\), "\n", \(SetLine[1, 9, 20, 9, RE]\)}], "Input"], Cell[BoxData[ \(ShowColors[NestList[step, carray, 19]]\)], "Input", AnimationDisplayTime->0.073226, AnimationCycleOffset->1, AnimationCycleRepetitions->Infinity], Cell[TextData[{ "And here at last is a spiral, obtained by starting with ", StyleBox["half", FontSlant->"Italic"], " a double line:" }], "Text"], Cell[BoxData[{ \(\(MakeArray[20, 0, 0];\)\), "\n", \(\(SetLine[6, 10, 15, 10, EX];\)\), "\n", \(SetLine[6, 9, 15, 9, RE]\)}], "Input"], Cell[BoxData[ \(ShowColors[NestList[step, carray, 6]]\)], "Input", AnimationDisplayTime->0.123752, AnimationCycleOffset->1, AnimationCycleRepetitions->Infinity], Cell[TextData[{ "There are two spirals, one coming from each end of the moving double line. \ And pretty soon they hit each other and make a bit of a mess. To see a well \ developed spiral you have to make L considerably larger. How large you can \ go depends on how much memory you have. In any case ", StyleBox["save your work before trying any large cases! But your files \ will get very large if you include many large figures in them -- you may want \ to delete some pictures before saving.", FontSlant->"Italic", FontColor->RGBColor[1, 0, 0]] }], "Text"], Cell[TextData[{ "Here's the basic setup again in terms of the size L. ", StyleBox["Make the L value as large as you can in terms of your computer \ and your patience.", FontSlant->"Italic"], " (", StyleBox["Ceiling[n]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " gives the smallest integer greater than or equal to ", StyleBox["n", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", to replace any possible fractions by whole numbers.)" }], "Text"], Cell[BoxData[{ \(\(L = 80;\)\), "\n", \(\(halfL = Ceiling[L/2];\)\), "\[IndentingNewLine]", \(\(quarterL = Ceiling[L/4];\)\), "\n", \(\(MakeArray[L, 0, 0];\)\), "\n", \(\(SetLine[quarterL, halfL, L - quarterL, halfL, EX];\)\), "\n", \(\(SetLine[quarterL, halfL - 1, L - quarterL, halfL - 1, RE];\)\), "\n", \(ShowColors[NestList[step, carray, quarterL]]\)}], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Exercise", "Section"], Cell[TextData[{ "Here are some possible things for you to investigate. I don't know the \ answer to all of them, so I'm looking forward to seeing your results. Pick ", StyleBox["two", FontSlant->"Italic"], " of them and see what you can find out. I'll be looking for a \ \"scientific\" approach (planned, systematic, not over-claiming), careful \ observation, thoughtful comments or explanations, and a coherent \ presentation. This needn't be lengthy though." }], "Text"], Cell["1. What happens in the long term to the \"spiral\" case?", "Text"], Cell["\<\ 2. What happens if you start a random case with no refractory cells \ initially? Does this depend on the initial concentration of excited cells?\ \ \>", "Text"], Cell["\<\ 3. What happens if almost all cells are excited initially, with or \ without a few refractory cells?\ \>", "Text"], Cell[TextData[{ "4. What happens with a ", StyleBox["single", FontSlant->"Italic"], " line (of excited cells) that only goes halfway across?" }], "Text"], Cell["\<\ 5. What happens with a very short (e.g. one or two cells) single \ line?\ \>", "Text"], Cell["\<\ 6. What happens with a very short (e.g. one or two cells) double \ line?\ \>", "Text"], Cell["\<\ 7. What happens with a very long (e.g. all but one or two cells) \ single line?\ \>", "Text"], Cell["\<\ 8. What happens with a very long (e.g. all but one or two cells) \ double line?\ \>", "Text"], Cell["\<\ 9. What happens with a complete diagonal line? How does this \ depend on the slope? (Looking on the torus may be especially helpful \ here.)\ \>", "Text"], Cell["\<\ 10. What happens if one or more cells are inert? Can waves or \ spirals get around them?\ \>", "Text"], Cell["11. What happens if one or more cells are wild?", "Text"], Cell["\<\ Or, if you prefer, make up some reasonable questions of your own.\ \ \>", "Text"] }, Closed]] }, Open ]] }, FrontEndVersion->"5.0 for X", ScreenRectangle->{{0, 1280}, {0, 1024}}, WindowToolbars->{}, WindowSize->{560, 575}, WindowMargins->{{24, Automatic}, {Automatic, 72}}, PrintingPageRange->{Automatic, Automatic}, PrintingOptions->{"PaperSize"->{612, 792}, "PaperOrientation"->"Portrait", "PostScriptOutputFile":>FrontEnd`FileName[{$RootDirectory, "home", \ "einstein", "palmer", "public_html", "notebooks"}, "Excitable.nb.ps", \ CharacterEncoding -> "iso8859-1"], "Magnification"->1}, StyleDefinitions -> Notebook[{ Cell[CellGroupData[{ Cell["Style Definitions", "Subtitle"], Cell["\<\ Modify the definitions below to change the default appearance of \ all cells in a given style. Make modifications to any definition using \ commands in the Format menu.\ \>", "Text"], Cell[CellGroupData[{ Cell["Style Environment Names", "Section"], Cell[StyleData[All, "Working"], PageWidth->WindowWidth, ScriptMinSize->9], Cell[StyleData[All, "Presentation"], PageWidth->WindowWidth, ScriptMinSize->12, FontSize->16], Cell[StyleData[All, "Condensed"], PageWidth->WindowWidth, CellBracketOptions->{"Margins"->{1, 1}, "Widths"->{0, 5}}, ScriptMinSize->8, FontSize->11], Cell[StyleData[All, "Printout"], PageWidth->PaperWidth, ScriptMinSize->5, FontSize->10, PrivateFontOptions->{"FontType"->"Outline"}] }, Closed]], Cell[CellGroupData[{ Cell["Notebook Options", "Section"], Cell["\<\ The options defined for the style below will be used at the \ Notebook level.\ \>", "Text"], Cell[StyleData["Notebook"], PageHeaders->{{Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], None, Cell[ TextData[ { ValueBox[ "FileName"]}], "Header"]}, {Cell[ TextData[ { ValueBox[ "FileName"]}], "Header"], None, Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"]}}, CellFrameLabelMargins->6, StyleMenuListing->None] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Headings", "Section", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[StyleData["Title"], CellMargins->{{12, Inherited}, {20, 40}}, CellGroupingRules->{"TitleGrouping", 0}, PageBreakBelow->False, CounterIncrements->"Title", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}, { "Subtitle", 0}, {"Subsubtitle", 0}}, FontFamily->"Helvetica", FontSize->36, FontWeight->"Bold", FontColor->RGBColor[0, 0, 1], Background->None], Cell[StyleData["Title", "Presentation"], CellMargins->{{24, 10}, {20, 40}}, LineSpacing->{1, 0}, FontSize->44], Cell[StyleData["Title", "Condensed"], CellMargins->{{8, 10}, {4, 8}}, FontSize->20], Cell[StyleData["Title", "Printout"], CellMargins->{{2, 10}, {15, 30}}, FontSize->24] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subtitle"], CellMargins->{{12, Inherited}, {10, 15}}, CellGroupingRules->{"TitleGrouping", 10}, PageBreakBelow->False, CounterIncrements->"Subtitle", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}, { "Subsubtitle", 0}}, FontFamily->"Helvetica", FontSize->24, FontColor->RGBColor[0, 0, 1], Background->None], Cell[StyleData["Subtitle", "Presentation"], CellMargins->{{24, 10}, {15, 20}}, LineSpacing->{1, 0}, FontSize->36], Cell[StyleData["Subtitle", "Condensed"], CellMargins->{{8, 10}, {4, 4}}, FontSize->14], Cell[StyleData["Subtitle", "Printout"], CellMargins->{{2, 10}, {10, 15}}, FontSize->18] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsubtitle"], CellMargins->{{12, Inherited}, {10, 20}}, CellGroupingRules->{"TitleGrouping", 20}, PageBreakBelow->False, CounterIncrements->"Subsubtitle", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}}, FontFamily->"Helvetica", FontSize->14, FontSlant->"Italic", FontColor->RGBColor[0, 0, 1], Background->None], Cell[StyleData["Subsubtitle", "Presentation"], CellMargins->{{24, 10}, {10, 20}}, LineSpacing->{1, 0}, FontSize->24], Cell[StyleData["Subsubtitle", "Condensed"], CellMargins->{{8, 10}, {8, 12}}, FontSize->12], Cell[StyleData["Subsubtitle", "Printout"], CellMargins->{{2, 10}, {8, 10}}, FontSize->14] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Section"], CellDingbat->"\[FilledSquare]", CellMargins->{{25, Inherited}, {8, 24}}, CellGroupingRules->{"SectionGrouping", 30}, PageBreakBelow->False, CounterIncrements->"Section", CounterAssignments->{{"Subsection", 0}, {"Subsubsection", 0}}, FontFamily->"Helvetica", FontSize->16, FontWeight->"Bold", FontColor->RGBColor[0, 0, 1], Background->None], Cell[StyleData["Section", "Presentation"], CellMargins->{{40, 10}, {11, 32}}, LineSpacing->{1, 0}, FontSize->24], Cell[StyleData["Section", "Condensed"], CellMargins->{{18, Inherited}, {6, 12}}, FontSize->12], Cell[StyleData["Section", "Printout"], CellMargins->{{13, 0}, {7, 22}}, FontSize->14] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsection"], CellDingbat->"\[FilledSmallSquare]", CellMargins->{{22, Inherited}, {8, 20}}, CellGroupingRules->{"SectionGrouping", 40}, PageBreakBelow->False, CounterIncrements->"Subsection", CounterAssignments->{{"Subsubsection", 0}}, FontSize->14, FontWeight->"Bold", FontColor->RGBColor[1, 0, 0], Background->None], Cell[StyleData["Subsection", "Presentation"], CellMargins->{{36, 10}, {11, 32}}, LineSpacing->{1, 0}, FontSize->22], Cell[StyleData["Subsection", "Condensed"], CellMargins->{{16, Inherited}, {6, 12}}, FontSize->12], Cell[StyleData["Subsection", "Printout"], CellMargins->{{9, 0}, {7, 22}}, FontSize->12] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsubsection"], CellDingbat->"\[FilledSmallSquare]", CellMargins->{{22, Inherited}, {8, 18}}, CellGroupingRules->{"SectionGrouping", 50}, PageBreakBelow->False, CounterIncrements->"Subsubsection", FontWeight->"Bold", FontColor->RGBColor[1, 0, 1], Background->None], Cell[StyleData["Subsubsection", "Presentation"], CellMargins->{{34, 10}, {11, 26}}, LineSpacing->{1, 0}, FontSize->18], Cell[StyleData["Subsubsection", "Condensed"], CellMargins->{{17, Inherited}, {6, 12}}, FontSize->10], Cell[StyleData["Subsubsection", "Printout"], CellMargins->{{9, 0}, {7, 14}}, FontSize->11] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Body Text", "Section"], Cell[CellGroupData[{ Cell[StyleData["Text"], CellMargins->{{12, 10}, {7, 7}}, LineSpacing->{1, 3}, CounterIncrements->"Text", FontSize->14], Cell[StyleData["Text", "Presentation"], CellMargins->{{24, 10}, {10, 10}}, LineSpacing->{1, 5}], Cell[StyleData["Text", "Condensed"], CellMargins->{{8, 10}, {6, 6}}, LineSpacing->{1, 1}], Cell[StyleData["Text", "Printout"], CellMargins->{{2, 2}, {6, 6}}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["SmallText"], CellMargins->{{12, 10}, {6, 6}}, LineSpacing->{1, 3}, CounterIncrements->"SmallText", FontFamily->"Helvetica", FontSize->9], Cell[StyleData["SmallText", "Presentation"], CellMargins->{{24, 10}, {8, 8}}, LineSpacing->{1, 5}, FontSize->12], Cell[StyleData["SmallText", "Condensed"], CellMargins->{{8, 10}, {5, 5}}, LineSpacing->{1, 2}, FontSize->9], Cell[StyleData["SmallText", "Printout"], CellMargins->{{2, 2}, {5, 5}}, FontSize->7] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Input/Output", "Section"], Cell["\<\ The cells in this section define styles used for input and output \ to the kernel. Be careful when modifying, renaming, or removing these \ styles, because the front end associates special meanings with these style \ names.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Input"], CellMargins->{{45, 10}, {5, 7}}, Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, CellLabelMargins->{{11, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultInputFormatType, AutoItalicWords->{}, FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, CounterIncrements->"Input", FontWeight->"Bold"], Cell[StyleData["Input", "Presentation"], CellMargins->{{72, Inherited}, {8, 10}}, LineSpacing->{1, 0}], Cell[StyleData["Input", "Condensed"], CellMargins->{{40, 10}, {2, 3}}], Cell[StyleData["Input", "Printout"], CellMargins->{{39, 0}, {4, 6}}, FontSize->9] }, Closed]], Cell[StyleData["InputOnly"], Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, DefaultFormatType->DefaultInputFormatType, AutoItalicWords->{}, FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, CounterIncrements->"Input", StyleMenuListing->None, FontWeight->"Bold"], Cell[CellGroupData[{ Cell[StyleData["Output"], CellMargins->{{47, 10}, {7, 5}}, CellEditDuplicate->True, CellGroupingRules->"OutputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, CellLabelMargins->{{11, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultOutputFormatType, AutoItalicWords->{}, FormatType->InputForm, CounterIncrements->"Output"], Cell[StyleData["Output", "Presentation"], CellMargins->{{72, Inherited}, {10, 8}}, LineSpacing->{1, 0}], Cell[StyleData["Output", "Condensed"], CellMargins->{{41, Inherited}, {3, 2}}], Cell[StyleData["Output", "Printout"], CellMargins->{{39, 0}, {6, 4}}, FontSize->9] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Message"], CellMargins->{{45, Inherited}, {Inherited, Inherited}}, CellGroupingRules->"OutputGrouping", PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, CellLabelMargins->{{11, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultOutputFormatType, AutoItalicWords->{}, FormatType->InputForm, CounterIncrements->"Message", StyleMenuListing->None, FontColor->RGBColor[0, 0, 1]], Cell[StyleData["Message", "Presentation"], CellMargins->{{72, Inherited}, {Inherited, Inherited}}, LineSpacing->{1, 0}], Cell[StyleData["Message", "Condensed"], CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell[StyleData["Message", "Printout"], CellMargins->{{39, Inherited}, {Inherited, Inherited}}, FontSize->8, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Print"], CellMargins->{{45, Inherited}, {Inherited, Inherited}}, CellGroupingRules->"OutputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, CellLabelMargins->{{11, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultOutputFormatType, AutoItalicWords->{}, FormatType->InputForm, CounterIncrements->"Print", StyleMenuListing->None], Cell[StyleData["Print", "Presentation"], CellMargins->{{72, Inherited}, {Inherited, Inherited}}, LineSpacing->{1, 0}], Cell[StyleData["Print", "Condensed"], CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell[StyleData["Print", "Printout"], CellMargins->{{39, Inherited}, {Inherited, Inherited}}, FontSize->8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Graphics"], CellMargins->{{4, Inherited}, {Inherited, Inherited}}, CellGroupingRules->"GraphicsGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, DefaultFormatType->DefaultOutputFormatType, FormatType->InputForm, CounterIncrements->"Graphics", ImageMargins->{{43, Inherited}, {Inherited, 0}}, StyleMenuListing->None], Cell[StyleData["Graphics", "Presentation"], ImageMargins->{{62, Inherited}, {Inherited, 0}}], Cell[StyleData["Graphics", "Condensed"], ImageSize->{175, 175}, ImageMargins->{{38, Inherited}, {Inherited, 0}}], Cell[StyleData["Graphics", "Printout"], ImageSize->{250, 250}, ImageMargins->{{30, Inherited}, {Inherited, 0}}, FontSize->9] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["CellLabel"], StyleMenuListing->None, FontFamily->"Helvetica", FontSize->9, FontColor->RGBColor[0, 0, 1]], Cell[StyleData["CellLabel", "Presentation"], FontSize->12], Cell[StyleData["CellLabel", "Condensed"], FontSize->9], Cell[StyleData["CellLabel", "Printout"], FontFamily->"Courier", FontSize->8, FontSlant->"Italic", FontColor->GrayLevel[0]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Formulas and Programming", "Section"], Cell[CellGroupData[{ Cell[StyleData["InlineFormula"], CellMargins->{{10, 4}, {0, 8}}, CellHorizontalScrolling->True, ScriptLevel->1, SingleLetterItalics->True], Cell[StyleData["InlineFormula", "Presentation"], CellMargins->{{24, 10}, {10, 10}}, LineSpacing->{1, 5}], Cell[StyleData["InlineFormula", "Condensed"], CellMargins->{{8, 10}, {6, 6}}, LineSpacing->{1, 1}], Cell[StyleData["InlineFormula", "Printout"], CellMargins->{{2, 0}, {6, 6}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["DisplayFormula"], CellMargins->{{42, Inherited}, {Inherited, Inherited}}, CellHorizontalScrolling->True, ScriptLevel->0, SingleLetterItalics->True, StyleMenuListing->None, UnderoverscriptBoxOptions->{LimitsPositioning->True}], Cell[StyleData["DisplayFormula", "Presentation"], LineSpacing->{1, 5}], Cell[StyleData["DisplayFormula", "Condensed"], LineSpacing->{1, 1}], Cell[StyleData["DisplayFormula", "Printout"]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Headers and Footers", "Section"], Cell[StyleData["Header"], CellMargins->{{0, 0}, {4, 1}}, StyleMenuListing->None, FontSize->10, FontSlant->"Italic"], Cell[StyleData["Footer"], CellMargins->{{0, 0}, {0, 4}}, StyleMenuListing->None, FontSize->9, FontSlant->"Italic"], Cell[StyleData["PageNumber"], CellMargins->{{0, 0}, {4, 1}}, StyleMenuListing->None, FontFamily->"Times", FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell["Palette Styles", "Section"], Cell["\<\ The cells below define styles that define standard \ ButtonFunctions, for use in palette buttons.\ \>", "Text"], Cell[StyleData["Paste"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, After]}]&)}], Cell[StyleData["Evaluate"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], SelectionEvaluate[ FrontEnd`InputNotebook[ ], All]}]&)}], Cell[StyleData["EvaluateCell"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], FrontEnd`SelectionMove[ FrontEnd`InputNotebook[ ], All, Cell, 1], FrontEnd`SelectionEvaluateCreateCell[ FrontEnd`InputNotebook[ ], All]}]&)}], Cell[StyleData["CopyEvaluate"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`SelectionCreateCell[ FrontEnd`InputNotebook[ ], All], FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], FrontEnd`SelectionEvaluate[ FrontEnd`InputNotebook[ ], All]}]&)}], Cell[StyleData["CopyEvaluateCell"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`SelectionCreateCell[ FrontEnd`InputNotebook[ ], All], FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], FrontEnd`SelectionEvaluateCreateCell[ FrontEnd`InputNotebook[ ], All]}]&)}] }, Closed]], Cell[CellGroupData[{ Cell["Hyperlink Styles", "Section"], Cell["\<\ The cells below define styles useful for making hypertext \ ButtonBoxes. The \"Hyperlink\" style is for links within the same Notebook, \ or between Notebooks.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Hyperlink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonNote->ButtonData}], Cell[StyleData["Hyperlink", "Presentation"]], Cell[StyleData["Hyperlink", "Condensed"]], Cell[StyleData["Hyperlink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell["\<\ The following styles are for linking automatically to the on-line \ help system.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["MainBookLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "MainBook", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["MainBookLink", "Presentation"]], Cell[StyleData["MainBookLink", "Condensed"]], Cell[StyleData["MainBookLink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AddOnsLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Courier", FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "AddOns", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["AddOnsLink", "Presentation"]], Cell[StyleData["AddOnsLink", "Condensed"]], Cell[StyleData["AddOnLink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefGuideLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Courier", FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "RefGuideLink", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["RefGuideLink", "Presentation"]], Cell[StyleData["RefGuideLink", "Condensed"]], Cell[StyleData["RefGuideLink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["GettingStartedLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "GettingStarted", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["GettingStartedLink", "Presentation"]], Cell[StyleData["GettingStartedLink", "Condensed"]], Cell[StyleData["GettingStartedLink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["OtherInformationLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "OtherInformation", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["OtherInformationLink", "Presentation"]], Cell[StyleData["OtherInformationLink", "Condensed"]], Cell[StyleData["OtherInformationLink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Placeholder Styles", "Section"], Cell["\<\ The cells below define styles useful for making placeholder \ objects in palette templates.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Placeholder"], Editable->False, Selectable->False, StyleBoxAutoDelete->True, Placeholder->True, StyleMenuListing->None], Cell[StyleData["Placeholder", "Presentation"]], Cell[StyleData["Placeholder", "Condensed"]], Cell[StyleData["Placeholder", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["SelectionPlaceholder"], Editable->False, Selectable->False, StyleBoxAutoDelete->True, Placeholder->PrimaryPlaceholder, StyleMenuListing->None, DrawHighlighted->True], Cell[StyleData["SelectionPlaceholder", "Presentation"]], Cell[StyleData["SelectionPlaceholder", "Condensed"]], Cell[StyleData["SelectionPlaceholder", "Printout"]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["FormatType Styles", "Section"], Cell["\<\ The cells below define styles that are mixed in with the styles \ of most cells. If a cell's FormatType matches the name of one of the styles \ defined below, then that style is applied between the cell's style and its \ own options.\ \>", "Text"], Cell[StyleData["CellExpression"], PageWidth->Infinity, CellMargins->{{6, Inherited}, {Inherited, Inherited}}, ShowCellLabel->False, ShowSpecialCharacters->False, AllowInlineCells->False, AutoItalicWords->{}, StyleMenuListing->None, FontFamily->"Courier", Background->GrayLevel[1]], Cell[StyleData["InputForm"], AllowInlineCells->False, StyleMenuListing->None, FontFamily->"Courier"], Cell[StyleData["OutputForm"], PageWidth->Infinity, TextAlignment->Left, LineSpacing->{1, -5}, StyleMenuListing->None, FontFamily->"Courier"], Cell[StyleData["StandardForm"], LineSpacing->{1.25, 0}, StyleMenuListing->None, FontFamily->"Courier"], Cell[StyleData["TraditionalForm"], LineSpacing->{1.25, 0}, SingleLetterItalics->True, TraditionalFunctionNotation->True, DelimiterMatching->None, StyleMenuListing->None], Cell["\<\ The style defined below is mixed in to any cell that is in an \ inline cell within another.\ \>", "Text"], Cell[StyleData["InlineCell"], TextAlignment->Left, ScriptLevel->1, StyleMenuListing->None], Cell[StyleData["InlineCellEditing"], StyleMenuListing->None, Background->RGBColor[1, 0.749996, 0.8]] }, Closed]] }, Open ]] }] ] (******************************************************************* 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[1776, 53, 32, 0, 102, "Title"], Cell[1811, 55, 59, 0, 48, "Subsubtitle"], Cell[CellGroupData[{ Cell[1895, 59, 46, 0, 45, "Subsection"], Cell[1944, 61, 320, 8, 71, "Text"], Cell[2267, 71, 723, 15, 166, "Text"], Cell[2993, 88, 266, 10, 52, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[3296, 103, 31, 0, 34, "Section"], Cell[3330, 105, 559, 10, 128, "Text"], Cell[3892, 117, 436, 8, 109, "Text"], Cell[4331, 127, 153, 2, 33, "Text"], Cell[4487, 131, 154, 2, 33, "Text"], Cell[4644, 135, 187, 5, 33, "Text"], Cell[4834, 142, 164, 2, 33, "Text"], Cell[5001, 146, 163, 2, 33, "Text"], Cell[5167, 150, 217, 5, 52, "Text"], Cell[5387, 157, 115, 4, 33, "Text"], Cell[5505, 163, 201, 5, 33, "Text"], Cell[5709, 170, 154, 2, 33, "Text"], Cell[5866, 174, 147, 2, 33, "Text"], Cell[6016, 178, 146, 2, 33, "Text"], Cell[6165, 182, 173, 2, 33, "Text"], Cell[6341, 186, 126, 4, 33, "Text"], Cell[6470, 192, 261, 6, 71, "Text"], Cell[6734, 200, 365, 8, 90, "Text"], Cell[7102, 210, 520, 9, 144, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[7659, 224, 30, 0, 34, "Section"], Cell[7692, 226, 367, 8, 90, "Text"], Cell[8062, 236, 114, 3, 33, "Text"], Cell[8179, 241, 53, 1, 27, "Input"], Cell[8235, 244, 124, 2, 43, "Input"], Cell[8362, 248, 41, 0, 33, "Text"], Cell[8406, 250, 82, 1, 27, "Input"], Cell[8491, 253, 270, 5, 91, "Input"], Cell[8764, 260, 300, 5, 91, "Input"], Cell[9067, 267, 31, 0, 33, "Text"], Cell[9101, 269, 160, 3, 43, "Input"], Cell[9264, 274, 166, 3, 43, "Input"], Cell[9433, 279, 198, 6, 33, "Text"], Cell[9634, 287, 150, 3, 43, "Input"], Cell[9787, 292, 46, 0, 33, "Text"], Cell[9836, 294, 109, 2, 27, "Input"], Cell[9948, 298, 72, 1, 27, "Input"], Cell[10023, 301, 149, 3, 43, "Input"], Cell[10175, 306, 24, 0, 33, "Text"], Cell[10202, 308, 46, 1, 27, "Input"], Cell[10251, 311, 55, 0, 33, "Text"], Cell[10309, 313, 241, 4, 59, "Input"], Cell[10553, 319, 1093, 19, 283, "Input"], Cell[11649, 340, 29, 0, 33, "Text"], Cell[11681, 342, 125, 3, 27, "Input"], Cell[11809, 347, 52, 0, 33, "Text"], Cell[11864, 349, 200, 4, 59, "Input"], Cell[12067, 355, 278, 5, 71, "Text"], Cell[12348, 362, 259, 5, 59, "Input"], Cell[12610, 369, 373, 8, 75, "Input"], Cell[12986, 379, 643, 14, 155, "Input"], Cell[13632, 395, 664, 15, 155, "Input"], Cell[14299, 412, 393, 7, 107, "Input"], Cell[14695, 421, 442, 10, 91, "Input"], Cell[15140, 433, 1017, 18, 219, "Input"], Cell[16160, 453, 43, 0, 33, "Text"], Cell[16206, 455, 987, 17, 251, "Input"], Cell[17196, 474, 282, 5, 75, "Input"], Cell[17481, 481, 40, 0, 33, "Text"], Cell[17524, 483, 356, 6, 91, "Input"], Cell[17883, 491, 193, 4, 43, "Input"], Cell[18079, 497, 252, 4, 91, "Input"], Cell[18334, 503, 83, 2, 27, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[18454, 510, 48, 0, 34, "Section"], Cell[18505, 512, 745, 17, 166, "Text"], Cell[19253, 531, 56, 1, 27, "Input"], Cell[19312, 534, 340, 11, 52, "Text"], Cell[19655, 547, 39, 1, 27, "Input"], Cell[19697, 550, 51, 0, 33, "Text"], Cell[19751, 552, 51, 1, 27, "Input"], Cell[19805, 555, 119, 3, 52, "Text"], Cell[19927, 560, 51, 1, 27, "Input"], Cell[19981, 563, 64, 0, 33, "Text"], Cell[20048, 565, 51, 1, 27, "Input"], Cell[20102, 568, 262, 5, 71, "Text"], Cell[20367, 575, 141, 3, 52, "Text"], Cell[20511, 580, 52, 1, 27, "Input"], Cell[20566, 583, 272, 7, 52, "Text"], Cell[20841, 592, 85, 2, 27, "Input"], Cell[20929, 596, 947, 39, 52, "Text"], Cell[21879, 637, 61, 1, 27, "Input"], Cell[21943, 640, 1445, 60, 109, "Text"], Cell[23391, 702, 50, 1, 27, "Input"], Cell[23444, 705, 51, 1, 27, "Input"], Cell[23498, 708, 895, 41, 71, "Text"], Cell[24396, 751, 56, 1, 27, "Input"], Cell[24455, 754, 51, 1, 27, "Input"], Cell[24509, 757, 136, 3, 52, "Text"], Cell[24648, 762, 48, 1, 27, "Input"], Cell[24699, 765, 51, 1, 27, "Input"], Cell[24753, 768, 48, 1, 27, "Input"], Cell[24804, 771, 46, 1, 27, "Input"], Cell[24853, 774, 45, 1, 27, "Input"], Cell[24901, 777, 125, 3, 52, "Text"], Cell[25029, 782, 47, 1, 27, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[25113, 788, 50, 0, 34, "Section"], Cell[25166, 790, 544, 16, 90, "Text"], Cell[25713, 808, 76, 1, 27, "Input"], Cell[25792, 811, 70, 1, 27, "Input"], Cell[25865, 814, 73, 1, 27, "Input"], Cell[25941, 817, 72, 1, 27, "Input"], Cell[26016, 820, 71, 1, 27, "Input"], Cell[26090, 823, 87, 3, 33, "Text"], Cell[26180, 828, 48, 1, 27, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[26265, 834, 33, 0, 34, "Section"], Cell[26301, 836, 232, 4, 71, "Text"], Cell[26536, 842, 45, 1, 27, "Input"], Cell[26584, 845, 281, 9, 52, "Text"], Cell[26868, 856, 58, 1, 27, "Input"], Cell[26929, 859, 154, 5, 33, "Text"], Cell[27086, 866, 51, 1, 27, "Input"], Cell[27140, 869, 234, 5, 71, "Text"], Cell[27377, 876, 254, 8, 52, "Text"], Cell[27634, 886, 114, 2, 43, "Input"], Cell[27751, 890, 661, 22, 109, "Text"], Cell[28415, 914, 60, 0, 33, "Text"], Cell[28478, 916, 69, 1, 27, "Input"], Cell[28550, 919, 38, 0, 33, "Text"], Cell[28591, 921, 66, 1, 27, "Input"], Cell[28660, 924, 254, 8, 52, "Text"], Cell[28917, 934, 42, 1, 27, "Input"], Cell[28962, 937, 46, 1, 27, "Input"], Cell[29011, 940, 130, 5, 33, "Text"], Cell[29144, 947, 170, 4, 27, "Input"], Cell[29317, 953, 131, 3, 52, "Text"], Cell[29451, 958, 734, 29, 71, "Text"], Cell[30188, 989, 413, 10, 90, "Text"], Cell[30604, 1001, 319, 8, 71, "Text"], Cell[30926, 1011, 246, 4, 75, "Input"], Cell[31175, 1017, 445, 9, 90, "Text"], Cell[31623, 1028, 107, 2, 27, "Input"], Cell[31733, 1032, 154, 3, 33, "Text"], Cell[31890, 1037, 197, 4, 52, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[32124, 1046, 60, 0, 34, "Section"], Cell[32187, 1048, 548, 15, 90, "Text"], Cell[32738, 1065, 74, 1, 27, "Input"], Cell[32815, 1068, 129, 3, 52, "Text"], Cell[32947, 1073, 131, 2, 43, "Input"], Cell[33081, 1077, 197, 7, 33, "Text"], Cell[33281, 1086, 101, 3, 33, "Text"], Cell[33385, 1091, 93, 1, 27, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[33515, 1097, 26, 0, 34, "Section"], Cell[33544, 1099, 246, 5, 71, "Text"], Cell[33793, 1106, 177, 4, 52, "Text"], Cell[33973, 1112, 102, 2, 43, "Input"], Cell[34078, 1116, 51, 1, 27, "Input"], Cell[34132, 1119, 27, 0, 33, "Text"], Cell[34162, 1121, 104, 2, 27, "Input"], Cell[34269, 1125, 100, 3, 33, "Text"], Cell[34372, 1130, 179, 4, 52, "Text"], Cell[34554, 1136, 148, 3, 59, "Input"], Cell[34705, 1141, 171, 4, 27, "Input"], Cell[34879, 1147, 154, 5, 33, "Text"], Cell[35036, 1154, 148, 3, 59, "Input"], Cell[35187, 1159, 170, 4, 27, "Input"], Cell[35360, 1165, 577, 10, 128, "Text"], Cell[35940, 1177, 519, 16, 90, "Text"], Cell[36462, 1195, 410, 8, 123, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[36909, 1208, 27, 0, 34, "Section"], Cell[36939, 1210, 489, 10, 109, "Text"], Cell[37431, 1222, 72, 0, 33, "Text"], Cell[37506, 1224, 171, 4, 52, "Text"], Cell[37680, 1230, 124, 3, 52, "Text"], Cell[37807, 1235, 163, 5, 33, "Text"], Cell[37973, 1242, 96, 3, 33, "Text"], Cell[38072, 1247, 96, 3, 33, "Text"], Cell[38171, 1252, 103, 3, 33, "Text"], Cell[38277, 1257, 103, 3, 33, "Text"], Cell[38383, 1262, 166, 4, 52, "Text"], Cell[38552, 1268, 113, 3, 52, "Text"], Cell[38668, 1273, 63, 0, 33, "Text"], Cell[38734, 1275, 91, 3, 33, "Text"] }, Closed]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)