(*********************************************************************** 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[ 17902, 728]*) (*NotebookOutlinePosition[ 18631, 754]*) (* CellTagsIndexPosition[ 18587, 750]*) (*WindowFrame->Normal*) Notebook[{ Cell["Gauss-Lagrange Algorithm for Real Quadratic Forms", "Title", TextAlignment->Center], Cell[CellGroupData[{ Cell[TextData[StyleBox["Suggested Installation", FontFamily->"Arial", FontSize->16, FontWeight->"Bold"]], "Section", CellDingbat->"\[FilledSquare]"], Cell[TextData[{ "Create a directory called ", StyleBox["[...]/AddOns/ExtraPackages/LinearAlgebra", FontFamily->"Courier"], " if it does not already exists, where ", StyleBox["[...]", FontFamily->"Courier"], " stands for your main ", StyleBox["Mathematica", FontSlant->"Italic"], " directory. Copy the file ", StyleBox["GaussLagrange.m", FontFamily->"Courier"], " in that directory. Then you can load the package with the following line \ :" }], "Text"], Cell[BoxData[ \(<< LinearAlgebra`GaussLagrange`\)], "Input"], Cell["\<\ If you choose to store the file elsewhere, you can still load it with :\ \>", "Text"], Cell[BoxData[ \(<< [path]\\GaussLagrange.m\)], "Input"], Cell[TextData[{ "where ", StyleBox["[path]", "Input", FontFamily->"Courier", FontWeight->"Plain"], " stands for the path of the directory in which you have put the file." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Elementary Row and Column Operations", "Section", FontFamily->"Arial"], Cell[TextData[{ "This package implements ", StyleBox["elementary row and column operations", FontSlant->"Italic"], " on any matrix. I know this has probably been done elsewhere, but I \ included these so the package does not need to call any external function." }], "Text"], Cell[TextData[{ StyleBox["\tR[{i, j}, m]", FontFamily->"Courier"], "\t\t\tSwaps rows ", StyleBox["i", FontFamily->"Courier"], " and ", StyleBox["j", FontFamily->"Courier"], " of matrix ", StyleBox["m", FontFamily->"Courier"], "\n\t", StyleBox["R[i, c, m]\t", FontFamily->"Courier"], "\t\tMultiplies row ", StyleBox["i", FontFamily->"Courier"], " of ", StyleBox["m", FontFamily->"Courier"], " by ", StyleBox["c", FontFamily->"Courier"], "\n\t", StyleBox["R[i, j, c, m]\t", FontFamily->"Courier"], "\t\tAdds ", StyleBox["c", FontFamily->"Courier"], " times row ", StyleBox["j", FontFamily->"Courier"], " to row ", StyleBox["i", FontFamily->"Courier"], " of ", StyleBox["m", FontFamily->"Courier"], "\n\t", StyleBox["Col[{i, j}, m]", FontFamily->"Courier"], "\t\tSwaps columns ", StyleBox["i", FontFamily->"Courier"], " and ", StyleBox["j", FontFamily->"Courier"], " of ", StyleBox["m", FontFamily->"Courier"], "\n\t", StyleBox["Col[i, c, m]\t", FontFamily->"Courier"], "\t\tMultiplies column ", StyleBox["i", FontFamily->"Courier"], " of ", StyleBox["m", FontFamily->"Courier"], " by ", StyleBox["c", FontFamily->"Courier"], "\n\t", StyleBox["Col[i, j, c, m]\t\t", FontFamily->"Courier"], "Adds ", StyleBox["c", FontFamily->"Courier"], " times column ", StyleBox["j", FontFamily->"Courier"], " to column ", StyleBox["i", FontFamily->"Courier"], " of ", StyleBox["m", FontFamily->"Courier"] }], "Text", CellFrame->True, Background->GrayLevel[0.849989]], Cell["The following examples are quite self-explanatory.", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(m = {{a, b}, {c, d}}\)], "Input"], Cell[BoxData[ \({{a, b}, {c, d}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(R[{1, 2}, m]\)], "Input"], Cell[BoxData[ \({{c, d}, {a, b}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Col[2, 3, m]\)], "Input"], Cell[BoxData[ \({{a, 3\ b}, {c, 3\ d}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(R[2, 1, 2, m]\)], "Input"], Cell[BoxData[ \({{a, b}, {2\ a + c, 2\ b + d}}\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Associated Matrix of a Quadratic Form", "Section"], Cell[TextData[{ "A ", StyleBox["real quadratic form", FontSlant->"Italic"], " is an homogenous polynomial of degree 2 in one or several variables. Any \ expression of the form ", StyleBox["v.m.v", FontFamily->"Courier"], ", where ", StyleBox["v", FontFamily->"Courier"], StyleBox[" is a ", FontFamily->"Times New Roman"], StyleBox["n", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["-vector of variables and ", FontFamily->"Times New Roman"], StyleBox["m", FontFamily->"Courier"], StyleBox[" a ", FontFamily->"Times New Roman"], StyleBox["n", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["\[Times]", FontFamily->"Times New Roman"], StyleBox["n", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" real matrix, is a quadratic form, such as the following :", FontFamily->"Times New Roman"] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(v = {x, y, z}; \n\t m = {{1, 2, 3}, {\(-2\), 3, \(-1\)}, {2, \(-1\), 0}}\ ; \n\t Expand[v.m.v]\)], "Input"], Cell[BoxData[ \(x\^2 + 3\ y\^2 + 5\ x\ z - 2\ y\ z\)], "Output"] }, Open ]], Cell[TextData[{ "For any quadratic form ", StyleBox["q", FontFamily->"Courier"], " in vector of variables ", StyleBox["v", FontFamily->"Courier"], ", the", StyleBox[" matrix", FontSlant->"Italic"], " ", StyleBox["associated with the form", FontSlant->"Italic"], " is the ", StyleBox["n", FontSlant->"Italic"], "\[Times]", StyleBox["n", FontSlant->"Italic"], " real symmetric matrix ", StyleBox["m", FontFamily->"Courier"], " such that ", StyleBox["v.m.v == q", FontFamily->"Courier"], "." }], "Text"], Cell[TextData[{ StyleBox["\tAssociatedMatrix[q, x]\t", FontFamily->"Courier"], StyleBox["The associated matrix of the quadratic form ", FontFamily->"Times New Roman"], StyleBox["q", FontFamily->"Courier"], StyleBox[" in\n\t\t\t\t\t\tvector of variables ", FontFamily->"Times New Roman"], StyleBox["x", FontFamily->"Courier"] }], "Text", CellFrame->True, Background->GrayLevel[0.849989]], Cell[CellGroupData[{ Cell[BoxData[ \(AssociatedMatrix[ \[Alpha]\^2 + \[Beta]\^2 - 2 \[Alpha]\ \[Beta], {\[Alpha], \[Beta]}] \)], "Input"], Cell[BoxData[ \({{1, \(-1\)}, {\(-1\), 1}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(AssociatedMatrix[ 4 x\ y - 5 x\ z + 2 y\^2 - 4 y\ z + 2 z\^2, {x, y, z}]\)], "Input"], Cell[BoxData[ \({{0, 2, \(-\(5\/2\)\)}, {2, 2, \(-2\)}, {\(-\(5\/2\)\), \(-2\), 2}}\)], "Output"] }, Open ]], Cell["\<\ We can check that we get the quadratic form back from the matrix :\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \({x, y, z}.%.{x, y, z}\ // \ Expand\)], "Input"], Cell[BoxData[ \(4\ x\ y + 2\ y\^2 - 5\ x\ z - 4\ y\ z + 2\ z\^2\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Gauss-Lagrange Algorithm", "Section"], Cell[TextData[{ "If ", StyleBox["a", FontFamily->"Courier"], " and ", StyleBox["b", FontFamily->"Courier"], " are two square matrices of the same dimension, then they are said to be ", StyleBox["congruent", FontSlant->"Italic"], " if there exists an invertible matrix ", StyleBox["p", FontFamily->"Courier"], " such that ", StyleBox["p.a.Transpose[p] == b", FontFamily->"Courier"], ". Congruence, defined that way, is an equivalence relation on the set of \ square matrices of the same dimension which preserves symmetry. So, given any \ symmetric matrix ", StyleBox["m", FontFamily->"Courier"], ", we will want to find the simplest possible matrix ", StyleBox["d", FontFamily->"Courier"], " to which m is congruent. This is what the so-called ", StyleBox["Gauss-Lagrange algorithm", FontSlant->"Italic"], " achieves." }], "Text"], Cell[TextData[{ "\t", StyleBox["GaussLagrange[m]\t\t", FontFamily->"Courier"], StyleBox["Returns ", FontFamily->"Times New Roman"], StyleBox["{d, p}", FontFamily->"Courier"], StyleBox[", where ", FontFamily->"Times New Roman"], StyleBox["d", FontFamily->"Courier"], StyleBox[" is the canonical \n\t\t\t\t\t\tform of ", FontFamily->"Times New Roman"], StyleBox["m", FontFamily->"Courier"], StyleBox[" under congruence, and ", FontFamily->"Times New Roman"], StyleBox["p", FontFamily->"Courier"], StyleBox[" is such that \n\t\t\t\t\t\t", FontFamily->"Times New Roman"], StyleBox["p.d.Transpose[p] == m", FontFamily->"Courier"], StyleBox[".", FontFamily->"Times New Roman"] }], "Text", CellFrame->True, Background->GrayLevel[0.849989]], Cell[TextData[ "Here we apply the algorithm to a simple 3\[Times]3 matrix :"], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(m = {{1, \(-2\), 3}, {\(-2\), 6, \(-10\)}, {3, \(-10\), 8}}\)], "Input"], Cell[BoxData[ \({{1, \(-2\), 3}, {\(-2\), 6, \(-10\)}, {3, \(-10\), 8}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \({d, p} = GaussLagrange[m]\)], "Input"], Cell[BoxData[ \({{{1, 0, 0}, {0, 1, 0}, {0, 0, \(-1\)}}, {{1, 0, 0}, {\@2, 1\/\@2, 0}, { 1\/3, 2\/3, 1\/3}}}\)], "Output"] }, Open ]], Cell["Now we check we get the expected result :", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(p.m.Transpose[p]\ == \ d\)], "Input"], Cell[BoxData[ \(True\)], "Output"] }, Open ]], Cell["Here is another example :", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(m = {{2, 4, 6, 4}, {4, 5, 9, \(-4\)}, {6, 9, 19, \(-8\)}, {4, \(-4\), \(-8\), \(-24\)}}\)], "Input"], Cell[BoxData[ \({{2, 4, 6, 4}, {4, 5, 9, \(-4\)}, {6, 9, 19, \(-8\)}, {4, \(-4\), \(-8\), \(-24\)}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \({d, p} = GaussLagrange[m]\)], "Input"], Cell[BoxData[ \({{{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, \(-1\), 0}, {0, 0, 0, 0}}, {{ 1\/\@2, 0, 0, 0}, {\(-\(1\/2\)\), \(-\(1\/2\)\), 1\/2, 0}, { \(-\(2\/\@3\)\), 1\/\@3, 0, 0}, {4, \(-6\), 2, 1}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(p.m.Transpose[p] == d\)], "Input"], Cell[BoxData[ \(True\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Properties of Quadratic Forms", "Section"], Cell[TextData[{ "Given a quadratic form ", StyleBox["q", FontFamily->"Courier"], " in ", StyleBox["x", FontFamily->"Courier"], ", we define four properties which we can easily read from the canonical \ form under congruence of its associated matrix, namely :" }], "Text"], Cell[TextData[{ "\t- ", StyleBox["order", FontSlant->"Italic"], " : \tnumber of variables;\n\t- ", StyleBox["rank", FontSlant->"Italic"], " : \tnumber of elements \[NotEqual] 0 on the diagonal;\n\t- ", StyleBox["index", FontSlant->"Italic"], " : \tnumber of 1's on the diagonal;\n\t- ", StyleBox["signature", FontSlant->"Italic"], " :\t number of 1's minus number of -1's on the diagonal." }], "Text"], Cell[TextData[{ "Thus, the following quadratic form ", StyleBox["q", FontFamily->"Courier"], " has order 3, rank 3, index 2 and signature 1." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(q = x\_1\^2 - 4 \( x\_1\) x\_2 + 2 x\_2\^2 + 6 \( x\_1\) x\_3 - 7 x\_3\^2; \n{d, p} = GaussLagrange[AssociatedMatrix[q, {x\_1, x\_2, x\_3}]]; \n d\ // \ MatrixForm\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {"1", "0", "0"}, {"0", "1", "0"}, {"0", "0", \(-1\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[{ "Moreover, a quadratic form ", StyleBox["q", FontFamily->"Courier"], " in ", StyleBox["x", FontFamily->"Courier"], " can be :" }], "Text"], Cell[TextData[{ "\t- ", StyleBox["positive definite", FontSlant->"Italic"], " : \t\t", StyleBox["q", FontFamily->"Courier"], " > 0 for all ", StyleBox["x", FontFamily->"Courier"], " \[NotEqual] 0;\n\t- ", StyleBox["positive semi-definite", FontSlant->"Italic"], " : \t", StyleBox["q", FontFamily->"Courier"], " \[GreaterEqual] 0 for all ", StyleBox["x", FontFamily->"Courier"], ";\n\t- ", StyleBox["negative definite", FontSlant->"Italic"], " : \t\t", StyleBox["q", FontFamily->"Courier"], " < 0 for all ", StyleBox["x", FontFamily->"Courier"], " \[NotEqual] 0;\n\t- ", StyleBox["negative semi-definite", FontSlant->"Italic"], " : \t", StyleBox["q", FontFamily->"Courier"], " \[LessEqual] 0 for all ", StyleBox["x", FontFamily->"Courier"], ";\n\t- ", StyleBox["indefinite", FontSlant->"Italic"], " : \t\t\t", StyleBox["q", FontFamily->"Courier"], " > 0 for some ", StyleBox["x", FontFamily->"Courier"], ", ", StyleBox["q", FontFamily->"Courier"], " < 0 for some other;\n\t- or ", StyleBox["identically", FontSlant->"Italic"], " 0 :\t\t", StyleBox["q ==", FontFamily->"Courier"], " 0 for all", StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["x", FontFamily->"Courier"], "." }], "Text"], Cell[TextData[{ "The ", StyleBox["Summary", FontFamily->"Courier"], " function provides a convenient way to get all this information." }], "Text"], Cell[TextData[{ StyleBox["\tSummary[q,x]\t\t\t", FontFamily->"Courier"], StyleBox["Prints information about quadratic form ", FontFamily->"Times New Roman"], StyleBox["q", FontFamily->"Courier"], StyleBox[" in ", FontFamily->"Times New Roman"], StyleBox["x\n\tSummary[m]\t\t\t", FontFamily->"Courier"], StyleBox[ "Prints information about the quadratic form\n\t\t\t\t\t\tassociated with \ symmetric matrix ", FontFamily->"Times New Roman"], StyleBox["m", FontFamily->"Courier"] }], "Text", CellFrame->True, Background->GrayLevel[0.849989]], Cell["Thus, for the previous example, we get:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Summary[q, {x\_1, x\_2, x\_3}]\)], "Input"], Cell[BoxData[ InterpretationBox[\("Order: "\[InvisibleSpace]3\), SequenceForm[ "Order: ", 3], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Rank: "\[InvisibleSpace]3\), SequenceForm[ "Rank: ", 3], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Index: "\[InvisibleSpace]2\), SequenceForm[ "Index: ", 2], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Signature: "\[InvisibleSpace]1\), SequenceForm[ "Signature: ", 1], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Indefinite"\[InvisibleSpace]"."\), SequenceForm[ "Indefinite", "."], Editable->False]], "Print"] }, Open ]], Cell["Here is another example :", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Summary[ x\^2 + y\^2 - 2 x\ z + y\ z + 2 z\^2 - 6 x\ t + 4 y\ t + 2 z\ t + 26 t\^2, {x, y, z, t}]\)], "Input"], Cell[BoxData[ InterpretationBox[\("Order: "\[InvisibleSpace]4\), SequenceForm[ "Order: ", 4], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Rank: "\[InvisibleSpace]4\), SequenceForm[ "Rank: ", 4], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Index: "\[InvisibleSpace]4\), SequenceForm[ "Index: ", 4], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Signature: "\[InvisibleSpace]4\), SequenceForm[ "Signature: ", 4], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[\("Positive definite"\[InvisibleSpace]"."\), SequenceForm[ "Positive definite", "."], Editable->False]], "Print"] }, Open ]] }, Closed]], Cell["\<\ Gabriel Ch\[EHat]nevert Student at Universit\[EAcute] de Montr\[EAcute]al Montr\[EAcute]al, Qu\[EAcute]bec, Canada July 1999 Please feel free to e-mail me with any question, comment or suggestion at cheneveg@jsp.umontreal.ca, or via http://www.jsp.umontreal.ca/~cheneveg.\ \>", "SmallText", CellFrame->{{0, 0}, {0, 0.5}}] }, FrontEndVersion->"4.0 for Microsoft Windows", ScreenRectangle->{{0, 1280}, {0, 951}}, WindowToolbars->{}, CellGrouping->Manual, WindowSize->{905, 789}, WindowMargins->{{0, Automatic}, {Automatic, 0}}, StyleDefinitions -> "DEFAULT.NB" ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[1717, 49, 91, 1, 170, "Title"], Cell[CellGroupData[{ Cell[1833, 54, 156, 4, 59, "Section"], Cell[1992, 60, 486, 15, 71, "Text"], Cell[2481, 77, 64, 1, 27, "Input"], Cell[2548, 80, 95, 2, 33, "Text"], Cell[2646, 84, 59, 1, 27, "Input"], Cell[2708, 87, 196, 6, 33, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[2941, 98, 78, 1, 39, "Section"], Cell[3022, 101, 283, 6, 71, "Text"], Cell[3308, 109, 1659, 80, 144, "Text"], Cell[4970, 191, 66, 0, 33, "Text"], Cell[CellGroupData[{ Cell[5061, 195, 53, 1, 27, "Input"], Cell[5117, 198, 50, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[5204, 204, 45, 1, 27, "Input"], Cell[5252, 207, 50, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[5339, 213, 45, 1, 27, "Input"], Cell[5387, 216, 56, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[5480, 222, 46, 1, 27, "Input"], Cell[5529, 225, 64, 1, 27, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[5642, 232, 56, 0, 39, "Section"], Cell[5701, 234, 935, 32, 71, "Text"], Cell[CellGroupData[{ Cell[6661, 270, 135, 3, 59, "Input"], Cell[6799, 275, 68, 1, 31, "Output"] }, Open ]], Cell[6882, 279, 566, 26, 52, "Text"], Cell[7451, 307, 420, 13, 68, "Text"], Cell[CellGroupData[{ Cell[7896, 324, 133, 3, 34, "Input"], Cell[8032, 329, 60, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[8129, 335, 116, 2, 54, "Input"], Cell[8248, 339, 104, 2, 44, "Output"] }, Open ]], Cell[8367, 344, 90, 2, 33, "Text"], Cell[CellGroupData[{ Cell[8482, 350, 68, 1, 27, "Input"], Cell[8553, 353, 81, 1, 31, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[8683, 360, 43, 0, 39, "Section"], Cell[8729, 362, 899, 29, 109, "Text"], Cell[9631, 393, 810, 28, 87, "Text"], Cell[10444, 423, 86, 1, 33, "Text"], Cell[CellGroupData[{ Cell[10555, 428, 92, 1, 27, "Input"], Cell[10650, 431, 89, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[10776, 437, 58, 1, 27, "Input"], Cell[10837, 440, 136, 2, 72, "Output"] }, Open ]], Cell[10988, 445, 57, 0, 33, "Text"], Cell[CellGroupData[{ Cell[11070, 449, 58, 1, 27, "Input"], Cell[11131, 452, 38, 1, 27, "Output"] }, Open ]], Cell[11184, 456, 41, 0, 33, "Text"], Cell[CellGroupData[{ Cell[11250, 460, 131, 2, 43, "Input"], Cell[11384, 464, 126, 2, 43, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[11547, 471, 58, 1, 27, "Input"], Cell[11608, 474, 233, 3, 98, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[11878, 482, 54, 1, 27, "Input"], Cell[11935, 485, 38, 1, 27, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[12022, 492, 48, 0, 39, "Section"], Cell[12073, 494, 289, 9, 52, "Text"], Cell[12365, 505, 435, 14, 90, "Text"], Cell[12803, 521, 163, 5, 33, "Text"], Cell[CellGroupData[{ Cell[12991, 530, 224, 5, 83, "Input"], Cell[13218, 537, 203, 7, 70, "Output"] }, Open ]], Cell[13436, 547, 172, 8, 33, "Text"], Cell[13611, 557, 1353, 61, 128, "Text"], Cell[14967, 620, 156, 5, 33, "Text"], Cell[15126, 627, 587, 19, 87, "Text"], Cell[15716, 648, 55, 0, 33, "Text"], Cell[CellGroupData[{ Cell[15796, 652, 63, 1, 29, "Input"], Cell[15862, 655, 137, 3, 23, "Print"], Cell[16002, 660, 135, 3, 23, "Print"], Cell[16140, 665, 137, 3, 23, "Print"], Cell[16280, 670, 145, 3, 23, "Print"], Cell[16428, 675, 147, 3, 23, "Print"] }, Open ]], Cell[16590, 681, 41, 0, 33, "Text"], Cell[CellGroupData[{ Cell[16656, 685, 151, 3, 70, "Input"], Cell[16810, 690, 137, 3, 23, "Print"], Cell[16950, 695, 135, 3, 23, "Print"], Cell[17088, 700, 137, 3, 23, "Print"], Cell[17228, 705, 145, 3, 23, "Print"], Cell[17376, 710, 161, 3, 23, "Print"] }, Open ]] }, Closed]], Cell[17564, 717, 334, 9, 130, "SmallText"] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)