(*********************************************************************** 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[ 68470, 1770]*) (*NotebookOutlinePosition[ 69636, 1808]*) (* CellTagsIndexPosition[ 69592, 1804]*) (*WindowFrame->Normal*) Notebook[{ Cell[TextData[StyleBox["In this example we use the package IntroToSymmetry.m \ to work out the point group of the nonlinear heat equation, \n\n\ Ut-(k(U))xUx-k(U)Uxx=0.\n\nfor one more choice of k(U). Reference: Ibragimov, \ N. CRC Handbook Volume 1, page 110.", FontSize->14, FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell["\<\ This next command turns off spurious spelling error warnings.\ \>", \ "Text"], Cell[BoxData[ \(Off[General::spell]\)], "Input"], 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["Define the diffusivity function.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(k[u_[x_, t_]] := u[x, t]^sigma\)], "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[ \(\(inputequation = \n\ "\";\)\)], \ "Input"], Cell[TextData[StyleBox["The function u[x,t] 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]{"\D[k[u[x,t]],x]*D[u[x,t],x]+k[u[x,t]]*D[u[\ x,t],x,x]\>"};\)\)], "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 and constant names that \ need to be preserved when the equation is converted to generic y1[x1,x2] \ variables.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(frozennames = {"\", "\"};\)\)], "Input"], Cell[TextData[StyleBox["Enter the maximum derivative order of the input \ equation(s).", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(porder = 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[ \(\(rorder = 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[ \(\(xseon = 1;\)\)], "Input"], Cell[TextData[StyleBox["When searching for Lie-Backlund groups it is \ necessary to differentiate the input equation with respect to each of the \ independent variables 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[ \(FindDeterminingEquations[\[IndentingNewLine]independentvariables, dependentvariables, frozennames, porder, rorder, xseon, inputequation, 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"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(equationgenericvariables\)], "Input"], Cell[BoxData[ \("D[y1[x1,x2],x2]-D[k[y1[x1,x2]],x1]*D[y1[x1,x2],x1]-k[y1[x1,x2]]*D[y1[\ x1,x2],x1,x1]"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(invarconditiontable\)], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{"0", ",", "0", ",", RowBox[{ RowBox[{\(-\((\(-1\) + sigma)\)\), " ", "sigma", " ", \(y1[x1, x2]\^\(\(-2\) + sigma\)\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["y1", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}], "2"]}], "-", RowBox[{"sigma", " ", \(y1[x1, x2]\^\(\(-1\) + sigma\)\), " ", RowBox[{ SuperscriptBox["y1", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}]}]}], ",", RowBox[{\(-2\), " ", "sigma", " ", \(y1[x1, x2]\^\(\(-1\) + sigma\)\), " ", RowBox[{ SuperscriptBox["y1", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}]}], ",", "1", ",", \(-y1[x1, x2]\^sigma\), ",", "0", ",", "0"}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["The program expresses the determining equations in \ terms of zvariables. 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] t, z3 \[Rule] u[x, t]}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TraditionalForm[\[IndentingNewLine]ColumnForm[ ToExpression[zdeterminingequations], Left, Below]]\)], "Input"], Cell[BoxData[ FormBox[ InterpretationBox[GridBox[{ { RowBox[{ RowBox[{\(\(-sigma\^2\)\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 2\)\), "+", \(sigma\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 2\)\), "-", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "+", RowBox[{"2", " ", "sigma", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{ RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(2\ sigma - 1\)\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{\(\(-sigma\)\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 1\)\), "-", RowBox[{ RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{ RowBox[{ SuperscriptBox["xse2", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(2\ sigma\)\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "+", RowBox[{ RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{"2", " ", \(sigma\^2\), " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(2\ sigma - 2\)\)}], "+", RowBox[{"2", " ", "sigma", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(2\ sigma - 1\)\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{"2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(2\ sigma\)\)}], "+", RowBox[{"2", " ", "sigma", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(2\ sigma - 1\)\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{\(sigma\^2\), " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(2\ sigma - 2\)\)}], "+", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(2\ sigma - 1\)\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{"2", " ", \(z3\^sigma\), " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(2\ sigma\)\)}], "+", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(2\ sigma - 1\)\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], "-", RowBox[{\(z3\^sigma\), " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}]}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{\(-2\), " ", "sigma", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{"2", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{ RowBox[{ SuperscriptBox["xse1", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "-", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}]}], "==", "0"}]}, { RowBox[{ RowBox[{"2", " ", \(z3\^sigma\), " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}]}], "==", "0"}]} }, GridBaseline->Top, ColumnAlignments->{Left}], ColumnForm[ { Equal[ Plus[ Times[ sigma, Power[ z3, Plus[ -2, sigma]], eta1[ z1, z2, z3]], Times[ -1, Power[ sigma, 2], Power[ z3, Plus[ -2, sigma]], eta1[ z1, z2, z3]], Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 0, 1][ eta1][ z1, z2, z3]], Times[ -1, Power[ z3, sigma], Derivative[ 0, 0, 2][ eta1][ z1, z2, z3]], Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 1, 0][ xse2][ z1, z2, z3]], Times[ 2, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 1, 0, 0][ xse1][ z1, z2, z3]], Times[ 2, Power[ z3, sigma], Derivative[ 1, 0, 1][ xse1][ z1, z2, z3]], Times[ sigma, Power[ z3, Plus[ -1, Times[ 2, sigma]]], Derivative[ 2, 0, 0][ xse2][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], eta1[ z1, z2, z3]], Times[ -1, Power[ z3, sigma], Derivative[ 0, 1, 0][ xse2][ z1, z2, z3]], Times[ 2, Power[ z3, sigma], Derivative[ 1, 0, 0][ xse1][ z1, z2, z3]], Times[ Power[ z3, Times[ 2, sigma]], Derivative[ 2, 0, 0][ xse2][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 0, 1][ xse1][ z1, z2, z3]], Times[ Power[ z3, sigma], Derivative[ 0, 0, 2][ xse1][ z1, z2, z3]], Times[ 2, Power[ sigma, 2], Power[ z3, Plus[ -2, Times[ 2, sigma]]], Derivative[ 1, 0, 0][ xse2][ z1, z2, z3]], Times[ 2, sigma, Power[ z3, Plus[ -1, Times[ 2, sigma]]], Derivative[ 1, 0, 1][ xse2][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ 2, Power[ z3, sigma], Derivative[ 0, 0, 1][ xse1][ z1, z2, z3]], Times[ 2, sigma, Power[ z3, Plus[ -1, Times[ 2, sigma]]], Derivative[ 1, 0, 0][ xse2][ z1, z2, z3]], Times[ 2, Power[ z3, Times[ 2, sigma]], Derivative[ 1, 0, 1][ xse2][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ Power[ sigma, 2], Power[ z3, Plus[ -2, Times[ 2, sigma]]], Derivative[ 0, 0, 1][ xse2][ z1, z2, z3]], Times[ sigma, Power[ z3, Plus[ -1, Times[ 2, sigma]]], Derivative[ 0, 0, 2][ xse2][ z1, z2, z3]]], 0], Equal[ Times[ 2, Power[ z3, sigma], Derivative[ 0, 0, 1][ xse2][ z1, z2, z3]], 0], Equal[ Plus[ Times[ sigma, Power[ z3, Plus[ -1, Times[ 2, sigma]]], Derivative[ 0, 0, 1][ xse2][ z1, z2, z3]], Times[ Power[ z3, Times[ 2, sigma]], Derivative[ 0, 0, 2][ xse2][ z1, z2, z3]]], 0], Equal[ Plus[ Derivative[ 0, 1, 0][ eta1][ z1, z2, z3], Times[ -1, Power[ z3, sigma], Derivative[ 2, 0, 0][ eta1][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ -1, Derivative[ 0, 1, 0][ xse1][ z1, z2, z3]], Times[ -2, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 1, 0, 0][ eta1][ z1, z2, z3]], Times[ -2, Power[ z3, sigma], Derivative[ 1, 0, 1][ eta1][ z1, z2, z3]], Times[ Power[ z3, sigma], Derivative[ 2, 0, 0][ xse1][ z1, z2, z3]]], 0], Equal[ Times[ 2, Power[ z3, sigma], Derivative[ 1, 0, 0][ xse2][ z1, z2, z3]], 0]}, Left, Below], Editable->False], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[StyleBox["Remove redundancies to try to simplify the \ determining equations.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(zdeterminingequationsreduced1 = ToExpression[ zdeterminingequations] /. \[IndentingNewLine]{D[xse2[z1, z2, z3], z1] \[Rule] 0, \[IndentingNewLine]D[xse2[z1, z2, z3], z1, z1] \[Rule] 0, \[IndentingNewLine]D[xse2[z1, z2, z3], z1, z2] \[Rule] 0, \[IndentingNewLine]D[xse2[z1, z2, z3], z1, z3] \[Rule] 0, \[IndentingNewLine]D[xse2[z1, z2, z3], z3] \[Rule] 0, \[IndentingNewLine]D[xse2[z1, z2, z3], z3, z3] \[Rule] 0, \[IndentingNewLine]D[xse2[z1, z2, z3], z2, z3] \[Rule] 0};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(TraditionalForm[\[IndentingNewLine]ColumnForm[ zdeterminingequationsreduced1, Left, Below]]\)], "Input"], Cell[BoxData[ FormBox[ InterpretationBox[GridBox[{ { RowBox[{ RowBox[{\(\(-sigma\^2\)\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 2\)\), "+", \(sigma\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 2\)\), "-", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "+", RowBox[{"2", " ", "sigma", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{ RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{\(\(-sigma\)\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 1\)\), "-", RowBox[{ RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "+", RowBox[{ RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{"2", " ", \(z3\^sigma\), " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}]}], "==", "0"}]}, {"True"}, {"True"}, {"True"}, { RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], "-", RowBox[{\(z3\^sigma\), " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}]}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{\(-2\), " ", "sigma", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{"2", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{ RowBox[{ SuperscriptBox["xse1", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "-", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}]}], "==", "0"}]}, {"True"} }, GridBaseline->Top, ColumnAlignments->{Left}], ColumnForm[ { Equal[ Plus[ Times[ sigma, Power[ z3, Plus[ -2, sigma]], eta1[ z1, z2, z3]], Times[ -1, Power[ sigma, 2], Power[ z3, Plus[ -2, sigma]], eta1[ z1, z2, z3]], Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 0, 1][ eta1][ z1, z2, z3]], Times[ -1, Power[ z3, sigma], Derivative[ 0, 0, 2][ eta1][ z1, z2, z3]], Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 1, 0][ xse2][ z1, z2, z3]], Times[ 2, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 1, 0, 0][ xse1][ z1, z2, z3]], Times[ 2, Power[ z3, sigma], Derivative[ 1, 0, 1][ xse1][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], eta1[ z1, z2, z3]], Times[ -1, Power[ z3, sigma], Derivative[ 0, 1, 0][ xse2][ z1, z2, z3]], Times[ 2, Power[ z3, sigma], Derivative[ 1, 0, 0][ xse1][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 0, 1][ xse1][ z1, z2, z3]], Times[ Power[ z3, sigma], Derivative[ 0, 0, 2][ xse1][ z1, z2, z3]]], 0], Equal[ Times[ 2, Power[ z3, sigma], Derivative[ 0, 0, 1][ xse1][ z1, z2, z3]], 0], True, True, True, Equal[ Plus[ Derivative[ 0, 1, 0][ eta1][ z1, z2, z3], Times[ -1, Power[ z3, sigma], Derivative[ 2, 0, 0][ eta1][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ -1, Derivative[ 0, 1, 0][ xse1][ z1, z2, z3]], Times[ -2, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 1, 0, 0][ eta1][ z1, z2, z3]], Times[ -2, Power[ z3, sigma], Derivative[ 1, 0, 1][ eta1][ z1, z2, z3]], Times[ Power[ z3, sigma], Derivative[ 2, 0, 0][ xse1][ z1, z2, z3]]], 0], True}, Left, Below], Editable->False], TraditionalForm]], "Output"] }, Open ]], Cell[BoxData[ \(\(zdeterminingequationsreduced2 = zdeterminingequationsreduced1 /. \[IndentingNewLine]{D[ xse1[z1, z2, z3], z3] \[Rule] 0, D[xse1[z1, z2, z3], z2, z3] \[Rule] 0, \[IndentingNewLine]D[xse1[z1, z2, z3], z3, z3] \[Rule] 0, D[xse1[z1, z2, z3], z1, z3] \[Rule] 0};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(TraditionalForm[\[IndentingNewLine]ColumnForm[ zdeterminingequationsreduced2, Left, Below]]\)], "Input"], Cell[BoxData[ FormBox[ InterpretationBox[GridBox[{ { RowBox[{ RowBox[{\(\(-sigma\^2\)\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 2\)\), "+", \(sigma\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 2\)\), "-", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "+", RowBox[{"2", " ", "sigma", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{ RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{\(\(-sigma\)\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 1\)\), "-", RowBox[{ RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}]}], "==", "0"}]}, {"True"}, {"True"}, {"True"}, {"True"}, {"True"}, { RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], "-", RowBox[{\(z3\^sigma\), " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}]}]}], "==", "0"}]}, { RowBox[{ RowBox[{ RowBox[{\(-2\), " ", "sigma", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{"2", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{ RowBox[{ SuperscriptBox["xse1", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "-", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}]}], "==", "0"}]}, {"True"} }, GridBaseline->Top, ColumnAlignments->{Left}], ColumnForm[ { Equal[ Plus[ Times[ sigma, Power[ z3, Plus[ -2, sigma]], eta1[ z1, z2, z3]], Times[ -1, Power[ sigma, 2], Power[ z3, Plus[ -2, sigma]], eta1[ z1, z2, z3]], Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 0, 1][ eta1][ z1, z2, z3]], Times[ -1, Power[ z3, sigma], Derivative[ 0, 0, 2][ eta1][ z1, z2, z3]], Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 1, 0][ xse2][ z1, z2, z3]], Times[ 2, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 1, 0, 0][ xse1][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], eta1[ z1, z2, z3]], Times[ -1, Power[ z3, sigma], Derivative[ 0, 1, 0][ xse2][ z1, z2, z3]], Times[ 2, Power[ z3, sigma], Derivative[ 1, 0, 0][ xse1][ z1, z2, z3]]], 0], True, True, True, True, True, Equal[ Plus[ Derivative[ 0, 1, 0][ eta1][ z1, z2, z3], Times[ -1, Power[ z3, sigma], Derivative[ 2, 0, 0][ eta1][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ -1, Derivative[ 0, 1, 0][ xse1][ z1, z2, z3]], Times[ -2, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 1, 0, 0][ eta1][ z1, z2, z3]], Times[ -2, Power[ z3, sigma], Derivative[ 1, 0, 1][ eta1][ z1, z2, z3]], Times[ Power[ z3, sigma], Derivative[ 2, 0, 0][ xse1][ z1, z2, z3]]], 0], True}, Left, Below], Editable->False], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[StyleBox["The second to last equation implies that the two \ derivatives of eta1 are each zero.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(zdeterminingequationsreduced3 = zdeterminingequationsreduced2 /. \[IndentingNewLine]{D[ eta1[z1, z2, z3], z2] \[Rule] 0, D[eta1[z1, z2, z3], z1, z1] \[Rule] 0, \[IndentingNewLine]D[eta1[z1, z2, z3], z1, z2] \[Rule] 0, D[eta1[z1, z2, z3], z2, z3] \[Rule] 0};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(TraditionalForm[\[IndentingNewLine]ColumnForm[ zdeterminingequationsreduced3, Left, Below]]\)], "Input"], Cell[BoxData[ FormBox[ InterpretationBox[GridBox[{ { RowBox[{ RowBox[{\(\(-sigma\^2\)\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 2\)\), "+", \(sigma\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 2\)\), "-", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "+", RowBox[{"2", " ", "sigma", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{ RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{\(\(-sigma\)\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 1\)\), "-", RowBox[{ RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}]}], "==", "0"}]}, {"True"}, {"True"}, {"True"}, {"True"}, {"True"}, {"True"}, { RowBox[{ RowBox[{ RowBox[{\(-2\), " ", "sigma", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{"2", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{ RowBox[{ SuperscriptBox["xse1", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "-", RowBox[{ SuperscriptBox["xse1", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}]}], "==", "0"}]}, {"True"} }, GridBaseline->Top, ColumnAlignments->{Left}], ColumnForm[ { Equal[ Plus[ Times[ sigma, Power[ z3, Plus[ -2, sigma]], eta1[ z1, z2, z3]], Times[ -1, Power[ sigma, 2], Power[ z3, Plus[ -2, sigma]], eta1[ z1, z2, z3]], Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 0, 1][ eta1][ z1, z2, z3]], Times[ -1, Power[ z3, sigma], Derivative[ 0, 0, 2][ eta1][ z1, z2, z3]], Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 1, 0][ xse2][ z1, z2, z3]], Times[ 2, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 1, 0, 0][ xse1][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], eta1[ z1, z2, z3]], Times[ -1, Power[ z3, sigma], Derivative[ 0, 1, 0][ xse2][ z1, z2, z3]], Times[ 2, Power[ z3, sigma], Derivative[ 1, 0, 0][ xse1][ z1, z2, z3]]], 0], True, True, True, True, True, True, Equal[ Plus[ Times[ -1, Derivative[ 0, 1, 0][ xse1][ z1, z2, z3]], Times[ -2, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 1, 0, 0][ eta1][ z1, z2, z3]], Times[ -2, Power[ z3, sigma], Derivative[ 1, 0, 1][ eta1][ z1, z2, z3]], Times[ Power[ z3, sigma], Derivative[ 2, 0, 0][ xse1][ z1, z2, z3]]], 0], True}, Left, Below], Editable->False], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[StyleBox["The last equation implies that the derivative of xse1 \ with respect to z2 is zero.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(\(zdeterminingequationsreduced4 = zdeterminingequationsreduced3 /. \[IndentingNewLine]{D[ xse1[z1, z2, z3], z2] \[Rule] 0, D[xse1[z1, z2, z3], z1, z2] \[Rule] 0, \[IndentingNewLine]D[xse1[z1, z2, z3], z2, z3] \[Rule] 0, D[xse1[z1, z2, z3], z2, z2] \[Rule] 0};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(TraditionalForm[\[IndentingNewLine]ColumnForm[ zdeterminingequationsreduced4, Left, Below]]\)], "Input"], Cell[BoxData[ FormBox[ InterpretationBox[GridBox[{ { RowBox[{ RowBox[{\(\(-sigma\^2\)\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 2\)\), "+", \(sigma\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 2\)\), "-", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{"sigma", " ", RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "+", RowBox[{"2", " ", "sigma", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{ RowBox[{ SuperscriptBox["eta1", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}]}], "==", "0"}]}, { RowBox[{ RowBox[{\(\(-sigma\)\ \(eta1(z1, z2, z3)\)\ z3\^\(sigma - 1\)\), "-", RowBox[{ RowBox[{ SuperscriptBox["xse2", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["xse1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}]}], "==", "0"}]}, {"True"}, {"True"}, {"True"}, {"True"}, {"True"}, {"True"}, { RowBox[{ RowBox[{ RowBox[{\(-2\), " ", "sigma", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^\(sigma - 1\)\)}], "-", RowBox[{"2", " ", RowBox[{ SuperscriptBox["eta1", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}], "+", RowBox[{ RowBox[{ SuperscriptBox["xse1", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "(", \(z1, z2, z3\), ")"}], " ", \(z3\^sigma\)}]}], "==", "0"}]}, {"True"} }, GridBaseline->Top, ColumnAlignments->{Left}], ColumnForm[ { Equal[ Plus[ Times[ sigma, Power[ z3, Plus[ -2, sigma]], eta1[ z1, z2, z3]], Times[ -1, Power[ sigma, 2], Power[ z3, Plus[ -2, sigma]], eta1[ z1, z2, z3]], Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 0, 1][ eta1][ z1, z2, z3]], Times[ -1, Power[ z3, sigma], Derivative[ 0, 0, 2][ eta1][ z1, z2, z3]], Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 0, 1, 0][ xse2][ z1, z2, z3]], Times[ 2, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 1, 0, 0][ xse1][ z1, z2, z3]]], 0], Equal[ Plus[ Times[ -1, sigma, Power[ z3, Plus[ -1, sigma]], eta1[ z1, z2, z3]], Times[ -1, Power[ z3, sigma], Derivative[ 0, 1, 0][ xse2][ z1, z2, z3]], Times[ 2, Power[ z3, sigma], Derivative[ 1, 0, 0][ xse1][ z1, z2, z3]]], 0], True, True, True, True, True, True, Equal[ Plus[ Times[ -2, sigma, Power[ z3, Plus[ -1, sigma]], Derivative[ 1, 0, 0][ eta1][ z1, z2, z3]], Times[ -2, Power[ z3, sigma], Derivative[ 1, 0, 1][ eta1][ z1, z2, z3]], Times[ Power[ z3, sigma], Derivative[ 2, 0, 0][ xse1][ z1, z2, z3]]], 0], True}, Left, Below], Editable->False], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[StyleBox["Remove the factor z3^sigma that multiplies every \ term.", FontWeight->"Plain"]], "Text", ImageRegion->{{0, 1}, {0, 1}}], Cell[CellGroupData[{ Cell[BoxData[ \(imax = Length[zdeterminingequationsreduced4]\)], "Input"], Cell[BoxData[ \(10\)], "Output"] }, Open ]], Cell[BoxData[ \(\(zdeterminingequationsreduced4strings = Table[ToString[ InputForm[zdeterminingequationsreduced4[\([i]\)]]], {i, 1, imax}];\)\)], "Input"], Cell["\<\ zdeterminingequationsnoequalszero= StringReplace[zdeterminingequationsreduced4strings, {\"== 0\"->\" \"}];\ \>", "Input", ImageRegion->{{0, 1}, {0, 1}}], Cell["\<\ Now convert each determining equation to an expression and multiply \ through by (x^2*y^3). The built-in function Together cancels terms in the \ numerator and denominator.\ \>", "Text"], Cell["\<\ zdeterminingequationsnoequalszeroexpression= Together[(z3^2)*(z3^(-sigma))*ToExpression[ zdeterminingequationsnoequalszero]];\ \>", "Input", ImageRegion->{{0, 1}, {0, 1}}], Cell["The number of determining equations.", "Text"], Cell[CellGroupData[{ Cell["\<\ imax=Length[ zdeterminingequationsnoequalszeroexpression]\ \>", "Input", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \(10\)], "Output"] }, Open ]], Cell["\<\ Convert each determining equation back to a string and reinstate \ the == 0.\ \>", "Text"], Cell[CellGroupData[{ Cell["\<\ zdeterminingequationsmod1=Table[ ToString[InputForm[ zdeterminingequationsnoequalszeroexpression[[i]]]]<> \"== 0\", {i,1,imax}]\ \>", "Input", ImageRegion->{{0, 1}, {0, 1}}], Cell[BoxData[ \({"sigma*eta1[z1, z2, z3] - sigma^2*eta1[z1, z2, z3] - \ sigma*z3*Derivative[0, 0, 1][eta1][z1, z2, z3] - z3^2*Derivative[0, 0, \ 2][eta1][z1, z2, z3] - sigma*z3*Derivative[0, 1, 0][xse2][z1, z2, z3] + \ 2*sigma*z3*Derivative[1, 0, 0][xse1][z1, z2, z3]== 0", "-(z3*(sigma*eta1[z1, z2, z3] + z3*Derivative[0, 1, 0][xse2][z1, z2, \ z3] - 2*z3*Derivative[1, 0, 0][xse1][z1, z2, z3]))== 0", "True*z3^(2 - sigma)== 0", "True*z3^(2 - sigma)== 0", "True*z3^(2 - sigma)== 0", "True*z3^(2 - sigma)== 0", "True*z3^(2 - sigma)== 0", "True*z3^(2 - sigma)== 0", "-(z3*(2*sigma*Derivative[1, 0, 0][eta1][z1, z2, z3] + \ 2*z3*Derivative[1, 0, 1][eta1][z1, z2, z3] - z3*Derivative[2, 0, 0][xse1][z1, \ z2, z3]))== 0", "True*z3^(2 - sigma)== 0"}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TraditionalForm[\[IndentingNewLine]ColumnForm[ zdeterminingequationsmod1, Left, Below]]\)], "Input"], Cell[BoxData[ FormBox[ InterpretationBox[GridBox[{ {"\<\"sigma*eta1[z1, z2, z3] - sigma^2*eta1[z1, z2, z3] - \ sigma*z3*Derivative[0, 0, 1][eta1][z1, z2, z3] - z3^2*Derivative[0, 0, \ 2][eta1][z1, z2, z3] - sigma*z3*Derivative[0, 1, 0][xse2][z1, z2, z3] + \ 2*sigma*z3*Derivative[1, 0, 0][xse1][z1, z2, z3]== 0\"\>"}, {"\<\"-(z3*(sigma*eta1[z1, z2, z3] + z3*Derivative[0, 1, \ 0][xse2][z1, z2, z3] - 2*z3*Derivative[1, 0, 0][xse1][z1, z2, z3]))== \ 0\"\>"}, {"\<\"True*z3^(2 - sigma)== 0\"\>"}, {"\<\"True*z3^(2 - sigma)== 0\"\>"}, {"\<\"True*z3^(2 - sigma)== 0\"\>"}, {"\<\"True*z3^(2 - sigma)== 0\"\>"}, {"\<\"True*z3^(2 - sigma)== 0\"\>"}, {"\<\"True*z3^(2 - sigma)== 0\"\>"}, {"\<\"-(z3*(2*sigma*Derivative[1, 0, 0][eta1][z1, z2, z3] + \ 2*z3*Derivative[1, 0, 1][eta1][z1, z2, z3] - z3*Derivative[2, 0, 0][xse1][z1, \ z2, z3]))== 0\"\>"}, {"\<\"True*z3^(2 - sigma)== 0\"\>"} }, GridBaseline->Top, ColumnAlignments->{Left}], ColumnForm[ { "sigma*eta1[z1, z2, z3] - sigma^2*eta1[z1, z2, z3] - \ sigma*z3*Derivative[0, 0, 1][eta1][z1, z2, z3] - z3^2*Derivative[0, 0, \ 2][eta1][z1, z2, z3] - sigma*z3*Derivative[0, 1, 0][xse2][z1, z2, z3] + \ 2*sigma*z3*Derivative[1, 0, 0][xse1][z1, z2, z3]== 0", "-(z3*(sigma*eta1[z1, z2, z3] + z3*Derivative[0, 1, 0][xse2][z1, \ z2, z3] - 2*z3*Derivative[1, 0, 0][xse1][z1, z2, z3]))== 0", "True*z3^(2 - sigma)== 0", "True*z3^(2 - sigma)== 0", "True*z3^(2 - sigma)== 0", "True*z3^(2 - sigma)== 0", "True*z3^(2 - sigma)== 0", "True*z3^(2 - sigma)== 0", "-(z3*(2*sigma*Derivative[1, 0, 0][eta1][z1, z2, z3] + \ 2*z3*Derivative[1, 0, 1][eta1][z1, z2, z3] - z3*Derivative[2, 0, 0][xse1][z1, \ z2, z3]))== 0", "True*z3^(2 - sigma)== 0"}, Left, Below], Editable->False], TraditionalForm]], "Output"] }, Open ]], Cell["\<\ Now let's put together the final set of determining equations with \ redundancies removed.\ \>", "Text"], Cell[BoxData[ \(\(zdeterminingequationsfinal = {"\", "\<-(z3*(sigma*eta1[z1, z2, z3] + z3*Derivative[0, 1, 0][xse2][z1, z2, \ z3] - 2*z3*Derivative[1, 0, 0][xse1][z1, z2, z3]))== 0\>", \ "\<-(z3*(2*sigma*Derivative[1, 0, 0][eta1][z1, z2, z3] + 2*z3*Derivative[1, \ 0, 1][eta1][z1, z2, z3] - z3*Derivative[2, 0, 0][xse1][z1, z2, z3]))== 0\>", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\", \ \[IndentingNewLine]"\"};\)\)], "Input"], 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, rorder, xseon, zdeterminingequationsfinal, order = 3]]\)], "Input"], Cell[BoxData[ InterpretationBox["\<\"The number of unknown polynomial coefficients = \ \\!\\(60\\)\"\>", StringForm[ "The number of unknown polynomial coefficients = ``", 60], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox["\<\"The number of equations for the polynomial \ coefficients = \\!\\(110\\)\"\>", StringForm[ "The number of equations for the polynomial coefficients = ``", 110], 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.4666666666666668`\ Second, Null}\)], "Output"] }, Open ]], Cell[BoxData[ \(\(infinitesimalgroupsxy = infinitesimalgroups /. {z1 \[Rule] x, z2 \[Rule] t, z3 \[Rule] u};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(ColumnForm[infinitesimalgroupsxy]\)], "Input"], Cell[BoxData[ InterpretationBox[GridBox[{ {\({{1, 0}, {0}}\)}, {\({{0, 1}, {0}}\)}, {\({{x\/2, t}, {0}}\)}, {\({{\(sigma\ x\)\/2, 0}, {u}}\)} }, GridBaseline->{Baseline, {1, 1}}, ColumnAlignments->{Left}], ColumnForm[ {{{1, 0}, {0}}, {{0, 1}, {0}}, {{ Times[ Rational[ 1, 2], x], t}, {0}}, {{ Times[ Rational[ 1, 2], sigma, x], 0}, {u}}}], Editable->False]], "Output"] }, Open ]], 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[CellGroupData[{ Cell[BoxData[ \(MatrixForm[commutatortable]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ { RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({1\/2, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({sigma\/2, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}]}, { RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 1}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}]}, { RowBox[{"(", "\[NoBreak]", GridBox[{ {\({\(-\(1\/2\)\), 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, \(-1\)}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}]}, { RowBox[{"(", "\[NoBreak]", GridBox[{ {\({\(-\(sigma\/2\)\), 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {\({0, 0}\)}, {\({0}\)} }], "\[NoBreak]", ")"}]} }], "\[NoBreak]", ")"}], MatrixForm[ {{{{0, 0}, {0}}, {{0, 0}, {0}}, {{ Rational[ 1, 2], 0}, {0}}, {{ Times[ Rational[ 1, 2], sigma], 0}, {0}}}, {{{0, 0}, {0}}, {{0, 0}, { 0}}, {{0, 1}, {0}}, {{0, 0}, {0}}}, {{{ Rational[ -1, 2], 0}, {0}}, {{0, -1}, {0}}, {{0, 0}, {0}}, {{0, 0}, { 0}}}, {{{ Times[ Rational[ -1, 2], sigma], 0}, {0}}, {{0, 0}, {0}}, {{0, 0}, {0}}, {{ 0, 0}, {0}}}}]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(MaxMemoryUsed[\ ]\)], "Input"], Cell[BoxData[ \(8424108\)], "Output"] }, Open ]] }, FrontEndVersion->"4.0 for Macintosh", ScreenRectangle->{{0, 1024}, {0, 748}}, WindowToolbars->{}, CellGrouping->Manual, WindowSize->{811, 702}, WindowMargins->{{Automatic, 38}, {4, Automatic}}, PrintingCopies->1, PrintingPageRange->{1, Automatic}, PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}}, ShowCellLabel->True, ShowCellTags->False, RenderingOptions->{"ObjectDithering"->True, "RasterDithering"->False}, Magnification->1.25, StyleDefinitions -> "Default.nb", MacintoshSystemPageSetup->"\<\ 0080009H0UP0000068dB`?oHofXIX1=F;B<5:0?l00;m009H0UP0000068dB`0B` 02d5X5k/02H80@4101P00BL?00400CZiCX0000000000P0010000020D00000000 000000?l1BP00000000004T400002004\>" ] (*********************************************************************** 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, 344, 6, 149, "Text"], Cell[2064, 57, 87, 3, 36, "Text"], Cell[2154, 62, 52, 1, 33, "Input"], Cell[2209, 65, 203, 3, 36, "Text"], Cell[2415, 70, 79, 1, 33, "Input"], Cell[2497, 73, 124, 2, 36, "Text"], Cell[2624, 77, 63, 1, 33, "Input"], Cell[2690, 80, 165, 3, 36, "Text"], Cell[2858, 85, 128, 3, 52, "Input"], Cell[2989, 90, 259, 4, 55, "Text"], Cell[3251, 96, 145, 3, 52, "Input"], Cell[3399, 101, 132, 2, 36, "Text"], Cell[3534, 105, 79, 1, 33, "Input"], Cell[3616, 108, 130, 2, 36, "Text"], Cell[3749, 112, 68, 1, 33, "Input"], Cell[3820, 115, 230, 4, 55, "Text"], Cell[4053, 121, 74, 1, 33, "Input"], Cell[4130, 124, 154, 3, 36, "Text"], Cell[4287, 129, 48, 1, 33, "Input"], Cell[4338, 132, 387, 6, 74, "Text"], Cell[4728, 140, 48, 1, 33, "Input"], Cell[4779, 143, 511, 7, 93, "Text"], Cell[5293, 152, 47, 1, 33, "Input"], Cell[5343, 155, 578, 8, 93, "Text"], Cell[5924, 165, 55, 1, 33, "Input"], Cell[5982, 168, 270, 4, 55, "Text"], Cell[CellGroupData[{ Cell[6277, 176, 210, 3, 71, "Input"], Cell[6490, 181, 920, 13, 237, "Print"] }, Open ]], Cell[CellGroupData[{ Cell[7447, 199, 57, 1, 33, "Input"], Cell[7507, 202, 120, 2, 52, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[7664, 209, 52, 1, 33, "Input"], Cell[7719, 212, 1103, 27, 85, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[8859, 244, 242, 4, 55, "Text"], Cell[9104, 250, 46, 1, 33, "Input"], Cell[9153, 253, 82, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[9272, 259, 138, 2, 52, "Input"], Cell[9413, 263, 15159, 371, 276, "Output"] }, Open ]], Cell[24587, 637, 159, 3, 36, "Text"], Cell[24749, 642, 651, 11, 185, "Input"], Cell[CellGroupData[{ Cell[25425, 657, 132, 2, 52, "Input"], Cell[25560, 661, 8809, 220, 260, "Output"] }, Open ]], Cell[34384, 884, 360, 6, 71, "Input"], Cell[CellGroupData[{ Cell[34769, 894, 132, 2, 52, "Input"], Cell[34904, 898, 6893, 173, 252, "Output"] }, Open ]], Cell[41812, 1074, 177, 3, 36, "Text"], Cell[41992, 1079, 360, 6, 71, "Input"], Cell[CellGroupData[{ Cell[42377, 1089, 132, 2, 52, "Input"], Cell[42512, 1093, 6059, 152, 248, "Output"] }, Open ]], Cell[48586, 1248, 175, 3, 36, "Text"], Cell[48764, 1253, 360, 6, 71, "Input"], Cell[CellGroupData[{ Cell[49149, 1263, 132, 2, 52, "Input"], Cell[49284, 1267, 5722, 144, 248, "Output"] }, Open ]], Cell[55021, 1414, 148, 3, 36, "Text"], Cell[CellGroupData[{ Cell[55194, 1421, 77, 1, 33, "Input"], Cell[55274, 1424, 36, 1, 33, "Output"] }, Open ]], Cell[55325, 1428, 192, 4, 52, "Input"], Cell[55520, 1434, 164, 5, 66, "Input"], Cell[55687, 1441, 196, 4, 55, "Text"], Cell[55886, 1447, 183, 5, 66, "Input"], Cell[56072, 1454, 52, 0, 36, "Text"], Cell[CellGroupData[{ Cell[56149, 1458, 115, 4, 49, "Input"], Cell[56267, 1464, 36, 1, 33, "Output"] }, Open ]], Cell[56318, 1468, 100, 3, 36, "Text"], Cell[CellGroupData[{ Cell[56443, 1475, 185, 7, 100, "Input"], Cell[56631, 1484, 796, 12, 242, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[57464, 1501, 128, 2, 52, "Input"], Cell[57595, 1505, 1973, 36, 236, "Output"] }, Open ]], Cell[59583, 1544, 114, 3, 36, "Text"], Cell[59700, 1549, 1668, 27, 565, "Input"], Cell[61371, 1578, 510, 11, 169, "Text"], Cell[CellGroupData[{ Cell[61906, 1593, 178, 3, 52, "Input"], Cell[62087, 1598, 219, 4, 28, "Print"], Cell[62309, 1604, 248, 5, 28, "Print"], Cell[62560, 1611, 1020, 13, 275, "Print"], Cell[63583, 1626, 69, 1, 33, "Output"] }, Open ]], Cell[63667, 1630, 149, 3, 33, "Input"], Cell[CellGroupData[{ Cell[63841, 1637, 66, 1, 33, "Input"], Cell[63910, 1640, 488, 14, 109, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[64435, 1659, 124, 2, 52, "Input"], Cell[64562, 1663, 416, 6, 104, "Print"] }, Open ]], Cell[CellGroupData[{ Cell[65015, 1674, 60, 1, 33, "Input"], Cell[65078, 1677, 3245, 81, 215, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[68360, 1763, 50, 1, 33, "Input"], Cell[68413, 1766, 41, 1, 33, "Output"] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)