(* Content-type: application/mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Mathematica 7.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       145,          7]
NotebookDataLength[     44068,       1268]
NotebookOptionsPosition[     39635,       1129]
NotebookOutlinePosition[     40414,       1156]
CellTagsIndexPosition[     40371,       1153]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[TextData[StyleBox["In this example we use the package IntroToSymmetry.m \
to work out the group for the last equation listed in Table 8.1. \n\n\
Yxx=(1/x^3*)f[Y/x, Y-xYx].",
 FontSize->14,
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell["Clear all symbols in the current context.", "Text",
 CellChangeTimes->{{3.4715644485587473`*^9, 3.47156448605101*^9}}],

Cell[BoxData[
 RowBox[{"ClearAll", "[", 
  RowBox[{"Evaluate", "[", 
   RowBox[{
    RowBox[{"Context", "[", "]"}], "<>", "\"\<*\>\""}], "]"}], "]"}]], "Input"],

Cell[TextData[{
 StyleBox["First read in the package which is located in User Home \
Folder/Library/",
  FontWeight->"Plain"],
 StyleBox["Mathematica",
  FontWeight->"Plain",
  FontSlant->"Italic"],
 StyleBox["/Applications/SymmetryAnalysis.",
  FontWeight->"Plain"]
}], "Text",
 CellChangeTimes->{{3.472046215957556*^9, 3.472046255573135*^9}, {
  3.472046289795615*^9, 3.472046308115048*^9}, {3.4720466725423717`*^9, 
  3.472046673357225*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<SymmetryAnalysis`IntroToSymmetry`\>\"", 
  "]"}]], "Input"],

Cell[TextData[StyleBox["Enter the input equation as a string. Don't include \
the ==0 at the end. The function f[Y/x,Y-xYx]is arbitrary.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{
  "inputequation", "=", "\n", 
   "\"\<D[y[x],x,x]-(1/x^3)*f[y[x]/x,y[x]-x*D[y[x],x]]\>\""}], ";"}]], "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. ",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"rulesarray", "=", "\[IndentingNewLine]", 
   RowBox[{
   "{", "\"\<D[y[x],x,x]\[Rule](1/x^3)*f[y[x]/x,y[x]-x*D[y[x],x]]\>\"", 
    "}"}]}], ";"}]], "Input"],

Cell[TextData[StyleBox["Enter the list of independent variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"independentvariables", "=", 
   RowBox[{"{", "\"\<x\>\"", "}"}]}], ";"}]], "Input"],

Cell[TextData[StyleBox["Enter the list of dependent variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"dependentvariables", "=", 
   RowBox[{"{", "\"\<y\>\"", "}"}]}], ";"}]], "Input"],

Cell[TextData[StyleBox["Enter the list of function or constant names that \
need to be preserved when the equation is transformed to generic (x1,y1) \
variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"frozennames", "=", 
   RowBox[{"{", "\"\<f\>\"", "}"}]}], ";"}]], "Input"],

