(* 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[     29087,        781]
NotebookOptionsPosition[     25377,        665]
NotebookOutlinePosition[     26132,        691]
CellTagsIndexPosition[     26089,        688]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[TextData[StyleBox["In this example we use the package IntroToSymmetry.m \
to work out the groups for the  second-order ODE\n\n Yxx-x-aY^2=0 \n \n \
considered in Homework exercise 8.2.",
 FontSize->18,
 FontVariations->{"CompatibilityType"->0}]], "Text",
 ImageRegion->{{0, 1}, {0, 1}},
 FontSize->14],

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.472046856612537*^9, 
  3.4720468573225594`*^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 constant ",
  FontWeight->"Plain"],
 StyleBox["a",
  FontWeight->"Plain",
  FontSlant->"Italic"],
 StyleBox["  is arbitrary.",
  FontWeight->"Plain"]
}], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"inputequation", "=", "\"\<y''[x]-x-a*y[x]^2\>\""}]], "Input"],

Cell[BoxData["\<\"y''[x]-x-a*y[x]^2\"\>"], "Output",
 CellChangeTimes->{3.469397665895762*^9, 3.471552031516213*^9, 
  3.4715520701028757`*^9, 3.4715767588950977`*^9, 3.4835535262643337`*^9}]
}, Open  ]],

Cell[TextData[StyleBox["The function y1 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", "=", 
   RowBox[{"{", "\"\<y''[x]\[Rule]x+a*y[x]^2\>\"", "}"}]}], ";"}]], "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 and constant names that \
have to be preserved when the equation variable names are changed to generic \
x1,y1 variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

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

Cell[TextData[StyleBox["Enter the maximum derivative order of the equation.",
 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 (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 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[
 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[{"Timing", "[", 
  RowBox[{"FindDeterminingEquations", "[", "\[IndentingNewLine]", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "frozennames", ",",
     "p", ",", "r", ",", "xseon", ",", "\[IndentingNewLine]", "inputequation",
     ",", "rulesarray", ",", "internalrules"}], "]"}], "]"}]], "Input"],

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(26329368\\), the time used = \\!\\(3.395879`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 26329368, 3.395879],
  Editable->False]], "Print",
 CellChangeTimes->{3.469397666216905*^9, 3.471552031766672*^9, 
  3.4715520703529243`*^9, 3.471576759158701*^9, 3.483553526511806*^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.469397666216905*^9, 3.471552031766672*^9, 
  3.4715520703529243`*^9, 3.471576759158701*^9, 3.4835535265132236`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(4\\), the \
byte count of zdeterminingequations = \\!\\(688\\), the memory in use = \
\\!\\(26314800\\), the time used = \\!\\(3.4238079999999997`\\)\"\>",
  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 = ``", 4, 688, 26314800, 
   3.4238079999999997`],
  Editable->False]], "Print",
 CellChangeTimes->{3.469397666216905*^9, 3.471552031766672*^9, 
  3.4715520703529243`*^9, 3.471576759158701*^9, 3.483553526547044*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(26315544\\), the time used = \\!\\(3.423991`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 26315544, 3.423991],
  Editable->False]], "Print",
 CellChangeTimes->{3.469397666216905*^9, 3.471552031766672*^9, 
  3.4715520703529243`*^9, 3.471576759158701*^9, 3.483553526591422*^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.469397666216905*^9, 3.471552031766672*^9, 
  3.4715520703529243`*^9, 3.471576759158701*^9, 3.4835535266257677`*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.028674999999999784`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.469397666363351*^9, 3.471552031909892*^9, 
  3.471552070362714*^9, 3.471576759473412*^9, 3.483553526658655*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData["\<\"y1''[x1]-x1-a*y1[x1]^2\"\>"], "Output",
 CellChangeTimes->{3.469397666440535*^9, 3.471552031970779*^9, 
  3.471552070413995*^9, 3.471576759575684*^9, 3.483553526737791*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"-", "1"}], ",", 
   RowBox[{
    RowBox[{"-", "2"}], " ", "a", " ", 
    RowBox[{"y1", "[", "x1", "]"}]}], ",", "0", ",", "1"}], "}"}]], "Output",
 CellChangeTimes->{3.469397666513982*^9, 3.47155203203448*^9, 
  3.471552070499473*^9, 3.471576759656015*^9, 3.483553526809616*^9}]
}, 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[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"z1", "\[Rule]", "x"}], ",", 
   RowBox[{"z2", "\[Rule]", 
    RowBox[{"y", "[", "x", "]"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.4693976665885487`*^9, 3.471552032100747*^9, 
  3.471552070568129*^9, 3.47157675973947*^9, 3.483553526893224*^9}]
}, 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[
 RowBox[{"{", 
  RowBox[{"\<\"-Derivative[0, 2][xse1][z1, z2] == 0\"\>", 
   ",", "\<\"Derivative[0, 2][eta1][z1, z2] - 2*Derivative[1, 1][xse1][z1, \
z2] == 0\"\>", 
   ",", "\<\"-2*a*z2*eta1[z1, z2] - xse1[z1, z2] + z1*Derivative[0, \
1][eta1][z1, z2] + a*z2^2*Derivative[0, 1][eta1][z1, z2] - 2*z1*Derivative[1, \
0][xse1][z1, z2] - 2*a*z2^2*Derivative[1, 0][xse1][z1, z2] + Derivative[2, \
0][eta1][z1, z2] == 0\"\>", 
   ",", "\<\"-3*z1*Derivative[0, 1][xse1][z1, z2] - 3*a*z2^2*Derivative[0, \
1][xse1][z1, z2] + 2*Derivative[1, 1][eta1][z1, z2] - Derivative[2, \
0][xse1][z1, z2] == 0\"\>"}], "}"}]], "Output",
 CellChangeTimes->{3.469397666664002*^9, 3.471552032167598*^9, 
  3.471552070649493*^9, 3.4715767599263353`*^9, 3.483553526976302*^9}]
}, Open  ]],

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

