(*********************************************************************** 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[ 26872, 786]*) (*NotebookOutlinePosition[ 27641, 813]*) (* CellTagsIndexPosition[ 27597, 809]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["The numerical method", "Section"], Cell[CellGroupData[{ Cell["Split step method", "Subsection"], Cell["\<\ The split step method amounts to breaking the operator into two \ parts, the linear differential, and the nonlinear and potential parts. \ \>", "Text"], Cell["\<\ Let \[ScriptCapitalL](\[Psi]) represent the linear differential \ part and \[ScriptCapitalN](\[Psi]) the nonlinear. Then the NLS equation \ \>", "Text"], Cell[BoxData[ \(TraditionalForm \`\[ImaginaryI] \[PartialD]\[Psi]\/\[PartialD]t + \ \[PartialD]\^2 \[Psi]\/\[PartialD]x\^2 + 2\ \ \(\[LeftBracketingBar]\[Psi]\[RightBracketingBar]\^2\) \[Psi] = \(V(x)\)\ \[Psi]\)], "Input"], Cell["becomes", "Text"], Cell[BoxData[ \(TraditionalForm \`\[PartialD]\[Psi]\/\[PartialD]t = \[ScriptCapitalL] \((\[Psi])\) + \[ScriptCapitalN](\[Psi])\)], "Input"], Cell["\<\ The nonlinear part is decoupled with respect to the spatial \ variable x, so if we ignore the linear part, then the nonlinear part has \ approximate solution\ \>", "Text"], Cell[BoxData[ \(TraditionalForm \`\(\[Psi]\_\[ScriptCapitalN]\)(x, h + t) \[TildeFullEqual] \(\[ScriptCapitalN]\_h\)(\[Psi](t)) = \(\[Psi](t)\)\ \[ExponentialE]\^\(i\ \((2\ \ \[LeftBracketingBar]\[Psi](t)\[RightBracketingBar]\^2 - V(x))\)\)\)], "Input"], Cell["\<\ An approximate solution to the linear differential part can be \ computed with any appropriate discretization, but a particularly effective \ one is a psuedospectral derivative approximation done with a discrete Fourier \ transform (DFT),\ \>", "Text"], Cell[BoxData[ \(TraditionalForm \`\(\[Psi]\_\[ScriptCapitalL]\)(x\_i, h + t) = \(\(\[ScriptCapitalL]\_h\)(\[Psi](x\_i, t)) = \(\[ExponentialE]\^\(i\ h\[GothicCapitalF]\^\(-1\)\ \(\ \[ScriptCapitalD]\^2\) \[GothicCapitalF]\)\ \(\[Psi](x\_i, t)\)\ = \ \(\[GothicCapitalF]\^\(-1\)\) \(\[ExponentialE]\^\(i\ h\ \[ScriptCapitalD]\^2\)\) \[GothicCapitalF]\ \(\[Psi](x\_i, t)\)\)\)\)], "Input"], Cell[TextData[{ "where ", StyleBox["\[GothicCapitalF]", FontWeight->"Bold"], " is DFT matrix and ", StyleBox["\[ScriptCapitalD]", FontWeight->"Bold"], " is the matrix representing the differential operator on the transformed \ vector.in the transformed space. It is the combined fact that this matrix is \ diagonal and that the matrix multiplication by can be ", StyleBox["\[GothicCapitalF]", FontWeight->"Bold"], " done in O(n log n) time by an FFT which makes the pseudospectral \ derivative so attractive." }], "Text"], Cell["The basic splitting, ", "Text"], Cell[BoxData[ \(TraditionalForm \`\(\[Psi]\_h\^1\)(x, h + t) = \(\[ScriptCapitalN]\_h\)(\(\[ScriptCapitalL]\_h\)(\[Psi](t)))\)], "Input"], Cell["\<\ i.e., doing first the nonlinear part, then the linear part (or \ doing first linear then nonlinear) is first order in time. However, the \ splitting\ \>", "Text"], Cell[BoxData[ \(TraditionalForm \`\(\[Psi]\_h\^2\)(x, h + t) = \(\(\[ScriptCapitalL]\_\(h/2\)\)( \(\[ScriptCapitalN]\_h\)( \(\[ScriptCapitalL]\_\(h/2\)\)(\[Psi](t))))\ = \ \(\[ScriptCapitalS]\_h\^2\)(\[Psi] \((t)\))\)\)], "Input"], Cell["\<\ is second order in time. Note that when doing several steps \ together, this only requires an single extra DFT since for the linear part, \ it must be that \ \>", "Text"], Cell[BoxData[ \(TraditionalForm \`\(\[ScriptCapitalL]\_\(h/2\)\)( \(\[ScriptCapitalL]\_\(h/2\)\)(\[Psi](t)))\ = \ \(\[ScriptCapitalL]\_h\)(\[Psi](t))\)], "Input"], Cell["\<\ so you get the extra order with essentially no computational \ cost.\ \>", "Text"], Cell["\<\ Spatially the method is accurate to the ability of the DFT to \ capture the derivative correctly. One has to be aware of the possibility of \ aliasing and/or Gibbs problems arising.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Arbitrary temporal order", "Subsection"], Cell[TextData[{ "The NLS equation is a particularly amenable to using the split step method \ because it is time reversible. Following Yoshida [", ButtonBox["Yos90", ButtonData:>{"References.nb", "Yos90"}, ButtonStyle->"Hyperlink"], "], we can use combinations of the basic second order splitting to obtain \ fourth, sixth, and higher order" }], "Text"], Cell["Let", "Text"], Cell[BoxData[ \(TraditionalForm \`\[Alpha]\ = \ 1\/\(1\ - \ 2\^\((1/\((k - 1)\))\)\); \ \[Beta]\ = \ \(-\[Alpha]\)\ 2\^\((1/\((k - 1)\))\)\)], "Input"], Cell["then the splitting", "Text"], Cell[BoxData[ \(TraditionalForm \`\(\[ScriptCapitalS]\_h\^k\)(\[Psi](t))\ = \(\[ScriptCapitalS]\_\(\[Alpha]\ h\)\^\(k - 2\)\)( \(\[ScriptCapitalS]\_\(\[Beta]\ h\)\^\(k - 2\)\)(\ \(\[ScriptCapitalS]\_\(\[Alpha]\ h\)\^\(k - 2\)\)(\[Psi](t))\ )) \)], "Input"], Cell[TextData[{ "is order k in time if the splitting ", Cell[BoxData[ \(TraditionalForm\`\[ScriptCapitalS]\_h\^\(k - 2\)\)]], " is order k-2 in time." }], "Text"], Cell[TextData[{ "In practice, for IEEE machine precision calculations (53 bit mantissas), \ and moderate tolerances ", Cell[BoxData[ \(TraditionalForm\`\((10\^\(-6\))\)\)]], ", the fourth order variant works out to minimize the computational effort. \ " }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Some properties of the method", "Subsection"], Cell["\<\ In addition to being computationally efficient, the split step \ method has some other properties.\ \>", "Text"], Cell[CellGroupData[{ Cell["Imposition of periodicity", "Subsubsection"], Cell["\<\ Using the space implied by the DFT along with the derivative in \ that space imposes a periodicity on the domain. The periodicity can be a \ problem if you want to solve a problem which is posed on the real line. \ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Conservation of \"Mass\"", "Subsubsection"], Cell["\<\ The discrete space in which the derivative is computed by the DFT \ with n modes, is necessarily periodic, so the most accurate computation of an \ integral, \ \>", "Text"], Cell[BoxData[ \(TraditionalForm \`\[Integral]\(f(x)\) \[DifferentialD]x = \[Sum]\+\(i = 0\)\%\(n - 1\)f(x\_i)\)], "Input"], Cell["so the integral for the conservation of mass becomes", "Text"], Cell[BoxData[ \(TraditionalForm \`M\ = \ \(\[Integral]\(u(x)\)\ \(\(u(x)\)\^*\) \[DifferentialD]x = \(\[Sum]\+\(i = 0\)\%\(n - 1\)\(u(x\_i)\)\ \(\(u(x\_i)\)\^*\) = \ \[LeftDoubleBracketingBar]u(x\_i)\[RightDoubleBracketingBar]\^2\)\)\ \)], "Input"], Cell[TextData[{ "A close look at both the nonlinear and linear parts of the splitting show \ that both preserve vector norm (when the matrix ", StyleBox["\[ScriptCapitalF]", FontWeight->"Bold"], " is properly normalized, it has determinant 1)." }], "Text"], Cell["\<\ Thus, with a real potential, the method conserves the quantity M to \ the accuracy achieved by the FFT used.\ \>", "Text"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Absorbing boundary conditions", "Subsection"], Cell["\<\ For solutions of problems posed on the real line, the implicit \ periodicity is a problem. However, you can sidestep around this problem by \ making the computational domain larger than your region of interest and \ imposing absorbing potential in a boundary layer. \ \>", "Text"], Cell["\<\ In practice, I have found that a condition with a smooth transition \ using about half of the computational domain works best: for a domain on \ [-L,L], for example\ \>", "Text"], Cell[BoxData[ FormBox[ RowBox[{\(\(V\_a\)(x)\), " ", "=", RowBox[{\(-\(1\/2\)\), " ", "\[ImaginaryI]", " ", RowBox[{"(", GridBox[{ {\(x < \(-\(L\/2\)\)\), \(1 - Cos(\(\[Pi]\ \((x + L\/2)\)\)\/\(\(-L\) + L\/2\))\)}, {\(\(-\(L\/2\)\) < x < L\/2\), "0"}, {\(x > L\/2\), \(1 - Cos(\(\[Pi]\ \((x - L\/2)\)\)\/\(L - L\/2\))\)} }]}]}]}], TraditionalForm]], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(\(Plot[ Im[\(AbsorbingBoundaryConditionPotential[1, {\(-1\), 1}, {\(-1\)/2, 1/2}]\)[x]], {x, \(-1\), 1}];\)\)], "Input", CellOpen->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.5 0.476191 0.603319 0.588604 [ [.02381 .59082 -6 -9 ] [.02381 .59082 6 0 ] [.2619 .59082 -12 -9 ] [.2619 .59082 12 0 ] [.7381 .59082 -9 -9 ] [.7381 .59082 9 0 ] [.97619 .59082 -3 -9 ] [.97619 .59082 3 0 ] [.4875 .01472 -12 -4.5 ] [.4875 .01472 0 4.5 ] [.4875 .13244 -24 -4.5 ] [.4875 .13244 0 4.5 ] [.4875 .25016 -24 -4.5 ] [.4875 .25016 0 4.5 ] [.4875 .36788 -24 -4.5 ] [.4875 .36788 0 4.5 ] [.4875 .4856 -24 -4.5 ] [.4875 .4856 0 4.5 ] [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g .25 Mabswid [ ] 0 setdash .02381 .60332 m .02381 .60957 L s [(-1)] .02381 .59082 0 1 Mshowa .2619 .60332 m .2619 .60957 L s [(-0.5)] .2619 .59082 0 1 Mshowa .7381 .60332 m .7381 .60957 L s [(0.5)] .7381 .59082 0 1 Mshowa .97619 .60332 m .97619 .60957 L s [(1)] .97619 .59082 0 1 Mshowa .125 Mabswid .07143 .60332 m .07143 .60707 L s .11905 .60332 m .11905 .60707 L s .16667 .60332 m .16667 .60707 L s .21429 .60332 m .21429 .60707 L s .30952 .60332 m .30952 .60707 L s .35714 .60332 m .35714 .60707 L s .40476 .60332 m .40476 .60707 L s .45238 .60332 m .45238 .60707 L s .54762 .60332 m .54762 .60707 L s .59524 .60332 m .59524 .60707 L s .64286 .60332 m .64286 .60707 L s .69048 .60332 m .69048 .60707 L s .78571 .60332 m .78571 .60707 L s .83333 .60332 m .83333 .60707 L s .88095 .60332 m .88095 .60707 L s .92857 .60332 m .92857 .60707 L s .25 Mabswid 0 .60332 m 1 .60332 L s .5 .01472 m .50625 .01472 L s [(-1)] .4875 .01472 1 0 Mshowa .5 .13244 m .50625 .13244 L s [(-0.8)] .4875 .13244 1 0 Mshowa .5 .25016 m .50625 .25016 L s [(-0.6)] .4875 .25016 1 0 Mshowa .5 .36788 m .50625 .36788 L s [(-0.4)] .4875 .36788 1 0 Mshowa .5 .4856 m .50625 .4856 L s [(-0.2)] .4875 .4856 1 0 Mshowa .125 Mabswid .5 .04415 m .50375 .04415 L s .5 .07358 m .50375 .07358 L s .5 .10301 m .50375 .10301 L s .5 .16187 m .50375 .16187 L s .5 .1913 m .50375 .1913 L s .5 .22073 m .50375 .22073 L s .5 .27959 m .50375 .27959 L s .5 .30902 m .50375 .30902 L s .5 .33845 m .50375 .33845 L s .5 .39731 m .50375 .39731 L s .5 .42674 m .50375 .42674 L s .5 .45617 m .50375 .45617 L s .5 .51503 m .50375 .51503 L s .5 .54446 m .50375 .54446 L s .5 .57389 m .50375 .57389 L s .25 Mabswid .5 0 m .5 .61803 L s 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .5 Mabswid .02381 .01472 m .02499 .01475 L .02605 .01484 L .02729 .01503 L .02846 .01527 L .03053 .01587 L .03279 .01678 L .03527 .01807 L .0379 .01979 L .04262 .02373 L .05205 .03491 L .06244 .05214 L .0842 .10331 L .10458 .16662 L .14335 .31094 L .18458 .46296 L .20517 .52463 L .21519 .54917 L .22428 .5678 L .2338 .58332 L .24277 .59399 L .2477 .59817 L .25224 .60093 L .25461 .60196 L .25597 .60242 L .25722 .60276 L .25853 .60303 L .25925 .60314 L .25994 .60322 L .26115 .6033 L .26184 .60332 L .26248 .60332 L .26365 .60332 L .26489 .60332 L .26711 .60332 L .2721 .60332 L .28114 .60332 L .30174 .60332 L .33985 .60332 L .38041 .60332 L .41946 .60332 L .46096 .60332 L .50094 .60332 L .5394 .60332 L .58032 .60332 L .61973 .60332 L .65761 .60332 L .69795 .60332 L .71653 .60332 L .72634 .60332 L Mistroke .73172 .60332 L .73435 .60332 L .73551 .60332 L .73678 .60332 L .73748 .60332 L .73813 .60332 L .73881 .60331 L .73955 .60326 L .74035 .60319 L .74112 .60309 L .74254 .60281 L .74384 .60247 L .74505 .60208 L .74776 .60093 L .75012 .59962 L .75271 .59787 L .75795 .59328 L .76295 .58764 L .76833 .58021 L .77805 .56335 L .79813 .5157 L .81925 .45012 L .85741 .30799 L .89802 .15787 L .91814 .0969 L .92802 .07218 L .93712 .05297 L .94624 .0374 L .95588 .02522 L .96088 .0207 L .96556 .01761 L .96824 .01633 L .97069 .01549 L .97204 .01516 L .97275 .01502 L .97351 .0149 L .97417 .01482 L .9749 .01476 L .97619 .01472 L Mfstroke % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 177.938}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgool008Koo`@000Goo`03003ooooo08koo`00R?oo00<00?ooool01?oo 00<00?ooool0S_oo0007ool3001nool00`00ooooo`04ool30024ool20008ool000Woo`8007Goo`@0 00Coo`03003ooooo00Coo`03003ooooo08;oo`8000[oo`002ooo00<00?ooool0N_oo00<00?ooool0 1?oo00<00?ooool0P?oo0P003?oo000Ooo00<00?ooool0Dooo00<00?ooool0Dooo00<00?oo ool0>?oo000jool00`00ooooo`1Bool00`00ooooo`1Bool00`00ooooo`0iool003[oo`03003ooooo 05;oo`8005?oo`03003ooooo03Woo`00>_oo00<00?ooool0D_oo00<00?ooool0D_oo00<00?ooool0 >Ooo000kool00`00ooooo`1Aool00`00ooooo`1Aool00`00ooooo`0jool003_oo`03003ooooo057o o`03003ooooo057oo`03003ooooo03[oo`00>ooo00<00?ooool0DOoo00<00?ooool0D?oo00<00?oo ool0>ooo000lool00`00ooooo`1@ool00`00ooooo`1@ool00`00ooooo`0kool003coo`03003ooooo 053oo`03003ooooo04ooo`03003ooooo03coo`00?Ooo00<00?ooool0Cooo00<00?ooool0Cooo00<0 0?ooool0??oo000mool00`00ooooo`1?ool2001@ool00`00ooooo`0lool003koo`03003ooooo04ko o`03003ooooo04koo`03003ooooo03goo`00?_oo00<00?ooool0C_oo00<00?ooool0C_oo00<00?oo ool0?Ooo000nool00`00ooooo`1>ool00`00ooooo`1=ool00`00ooooo`0nool003ooo`03003ooooo 04goo`03003ooooo04goo`03003ooooo03koo`00?ooo00<00?ooool0COoo00<00?ooool0C?oo00<0 0?ooool0?ooo0010ool00`00ooooo`1Ooo00<00?ooool01_oo000:ool00`00ooooo`0dool00`00ooooo`02ool01000ooooo`002ooo00<0 0?ooool0=ooo0P00>_oo00@00?ooool000_oo`04003ooooo000iool00`00ooooo`06ool000;oo`@0 00Coo`03003ooooo03?oo`@000;oo`04003ooooo0008ool3000jool00`00ooooo`0iool01000oooo o`002?oo0`000_oo00<00?ooool0>?oo00<00?ooool01_oo000:ool00`00ooooo`0eool01@00oooo oooo00000_oo00<00?ooool01_oo00<00?ooool0>_oo00<00?ooool0>Ooo00@00?ooool000Soo`03 003ooooo00;oo`03003ooooo03Soo`03003ooooo00Koo`002?oo0`00>?oo00@00?ooool000;oo`03 003ooooo00Koo`03003ooooo03[oo`03003ooooo03Woo`04003ooooo0008ool01@00oooooooo0000 >Ooo0`002?oo000:ool00`00ooooo`0gool00`00ooooo`020009ool4000iool00`00ooooo`0jool2 0009ool4000lool00`00ooooo`06ool004Coo`03003ooooo04Soo`03003ooooo04Ooo`03003ooooo 04Coo`00AOoo00<00?ooool0Aooo00<00?ooool0A_oo00<00?ooool0AOoo0016ool20017ool00`00 ooooo`14ool20018ool00?l00200007oo`001ooo00<00?ooool02ooo00<00?ooool02_oo00<00?oo ool02ooo00<00?ooool02_oo00<00?ooool02ooo00<00?ooool02ooo00<00?ooool02_oo00<00?oo ool02ooo00<00?ooool02_oo00<00?ooool02ooo00<00?ooool02ooo00<00?ooool02_oo00<00?oo ool02ooo00<00?ooool02_oo00<00?ooool02ooo00<00?ooool02ooo00<00?ooool02_oo00<00?oo ool02ooo00<00?ooool02_oo00<00?ooool02ooo00<00?ooool01_oo0007ool00`00ooooo`11ool0 0`00ooooo`11ool00`00ooooo`11ool00`00ooooo`11ool00`00ooooo`06ool008ooo`03003ooooo 08koo`00Sooo00<00?ooool0S_oo0000\ \>"], ImageRangeCache->{{{0, 287}, {176.938, 0}} -> {-1.05435, -1.02675, 0.00734737, 0.00594415}}] }, Open ]], Cell["\<\ It is important to note that since this potential is imaginary, it \ destroys conservation of M (as one would hope an absorber would do!). \ However, in numerical simulations, we can use this property to advantage. If \ we are tracking a pulse, typically what escapes is radiation, so the loss to \ the boundary layer allows us to keep track of radiation is at least a crude \ way.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Shifting computational domain", "Subsection"], Cell["\<\ Using the implicit periodicity, it is possible to shift the \ computational domain so that it tracks a pulse. When the shift is implemented \ by a shift permutation of the solution vector (so domain shift is in discrete \ multiples of the ratio of domain length to number of modes), there are \ essentially no numerical artifacts produced. The only noticeable one is that \ the boundary layer is effectively widened. This is minor if the each shift \ has been done before the pulse has moved to far.\ \>", "Text"] }, Closed]] }, Open ]] }, FrontEndVersion->"4.0 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 695}}, ScreenStyleEnvironment->"Working", Evaluator->"Local", WindowSize->{739, 614}, WindowMargins->{{27, Automatic}, {26, Automatic}}, Magnification->1, StyleDefinitions -> "ArticleClassic.nb" ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1739, 51, 39, 0, 56, "Section"], Cell[CellGroupData[{ Cell[1803, 55, 39, 0, 43, "Subsection"], Cell[1845, 57, 165, 4, 27, "Text"], Cell[2013, 63, 165, 4, 27, "Text"], Cell[2181, 69, 256, 5, 48, "Input"], Cell[2440, 76, 23, 0, 27, "Text"], Cell[2466, 78, 154, 3, 45, "Input"], Cell[2623, 83, 181, 4, 44, "Text"], Cell[2807, 89, 277, 5, 36, "Input"], Cell[3087, 96, 262, 5, 44, "Text"], Cell[3352, 103, 449, 8, 36, "Input"], Cell[3804, 113, 548, 14, 61, "Text"], Cell[4355, 129, 37, 0, 27, "Text"], Cell[4395, 131, 155, 4, 31, "Input"], Cell[4553, 137, 172, 4, 27, "Text"], Cell[4728, 143, 277, 6, 31, "Input"], Cell[5008, 151, 181, 4, 44, "Text"], Cell[5192, 157, 186, 4, 30, "Input"], Cell[5381, 163, 92, 3, 27, "Text"], Cell[5476, 168, 206, 4, 44, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[5719, 177, 46, 0, 27, "Subsection"], Cell[5768, 179, 368, 8, 70, "Text"], Cell[6139, 189, 19, 0, 32, "Text"], Cell[6161, 191, 167, 3, 44, "Input"], Cell[6331, 196, 34, 0, 32, "Text"], Cell[6368, 198, 299, 6, 32, "Input"], Cell[6670, 206, 174, 5, 32, "Text"], Cell[6847, 213, 278, 7, 52, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[7162, 225, 51, 0, 27, "Subsection"], Cell[7216, 227, 122, 3, 32, "Text"], Cell[CellGroupData[{ Cell[7363, 234, 50, 0, 42, "Subsubsection"], Cell[7416, 236, 241, 5, 70, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[7694, 246, 49, 0, 42, "Subsubsection"], Cell[7746, 248, 182, 4, 52, "Text"], Cell[7931, 254, 137, 3, 54, "Input"], Cell[8071, 259, 68, 0, 32, "Text"], Cell[8142, 261, 277, 5, 54, "Input"], Cell[8422, 268, 266, 6, 52, "Text"], Cell[8691, 276, 132, 3, 52, "Text"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[8872, 285, 51, 0, 27, "Subsection"], Cell[8926, 287, 292, 5, 70, "Text"], Cell[9221, 294, 188, 4, 52, "Text"], Cell[9412, 300, 524, 12, 124, "Input"], Cell[CellGroupData[{ Cell[9961, 316, 182, 4, 18, "Input", CellOpen->False], Cell[10146, 322, 15660, 435, 186, 4124, 288, "GraphicsData", "PostScript", "Graphics"] }, Open ]], Cell[25821, 760, 407, 7, 90, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[26265, 772, 51, 0, 27, "Subsection"], Cell[26319, 774, 525, 8, 128, "Text"] }, Closed]] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)