Cell[TextData[StyleBox["Enter the maximum derivative order.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"p", "=", "2"}], ";"}]], "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[
 RowBox[{
  RowBox[{"r", "=", "0"}], ";"}]], "Input"],

Cell[TextData[StyleBox["When searching for Lie-Backlund groups ie. 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-Backlund groups and \
this can be useful when looking for contact symmetries.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"xseon", "=", "1"}], ";"}]], "Input"],

Cell[TextData[StyleBox["When searching for Lie-Backlund groups it is \
necessary to differentiate the input equation r times produing 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[
 RowBox[{
  RowBox[{"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[
 RowBox[{"FindDeterminingEquations", "[", "\[IndentingNewLine]", 
  RowBox[{
  "independentvariables", ",", "dependentvariables", ",", "frozennames", ",", 
   "p", ",", "r", ",", "\[IndentingNewLine]", "xseon", ",", "inputequation", 
   ",", "rulesarray", ",", "internalrules"}], "]"}]], "Input"],

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(31078680\\), the time used = \\!\\(27.633562`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 31078680, 27.633562],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694027740545683`*^9, 3.469402816299564*^9, 
  3.471554926056669*^9, 3.471577837783719*^9, 3.48365527726118*^9, 
  3.483655352144372*^9, 3.483655476936665*^9}],

Cell[BoxData["\<\"The function FindDeterminingEquations is nearly complete. \
The invariance condition has been created with all rules applied. The final \
step in the generation of the determining equations is to sum together terms \
in the table of invariance condition terms (called infinitesimaltable) that \
are multiplied by the same combination of products of free y derivatives. The \
result is the table infinitesimaltablesums corresponding to matching \
y-derivative expressions. If the invariance condition is long as it often is \
this process could take a long time since it requires sorting through the \
table infinitesimaltable once for each possible combination of y derivative \
products. This is the rate limiting step in the function \
FindDeterminingEquations.Virtually all other steps are quite fast including \
the generation of the extended derivatives of the infinitesimals.\"\>"], \
"Print",
 CellChangeTimes->{3.4694027740545683`*^9, 3.469402816299564*^9, 
  3.471554926056669*^9, 3.471577837783719*^9, 3.48365527726118*^9, 
  3.483655352144372*^9, 3.483655476974168*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(10\\), the \
byte count of zdeterminingequations = \\!\\(1120\\), the memory in use = \
\\!\\(31096416\\), the time used = \\!\\(27.68892`\\)\"\>",
  StringForm[
  "The determining equations have been expressed in terms of z-variables, the \
length of zdeterminingequations = ``, the byte count of zdeterminingequations \
= ``, the memory in use = ``, the time used = ``", 10, 1120, 31096416, 
   27.68892],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694027740545683`*^9, 3.469402816299564*^9, 
  3.471554926056669*^9, 3.471577837783719*^9, 3.48365527726118*^9, 
  3.483655352144372*^9, 3.483655476976778*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(31097160\\), the time used = \\!\\(27.689107999999997`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 31097160, 27.689107999999997`],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694027740545683`*^9, 3.469402816299564*^9, 
  3.471554926056669*^9, 3.471577837783719*^9, 3.48365527726118*^9, 
  3.483655352144372*^9, 3.483655476978711*^9}],

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",
 CellChangeTimes->{3.4694027740545683`*^9, 3.469402816299564*^9, 
  3.471554926056669*^9, 3.471577837783719*^9, 3.48365527726118*^9, 
  3.483655352144372*^9, 3.4836554769805317`*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData["equationgenericvariables"], "Input"],

Cell[BoxData["\<\"D[y1[x1],x1,x1]-(1/x1^3)*f[y1[x1]/x1,y1[x1]-x1*D[y1[x1],x1]]\
\"\>"], "Output",
 CellChangeTimes->{3.469402774281723*^9, 3.46940281640853*^9, 
  3.4715549263391*^9, 3.471577838032219*^9, 3.483655277367029*^9, 
  3.48365535237169*^9, 3.483655477023554*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData["invarconditiontable"], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{
    FractionBox[
     RowBox[{"3", " ", 
      RowBox[{"f", "[", 
       RowBox[{
        FractionBox[
         RowBox[{"y1", "[", "x1", "]"}], "x1"], ",", 
        RowBox[{
         RowBox[{"y1", "[", "x1", "]"}], "-", 
         RowBox[{"x1", " ", 
          RowBox[{
           SuperscriptBox["y1", "\[Prime]",
            MultilineFunction->None], "[", "x1", "]"}]}]}]}], "]"}]}], 
     SuperscriptBox["x1", "4"]], "-", 
    FractionBox[
     RowBox[{
      RowBox[{
       RowBox[{"-", 
        RowBox[{
         SuperscriptBox["y1", "\[Prime]",
          MultilineFunction->None], "[", "x1", "]"}]}], " ", 
       RowBox[{
        SuperscriptBox["f", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "1"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{
         FractionBox[
          RowBox[{"y1", "[", "x1", "]"}], "x1"], ",", 
         RowBox[{
          RowBox[{"y1", "[", "x1", "]"}], "-", 
          RowBox[{"x1", " ", 
           RowBox[{
            SuperscriptBox["y1", "\[Prime]",
             MultilineFunction->None], "[", "x1", "]"}]}]}]}], "]"}]}], "-", 
      FractionBox[
       RowBox[{
        RowBox[{"y1", "[", "x1", "]"}], " ", 
        RowBox[{
         SuperscriptBox["f", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{
          FractionBox[
           RowBox[{"y1", "[", "x1", "]"}], "x1"], ",", 
          RowBox[{
           RowBox[{"y1", "[", "x1", "]"}], "-", 
           RowBox[{"x1", " ", 
            RowBox[{
             SuperscriptBox["y1", "\[Prime]",
              MultilineFunction->None], "[", "x1", "]"}]}]}]}], "]"}]}], 
       SuperscriptBox["x1", "2"]]}], 
     SuperscriptBox["x1", "3"]]}], ",", 
   RowBox[{"-", 
    FractionBox[
     RowBox[{
      RowBox[{
       SuperscriptBox["f", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{
        FractionBox[
         RowBox[{"y1", "[", "x1", "]"}], "x1"], ",", 
        RowBox[{
         RowBox[{"y1", "[", "x1", "]"}], "-", 
         RowBox[{"x1", " ", 
          RowBox[{
           SuperscriptBox["y1", "\[Prime]",
            MultilineFunction->None], "[", "x1", "]"}]}]}]}], "]"}], "+", 
      FractionBox[
       RowBox[{
        SuperscriptBox["f", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"1", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{
         FractionBox[
          RowBox[{"y1", "[", "x1", "]"}], "x1"], ",", 
         RowBox[{
          RowBox[{"y1", "[", "x1", "]"}], "-", 
          RowBox[{"x1", " ", 
           RowBox[{
            SuperscriptBox["y1", "\[Prime]",
             MultilineFunction->None], "[", "x1", "]"}]}]}]}], "]"}], "x1"]}], 
     SuperscriptBox["x1", "3"]]}], ",", 
   FractionBox[
    RowBox[{
     SuperscriptBox["f", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"0", ",", "1"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{
      FractionBox[
       RowBox[{"y1", "[", "x1", "]"}], "x1"], ",", 
      RowBox[{
       RowBox[{"y1", "[", "x1", "]"}], "-", 
       RowBox[{"x1", " ", 
        RowBox[{
         SuperscriptBox["y1", "\[Prime]",
          MultilineFunction->None], "[", "x1", "]"}]}]}]}], "]"}], 
    SuperscriptBox["x1", "2"]], ",", "1"}], "}"}]], "Output",
 CellChangeTimes->{3.4694027743524513`*^9, 3.469402816458477*^9, 
  3.471554926420519*^9, 3.471577838092723*^9, 3.483655277422163*^9, 
  3.483655352441593*^9, 3.4836554770795097`*^9}]
}, Open  ]],