Cell[CellGroupData[{

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

Cell[BoxData["4"], "Output",
 CellChangeTimes->{3.4693976667478437`*^9, 3.471552032233261*^9, 
  3.4715520707538023`*^9, 3.47157676000683*^9, 3.483553527060155*^9}]
}, Open  ]],

Cell["\<\
Lets look at the determining equations in a slightly more readable form.\
\>", "Text",
 FontWeight->"Plain",
 FontVariations->{"CompatibilityType"->0}],

Cell[BoxData[
 RowBox[{"zdeterminingequationscolumn", "=", 
  TagBox[
   FormBox[
    RowBox[{"Column", "[", 
     RowBox[{
      RowBox[{"ToExpression", "[", "zdeterminingequations", "]"}], ",", 
      RowBox[{"{", 
       RowBox[{"Left", ",", "Below"}], "}"}]}], "]"}],
    TraditionalForm],
   TraditionalForm,
   Editable->True]}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{
      RowBox[{"-", 
       RowBox[{
        SuperscriptBox["xse1", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "2"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2"}], "]"}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{
        SuperscriptBox["eta1", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "2"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2"}], "]"}], "-", 
       RowBox[{"2", " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{
        RowBox[{"-", "2"}], " ", "a", " ", "z2", " ", 
        RowBox[{"eta1", "[", 
         RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
       RowBox[{"xse1", "[", 
        RowBox[{"z1", ",", "z2"}], "]"}], "+", 
       RowBox[{"z1", " ", 
        RowBox[{
         SuperscriptBox["eta1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
       RowBox[{"a", " ", 
        SuperscriptBox["z2", "2"], " ", 
        RowBox[{
         SuperscriptBox["eta1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
       RowBox[{"2", " ", "z1", " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
       RowBox[{"2", " ", "a", " ", 
        SuperscriptBox["z2", "2"], " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
       RowBox[{
        SuperscriptBox["eta1", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"2", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2"}], "]"}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{
        RowBox[{"-", "3"}], " ", "z1", " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
       RowBox[{"3", " ", "a", " ", 
        SuperscriptBox["z2", "2"], " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
       RowBox[{"2", " ", 
        RowBox[{
         SuperscriptBox["eta1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
       RowBox[{
        SuperscriptBox["xse1", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"2", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2"}], "]"}]}], "\[Equal]", "0"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Below}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.4693976668318768`*^9, 3.471552032301548*^9, 
  3.471552070850716*^9, 3.4715767600907393`*^9, 3.483553527144129*^9}],

Cell["\<\
Now solve the determining equations in terms of multivariable polynomials of \
a selected order. This function can take a long time. 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", "[", "\[IndentingNewLine]", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "r", ",", "xseon", 
    ",", "zdeterminingequations", ",", 
    RowBox[{"order", "=", "8"}]}], "]"}], "]"}]], "Input",
 CellChangeTimes->{{3.4715520651736593`*^9, 3.471552065701522*^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 = \\!\\(45\\)\"\>",
  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 = ``", 45],
  Editable->False]], "Print",
 CellChangeTimes->{3.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.483553527314664*^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.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.483553527351802*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(26752304\\), The time = \\!\
\\(3.4920859999999996`\\)\"\>",
  StringForm[
  "The memory in use = ``, The time = ``", 26752304, 3.4920859999999996`],
  Editable->False]], "Print",
 CellChangeTimes->{3.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.4835535273929567`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(90\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 90],
  Editable->False]], "Print",
 CellChangeTimes->{3.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.48355352742925*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(163\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 163],
  Editable->False]], "Print",
 CellChangeTimes->{3.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.483553527462316*^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.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.483553527495906*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(26830872\\), The time = \\!\
\\(3.499485`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 26830872, 3.499485],
  Editable->False]], "Print",
 CellChangeTimes->{3.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.4835535275290728`*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{3.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.4835535275623217`*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{3.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.4835535275953913`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(26883896\\), The time = \\!\
\\(3.5145799999999996`\\)\"\>",
  StringForm[
  "The memory in use = ``, The time = ``", 26883896, 3.5145799999999996`],
  Editable->False]], "Print",
 CellChangeTimes->{3.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.4835535276276712`*^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.469397667018414*^9, 3.471552032368779*^9, 
  3.471552070924653*^9, 3.4715767601647167`*^9, 3.483553527664042*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.07852799999999993`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.469397667152783*^9, 3.471552032762395*^9, 
  3.471552071345304*^9, 3.471576760542015*^9, 3.483553527726029*^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_]=0\"\>", "}"}]], "Output",
 CellChangeTimes->{3.4693976672594633`*^9, 3.4715520329028378`*^9, 
  3.4715520714708977`*^9, 3.471576760645392*^9, 3.483553527822639*^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_]=0\"\>", "}"}]], "Output",
 CellChangeTimes->{3.46939766733251*^9, 3.471552032970346*^9, 
  3.471552071538107*^9, 3.471576760725102*^9, 3.483553527895485*^9}]
}, Open  ]],

Cell[TextData[StyleBox["This equation appears to have no symmetries of \
algebraic form. Take a close look at the determining equations and see if you \
can prove that they have no solution.",
 FontWeight->"Plain"]], "Text",
 CellChangeTimes->{{3.4693977077212563`*^9, 3.469397717502586*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

Cell[BoxData["27150832"], "Output",
 CellChangeTimes->{3.469397667418481*^9, 3.471552033035605*^9, 
  3.471552071604497*^9, 3.471576760806984*^9, 3.483553528006113*^9}]
}, Open  ]]
},
WindowToolbars->{},
CellGrouping->Manual,
WindowSize->{1020, 1069},
WindowMargins->{{1, Automatic}, {Automatic, 1}},
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",
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, 306, 6, 116, "Text"],
Cell[854, 28, 124, 1, 26, "Text"],
Cell[981, 31, 160, 4, 27, "Input"],
Cell[1144, 37, 476, 13, 26, "Text"],
Cell[1623, 52, 101, 2, 27, "Input"],
Cell[1727, 56, 298, 10, 26, "Text"],
Cell[CellGroupData[{
Cell[2050, 70, 85, 1, 27, "Input"],
Cell[2138, 73, 191, 2, 27, "Output"]
}, Open  ]],
Cell[2344, 78, 227, 4, 26, "Text"],
Cell[2574, 84, 130, 3, 27, "Input"],
Cell[2707, 89, 130, 2, 26, "Text"],
Cell[2840, 93, 118, 3, 27, "Input"],
Cell[2961, 98, 128, 2, 26, "Text"],
Cell[3092, 102, 116, 3, 27, "Input"],
Cell[3211, 107, 238, 4, 26, "Text"],
Cell[3452, 113, 109, 3, 27, "Input"],
Cell[3564, 118, 141, 2, 26, "Text"],
Cell[3708, 122, 67, 2, 27, "Input"],
Cell[3778, 126, 385, 6, 41, "Text"],
Cell[4166, 134, 67, 2, 27, "Input"],
Cell[4236, 138, 509, 7, 56, "Text"],
Cell[4748, 147, 71, 2, 27, "Input"],
Cell[4822, 151, 534, 8, 56, "Text"],
Cell[5359, 161, 79, 2, 27, "Input"],
Cell[5441, 165, 267, 4, 26, "Text"],
Cell[CellGroupData[{
Cell[5733, 173, 347, 6, 58, "Input"],
Cell[6083, 181, 469, 8, 20, "Print"],
Cell[6555, 191, 1054, 14, 126, "Print"],
Cell[7612, 207, 744, 12, 36, "Print"],
Cell[8359, 221, 437, 8, 20, "Print"],
Cell[8799, 231, 1056, 14, 126, "Print"],
Cell[9858, 247, 229, 4, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10124, 256, 50, 0, 27, "Input"],
Cell[10177, 258, 190, 2, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10404, 265, 45, 0, 27, "Input"],
Cell[10452, 267, 330, 8, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10819, 280, 241, 4, 26, "Text"],
Cell[11063, 286, 39, 0, 27, "Input"],
Cell[11105, 288, 299, 7, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[11441, 300, 278, 4, 26, "Text"],
Cell[11722, 306, 47, 0, 27, "Input"],
Cell[11772, 308, 766, 13, 88, "Output"]
}, Open  ]],
Cell[12553, 324, 57, 0, 26, "Text"],
Cell[CellGroupData[{
Cell[12635, 328, 78, 1, 27, "Input"],
Cell[12716, 331, 164, 2, 27, "Output"]
}, Open  ]],
Cell[12895, 336, 161, 4, 26, "Text"],
Cell[13059, 342, 345, 11, 27, "Input"],
Cell[13407, 355, 4184, 133, 107, "Output"],
Cell[17594, 490, 545, 11, 101, "Text"],
Cell[CellGroupData[{
Cell[18164, 505, 364, 7, 43, "Input"],
Cell[18531, 514, 901, 14, 51, "Print"],
Cell[19435, 530, 463, 6, 51, "Print"],
Cell[19901, 538, 380, 7, 20, "Print"],
Cell[20284, 547, 341, 6, 20, "Print"],
Cell[20628, 555, 367, 7, 20, "Print"],
Cell[20998, 564, 343, 4, 36, "Print"],
Cell[21344, 570, 356, 6, 20, "Print"],
Cell[21703, 578, 190, 2, 20, "Print"],
Cell[21896, 582, 234, 3, 20, "Print"],
Cell[22133, 587, 380, 7, 20, "Print"],
Cell[22516, 596, 1109, 14, 141, "Print"],
Cell[23628, 612, 228, 4, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[23893, 621, 184, 3, 26, "Text"],
Cell[24080, 626, 38, 0, 27, "Input"],
Cell[24121, 628, 212, 3, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[24370, 636, 141, 2, 26, "Text"],
Cell[24514, 640, 38, 0, 27, "Input"],
Cell[24555, 642, 205, 3, 27, "Output"]
}, Open  ]],
Cell[24775, 648, 324, 5, 26, "Text"],
Cell[CellGroupData[{
Cell[25124, 657, 66, 1, 27, "Input"],
Cell[25193, 660, 168, 2, 27, "Output"]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
