(*********************************************************************** 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[ 25134, 701]*) (*NotebookOutlinePosition[ 26246, 737]*) (* CellTagsIndexPosition[ 26202, 733]*) (*WindowFrame->Normal*) Notebook[{ Cell[TextData[StyleBox["In this example we use the package IntroToSymmetry.m \ to work out the point group of the Blasius equation \n\nYxxx+YYxx=0 \n\n\ discussed in section 8.10.1.", FontSize->14, FontVariations->{"CompatibilityType"->0}]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[TextData[StyleBox["First read in the package which is located in a \ folder called SymmetryAnalysis inside the Mathematica folder.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(Needs["\"]\)], "Input"], Cell[TextData[StyleBox["Enter the input equation as a string. Don't include \ the ==0 at the end.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(blasiusequation = \n"\";\)\)], "Input"], Cell[TextData[StyleBox["The function y[x] is a solution of the equation and \ this constraint must be applied in the form of a rule to the invariance \ condition. Be careful to check signs.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(rulesarray = \[IndentingNewLine]{"\"};\)\ \)], "Input"], Cell[TextData[StyleBox["Enter the list of independent variables.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(independentvariables = {"\"};\)\)], "Input"], Cell[TextData[StyleBox["Enter the list of dependent variables.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(dependentvariables = {"\"};\)\)], "Input"], Cell[TextData[StyleBox["Enter the list of function names and constant names \ that need to be preserved when the equation is changed to (x1, y1) variables. \ In this case there are no such quantities and so we enter a null list.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(frozennames = {"\<\>"};\)\)], "Input"], Cell[TextData[StyleBox["Enter the maximum derivative order.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(p = 3;\)\)], "Input"], Cell[TextData[StyleBox["The maximum derivative order that the infinitesimals \ are assumed to depend on is specified by the input parameter r. This \ parameter is only nonzero when the user is looking for Lie contact groups or \ Lie-Backlund groups. For the usual case where one is searching for point \ groups set r=0.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(r = 0;\)\)], "Input"], Cell[TextData[StyleBox["When searching for Lie-B\[ADoubleDot]cklund groups \ (r=1 or greater) one can, without loss of generality, leave the independent \ variables untransformed. The corresponding infinitesimals (the xse's) are set \ to zero by setting xseon=0. If one is searching for point groups then set \ xseon=1. The choice xseon=1 is also an option when looking for Lie-B\ \[ADoubleDot]cklund groups and this can be useful when looking for contact \ symmetries.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(xseon = 1;\)\)], "Input"], Cell[TextData[StyleBox["When searching for Lie-B\[ADoubleDot]cklund groups it \ is necessary to differentiate the input equation r times producing \ derivatives of order p+r. These higher order differential consequences are \ appended to the set of rules applied to the invariance condition. This \ process is carried out automatically when internalrules=1. For point groups \ the equation or equation system is the only rule or set of rules needed and \ one sets internalrules=0.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(internalrules = 0;\)\)], "Input"], Cell[TextData[StyleBox["Now work out the determining equations of the Lie \ point group that leaves the equation invariant. The output is available as a \ table of strings called zdeterminingequations.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[CellGroupData[{ Cell[BoxData[ \(Timing[ FindDeterminingEquations[\[IndentingNewLine]independentvariables, dependentvariables, frozennames, p, r, xseon, blasiusequation, rulesarray, internalrules]]\)], "Input"], Cell[BoxData[ \("FindDeterminingEquations has finished executing. You can look at the \ output in the table zdeterminingequations. Each entry in this table is a \ determining equation in string format expressed in terms of z-variables. \ Rules for converting between z-variables and conventional variables are \ contained in the table ztableofrules. To view the determining equations in \ terms of conventional variables use the command \ ToExpression[zdeterminingequations]/.ztableofrules. There are two other items \ the user may wish to look at; the equation converted to generic \ (x1,x2,...,y1,y2,...) variables is designated equationgenericvariables and \ the various derivatives of the equation that appear in the invariance \ condition can be viewed in the table invarconditiontable. Rules for \ converting between z-variables and generic variables are contained in the \ table ztableofrulesxy."\)], "Print"], Cell[BoxData[ \({0.7500000000000001`\ Second, Null}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(equationgenericvariables\)], "Input"], Cell[BoxData[ \("y1'''[x1]+y1[x1]*y1''[x1]"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(invarconditiontable\)], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{"0", ",", RowBox[{ SuperscriptBox["y1", "\[Prime]\[Prime]", MultilineFunction->None], "[", "x1", "]"}], ",", "0", ",", \(y1[x1]\), ",", "1"}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["The program expresses the determining equations in \ terms of z-variables. Here is the correspondence between z-variables and \ conventional variables.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(ztableofrules\)], "Input"], Cell[BoxData[ \({z1 \[Rule] x, z2 \[Rule] y[x]}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["Here are the determining equations expressed in terms \ of z-variables. This output may be quite long. The equations in the table can \ be distinguished by the ==0 at the end of each item.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(zdeterminingequations\)], "Input"], Cell[BoxData[ \({"eta1[z1, z2] + z2*Derivative[1, 0][xse1][z1, z2] + 3*Derivative[1, \ 1][eta1][z1, z2] - 3*Derivative[2, 0][xse1][z1, z2] == 0", "z2*Derivative[0, 1][xse1][z1, z2] + 3*Derivative[0, 2][eta1][z1, z2] - \ 9*Derivative[1, 1][xse1][z1, z2] == 0", "-3*Derivative[0, 1][xse1][z1, z2] == 0", "z2*Derivative[0, 2][eta1][z1, z2] - 2*z2*Derivative[1, 1][xse1][z1, \ z2] + 3*Derivative[1, 2][eta1][z1, z2] - 3*Derivative[2, 1][xse1][z1, z2] == \ 0", "-(z2*Derivative[0, 2][xse1][z1, z2]) + Derivative[0, 3][eta1][z1, z2] - \ 3*Derivative[1, 2][xse1][z1, z2] == 0", "-6*Derivative[0, 2][xse1][z1, z2] == 0", "-Derivative[0, 3][xse1][z1, z2] == 0", "2*z2*Derivative[1, 1][eta1][z1, z2] - z2*Derivative[2, 0][xse1][z1, \ z2] + 3*Derivative[2, 1][eta1][z1, z2] - Derivative[3, 0][xse1][z1, z2] == \ 0", "z2*Derivative[2, 0][eta1][z1, z2] + Derivative[3, 0][eta1][z1, z2] == \ 0"}\)], "Output"] }, Open ]], Cell["\<\ Lets look at the determining equations in a slightly more readable \ form.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(zdeterminingequationscolumn = \[IndentingNewLine]TraditionalForm[\ \[IndentingNewLine]ColumnForm[ToExpression[zdeterminingequations], Left, Below]]\)], "Input"], Cell[BoxData[ FormBox[ InterpretationBox[GridBox[{ { RowBox[{ RowBox[{\(eta1(z1, z2)\), "+", RowBox[{"z2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "+", RowBox[{"3", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "-", RowBox[{"3", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{"z2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "+", RowBox[{"3", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "-", RowBox[{"9", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}]}], "==", "0"}]}, { RowBox[{ RowBox[{\(-3\), " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{"z2", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "-", RowBox[{"2", " ", "z2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "+", RowBox[{"3", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "-", RowBox[{"3", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((2, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{\(-z2\), " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "+", RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 3)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}], "-", RowBox[{"3", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}]}], "==", "0"}]}, { RowBox[{ RowBox[{\(-6\), " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "==", "0"}]}, { RowBox[{ RowBox[{"-", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 3)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{"2", " ", "z2", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "-", RowBox[{"z2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "+", RowBox[{"3", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((2, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "-", RowBox[{ SuperscriptBox["xse1", TagBox[\((3, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{"z2", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "+", RowBox[{ SuperscriptBox["eta1", TagBox[\((3, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2\), ")"}]}], "==", "0"}]} }, GridBaseline->Top, ColumnAlignments->{Left}], ColumnForm[ { Equal[ Plus[ eta1[ z1, z2], Times[ z2, Derivative[ 1, 0][ xse1][ z1, z2]], Times[ 3, Derivative[ 1, 1][ eta1][ z1, z2]], Times[ -3, Derivative[ 2, 0][ xse1][ z1, z2]]], 0], Equal[ Plus[ Times[ z2, Derivative[ 0, 1][ xse1][ z1, z2]], Times[ 3, Derivative[ 0, 2][ eta1][ z1, z2]], Times[ -9, Derivative[ 1, 1][ xse1][ z1, z2]]], 0], Equal[ Times[ -3, Derivative[ 0, 1][ xse1][ z1, z2]], 0], Equal[ Plus[ Times[ z2, Derivative[ 0, 2][ eta1][ z1, z2]], Times[ -2, z2, Derivative[ 1, 1][ xse1][ z1, z2]], Times[ 3, Derivative[ 1, 2][ eta1][ z1, z2]], Times[ -3, Derivative[ 2, 1][ xse1][ z1, z2]]], 0], Equal[ Plus[ Times[ -1, z2, Derivative[ 0, 2][ xse1][ z1, z2]], Derivative[ 0, 3][ eta1][ z1, z2], Times[ -3, Derivative[ 1, 2][ xse1][ z1, z2]]], 0], Equal[ Times[ -6, Derivative[ 0, 2][ xse1][ z1, z2]], 0], Equal[ Times[ -1, Derivative[ 0, 3][ xse1][ z1, z2]], 0], Equal[ Plus[ Times[ 2, z2, Derivative[ 1, 1][ eta1][ z1, z2]], Times[ -1, z2, Derivative[ 2, 0][ xse1][ z1, z2]], Times[ 3, Derivative[ 2, 1][ eta1][ z1, z2]], Times[ -1, Derivative[ 3, 0][ xse1][ z1, z2]]], 0], Equal[ Plus[ Times[ z2, Derivative[ 2, 0][ eta1][ z1, z2]], Derivative[ 3, 0][ eta1][ z1, z2]], 0]}, Left, Below], Editable->False], TraditionalForm]], "Output"] }, Open ]], Cell["\<\ Now solve the determining equations in terms of multivariable \ polynomials of a selected order. The Mathematica function Solve uses Gaussian \ elimination to solve a large number of linear equations for the polynomial \ coefficients. The time roughly follows time/timeref=((number of equations)/(number of equationsref))^n where the exponent is between 2.4 and 2.7. The Mathematica function Timing \ outputs the time required for the SolveDeterminingEquations function to \ execute.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Timing[ SolveDeterminingEquations[independentvariables, dependentvariables, r, xseon, zdeterminingequations, order = 3]]\)], "Input"], Cell[BoxData[ InterpretationBox["\<\"The number of unknown polynomial coefficients = \ \\!\\(20\\)\"\>", StringForm[ "The number of unknown polynomial coefficients = ``", 20], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox["\<\"The number of equations for the polynomial \ coefficients = \\!\\(43\\)\"\>", StringForm[ "The number of equations for the polynomial coefficients = ``", 43], Editable->False]], "Print"], Cell[BoxData[ \("SolveDeterminingEquations has finished executing. You can look at the \ output in the tables xsefunctions and etafunctions. Each entry in these \ tables is an infinitesimal function in string format expressed in terms of \ z-variables and the group parameters. The output can also be viewed with the \ group parameters stripped away by looking at the table infinitesimalgroups. \ In either case you may wish to convert the z-variables to conventional \ variables using the table ztableofrules. Keep in mind that this function \ only finds solutions of the determining equations that are of algebraic form. \ The determining equations may admit solutions that involve transcendental \ functions and/or integrals. Note that arbitrary functions may appear in the \ infinitesimals and that these can be detected by running the package function \ SolveDeterminingEquations for several polynomial orders. If terms of ever \ increasing order appear, then an arbitrary function is indicated."\)], "Print"], Cell[BoxData[ \({0.18333333333333335`\ Second, Null}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["Here are the infinitesimals for the independent \ variables expressed in terms of z-variables.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(xsefunctions\)], "Input"], Cell[BoxData[ \({"xse1[z1_, z2_]=a10 - b14*z1"}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["and the infinitesimals for the dependent variables.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(etafunctions\)], "Input"], Cell[BoxData[ \({"eta1[z1_, z2_]=b14*z2"}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["Express the xse functions in terms of x,y variables.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(ToExpression[xsefunctions] /. ztableofrules\)], "Input"], Cell[BoxData[ \({a10 - b14\ x}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["Express the eta function in terms of these \ variables.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(ToExpression[etafunctions] /. ztableofrules\)], "Input"], Cell[BoxData[ \({b14\ y[x]}\)], "Output"] }, Open ]], Cell["Here is a list of the various infinitesimal groups.", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(infinitesimalgroupsxy = infinitesimalgroups /. {z1 \[Rule] x, z2 \[Rule] y}\)], "Input"], Cell[BoxData[ \({{{1}, {0}}, {{\(-x\)}, {y}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(ColumnForm[infinitesimalgroupsxy]\)], "Input"], Cell[BoxData[ InterpretationBox[GridBox[{ {\({{1}, {0}}\)}, {\({{\(-x\)}, {y}}\)} }, GridBaseline->{Baseline, {1, 1}}, ColumnAlignments->{Left}], ColumnForm[ {{{1}, {0}}, {{ Times[ -1, x]}, {y}}}], Editable->False]], "Output"] }, Open ]], Cell[TextData[StyleBox["The final result indicates that the equation is \ invariant under two groups. The parameter a10 corresponds to a translation in \ x and the parameter b14 represents a dilation in x and y. Generate the \ commutator table of the Lie algebra. ", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[CellGroupData[{ Cell[BoxData[ \(MakeCommutatorTable[independentvariables, dependentvariables, infinitesimalgroupsxy]\)], "Input"], Cell[BoxData[ \("MakeCommutatorTable has finished executing. You can look at the output \ in the table commutatortable. To present the output in the most readable form \ you may want view it as a matrix using MatrixForm[commutatortable]. \ Occasionally the entries in the commutatortable will have terms that cancel. \ To get rid of these terms use the function Simplify before viewing the \ table."\)], "Print"] }, Open ]], Cell[TextData[StyleBox["Put the commutator table in readable form.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[commutatortable]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ { RowBox[{"(", "\[NoBreak]", GridBox[{ {"0"}, {"0"} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\(-1\)}, {"0"} }], "\[NoBreak]", ")"}]}, { RowBox[{"(", "\[NoBreak]", GridBox[{ {"1"}, {"0"} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"0"}, {"0"} }], "\[NoBreak]", ")"}]} }], "\[NoBreak]", ")"}], MatrixForm[ {{{{0}, {0}}, {{-1}, {0}}}, {{{1}, {0}}, {{0}, { 0}}}}]]], "Output"] }, Open ]], Cell[TextData[StyleBox["This is a solvable Lie algebra that can be used to \ reduce the Blasius equation to first order.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}] }, FrontEndVersion->"4.0 for Macintosh", ScreenRectangle->{{0, 1024}, {0, 748}}, WindowToolbars->{}, CellGrouping->Manual, WindowSize->{721, 679}, WindowMargins->{{15, Automatic}, {9, Automatic}}, PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}}, ShowCellLabel->True, ShowCellTags->False, RenderingOptions->{"ObjectDithering"->True, "RasterDithering"->False}, Magnification->1.25, StyleDefinitions -> "Default.nb", MacintoshSystemPageSetup->"\<\ 01@0001804P000000_82@?okonh34`9B;@85:0?l0@00009H0UP00P0068dB`001 2@00I00100000@004Q800BL?0040000000000000000004<001000`00000@0?oH ofXIX1=F8040400000400000000000l1\>" ] (*********************************************************************** 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[1717, 49, 286, 5, 149, "Text"], Cell[2006, 56, 203, 3, 55, "Text"], Cell[2212, 61, 79, 1, 33, "Input"], Cell[2294, 64, 165, 3, 36, "Text"], Cell[2462, 69, 83, 1, 52, "Input"], Cell[2548, 72, 257, 4, 55, "Text"], Cell[2808, 78, 106, 2, 52, "Input"], Cell[2917, 82, 132, 2, 36, "Text"], Cell[3052, 86, 70, 1, 33, "Input"], Cell[3125, 89, 130, 2, 36, "Text"], Cell[3258, 93, 68, 1, 33, "Input"], Cell[3329, 96, 296, 4, 55, "Text"], Cell[3628, 102, 60, 1, 33, "Input"], Cell[3691, 105, 127, 2, 36, "Text"], Cell[3821, 109, 43, 1, 33, "Input"], Cell[3867, 112, 387, 6, 74, "Text"], Cell[4257, 120, 43, 1, 33, "Input"], Cell[4303, 123, 537, 8, 93, "Text"], Cell[4843, 133, 47, 1, 33, "Input"], Cell[4893, 136, 548, 8, 112, "Text"], Cell[5444, 146, 55, 1, 33, "Input"], Cell[5502, 149, 270, 4, 55, "Text"], Cell[CellGroupData[{ Cell[5797, 157, 221, 4, 71, "Input"], Cell[6021, 163, 920, 13, 275, "Print"], Cell[6944, 178, 69, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[7050, 184, 57, 1, 33, "Input"], Cell[7110, 187, 61, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[7208, 193, 52, 1, 33, "Input"], Cell[7263, 196, 246, 6, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[7546, 207, 243, 4, 55, "Text"], Cell[7792, 213, 46, 1, 33, "Input"], Cell[7841, 216, 65, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[7943, 222, 280, 4, 55, "Text"], Cell[8226, 228, 54, 1, 33, "Input"], Cell[8283, 231, 941, 15, 318, "Output"] }, Open ]], Cell[9239, 249, 98, 3, 36, "Text"], Cell[CellGroupData[{ Cell[9362, 256, 191, 3, 71, "Input"], Cell[9556, 261, 9150, 239, 238, "Output"] }, Open ]], Cell[18721, 503, 509, 11, 169, "Text"], Cell[CellGroupData[{ Cell[19255, 518, 168, 3, 52, "Input"], Cell[19426, 523, 219, 4, 28, "Print"], Cell[19648, 529, 246, 5, 28, "Print"], Cell[19897, 536, 1020, 13, 313, "Print"], Cell[20920, 551, 70, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[21027, 557, 186, 3, 36, "Text"], Cell[21216, 562, 45, 1, 33, "Input"], Cell[21264, 565, 65, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[21366, 571, 143, 2, 36, "Text"], Cell[21512, 575, 45, 1, 33, "Input"], Cell[21560, 578, 59, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[21656, 584, 147, 3, 36, "Text"], Cell[21806, 589, 76, 1, 33, "Input"], Cell[21885, 592, 48, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[21970, 598, 147, 3, 36, "Text"], Cell[22120, 603, 76, 1, 33, "Input"], Cell[22199, 606, 45, 1, 33, "Output"] }, Open ]], Cell[22259, 610, 67, 0, 36, "Text"], Cell[CellGroupData[{ Cell[22351, 614, 115, 2, 33, "Input"], Cell[22469, 618, 63, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[22569, 624, 66, 1, 33, "Input"], Cell[22638, 627, 296, 9, 52, "Output"] }, Open ]], Cell[22949, 639, 332, 5, 74, "Text"], Cell[CellGroupData[{ Cell[23306, 648, 124, 2, 52, "Input"], Cell[23433, 652, 416, 6, 123, "Print"] }, Open ]], Cell[23864, 661, 134, 2, 36, "Text"], Cell[CellGroupData[{ Cell[24023, 667, 60, 1, 33, "Input"], Cell[24086, 670, 841, 23, 105, "Output"] }, Open ]], Cell[24942, 696, 188, 3, 36, "Text"] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)