Cell[BoxData["ztableofrules"], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"z1", "\[Rule]", "x"}], ",", 
   RowBox[{"z2", "\[Rule]", 
    RowBox[{"y", "[", "x", "]"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.469402774446136*^9, 3.469402816506215*^9, 
  3.47155492650626*^9, 3.471577838166057*^9, 3.4836552774839907`*^9, 
  3.483655352527131*^9, 3.4836554771244392`*^9}],

Cell[CellGroupData[{

Cell[TextData[StyleBox["Here are the determining equations expressed in terms \
of z-variables.  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[
 RowBox[{"{", 
  RowBox[{"\<\"-(z1*eta1[z1, z2]) + z2*xse1[z1, z2] == 0\"\>", 
   ",", "\<\"-3*z1^2*Derivative[0, 1][xse1][z1, z2] == 0\"\>", 
   ",", "\<\"-(z1^3*Derivative[0, 1][xse1][z1, z2]) == 0\"\>", 
   ",", "\<\"-(z1^5*Derivative[0, 2][xse1][z1, z2]) == 0\"\>", 
   ",", "\<\"-(z1^2*eta1[z1, z2]) + z1^3*Derivative[1, 0][eta1][z1, z2] == \
0\"\>", ",", "\<\"3*z1*xse1[z1, z2] + z1^2*Derivative[0, 1][eta1][z1, z2] - \
2*z1^2*Derivative[1, 0][xse1][z1, z2] == 0\"\>", 
   ",", "\<\"z1^2*xse1[z1, z2] + z1^3*Derivative[0, 1][eta1][z1, z2] - \
z1^3*Derivative[1, 0][xse1][z1, z2] == 0\"\>", 
   ",", "\<\"z1^5*Derivative[0, 2][eta1][z1, z2] - 2*z1^5*Derivative[1, \
1][xse1][z1, z2] == 0\"\>", 
   ",", "\<\"z1^5*Derivative[2, 0][eta1][z1, z2] == 0\"\>", 
   ",", "\<\"2*z1^5*Derivative[1, 1][eta1][z1, z2] - z1^5*Derivative[2, \
0][xse1][z1, z2] == 0\"\>"}], "}"}]], "Output",
 CellChangeTimes->{3.469402774518808*^9, 3.469402816562594*^9, 
  3.471554926587051*^9, 3.471577838224324*^9, 3.483655277538033*^9, 
  3.483655352608066*^9, 3.483655477177026*^9}]
}, Open  ]],

Cell["How many determining equations are there?", "Text"],

Cell[CellGroupData[{

Cell["Length[zdeterminingequations]", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData["10"], "Output",
 CellChangeTimes->{3.469402774612069*^9, 3.469402816624503*^9, 
  3.471554926681204*^9, 3.471577838298113*^9, 3.483655277600251*^9, 
  3.483655352713746*^9, 3.4836554772275667`*^9}]
}, Open  ]],

Cell["\<\
Here are the determining equations in a slightly more readable form as \
expressions rather than strings.\
\>", "Text"],

Cell[BoxData[
 RowBox[{"zdeterminingequationscolumn", "=", 
  RowBox[{"TraditionalForm", "[", 
   RowBox[{"Column", "[", 
    RowBox[{
     RowBox[{"ToExpression", "[", "zdeterminingequations", "]"}], ",", 
     RowBox[{"{", 
      RowBox[{"Left", ",", "Below"}], "}"}]}], "]"}], "]"}]}]], "Input",
 CellChangeTimes->{{3.469402681023583*^9, 3.469402700257215*^9}}],

Cell[BoxData[
 FormBox[
  TagBox[GridBox[{
     {
      RowBox[{
       RowBox[{
        RowBox[{"z2", " ", 
         RowBox[{"xse1", "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}], "-", 
        RowBox[{"z1", " ", 
         RowBox[{"eta1", "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}]}], "\[LongEqual]", "0"}]},
     {
      RowBox[{
       RowBox[{
        RowBox[{"-", "3"}], " ", 
        SuperscriptBox["z1", "2"], " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "(", 
         RowBox[{"z1", ",", "z2"}], ")"}]}], "\[LongEqual]", "0"}]},
     {
      RowBox[{
       RowBox[{
        RowBox[{"-", 
         SuperscriptBox["z1", "3"]}], " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "(", 
         RowBox[{"z1", ",", "z2"}], ")"}]}], "\[LongEqual]", "0"}]},
     {
      RowBox[{
       RowBox[{
        RowBox[{"-", 
         SuperscriptBox["z1", "5"]}], " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "2"}], ")"}],
           Derivative],
          MultilineFunction->None], "(", 
         RowBox[{"z1", ",", "z2"}], ")"}]}], "\[LongEqual]", "0"}]},
     {
      RowBox[{
       RowBox[{
        RowBox[{
         SuperscriptBox["z1", "3"], " ", 
         RowBox[{
          SuperscriptBox["eta1", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"1", ",", "0"}], ")"}],
            Derivative],
           MultilineFunction->None], "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}], "-", 
        RowBox[{
         SuperscriptBox["z1", "2"], " ", 
         RowBox[{"eta1", "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}]}], "\[LongEqual]", "0"}]},
     {
      RowBox[{
       RowBox[{
        RowBox[{
         SuperscriptBox["z1", "2"], " ", 
         RowBox[{
          SuperscriptBox["eta1", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"0", ",", "1"}], ")"}],
            Derivative],
           MultilineFunction->None], "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}], "-", 
        RowBox[{"2", " ", 
         SuperscriptBox["z1", "2"], " ", 
         RowBox[{
          SuperscriptBox["xse1", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"1", ",", "0"}], ")"}],
            Derivative],
           MultilineFunction->None], "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}], "+", 
        RowBox[{"3", " ", "z1", " ", 
         RowBox[{"xse1", "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}]}], "\[LongEqual]", "0"}]},
     {
      RowBox[{
       RowBox[{
        RowBox[{
         SuperscriptBox["z1", "3"], " ", 
         RowBox[{
          SuperscriptBox["eta1", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"0", ",", "1"}], ")"}],
            Derivative],
           MultilineFunction->None], "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}], "-", 
        RowBox[{
         SuperscriptBox["z1", "3"], " ", 
         RowBox[{
          SuperscriptBox["xse1", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"1", ",", "0"}], ")"}],
            Derivative],
           MultilineFunction->None], "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}], "+", 
        RowBox[{
         SuperscriptBox["z1", "2"], " ", 
         RowBox[{"xse1", "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}]}], "\[LongEqual]", "0"}]},
     {
      RowBox[{
       RowBox[{
        RowBox[{
         SuperscriptBox["z1", "5"], " ", 
         RowBox[{
          SuperscriptBox["eta1", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"0", ",", "2"}], ")"}],
            Derivative],
           MultilineFunction->None], "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}], "-", 
        RowBox[{"2", " ", 
         SuperscriptBox["z1", "5"], " ", 
         RowBox[{
          SuperscriptBox["xse1", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"1", ",", "1"}], ")"}],
            Derivative],
           MultilineFunction->None], "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}]}], "\[LongEqual]", "0"}]},
     {
      RowBox[{
       RowBox[{
        SuperscriptBox["z1", "5"], " ", 
        RowBox[{
         SuperscriptBox["eta1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"2", ",", "0"}], ")"}],
           Derivative],
          MultilineFunction->None], "(", 
         RowBox[{"z1", ",", "z2"}], ")"}]}], "\[LongEqual]", "0"}]},
     {
      RowBox[{
       RowBox[{
        RowBox[{"2", " ", 
         SuperscriptBox["z1", "5"], " ", 
         RowBox[{
          SuperscriptBox["eta1", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"1", ",", "1"}], ")"}],
            Derivative],
           MultilineFunction->None], "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}], "-", 
        RowBox[{
         SuperscriptBox["z1", "5"], " ", 
         RowBox[{
          SuperscriptBox["xse1", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"2", ",", "0"}], ")"}],
            Derivative],
           MultilineFunction->None], "(", 
          RowBox[{"z1", ",", "z2"}], ")"}]}]}], "\[LongEqual]", "0"}]}
    },
    GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Below}}},
    GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
   "Column"], TraditionalForm]], "Output",
 CellChangeTimes->{3.469402774687044*^9, 3.469402816676733*^9, 
  3.471554926741818*^9, 3.4715778383743353`*^9, 3.483655277656619*^9, 
  3.483655352793108*^9, 3.483655477260858*^9}],

Cell["Convert the determining equations to expressions.", "Text"],

Cell[CellGroupData[{

Cell["zdeteqns=ToExpression[zdeterminingequations]", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{
    RowBox[{
     RowBox[{
      RowBox[{"-", "z1"}], " ", 
      RowBox[{"eta1", "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
     RowBox[{"z2", " ", 
      RowBox[{"xse1", "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{"-", "3"}], " ", 
     SuperscriptBox["z1", "2"], " ", 
     RowBox[{
      SuperscriptBox["xse1", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"0", ",", "1"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"z1", ",", "z2"}], "]"}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{"-", 
      SuperscriptBox["z1", "3"]}], " ", 
     RowBox[{
      SuperscriptBox["xse1", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"0", ",", "1"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"z1", ",", "z2"}], "]"}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{"-", 
      SuperscriptBox["z1", "5"]}], " ", 
     RowBox[{
      SuperscriptBox["xse1", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"0", ",", "2"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"z1", ",", "z2"}], "]"}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{
      RowBox[{"-", 
       SuperscriptBox["z1", "2"]}], " ", 
      RowBox[{"eta1", "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["z1", "3"], " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{"3", " ", "z1", " ", 
      RowBox[{"xse1", "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["z1", "2"], " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{"2", " ", 
      SuperscriptBox["z1", "2"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{
      SuperscriptBox["z1", "2"], " ", 
      RowBox[{"xse1", "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["z1", "3"], " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{
      SuperscriptBox["z1", "3"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{
      SuperscriptBox["z1", "5"], " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "2"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{"2", " ", 
      SuperscriptBox["z1", "5"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     SuperscriptBox["z1", "5"], " ", 
     RowBox[{
      SuperscriptBox["eta1", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"2", ",", "0"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"z1", ",", "z2"}], "]"}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{"2", " ", 
      SuperscriptBox["z1", "5"], " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{
      SuperscriptBox["z1", "5"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"2", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}]}], 
  "}"}]], "Output",
 CellChangeTimes->{3.469402774798284*^9, 3.4694028167573023`*^9, 
  3.471554926925418*^9, 3.471577838448941*^9, 3.4836552777195873`*^9, 
  3.4836553529631443`*^9, 3.48365547729698*^9}]
}, 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[
 RowBox[{"Timing", "[", 
  RowBox[{"SolveDeterminingEquations", "[", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "r", ",", "xseon", 
    ",", "\[IndentingNewLine]", "zdeterminingequations", ",", 
    RowBox[{"order", "=", "4"}]}], "]"}], "]"}]], "Input",
 CellChangeTimes->{{3.469402807565558*^9, 3.4694028083560038`*^9}}],

Cell[BoxData[
 InterpretationBox["\<\"The variable powertablelength is the number of terms \
required for each multivariate polynomial used for the infinitesimals. This \
number is determined by the choice of polynomial order and the number of \
zvariables. The time needed to solve the determining equations increases as \
powertable increases. powertablelength = \\!\\(15\\)\"\>",
  StringForm[
  "The variable powertablelength is the number of terms required for each \
multivariate polynomial used for the infinitesimals. This number is \
determined by the choice of polynomial order and the number of zvariables. \
The time needed to solve the determining equations increases as powertable \
increases. powertablelength = ``", 15],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.48365547734157*^9}],

Cell[BoxData["\<\"The polynomial expansions have been substituted into the \
determining equations. It is now time to collect the coefficients of various \
powers of zvariables into a table called table of coefficientsall. This step \
uses the function CoefficientList and is a fairly time consuming procedure.\"\
\>"], "Print",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.483655477344461*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(31176112\\), The time = \\!\
\\(27.736705`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 31176112, 27.736705],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.48365547734649*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(30\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 30],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.483655477348157*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(92\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 92],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.48365547734975*^9}],

Cell[BoxData["\<\"Now it we are ready to use the function Solve to find the \
nonzero polynomial coefficients corresponding to the symmetries of the input \
equation(s). This can take a while.\"\>"], "Print",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.483655477351308*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(31192344\\), The time = \\!\
\\(27.739439`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 31192344, 27.739439],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.483655477352977*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.48365547735437*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.4836554773556337`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(31204280\\), The time = \\!\
\\(27.740714`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 31204280, 27.740714],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.483655477356926*^9}],

Cell[BoxData["\<\"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. \
\\n\\nKeep in mind that this function only finds solutions of the determining \
equations that are of polynomial 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",
 CellChangeTimes->{
  3.469402774990664*^9, {3.4694028094933023`*^9, 3.4694028168431473`*^9}, 
   3.471554927007283*^9, 3.471577838595714*^9, 3.483655277767954*^9, 
   3.4836553530451183`*^9, 3.48365547735811*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.023518999999996737`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{
  3.469402774995534*^9, {3.469402809497827*^9, 3.469402816848126*^9}, 
   3.471554927017338*^9, 3.4715778386064568`*^9, 3.483655277782565*^9, 
   3.483655353055397*^9, 3.483655477359996*^9}]
}, 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[
 RowBox[{"{", "\<\"xse1[z1_, z2_]=b16*z1^2\"\>", "}"}]], "Output",
 CellChangeTimes->{3.4694027750536737`*^9, 3.4694028168971033`*^9, 
  3.4715549270652523`*^9, 3.4715778386482286`*^9, 3.4836552778182917`*^9, 
  3.483655353102954*^9, 3.483655477392694*^9}]
}, 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[
 RowBox[{"{", "\<\"eta1[z1_, z2_]=b16*z1*z2\"\>", "}"}]], "Output",
 CellChangeTimes->{3.469402775115943*^9, 3.469402816959536*^9, 
  3.471554927119144*^9, 3.471577838703521*^9, 3.483655277873234*^9, 
  3.483655353156747*^9, 3.4836554774459333`*^9}]
}, 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[
 RowBox[{
  RowBox[{"ToExpression", "[", "xsefunctions", "]"}], "/.", 
  "ztableofrules"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"b16", " ", 
   SuperscriptBox["x", "2"]}], "}"}]], "Output",
 CellChangeTimes->{3.4694027751707*^9, 3.469402817013884*^9, 
  3.471554927182057*^9, 3.47157783875276*^9, 3.4836552779349403`*^9, 
  3.483655353222262*^9, 3.483655477495677*^9}]
}, 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[
 RowBox[{
  RowBox[{"ToExpression", "[", "etafunctions", "]"}], "/.", 
  "ztableofrules"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"b16", " ", "x", " ", 
   RowBox[{"y", "[", "x", "]"}]}], "}"}]], "Output",
 CellChangeTimes->{3.4694027752331457`*^9, 3.469402817076502*^9, 
  3.471554927236127*^9, 3.4715778387988367`*^9, 3.4836552781116734`*^9, 
  3.4836553533034487`*^9, 3.483655477557403*^9}]
}, Open  ]],

Cell["Here is a list of the various infinitesimal groups.", "Text"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"infinitesimalgroupsxy", "=", 
  RowBox[{"infinitesimalgroups", "/.", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"z1", "\[Rule]", "x"}], ",", 
     RowBox[{"z2", "\[Rule]", "y"}]}], "}"}]}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"{", 
     SuperscriptBox["x", "2"], "}"}], ",", 
    RowBox[{"{", 
     RowBox[{"x", " ", "y"}], "}"}]}], "}"}], "}"}]], "Output",
 CellChangeTimes->{3.483655278236116*^9, 3.483655353351753*^9, 
  3.483655477622839*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Column", "[", "infinitesimalgroupsxy", "]"}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        SuperscriptBox["x", "2"], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"x", " ", "y"}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.483655278295971*^9, 3.48365535340392*^9, 
  3.483655477756781*^9}]
}, Open  ]],

Cell["\<\
The equation is invariant under a projective group. Check that this symmetry \
satisfies the determining equations.\
\>", "Text",
 CellChangeTimes->{{3.471554522867668*^9, 3.4715545458246326`*^9}, {
  3.483655288412184*^9, 3.483655339559939*^9}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Simplify", "[", 
  RowBox[{"ToExpression", "[", "zdeterminingequations", "]"}], "]"}]], "Input",\

 CellChangeTimes->{{3.471554552278927*^9, 3.471554590561404*^9}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
  "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", 
   ",", "True", ",", "True", ",", "True", ",", "True"}], "}"}]], "Output",
 CellChangeTimes->{3.4715549403207684`*^9, 3.471577838872224*^9, 
  3.48365527836272*^9, 3.483655353453289*^9, 3.4836554778066998`*^9}]
}, Open  ]],

Cell[TextData[StyleBox["The package finds the projective group \
(xse,eta)=(x^2,xy).",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"MaxMemoryUsed", "[", "]"}]], "Input"],

Cell[BoxData["31276640"], "Output",
 CellChangeTimes->{3.469402775282043*^9, 3.469402817217854*^9, 
  3.471554927298623*^9, 3.47157783894954*^9, 3.483655278428302*^9, 
  3.483655353503696*^9, 3.483655477856495*^9}]
}, Open  ]]
},
WindowToolbars->{},
CellGrouping->Manual,
WindowSize->{1064, 1028},
WindowMargins->{{253, Automatic}, {30, Automatic}},
PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}},
ShowCellLabel->True,
ShowCellTags->False,
RenderingOptions->{"ObjectDithering"->True,
"RasterDithering"->False},
MacintoshSystemPageSetup -> \
"01@0001804P000000_82@?okonh34`9B;@85:0?l0@00009H0UP00P0068dB`001\n\
2@00I00100000@004Q800BL?0040000000000000000004<001000`00000@0?oH\n\
ofXIX1=F8040400000400000000000l1",
Magnification->1.25,
FrontEndVersion->"7.0 for Mac OS X x86 (32-bit) (February 18, 2009)",
StyleDefinitions->"Default.nb"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[545, 20, 257, 5, 76, "Text"],
Cell[805, 27, 124, 1, 32, "Text"],
Cell[932, 30, 160, 4, 33, "Input"],
Cell[1095, 36, 476, 13, 32, "Text"],
Cell[1574, 51, 101, 2, 33, "Input"],
Cell[1678, 55, 202, 3, 32, "Text"],
Cell[1883, 60, 145, 4, 53, "Input"],
Cell[2031, 66, 229, 4, 32, "Text"],
Cell[2263, 72, 191, 5, 53, "Input"],
Cell[2457, 79, 130, 2, 32, "Text"],
Cell[2590, 83, 118, 3, 33, "Input"],
Cell[2711, 88, 128, 2, 32, "Text"],
Cell[2842, 92, 116, 3, 33, "Input"],
Cell[2961, 97, 227, 4, 32, "Text"],
Cell[3191, 103, 109, 3, 33, "Input"],
Cell[3303, 108, 125, 2, 32, "Text"],
Cell[3431, 112, 67, 2, 33, "Input"],
Cell[3501, 116, 385, 6, 51, "Text"],
Cell[3889, 124, 67, 2, 33, "Input"],
Cell[3959, 128, 511, 7, 70, "Text"],
Cell[4473, 137, 71, 2, 33, "Input"],
Cell[4547, 141, 533, 8, 70, "Text"],
Cell[5083, 151, 79, 2, 33, "Input"],
Cell[5165, 155, 268, 4, 51, "Text"],
Cell[CellGroupData[{
Cell[5458, 163, 310, 5, 72, "Input"],
Cell[5771, 170, 517, 9, 45, "Print"],
Cell[6291, 181, 1098, 15, 178, "Print"],
Cell[7392, 198, 773, 13, 64, "Print"],
Cell[8168, 213, 504, 9, 25, "Print"],
Cell[8675, 224, 1102, 15, 178, "Print"]
}, Open  ]],
Cell[CellGroupData[{
Cell[9814, 244, 50, 0, 33, "Input"],
Cell[9867, 246, 273, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10177, 255, 45, 0, 33, "Input"],
Cell[10225, 257, 3763, 118, 212, "Output"]
}, Open  ]],
Cell[14003, 378, 39, 0, 33, "Input"],
Cell[14045, 380, 348, 8, 33, "Output"],
Cell[CellGroupData[{
Cell[14418, 392, 248, 4, 32, "Text"],
Cell[14669, 398, 47, 0, 33, "Input"],
Cell[14719, 400, 1076, 18, 167, "Output"]
}, Open  ]],
Cell[15810, 421, 57, 0, 32, "Text"],
Cell[CellGroupData[{
Cell[15892, 425, 78, 1, 33, "Input"],
Cell[15973, 428, 211, 3, 33, "Output"]
}, Open  ]],
Cell[16199, 434, 129, 3, 32, "Text"],
Cell[16331, 439, 364, 8, 33, "Input"],
Cell[16698, 449, 5800, 185, 266, "Output"],
Cell[22501, 636, 65, 0, 32, "Text"],
Cell[CellGroupData[{
Cell[22591, 640, 93, 1, 33, "Input"],
Cell[22687, 643, 5110, 174, 166, "Output"]
}, Open  ]],
Cell[27812, 820, 509, 11, 145, "Text"],
Cell[CellGroupData[{
Cell[28346, 835, 364, 7, 53, "Input"],
Cell[28713, 844, 980, 16, 83, "Print"],
Cell[29696, 862, 543, 8, 64, "Print"],
Cell[30242, 872, 435, 8, 25, "Print"],
Cell[30680, 882, 422, 8, 25, "Print"],
Cell[31105, 892, 444, 9, 25, "Print"],
Cell[31552, 903, 423, 6, 45, "Print"],
Cell[31978, 911, 436, 8, 25, "Print"],
Cell[32417, 921, 267, 4, 25, "Print"],
Cell[32687, 927, 314, 5, 25, "Print"],
Cell[33004, 934, 436, 8, 25, "Print"],
Cell[33443, 944, 1188, 16, 216, "Print"],
Cell[34634, 962, 307, 6, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[34978, 973, 184, 3, 32, "Text"],
Cell[35165, 978, 38, 0, 33, "Input"],
Cell[35206, 980, 270, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[35513, 989, 141, 2, 32, "Text"],
Cell[35657, 993, 38, 0, 33, "Input"],
Cell[35698, 995, 263, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[35998, 1004, 144, 3, 32, "Text"],
Cell[36145, 1009, 115, 3, 33, "Input"],
Cell[36263, 1014, 279, 6, 42, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[36579, 1025, 143, 2, 32, "Text"],
Cell[36725, 1029, 115, 3, 33, "Input"],
Cell[36843, 1034, 302, 6, 33, "Output"]
}, Open  ]],
Cell[37160, 1043, 67, 0, 32, "Text"],
Cell[CellGroupData[{
Cell[37252, 1047, 226, 6, 33, "Input"],
Cell[37481, 1055, 289, 9, 42, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[37807, 1069, 79, 1, 33, "Input"],
Cell[37889, 1072, 449, 14, 41, "Output"]
}, Open  ]],
Cell[38353, 1089, 256, 5, 32, "Text"],
Cell[CellGroupData[{
Cell[38634, 1098, 188, 4, 33, "Input"],
Cell[38825, 1104, 326, 6, 33, "Output"]
}, Open  ]],
Cell[39166, 1113, 150, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[39341, 1120, 61, 1, 33, "Input"],
Cell[39405, 1123, 214, 3, 33, "Output"]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
