(* Content-type: application/mathematica *) (*** Wolfram Notebook File ***) (* http://www.wolfram.com/nb *) (* CreatedBy='Mathematica 6.0' *) (*CacheID: 234*) (* Internal cache information: NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 145, 7] NotebookDataLength[ 59369, 1810] NotebookOptionsPosition[ 47530, 1478] NotebookOutlinePosition[ 52930, 1615] CellTagsIndexPosition[ 51815, 1589] WindowTitle->Lecture 07 MIT 3.016 (Fall 2009) \251 W. Craig Carter 2003--2009 WindowFrame->Normal*) (* Beginning of Notebook Content *) Notebook[{ Cell["Solving Linear Systems, Existence and Uniqueness", "Title", CellTags->"mmtag:07:systems_of_linear_equations__existence_and_uniqueness"], Cell[CellGroupData[{ Cell["Solving Systems of Equations", "Subtitle"], Cell["\<\ Consider the set of equations \t x + 2y + z + t = a \t-x + 4y - 2z = b \t x + 3y + 4z + 5t = c \t x + z + t = d We illustrate how to use a matrix representation to write these out and solve \ them\[Ellipsis]\t \ \>", "Text"], Cell[CellGroupData[{ Cell[TextData[{ "Start with the matrix of coefficients of the variables, ", StyleBox["mymatrix", FontWeight->"Bold"], ":" }], "Text"], Cell[BoxData[{ RowBox[{ RowBox[{"mymatrix", " ", "=", " ", RowBox[{"{", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "2", ",", "1", ",", "1"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", "4", ",", RowBox[{"-", "2"}], ",", "0"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"1", ",", "3", ",", "4", ",", "5"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"1", ",", "0", ",", "1", ",", "1"}], "}"}]}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"mymatrix", "//", "MatrixForm"}]}], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "The system of equations will only have a unique solution if the determinant \ of ", StyleBox["mymatrix", FontWeight->"Bold"], " is nonzero." }], "Text"], Cell[BoxData[ RowBox[{"Det", "[", "mymatrix", "]"}]], "Input", CellTags->{ "mmtag:07:systems_of_linear_equations__existence_and_determinants", "mmtag:07:Det[]__and_uniqueness"}] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Now", " ", "define", " ", "vectors", " ", "for", " ", OverscriptBox["x", "\[RightVector]"], " ", "and", " ", OverscriptBox["b", "\[RightVector]"], " ", "in", " ", FormBox[ RowBox[{ RowBox[{ UnderscriptBox["A", "_"], " ", OverscriptBox["x", "\[RightVector]"]}], " ", "=", " ", OverscriptBox["b", "\[RightVector]"]}], TraditionalForm]}]], "Text"], Cell[BoxData[ RowBox[{ RowBox[{"myx", " ", "=", RowBox[{"{", RowBox[{"x", ",", "y", ",", "z", ",", "t"}], "}"}]}], ";"}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"myb", " ", "=", " ", RowBox[{"{", RowBox[{"a", ",", "b", ",", "c", ",", "d"}], "}"}]}], ";"}]], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["The left-hand side of the first equation will be", "Text"], Cell[BoxData[ RowBox[{ RowBox[{"(", RowBox[{"mymatrix", ".", "myx"}], ")"}], "[", RowBox[{"[", "1", "]"}], "]"}]], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["and the left-hand side of all four equations will be", "Text"], Cell[BoxData[{ RowBox[{ RowBox[{"lhs", " ", "=", " ", RowBox[{"mymatrix", ".", "myx"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"lhs", "//", "MatrixForm"}]}], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "Now define an indexed variable ", StyleBox["linsys", FontWeight->"Bold"], " with four entries, each being one of the equations in the system of \ interest:" }], "Text"], Cell[BoxData[ RowBox[{ RowBox[{"linsys", "[", "i_Integer", "]"}], " ", ":=", " ", RowBox[{ RowBox[{"lhs", "[", RowBox[{"[", "i", "]"}], "]"}], " ", "==", " ", RowBox[{"myb", "[", RowBox[{"[", "i", "]"}], "]"}]}]}]], "Input"], Cell[BoxData[ RowBox[{"linsys", "[", "2", "]"}]], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "Solving the set of equations for the unknowns ", Cell[BoxData[ OverscriptBox["x", "\[Rule]"]], FontFamily->"Helvetica"] }], "Text", CellTags-> "mmtag:07:systems_of_linear_equations__creating_from_matrices_and_vectors"], Cell[BoxData[ RowBox[{"linsol", " ", "=", RowBox[{"Solve", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"linsys", "[", "1", "]"}], ",", RowBox[{"linsys", "[", "2", "]"}], ",", " ", RowBox[{"linsys", "[", "3", "]"}], ",", " ", RowBox[{"linsys", "[", "4", "]"}]}], "}"}], ",", "myx"}], "]"}]}]], "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Solving Matrix-Vector Equations", "Subtitle"], Cell[TextData[{ "Doing the same thing a different way, using ", StyleBox["Mathematica", FontSlant->"Italic"], "'s ", StyleBox["LinearSolve", FontWeight->"Bold"], " function:" }], "Text"], Cell[BoxData[ RowBox[{"?", "LinearSolve"}]], "Input"], Cell[BoxData[ RowBox[{"LinearSolve", "[", RowBox[{"mymatrix", ",", "myb"}], "]"}]], "Input", CellTags-> "mmtag:07:LinearSolve[]_solutions_without_direct_computation_of_matrix_\ inverse"], Cell[TextData[{ "And yet another way, based on ", Cell[BoxData[ FormBox[ RowBox[{ OverscriptBox["x", "\[RightVector]"], "=", RowBox[{ RowBox[{ SuperscriptBox[ UnderscriptBox["A", "_"], RowBox[{"-", "1"}]], UnderscriptBox["A", "_"], " ", OverscriptBox["x", "\[RightVector]"]}], " ", "=", " ", RowBox[{ SuperscriptBox[ UnderscriptBox["A", "_"], RowBox[{"-", "1"}]], OverscriptBox["b", "\[RightVector]"]}]}]}], TraditionalForm]]], " " }], "Text"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{"Inverse", "[", "mymatrix", "]"}], ".", "myb"}], "//", "MatrixForm"}]], "Input", CellTags->"mmtag:07:Inverse[]"], Cell[TextData[{ "And yet even another way, a very efficient LinearSolveFunction can be \ produced by LinearSolve. This function will operate on any rhs vector of the \ appropriate length. This would be an efficient way to find the numerical \ solution to a known matrix, but for many different rhs ", Cell[BoxData[ FormBox[ OverscriptBox["b", "\[RightVector]"], TraditionalForm]]], "." }], "Text", CellChangeTimes->{{3.397990034191904*^9, 3.397990223056287*^9}}], Cell[BoxData[ RowBox[{ RowBox[{"mymatrixsol", "=", " ", RowBox[{"LinearSolve", "[", "mymatrix", "]"}]}], ";"}]], "Input", CellChangeTimes->{{3.3979899203049593`*^9, 3.397989974687277*^9}}], Cell["The result can be applied as a function calling a vector :", "Text", CellChangeTimes->{{3.3979909573356743`*^9, 3.397990967975718*^9}}], Cell[BoxData[{ RowBox[{"mymatrixsol", "[", "myb", "]"}], "\[IndentingNewLine]", RowBox[{"Simplify", "[", RowBox[{"mymatrixsol", "[", "myb", "]"}], "]"}]}], "Input", CellChangeTimes->{{3.3979899808128157`*^9, 3.397990008935082*^9}, { 3.397990140071439*^9, 3.397990157976803*^9}}] }, Open ]], Cell[CellGroupData[{ Cell["Singular Matrices: Zero Determinants", "Subtitle"], Cell["When determinants are zero", "Section"], Cell["\<\ Create a matrix with one row as a linear combination of the others\ \>", "Text"], Cell[BoxData[{ RowBox[{ RowBox[{"myzeromatrix", "=", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ RowBox[{"mymatrix", "[", RowBox[{"[", "1", "]"}], "]"}], ",", RowBox[{"mymatrix", "[", RowBox[{"[", "2", "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"p", "*", RowBox[{"mymatrix", "[", RowBox[{"[", "1", "]"}], "]"}]}], " ", "+", " ", RowBox[{"q", "*", RowBox[{"mymatrix", "[", RowBox[{"[", "2", "]"}], "]"}]}], " ", "+", " ", RowBox[{"r", "*", RowBox[{"mymatrix", "[", RowBox[{"[", "4", "]"}], "]"}]}]}], ",", "\[IndentingNewLine]", RowBox[{"mymatrix", "[", RowBox[{"[", "4", "]"}], "]"}]}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"myzeromatrix", "//", "MatrixForm"}]}], "Input", CellChangeTimes->{3.397991315284474*^9}], Cell[BoxData[ RowBox[{"Det", "[", "myzeromatrix", "]"}]], "Input"], Cell[BoxData[ RowBox[{"LinearSolve", "[", RowBox[{"myzeromatrix", ",", "myb"}], "]"}]], "Input"], Cell[TextData[{ "This was not expected to have a solution because one of four equations in \ the system was a linear combination of others in the system. Effectively, we \ were asking ", StyleBox["Mathematica", FontSlant->"Italic"], " to solve a system of ", StyleBox["three", FontSlant->"Italic"], " equations in four unknowns. The ", StyleBox["rank", FontSlant->"Italic"], " of a square matrix of coefficients is equal to the number of linearly \ independent equations in the system. The ", StyleBox["null space", FontSlant->"Italic"], " of the matrix will be empty when the equations are all linearly \ independent." }], "Text"], Cell[BoxData[{ RowBox[{"MatrixRank", "[", "mymatrix", "]"}], "\[IndentingNewLine]", RowBox[{"MatrixRank", "[", "myzeromatrix", "]"}]}], "Input", CellTags->"mmtag:07:MatrixRank[]"], Cell[BoxData[{ RowBox[{"NullSpace", "[", "mymatrix", "]"}], "\[IndentingNewLine]", RowBox[{"NullSpace", "[", "myzeromatrix", "]"}]}], "Input", CellTags->"mmtag:07:NullSpace[]"], Cell[CellGroupData[{ Cell[TextData[{ "Try solving this inhomogeneous system of equations using ", StyleBox["Solve", FontWeight->"Bold"], ":" }], "Text"], Cell[BoxData[ RowBox[{"zerolhs", "=", " ", RowBox[{"myzeromatrix", ".", "myx"}]}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"zerolinsys", "[", "i_Integer", "]"}], " ", ":=", " ", RowBox[{ RowBox[{"zerolhs", "[", RowBox[{"[", "i", "]"}], "]"}], " ", "==", " ", RowBox[{"myb", "[", RowBox[{"[", "i", "]"}], "]"}]}]}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"Table", "[", RowBox[{ RowBox[{"zerolinsys", "[", "i", "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "4"}], "}"}]}], "]"}], "//", "MatrixForm"}]], "Input"], Cell[BoxData[ RowBox[{"zerolinsolhet", " ", "=", RowBox[{"Solve", "[", RowBox[{ RowBox[{"Table", "[", RowBox[{ RowBox[{"zerolinsys", "[", "i", "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "4"}], "}"}]}], "]"}], ",", "myx"}], "]"}]}]], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "No solution, as expected, Let's see what happens if we ask ", StyleBox["Mathematica", FontSlant->"Italic"], " to solve the homogeneous problem:" }], "Text"], Cell[BoxData[ RowBox[{"zerolinsolhom", " ", "=", RowBox[{"Solve", "[", RowBox[{ RowBox[{"Table", "[", RowBox[{ RowBox[{ RowBox[{"zerolinsys", "[", "i", "]"}], "/.", RowBox[{"{", RowBox[{ RowBox[{"a", "\[Rule]", "0"}], ",", RowBox[{"b", "\[Rule]", "0"}], ",", RowBox[{"c", "\[Rule]", "0"}], ",", RowBox[{"d", "\[Rule]", "0"}]}], "}"}]}], ",", RowBox[{"{", RowBox[{"i", ",", "4"}], "}"}]}], "]"}], ",", "myx"}], "]"}]}]], "Input"] }, Open ]], Cell[TextData[{ "In this case, ", StyleBox["Mathematica", FontSlant->"Italic"], " gives a relationship between the variables, but because there are fewer \ equations than variables, there is still no unique solution." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Determinants and Numerical Approximations to Zero", "Subtitle", CellChangeTimes->{{3.3979923988803062`*^9, 3.397992406758533*^9}}], Cell[BoxData[ RowBox[{"Clear", "[", "rv", "]"}]], "Input"], Cell[CellGroupData[{ Cell["\<\ Start by building a routine to make vectors containing six random numbers on \ the interval {-1,1}:\ \>", "Text"], Cell[BoxData[ RowBox[{ RowBox[{"rv", "[", "i_", "]"}], ":=", RowBox[{ RowBox[{"rv", "[", "i", "]"}], "=", RowBox[{"Table", "[", RowBox[{ RowBox[{"RandomReal", "[", RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", "1"}], "}"}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "6"}], "}"}]}], "]"}]}]}]], "Input"], Cell[BoxData[ RowBox[{"rv", "[", "1", "]"}]], "Input"], Cell[BoxData[ RowBox[{"rv", "[", "2", "]"}]], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "Now use ", StyleBox["rv", FontWeight->"Bold"], " to make a 6 x 6 matrix, then find its determinant:" }], "Text"], Cell[BoxData[ RowBox[{"RandMat", " ", "=", " ", RowBox[{"Table", "[", RowBox[{ RowBox[{"rv", "[", "i", "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "6"}], "}"}]}], "]"}]}]], "Input"], Cell[BoxData[ RowBox[{"Det", "[", "RandMat", "]"}]], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Switching two rows changes the sign but not the magnitude of the determinant:\ \ \>", "Text"], Cell[BoxData[ RowBox[{"Det", "[", RowBox[{"{", RowBox[{ RowBox[{"rv", "[", "2", "]"}], ",", RowBox[{"rv", "[", "1", "]"}], ",", RowBox[{"rv", "[", "3", "]"}], ",", RowBox[{"rv", "[", "4", "]"}], ",", RowBox[{"rv", "[", "5", "]"}], ",", RowBox[{"rv", "[", "6", "]"}]}], "}"}], "]"}]], "Input", CellTags->"mmtag:07:Det[]__and_properties_of_determinants"], Cell[BoxData[ RowBox[{"Det", "[", RowBox[{"{", RowBox[{ RowBox[{"rv", "[", "3", "]"}], ",", RowBox[{"rv", "[", "1", "]"}], ",", RowBox[{"rv", "[", "2", "]"}], ",", RowBox[{"rv", "[", "4", "]"}], ",", RowBox[{"rv", "[", "5", "]"}], ",", RowBox[{"rv", "[", "6", "]"}]}], "}"}], "]"}]], "Input"], Cell["Multiply one row by a constant and calculate determinant:", "Text"], Cell[BoxData[{ RowBox[{"Clear", "[", "a", "]"}], "\[IndentingNewLine]", RowBox[{"Det", "[", RowBox[{"{", RowBox[{ RowBox[{"a", "*", RowBox[{"rv", "[", "2", "]"}]}], ",", RowBox[{"rv", "[", "1", "]"}], ",", RowBox[{"rv", "[", "3", "]"}], ",", RowBox[{"rv", "[", "4", "]"}], ",", RowBox[{"rv", "[", "5", "]"}], ",", RowBox[{"rv", "[", "6", "]"}]}], "}"}], "]"}]}], "Input"], Cell["Multiply two rows by a constant and calculate determinant:", "Text"], Cell[BoxData[ RowBox[{"Det", "[", RowBox[{"{", RowBox[{ RowBox[{"a", "*", RowBox[{"rv", "[", "2", "]"}]}], ",", RowBox[{"a", "*", RowBox[{"rv", "[", "1", "]"}]}], ",", RowBox[{"rv", "[", "3", "]"}], ",", RowBox[{"rv", "[", "4", "]"}], ",", RowBox[{"rv", "[", "5", "]"}], ",", RowBox[{"rv", "[", "6", "]"}]}], "}"}], "]"}]], "Input"], Cell["Multiply all rows by a constant and calculate determinant:", "Text"], Cell[BoxData[ RowBox[{"Det", "[", RowBox[{"a", RowBox[{"{", RowBox[{ RowBox[{"rv", "[", "2", "]"}], ",", RowBox[{"rv", "[", "1", "]"}], ",", RowBox[{"rv", "[", "3", "]"}], ",", RowBox[{"rv", "[", "4", "]"}], ",", RowBox[{"rv", "[", "5", "]"}], ",", RowBox[{"rv", "[", "6", "]"}]}], "}"}]}], "]"}]], "Input"], Cell[BoxData[{ RowBox[{"Clear", "[", RowBox[{"a", ",", "b", ",", "c", ",", "d", ",", "e"}], "]"}], "\n", RowBox[{"LinDepVec", " ", "=", " ", RowBox[{ RowBox[{"a", "*", RowBox[{"rv", "[", "1", "]"}]}], " ", "+", " ", RowBox[{"b", "*", RowBox[{"rv", "[", "2", "]"}]}], " ", "+", " ", RowBox[{"c", "*", RowBox[{"rv", "[", "3", "]"}]}], " ", "+", " ", RowBox[{"d", "*", RowBox[{"rv", "[", "4", "]"}]}], " ", "+", " ", RowBox[{"e", "*", RowBox[{"rv", "[", "5", "]"}]}]}]}]}], "Input", CellChangeTimes->{3.397994074080592*^9}] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Example of numerical precision: if one row of a 6 x 6 matrix is a linear \ combination of the other five rows, its determinant should evaluate to zero\ \[Ellipsis]\ \>", "Text"], Cell[BoxData[ RowBox[{"Det", "[", RowBox[{"{", RowBox[{ RowBox[{"rv", "[", "1", "]"}], ",", RowBox[{"rv", "[", "2", "]"}], ",", RowBox[{"rv", "[", "3", "]"}], ",", RowBox[{"rv", "[", "4", "]"}], ",", RowBox[{"rv", "[", "5", "]"}], ",", "LinDepVec"}], "}"}], "]"}]], "Input",\ CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}], Cell["However, numerical precision does ", "Text", CellChangeTimes->{{3.3979920965369377`*^9, 3.397992106702503*^9}}], Cell[BoxData[ RowBox[{"Chop", "[", RowBox[{"Det", "[", RowBox[{"{", RowBox[{ RowBox[{"rv", "[", "1", "]"}], ",", RowBox[{"rv", "[", "2", "]"}], ",", RowBox[{"rv", "[", "3", "]"}], ",", RowBox[{"rv", "[", "4", "]"}], ",", RowBox[{"rv", "[", "5", "]"}], ",", "LinDepVec"}], "}"}], "]"}], "]"}]], "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Determinants and the Order of Matrix Multiplication", "Subtitle", CellChangeTimes->{{3.3979923988803062`*^9, 3.397992406758533*^9}, { 3.397992481544064*^9, 3.3979924997670603`*^9}}], Cell["\<\ Showing that the determinant of a product of matrices is the product of \ determinants\ \>", "Section"], Cell[CellGroupData[{ Cell["Creating a symbolic matrix", "Text"], Cell[BoxData[ RowBox[{ RowBox[{"SymVec", " ", "=", " ", RowBox[{"{", RowBox[{"a", ",", "a", ",", "a", ",", "c", ",", "c", ",", "c"}], "}"}]}], ";"}]], "Input"], Cell[BoxData[{ RowBox[{"Permuts", " ", "=", " ", RowBox[{"Permutations", "[", "SymVec", "]"}]}], "\[IndentingNewLine]", RowBox[{"Permuts", "//", "Dimensions"}]}], "Input", CellTags->"mmtag:07:Permutations[]"], Cell[BoxData[{ RowBox[{ RowBox[{"SymbMat", " ", "=", " ", RowBox[{"{", "\[IndentingNewLine]", "\t", RowBox[{ RowBox[{"Permuts", "[", RowBox[{"[", "1", "]"}], "]"}], ",", "\[IndentingNewLine]", "\t", RowBox[{"Permuts", "[", RowBox[{"[", "12", "]"}], "]"}], ",", "\[IndentingNewLine]", "\t", RowBox[{"Permuts", "[", RowBox[{"[", "6", "]"}], "]"}], ",", "\[IndentingNewLine]", "\t", RowBox[{"Permuts", "[", RowBox[{"[", "18", "]"}], "]"}], ",", "\[IndentingNewLine]", "\t", RowBox[{"Permuts", "[", RowBox[{"[", "17", "]"}], "]"}], ",", "\[IndentingNewLine]", "\t", RowBox[{"Permuts", "[", RowBox[{"[", "9", "]"}], "]"}]}], "\[IndentingNewLine]", "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"SymbMat", "//", "MatrixForm"}]}], "Input"], Cell[BoxData[ RowBox[{"DetSymbMat", " ", "=", " ", RowBox[{"Simplify", "[", RowBox[{"Det", "[", "SymbMat", "]"}], "]"}]}]], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["Creating a matrix of random rational numbers", "Text"], Cell[BoxData[{ RowBox[{ RowBox[{"RandomMat", "=", RowBox[{"Table", "[", RowBox[{ RowBox[{"Table", "[", RowBox[{ FractionBox[ RowBox[{"RandomInteger", "[", RowBox[{"{", RowBox[{ RowBox[{"-", "100"}], ",", "100"}], "}"}], "]"}], RowBox[{"RandomInteger", "[", RowBox[{"{", RowBox[{ RowBox[{"-", "100"}], ",", "100"}], "}"}], "]"}]], ",", RowBox[{"{", RowBox[{"i", ",", "6"}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "6"}], "}"}]}], "]"}]}], ";"}], "\n", TagBox["RandomMat", Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]}], "Input"], Cell[BoxData[ RowBox[{"DetRandomMat", " ", "=", " ", RowBox[{"Det", "[", "RandomMat", "]"}]}]], "Input"], Cell[BoxData[ RowBox[{"CheckA", " ", "=", RowBox[{ RowBox[{"Det", "[", RowBox[{"SymbMat", ".", "RandomMat"}], "]"}], "//", "Simplify"}]}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"DetRandomMat", "*", "DetSymbMat"}], " ", "==", " ", "CheckA"}]], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Does the determinant of a product depend on the order of multiplication?\ \>", "Text"], Cell[BoxData[ RowBox[{"CheckB", " ", "=", RowBox[{ RowBox[{"Det", "[", RowBox[{"RandomMat", ".", "SymbMat"}], "]"}], "//", "Simplify"}]}]], "Input"], Cell[BoxData[ RowBox[{"CheckA", "\[Equal]", "CheckB"}]], "Input"] }, Open ]], Cell["\<\ However, the product of two matrices depends on which matrix is on the left \ and which is on the right\ \>", "Text"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"RandomMat", ".", "SymbMat"}], " ", "-", " ", RowBox[{"SymbMat", ".", "RandomMat"}]}], ")"}], "//", "Simplify"}], "//", "MatrixForm"}]], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["Visualization Example: Polyhedra", "Subtitle", CellChangeTimes->{{3.397931463297797*^9, 3.397931474622593*^9}, { 3.3979952270885897`*^9, 3.397995243014874*^9}}], Cell[CellGroupData[{ Cell[TextData[{ "We now demonstrate the use of matrix multiplication for manipulating an \ object, specifically an octohedron. The Octahedron is made up of eight \ polygons and the initial coordinates of the vertices were set to make a \ regular octahedron with its main diagonals parallel to axes ", StyleBox["x", FontSlant->"Italic"], ",", StyleBox["y", FontSlant->"Italic"], ",", StyleBox["z", FontSlant->"Italic"], ". The faces of the octahedron are colored so that rotations and other \ transformations can be easily tracked." }], "Text", CellTags->{ "mmtag:07:linear_transformations__on_polyhedra", "mmtag:07:Polyhedra__graphical_example_of_linear_transformations", "mmtag:07:permutations"}], Cell[BoxData[{ RowBox[{ RowBox[{"Needs", "[", "\"\\"", "]"}], ";"}], "\n", RowBox[{"Show", "[", RowBox[{"PolyhedronData", "[", "\"\\"", "]"}], "]"}]}], "Input",\ CellChangeTimes->{{3.3979953792336493`*^9, 3.397995397521162*^9}}, CellTags->"mmtag:07:Polyhedra_package"], Cell["\<\ Above, the color of the three dimensional object derives from the colors in \ the light sources. For example, note that there appears to be a blue light \ pointing down from the left. The lights stay fixed as we rotate the object. \ If Lighting \[Rule] None, then the polyhedron's faces will appear to be black.\ \>", "Text", CellChangeTimes->{{3.397982670102461*^9, 3.397982850389266*^9}}], Cell[BoxData[ RowBox[{"Show", "[", RowBox[{ RowBox[{"PolyhedronData", "[", "\"\\"", "]"}], ",", RowBox[{"Lighting", "\[Rule]", "None"}]}], "]"}]], "Input", CellChangeTimes->{{3.397823992657639*^9, 3.397824000585984*^9}}] }, Open ]], Cell["\<\ We can extract data from the Octahedron, and build our own with individually \ colored faces. We will need the individual colors to identify what happens to \ the polyhedron under linear transformaions.\ \>", "Text", CellChangeTimes->{{3.397982861855235*^9, 3.397982933541388*^9}}], Cell[BoxData[ StyleBox[ RowBox[{"PolyhedronData", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}], ShowStringCharacters->True, NumberMarks->True]], "Input", CellChangeTimes->{{3.3978240599643908`*^9, 3.397824066050454*^9}}], Cell[CellGroupData[{ Cell[TextData[{ "The object ", StyleBox["ColOct", FontWeight->"Bold"], " is defined below to draw an octahedron and it invokes the ", StyleBox["Polygon", FontWeight->"Bold"], " function to draw the triangular faces by connecting three points at \ specific numerical coordinates that we obtain from the Octahedron data. \ Because we will turn off lighting, we will ask that each of the faces glow, \ using the ", StyleBox["Glow", FontWeight->"Bold"], " graphics directive" }], "Text", CellChangeTimes->{{3.397982980041493*^9, 3.397983075597206*^9}}, CellTags->"mmtag:07:Polyhedra__example_of_coloring_faces_manually"], Cell[BoxData[{ RowBox[{ RowBox[{"octa", " ", "=", " ", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"p", "[", "1", "]"}], ",", RowBox[{"p", "[", "2", "]"}], ",", RowBox[{"p", "[", "3", "]"}], ",", RowBox[{"p", "[", "4", "]"}], ",", " ", RowBox[{"p", "[", "5", "]"}], ",", RowBox[{"p", "[", "6", "]"}]}], "}"}], " ", "=", " ", RowBox[{ RowBox[{"PolyhedronData", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}], "[", RowBox[{"[", "1", "]"}], "]"}]}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"colface", "[", "i_", "]"}], " ", ":=", RowBox[{"Glow", "[", RowBox[{"Hue", "[", RowBox[{"i", "/", "8"}], "]"}], "]"}]}], " ", ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"ColOct", "=", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"colface", "[", "0", "]"}], ",", RowBox[{"Polygon", "[", RowBox[{"{", RowBox[{ RowBox[{"p", "[", "4", "]"}], ",", RowBox[{"p", "[", "5", "]"}], ",", RowBox[{"p", "[", "6", "]"}]}], "}"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"colface", "[", "1", "]"}], ",", RowBox[{"Polygon", "[", RowBox[{"{", RowBox[{ RowBox[{"p", "[", "4", "]"}], ",", RowBox[{"p", "[", "6", "]"}], ",", RowBox[{"p", "[", "2", "]"}]}], "}"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"colface", "[", "2", "]"}], ",", RowBox[{"Polygon", "[", RowBox[{"{", RowBox[{ RowBox[{"p", "[", "4", "]"}], ",", RowBox[{"p", "[", "2", "]"}], ",", RowBox[{"p", "[", "1", "]"}]}], "}"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"colface", "[", "3", "]"}], ",", RowBox[{"Polygon", "[", RowBox[{"{", RowBox[{ RowBox[{"p", "[", "4", "]"}], ",", RowBox[{"p", "[", "1", "]"}], ",", RowBox[{"p", "[", "5", "]"}]}], "}"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"colface", "[", "4", "]"}], ",", RowBox[{"Polygon", "[", RowBox[{"{", RowBox[{ RowBox[{"p", "[", "5", "]"}], ",", RowBox[{"p", "[", "1", "]"}], ",", RowBox[{"p", "[", "3", "]"}]}], "}"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"colface", "[", "5", "]"}], ",", RowBox[{"Polygon", "[", RowBox[{"{", RowBox[{ RowBox[{"p", "[", "5", "]"}], ",", RowBox[{"p", "[", "3", "]"}], ",", RowBox[{"p", "[", "6", "]"}]}], "}"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"colface", "[", "6", "]"}], ",", RowBox[{"Polygon", "[", RowBox[{"{", RowBox[{ RowBox[{"p", "[", "3", "]"}], ",", RowBox[{"p", "[", "1", "]"}], ",", RowBox[{"p", "[", "2", "]"}]}], "}"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"colface", "[", "7", "]"}], ",", RowBox[{"Polygon", "[", RowBox[{"{", RowBox[{ RowBox[{"p", "[", "6", "]"}], ",", RowBox[{"p", "[", "3", "]"}], ",", RowBox[{"p", "[", "2", "]"}]}], "}"}], "]"}]}], "}"}]}], "}"}]}], ";"}]}], "Input", CellChangeTimes->{{3.39783767614051*^9, 3.3978376806956253`*^9}, 3.397837881271184*^9, {3.397839078470025*^9, 3.397839084988461*^9}, { 3.3978392263978643`*^9, 3.3978392901736307`*^9}, {3.397839324159348*^9, 3.397839327260647*^9}, {3.39783936038265*^9, 3.397839384916613*^9}, { 3.397840115106152*^9, 3.3978402338787622`*^9}, {3.397924201961906*^9, 3.397924216559523*^9}, {3.397930646001342*^9, 3.397930647966592*^9}, 3.397930679031857*^9, {3.397982955092883*^9, 3.397982967678063*^9}}] }, Open ]], Cell[BoxData[ RowBox[{"Show", "[", RowBox[{ RowBox[{"Graphics3D", "[", "ColOct", "]"}], ",", RowBox[{"Lighting", "\[Rule]", "None"}]}], "]"}]], "Input", CellChangeTimes->{{3.3978242362100763`*^9, 3.3978242398018312`*^9}, { 3.3978377092696743`*^9, 3.397837715627578*^9}, {3.397839093937739*^9, 3.397839094539761*^9}}] }, Open ]], Cell[CellGroupData[{ Cell["Linear Transformations: Matrix Operations on Polyhedra", "Subtitle", CellChangeTimes->{{3.397931463297797*^9, 3.397931474622593*^9}}], Cell["\<\ Here we write a function that will take a matrix and operate on all the \ points (i.e., position vectors) of all the triangles (The function uses a \ pattern for the arguments to Polygon, and then matrix multiplies the \ matches). The function will also take some text to help us visually identify \ which linear operation has been performed.\ \>", "Text", CellChangeTimes->{{3.39798310387954*^9, 3.3979831155813093`*^9}, { 3.397983251878833*^9, 3.397983287221141*^9}, {3.3979833386374407`*^9, 3.397983456061264*^9}}], Cell[BoxData[ RowBox[{ RowBox[{"transoct", "[", RowBox[{"tmat_", ",", "description_String"}], "]"}], " ", ":=", RowBox[{"{", RowBox[{ RowBox[{"ColOct", "/.", RowBox[{"{", RowBox[{ RowBox[{"Polygon", "[", RowBox[{"{", RowBox[{"a_List", ",", "b_List", ",", "c_List"}], "}"}], "]"}], "\[Rule]", RowBox[{"Polygon", "[", RowBox[{"{", RowBox[{ RowBox[{"tmat", ".", "a"}], ",", RowBox[{"tmat", ".", "b"}], ",", RowBox[{"tmat", ".", "c"}]}], "}"}], "]"}]}], "}"}]}], ",", RowBox[{"Text", "[", RowBox[{ RowBox[{"Style", "[", RowBox[{"MatrixForm", "[", "tmat", "]"}], "]"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", RowBox[{"-", ".25"}]}], "}"}]}], "]"}], ",", RowBox[{"Text", "[", RowBox[{ RowBox[{"Style", "[", RowBox[{"description", ",", RowBox[{"Darker", "[", "Red", "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", ".25"}], "}"}], ",", RowBox[{"Background", "\[Rule]", " ", "White"}]}], "]"}]}], "}"}]}]], "Input", CellChangeTimes->{{3.397840645905756*^9, 3.397840742136574*^9}, { 3.397840797134156*^9, 3.3978408315420322`*^9}, {3.397840898625766*^9, 3.3978409077500267`*^9}, {3.39789628683077*^9, 3.397896331334016*^9}, { 3.3978963829795637`*^9, 3.3978964812703876`*^9}, {3.3978965718712397`*^9, 3.3978966425020533`*^9}, {3.3978967154173403`*^9, 3.397896783614644*^9}, { 3.397896839316279*^9, 3.397896872103243*^9}, 3.3978975877779217`*^9, 3.397898775432713*^9, {3.397899113803924*^9, 3.39789913405476*^9}}], Cell[BoxData[ RowBox[{"Show", "[", RowBox[{ RowBox[{"Graphics3D", "[", RowBox[{"transoct", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", RowBox[{"-", "1"}]}], "}"}]}], "}"}], ",", "\"\\""}], "]"}], "]"}], ",", RowBox[{"Lighting", "\[Rule]", "None"}]}], "]"}]], "Input", CellChangeTimes->{{3.3978408412327433`*^9, 3.3978408827608433`*^9}, { 3.397840919862648*^9, 3.397840976022985*^9}, {3.3978946579646463`*^9, 3.397894660948263*^9}, {3.397896548647607*^9, 3.397896563548422*^9}}], Cell["\<\ We build a set of octahedra with different types of linear operations. We \ will visualize them in a few steps.\ \>", "Text", CellChangeTimes->{{3.397983483921422*^9, 3.3979835472691507`*^9}}], Cell[BoxData[{ RowBox[{ RowBox[{"identity", "=", RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0"}, {"0", "1", "0"}, {"0", "0", "1"} }], "\[NoBreak]", ")"}]}], ";", " ", RowBox[{ RowBox[{"rot90", "[", "001", "]"}], "=", RowBox[{"(", "\[NoBreak]", GridBox[{ { RowBox[{"Cos", "[", RowBox[{"\[Pi]", "/", "2"}], "]"}], RowBox[{"Sin", "[", RowBox[{ RowBox[{"-", "\[Pi]"}], "/", "2"}], "]"}], "0"}, { RowBox[{"Sin", "[", RowBox[{"\[Pi]", "/", "2"}], "]"}], RowBox[{"Cos", "[", RowBox[{"\[Pi]", "/", "2"}], "]"}], "0"}, {"0", "0", "1"} }], "\[NoBreak]", ")"}]}], ";", " ", RowBox[{ RowBox[{"ref", "[", "010", "]"}], "=", RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0"}, {"0", RowBox[{"-", "1"}], "0"}, {"0", "0", "1"} }], "\[NoBreak]", ")"}]}]}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"o", "[", RowBox[{"1", ",", "1"}], "]"}], " ", "=", " ", RowBox[{"transoct", "[", RowBox[{"identity", ",", "\"\\""}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"o", "[", RowBox[{"1", ",", "2"}], "]"}], " ", "=", " ", RowBox[{"transoct", "[", RowBox[{ RowBox[{"rot90", "[", "001", "]"}], ",", "\"\<90-[001]\>\""}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"o", "[", RowBox[{"1", ",", "3"}], "]"}], " ", "=", " ", RowBox[{"transoct", "[", RowBox[{ RowBox[{"ref", "[", "010", "]"}], ",", "\"\\""}], "]"}]}], ";"}], "\n", RowBox[{ RowBox[{ RowBox[{"o", "[", RowBox[{"2", ",", "1"}], "]"}], " ", "=", " ", RowBox[{"transoct", "[", RowBox[{ RowBox[{ RowBox[{"ref", "[", "010", "]"}], ".", RowBox[{"rot90", "[", "001", "]"}]}], ",", "\"\<90-[100] then m-[010]\>\""}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"o", "[", RowBox[{"2", ",", "2"}], "]"}], " ", "=", " ", RowBox[{"transoct", "[", RowBox[{ RowBox[{ RowBox[{"rot90", "[", "001", "]"}], ".", RowBox[{"ref", "[", "010", "]"}]}], ",", "\"\\""}], "]"}]}], ";"}]}], "Input", CellChangeTimes->{{3.397894104087405*^9, 3.397894213810439*^9}, { 3.3978942496412354`*^9, 3.397894455269587*^9}, {3.397894757094049*^9, 3.397894787698557*^9}, 3.397895027702503*^9, 3.397895219299975*^9, 3.397897308418006*^9, {3.397897619990136*^9, 3.3978976792870693`*^9}, { 3.39789791547215*^9, 3.3978979278554163`*^9}, {3.3978993776448803`*^9, 3.397899429086419*^9}, {3.3978995581693907`*^9, 3.3978995600322313`*^9}, { 3.397900557420734*^9, 3.397900592875985*^9}, 3.397983557940282*^9, { 3.3979970747433443`*^9, 3.397997288975305*^9}, {3.397997624600377*^9, 3.397997643492697*^9}, {3.39799803640888*^9, 3.39799805973337*^9}, { 3.3979982243779163`*^9, 3.397998257829917*^9}, {3.3979985328466797`*^9, 3.397998533004634*^9}}], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " has many common geometric transformations available as functions: Here, we \ extract information about counter-clockwise rotation about [110]." }], "Text", CellChangeTimes->{{3.397983592547409*^9, 3.3979836436658278`*^9}, { 3.3979842451855097`*^9, 3.3979842813023977`*^9}}], Cell[BoxData[ RowBox[{"RotationTransform", "[", RowBox[{"Pi", ",", RowBox[{"{", RowBox[{"1", ",", "1", ",", "0"}], "}"}]}], "]"}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{"o", "[", RowBox[{"2", ",", "3"}], "]"}], " ", "=", " ", RowBox[{"transoct", "[", RowBox[{ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "1", "0"}, {"1", "0", "0"}, {"0", "0", RowBox[{"-", "1"}]} }], "\[NoBreak]", ")"}], ",", "\"\<180-[110]\>\""}], "]"}]}], ";"}]], "Input", CellChangeTimes->{{3.397897452292697*^9, 3.397897485947934*^9}, { 3.397897726886009*^9, 3.397897733788731*^9}, {3.397897944348311*^9, 3.397897945220406*^9}}], Cell["\<\ We use Manipulate and GraphicsGrid to visualize the effect of all the \ transformations. We use Manipulate's sliders to set the view point for all \ images simultaneously. To do this, we right a function that will place the \ viewpoint someplace on a sphere of radius 3.\ \>", "Text", CellChangeTimes->{{3.397984317207179*^9, 3.397984411437537*^9}}], Cell[BoxData[{ RowBox[{ RowBox[{"sc", "[", RowBox[{"\[Theta]_", ",", "\[Phi]_"}], "]"}], " ", ":=", " ", RowBox[{"3", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Cos", "[", "\[Theta]", "]"}], " ", RowBox[{"Sin", "[", "\[Phi]", "]"}]}], ",", " ", RowBox[{ RowBox[{"Sin", "[", "\[Theta]", "]"}], " ", RowBox[{"Sin", "[", "\[Phi]", "]"}]}], ",", " ", RowBox[{"Cos", "[", "\[Phi]", "]"}]}], "}"}]}]}], "\[IndentingNewLine]", RowBox[{"Manipulate", "[", RowBox[{ RowBox[{"GraphicsGrid", "[", RowBox[{"Table", "[", RowBox[{ RowBox[{"Show", "[", RowBox[{ RowBox[{"Graphics3D", "[", RowBox[{"o", "[", RowBox[{"i", ",", "j"}], "]"}], "]"}], ",", RowBox[{"Lighting", "\[Rule]", "None"}], ",", RowBox[{"ViewPoint", "\[Rule]", RowBox[{"sc", "[", RowBox[{"\[Theta]", ",", "\[Phi]"}], "]"}]}], ",", RowBox[{"ImageSize", "\[Rule]", RowBox[{"{", RowBox[{"200", ",", "200"}], "}"}]}], ",", RowBox[{"PlotRange", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "}"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "3"}], "}"}], ",", RowBox[{"{", RowBox[{"i", ",", "2"}], "}"}]}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"\[Theta]", ",", "2.1"}], "}"}], ",", "0", ",", RowBox[{"2", " ", "\[Pi]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"\[Phi]", ",", RowBox[{"-", "1.4"}]}], "}"}], ",", RowBox[{ RowBox[{"-", "\[Pi]"}], "/", "2"}], ",", RowBox[{"\[Pi]", "/", "2"}]}], "}"}]}], "]"}]}], "Input", CellChangeTimes->{{3.3978242362100763`*^9, 3.3978242398018312`*^9}, { 3.3978377092696743`*^9, 3.397837715627578*^9}, {3.397838180293653*^9, 3.397838279212364*^9}, {3.3978383174386377`*^9, 3.397838362613158*^9}, { 3.397838484785606*^9, 3.397838484853334*^9}, {3.397838530489097*^9, 3.397838542389534*^9}, {3.397838621951202*^9, 3.397838629469545*^9}, { 3.3978386645072813`*^9, 3.397838796815361*^9}, {3.3978394022490396`*^9, 3.397839410319015*^9}, {3.397839540830673*^9, 3.397839616732592*^9}, 3.397839695953388*^9, {3.397839773091733*^9, 3.3978398231137123`*^9}, 3.397894746660161*^9, {3.397894794767612*^9, 3.397894865373646*^9}, { 3.397897533568018*^9, 3.397897535438792*^9}, {3.3978977436149387`*^9, 3.397897885696065*^9}, {3.3978979510306273`*^9, 3.397897952981833*^9}, { 3.397898239403013*^9, 3.397898240008223*^9}, {3.397898338572851*^9, 3.397898401858903*^9}, {3.397898457369527*^9, 3.397898464189842*^9}, { 3.397898529775738*^9, 3.397898538415738*^9}, {3.397898703961813*^9, 3.397898714432913*^9}, {3.397898825467866*^9, 3.397898831702444*^9}, { 3.3978988932223988`*^9, 3.3978989170574627`*^9}, {3.397898973041875*^9, 3.397898979582737*^9}, {3.3978990523081017`*^9, 3.397899080670884*^9}, { 3.39790070877044*^9, 3.397900724604801*^9}, {3.397901007564149*^9, 3.3979011608880796`*^9}, {3.3979011980669193`*^9, 3.397901201119595*^9}, { 3.397901250227317*^9, 3.397901258624504*^9}, {3.3979013483807077`*^9, 3.397901350948846*^9}, {3.3979237826719847`*^9, 3.397923878051816*^9}, { 3.397923917294387*^9, 3.3979239246587467`*^9}, {3.397923954763514*^9, 3.3979239635631332`*^9}, {3.397924006884982*^9, 3.3979240838355217`*^9}, { 3.397930805164575*^9, 3.3979308143869267`*^9}, {3.3979982827727547`*^9, 3.397998289915799*^9}}] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Linear Transformations: Symmetry Operations on Crystal Structures\ \>", "Subtitle", CellChangeTimes->{{3.397931463297797*^9, 3.397931474622593*^9}, { 3.397931513073955*^9, 3.397931528110593*^9}}], Cell["\<\ Group theory arises from the mathematics of relating the symmetry of objects. \ In crystallography, it is applied to the classification of different types \ of arrangments of points (i.e. crystal lattices) and the symmetry operations \ include multiplication of matrices representing common symmetry operations. \ In this example, we will construct an FCC unit cell and then show that the \ cell remains invariant under different symmetry operations. The set of all \ operations that leave a lattice invariant uniquely defines the space group of \ the lattice. We build an FCC from graphics primiitves, and then translate it \ so the center is at the origin. \ \>", "Text", CellChangeTimes->{{3.397984477088798*^9, 3.3979846015894613`*^9}, { 3.397984636295841*^9, 3.397984905965828*^9}}], Cell[BoxData[{ RowBox[{"corners", " ", "=", " ", RowBox[{"Flatten", "[", RowBox[{ RowBox[{"Table", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "j", ",", "k"}], "}"}], ",", RowBox[{"{", RowBox[{"i", ",", "0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"j", ",", "0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"k", ",", "0", ",", "1"}], "}"}]}], "]"}], ",", "2"}], "]"}]}], "\n", RowBox[{"faces", "=", " ", RowBox[{"Join", "[", RowBox[{ RowBox[{"Permutations", "[", RowBox[{"{", RowBox[{"0.5", ",", "0.5", ",", "0"}], "}"}], "]"}], ",", RowBox[{"Permutations", "[", RowBox[{"{", RowBox[{"0.5", ",", "0.5", ",", "1"}], "}"}], "]"}]}], "]"}]}], "\n", RowBox[{"fccsites", " ", "=", " ", RowBox[{"Join", "[", RowBox[{"faces", ",", "corners"}], "]"}]}], "\n", RowBox[{ RowBox[{"srad", " ", "=", " ", RowBox[{ SqrtBox["2"], "/", "4"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"FCC", " ", "=", " ", RowBox[{"Table", "[", RowBox[{ RowBox[{"Sphere", "[", RowBox[{ RowBox[{"fccsites", "[", RowBox[{"[", "i", "]"}], "]"}], ",", "srad"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", "14"}], "}"}]}], "]"}]}], "\n", RowBox[{ RowBox[{"axes", " ", "=", RowBox[{"{", " ", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"RGBColor", "[", RowBox[{"1", ",", "0", ",", "0", ",", ".5"}], "]"}], ",", RowBox[{"Cylinder", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"2", ",", "0", ",", "0"}], "}"}]}], "}"}], ",", ".05"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"RGBColor", "[", RowBox[{"0", ",", "1", ",", "0", ",", ".5"}], "]"}], ",", RowBox[{"Cylinder", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "2", ",", "0"}], "}"}]}], "}"}], ",", ".05"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"RGBColor", "[", RowBox[{"0", ",", "0", ",", "1", ",", ".5"}], "]"}], ",", RowBox[{"Cylinder", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", "2"}], "}"}]}], "}"}], ",", ".05"}], "]"}]}], "}"}]}], "}"}]}], ";"}], "\n", RowBox[{"fccmodel", " ", "=", " ", RowBox[{"Translate", "[", RowBox[{ RowBox[{"Join", "[", RowBox[{"FCC", ",", "axes"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"-", ".5"}], ",", RowBox[{"-", ".5"}], ",", RowBox[{"-", ".5"}]}], "}"}]}], "]"}]}], "\n", RowBox[{"Graphics3D", "[", "fccmodel", "]"}]}], "Input", CellChangeTimes->{{3.3980013374747543`*^9, 3.398001345106181*^9}, { 3.39800201180188*^9, 3.398002033303845*^9}}], Cell[TextData[{ "We visualize the 3-fold rotation about [111], and the roto-inversion ", Cell[BoxData[ FormBox[ OverscriptBox[ RowBox[{"3", " "}], "_"], TraditionalForm]]], "(an inversion of all axis through the center, followed by a 3-fold rotation)" }], "Text", CellChangeTimes->{{3.397984924998527*^9, 3.3979850654775352`*^9}}], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{"bbox", " ", "=", " ", RowBox[{"1.25", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "}"}]}]}], ";"}], "\[IndentingNewLine]"}]], "Input"] }, Open ]], Cell[BoxData[ RowBox[{"gPlain", " ", "=", " ", RowBox[{"Graphics3D", "[", RowBox[{"fccmodel", ",", " ", RowBox[{"PlotRange", "\[Rule]", "bbox"}], ",", RowBox[{"SphericalRegion", "\[Rule]", " ", "True"}]}], "]"}]}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"fccRot", "=", " ", RowBox[{"Rotate", "[", RowBox[{"fccmodel", ",", RowBox[{"2", RowBox[{"\[Pi]", "/", "3"}]}], ",", RowBox[{"{", RowBox[{"1", ",", "1", ",", "1"}], "}"}]}], "]"}]}], ";"}]], "Input"], Cell[BoxData[ RowBox[{"gRot", " ", "=", " ", RowBox[{"Graphics3D", "[", RowBox[{"fccRot", ",", " ", RowBox[{"PlotRange", "\[Rule]", "bbox"}], ",", RowBox[{"SphericalRegion", "\[Rule]", " ", "True"}]}], "]"}]}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"fccInvRot", " ", "=", " ", RowBox[{"Rotate", "[", RowBox[{ RowBox[{"GeometricTransformation", "[", RowBox[{"fccmodel", ",", RowBox[{"(", "\[NoBreak]", GridBox[{ { RowBox[{"-", "1"}], "0", "0"}, {"0", RowBox[{"-", "1"}], "0"}, {"0", "0", RowBox[{"-", "1"}]} }], "\[NoBreak]", ")"}]}], "]"}], ",", RowBox[{"2", RowBox[{"\[Pi]", "/", "3"}]}], ",", RowBox[{"{", RowBox[{"1", ",", "1", ",", "1"}], "}"}]}], "]"}]}], ";"}]], "Input"], Cell[BoxData[ RowBox[{"gRotInv", "=", " ", RowBox[{"Graphics3D", "[", RowBox[{"fccInvRot", ",", " ", RowBox[{"PlotRange", "\[Rule]", "bbox"}], ",", RowBox[{"SphericalRegion", "\[Rule]", " ", "True"}]}], "]"}]}]], "Input"], Cell[BoxData[{ RowBox[{"vp", "=", RowBox[{"ViewPoint", "/.", RowBox[{"Options", "[", "Graphics3D", "]"}]}]}], "\n", RowBox[{"vv", "=", RowBox[{"ViewVertical", "/.", RowBox[{"Options", "[", "Graphics3D", "]"}]}]}], "\n"}], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"GraphicsRow", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Show", "[", RowBox[{"gRot", ",", RowBox[{"ViewPoint", "\[Rule]", RowBox[{"Dynamic", "[", "vp", "]"}]}], ",", RowBox[{"ViewVertical", "\[Rule]", RowBox[{"Dynamic", "[", "vv", "]"}]}]}], "]"}], ",", RowBox[{"Show", "[", RowBox[{"gRot", ",", RowBox[{"ViewPoint", "\[Rule]", RowBox[{"Dynamic", "[", "vp", "]"}]}], ",", RowBox[{"ViewVertical", "\[Rule]", RowBox[{"Dynamic", "[", "vv", "]"}]}]}], "]"}], ",", RowBox[{"Show", "[", RowBox[{"gRotInv", ",", RowBox[{"ViewPoint", "\[Rule]", RowBox[{"Dynamic", "[", "vp", "]"}]}], ",", RowBox[{"ViewVertical", "\[Rule]", RowBox[{"Dynamic", "[", "vv", "]"}]}]}], "]"}]}], "}"}], ",", RowBox[{"ImageSize", "\[Rule]", " ", "Full"}]}], "]"}], "\n"}]], "Input"] }, ScreenStyleEnvironment->"Presentation", PrintingStyleEnvironment->"ColorPrintout", CellGrouping->Manual, WindowSize->{1218, 871}, WindowMargins->{{106, Automatic}, {Automatic, 0}}, WindowTitle->"Lecture 07 MIT 3.016 (Fall 2009) \[Copyright] W. Craig Carter \ 2003--2009", PrintingCopies->1, PrintingPageRange->{1, Automatic}, PrintingOptions->{"PaperOrientation"->"Portrait", "PrintCellBrackets"->False, "PrintMultipleHorizontalPages"->False, "PrintRegistrationMarks"->False, "PrintingMargins"->{{54, 54}, {72, 72}}}, ShowSelection->True, ShowCellLabel->False, CellLabelAutoDelete->True, FrontEndVersion->"7.0 for Mac OS X x86 (32-bit) (November 11, 2008)", StyleDefinitions->"3016-Carter.nb" ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{ "mmtag:07:systems_of_linear_equations__existence_and_uniqueness"->{ Cell[625, 21, 143, 1, 168, "Title", CellTags-> "mmtag:07:systems_of_linear_equations__existence_and_uniqueness"]}, "mmtag:07:systems_of_linear_equations__existence_and_determinants"->{ Cell[2150, 78, 185, 4, 54, "Input", CellTags->{ "mmtag:07:systems_of_linear_equations__existence_and_determinants", "mmtag:07:Det[]__and_uniqueness"}]}, "mmtag:07:Det[]__and_uniqueness"->{ Cell[2150, 78, 185, 4, 54, "Input", CellTags->{ "mmtag:07:systems_of_linear_equations__existence_and_determinants", "mmtag:07:Det[]__and_uniqueness"}]}, "mmtag:07:systems_of_linear_equations__creating_from_matrices_and_vectors"->{\ Cell[4170, 159, 244, 7, 43, "Text", CellTags-> "mmtag:07:systems_of_linear_equations__creating_from_matrices_and_\ vectors"]}, "mmtag:07:LinearSolve[]_solutions_without_direct_computation_of_matrix_\ inverse"->{ Cell[5125, 199, 193, 5, 54, "Input", CellTags-> "mmtag:07:LinearSolve[]_solutions_without_direct_computation_of_matrix_\ inverse"]}, "mmtag:07:Inverse[]"->{ Cell[5858, 227, 162, 5, 54, "Input", CellTags->"mmtag:07:Inverse[]"]}, "mmtag:07:MatrixRank[]"->{ Cell[9062, 324, 183, 3, 85, "Input", CellTags->"mmtag:07:MatrixRank[]"]}, "mmtag:07:NullSpace[]"->{ Cell[9248, 329, 180, 3, 85, "Input", CellTags->"mmtag:07:NullSpace[]"]}, "mmtag:07:Det[]__and_properties_of_determinants"->{ Cell[12894, 477, 390, 10, 54, "Input", CellTags->"mmtag:07:Det[]__and_properties_of_determinants"]}, "mmtag:07:Det[]__and_numerical_precision"->{ Cell[15811, 570, 415, 12, 54, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}], Cell[16350, 587, 454, 13, 54, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}]}, "mmtag:07:Chop[]__and_numerical_precision"->{ Cell[15811, 570, 415, 12, 54, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}], Cell[16350, 587, 454, 13, 54, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}]}, "mmtag:07:Permutations[]"->{ Cell[17406, 626, 215, 4, 85, "Input", CellTags->"mmtag:07:Permutations[]"]}, "mmtag:07:linear_transformations__on_polyhedra"->{ Cell[20755, 743, 721, 19, 80, "Text", CellTags->{ "mmtag:07:linear_transformations__on_polyhedra", "mmtag:07:Polyhedra__graphical_example_of_linear_transformations", "mmtag:07:permutations"}]}, "mmtag:07:Polyhedra__graphical_example_of_linear_transformations"->{ Cell[20755, 743, 721, 19, 80, "Text", CellTags->{ "mmtag:07:linear_transformations__on_polyhedra", "mmtag:07:Polyhedra__graphical_example_of_linear_transformations", "mmtag:07:permutations"}]}, "mmtag:07:permutations"->{ Cell[20755, 743, 721, 19, 80, "Text", CellTags->{ "mmtag:07:linear_transformations__on_polyhedra", "mmtag:07:Polyhedra__graphical_example_of_linear_transformations", "mmtag:07:permutations"}]}, "mmtag:07:Polyhedra_package"->{ Cell[21479, 764, 316, 7, 85, "Input", CellTags->"mmtag:07:Polyhedra_package"]}, "mmtag:07:Polyhedra__example_of_coloring_faces_manually"->{ Cell[23034, 806, 631, 16, 80, "Text", CellTags->"mmtag:07:Polyhedra__example_of_coloring_faces_manually"]} } *) (*CellTagsIndex CellTagsIndex->{ {"mmtag:07:systems_of_linear_equations__existence_and_uniqueness", 48393, \ 1503}, {"mmtag:07:systems_of_linear_equations__existence_and_determinants", 48588, \ 1507}, {"mmtag:07:Det[]__and_uniqueness", 48793, 1512}, {"mmtag:07:systems_of_linear_equations__creating_from_matrices_and_vectors", \ 49040, 1517}, {"mmtag:07:LinearSolve[]_solutions_without_direct_computation_of_matrix_\ inverse", 49264, 1524}, {"mmtag:07:Inverse[]", 49431, 1529}, {"mmtag:07:MatrixRank[]", 49535, 1532}, {"mmtag:07:NullSpace[]", 49641, 1535}, {"mmtag:07:Det[]__and_properties_of_determinants", 49772, 1538}, {"mmtag:07:Det[]__and_numerical_precision", 49924, 1541}, {"mmtag:07:Chop[]__and_numerical_precision", 50282, 1550}, {"mmtag:07:Permutations[]", 50623, 1559}, {"mmtag:07:linear_transformations__on_polyhedra", 50757, 1562}, {"mmtag:07:Polyhedra__graphical_example_of_linear_transformations", 51042, \ 1568}, {"mmtag:07:permutations", 51285, 1574}, {"mmtag:07:Polyhedra_package", 51533, 1580}, {"mmtag:07:Polyhedra__example_of_coloring_faces_manually", 51679, 1583} } *) (*NotebookFileOutline Notebook[{ Cell[625, 21, 143, 1, 168, "Title", CellTags->"mmtag:07:systems_of_linear_equations__existence_and_uniqueness"], Cell[CellGroupData[{ Cell[793, 26, 48, 0, 70, "Subtitle"], Cell[844, 28, 259, 8, 149, "Text"], Cell[CellGroupData[{ Cell[1128, 40, 138, 5, 34, "Text"], Cell[1269, 47, 667, 18, 205, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[1973, 70, 174, 6, 34, "Text"], Cell[2150, 78, 185, 4, 54, "Input", CellTags->{ "mmtag:07:systems_of_linear_equations__existence_and_determinants", "mmtag:07:Det[]__and_uniqueness"}] }, Open ]], Cell[CellGroupData[{ Cell[2372, 87, 404, 10, 38, "Text"], Cell[2779, 99, 143, 4, 54, "Input"], Cell[2925, 105, 148, 4, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[3110, 114, 64, 0, 34, "Text"], Cell[3177, 116, 133, 4, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[3347, 125, 68, 0, 34, "Text"], Cell[3418, 127, 176, 4, 85, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[3631, 136, 190, 6, 34, "Text"], Cell[3824, 144, 247, 7, 54, "Input"], Cell[4074, 153, 59, 1, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[4170, 159, 244, 7, 43, "Text", CellTags-> "mmtag:07:systems_of_linear_equations__creating_from_matrices_and_vectors"],\ Cell[4417, 168, 350, 10, 54, "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[4816, 184, 51, 0, 70, "Subtitle"], Cell[4870, 186, 195, 8, 34, "Text"], Cell[5068, 196, 54, 1, 54, "Input"], Cell[5125, 199, 193, 5, 54, "Input", CellTags-> "mmtag:07:LinearSolve[]_solutions_without_direct_computation_of_matrix_\ inverse"], Cell[5321, 206, 534, 19, 40, "Text"], Cell[5858, 227, 162, 5, 54, "Input", CellTags->"mmtag:07:Inverse[]"], Cell[6023, 234, 471, 10, 86, "Text"], Cell[6497, 246, 196, 4, 54, "Input"], Cell[6696, 252, 142, 1, 34, "Text"], Cell[6841, 255, 287, 5, 85, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[7165, 265, 56, 0, 70, "Subtitle"], Cell[7224, 267, 45, 0, 77, "Section"], Cell[7272, 269, 90, 2, 30, "Text"], Cell[7365, 273, 870, 22, 175, "Input"], Cell[8238, 297, 67, 1, 54, "Input"], Cell[8308, 300, 100, 2, 54, "Input"], Cell[8411, 304, 648, 18, 103, "Text"], Cell[9062, 324, 183, 3, 85, "Input", CellTags->"mmtag:07:MatrixRank[]"], Cell[9248, 329, 180, 3, 85, "Input", CellTags->"mmtag:07:NullSpace[]"], Cell[CellGroupData[{ Cell[9453, 336, 136, 5, 34, "Text"], Cell[9592, 343, 96, 2, 54, "Input"], Cell[9691, 347, 255, 7, 54, "Input"], Cell[9949, 356, 205, 6, 54, "Input"], Cell[10157, 364, 284, 9, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[10478, 378, 179, 5, 34, "Text"], Cell[10660, 385, 534, 16, 85, "Input"] }, Open ]], Cell[11209, 404, 234, 6, 57, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[11480, 415, 137, 1, 70, "Subtitle"], Cell[11620, 418, 59, 1, 54, "Input"], Cell[CellGroupData[{ Cell[11704, 423, 123, 3, 34, "Text"], Cell[11830, 428, 363, 12, 54, "Input"], Cell[12196, 442, 55, 1, 54, "Input"], Cell[12254, 445, 55, 1, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[12346, 451, 134, 5, 34, "Text"], Cell[12483, 458, 203, 6, 54, "Input"], Cell[12689, 466, 62, 1, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[12788, 472, 103, 3, 34, "Text"], Cell[12894, 477, 390, 10, 54, "Input", CellTags->"mmtag:07:Det[]__and_properties_of_determinants"], Cell[13287, 489, 329, 9, 54, "Input"], Cell[13619, 500, 73, 0, 34, "Text"], Cell[13695, 502, 416, 11, 85, "Input"], Cell[14114, 515, 74, 0, 34, "Text"], Cell[14191, 517, 381, 11, 54, "Input"], Cell[14575, 530, 74, 0, 34, "Text"], Cell[14652, 532, 355, 10, 54, "Input"], Cell[15010, 544, 574, 15, 85, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[15621, 564, 187, 4, 57, "Text"], Cell[15811, 570, 415, 12, 54, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}], Cell[16229, 584, 118, 1, 34, "Text"], Cell[16350, 587, 454, 13, 54, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[16853, 606, 190, 2, 70, "Subtitle"], Cell[17046, 610, 113, 3, 77, "Section"], Cell[CellGroupData[{ Cell[17184, 617, 42, 0, 30, "Text"], Cell[17229, 619, 174, 5, 54, "Input"], Cell[17406, 626, 215, 4, 85, "Input", CellTags->"mmtag:07:Permutations[]"], Cell[17624, 632, 827, 18, 295, "Input"], Cell[18454, 652, 140, 3, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[18631, 660, 61, 0, 34, "Text"], Cell[18695, 662, 690, 22, 127, "Input"], Cell[19388, 686, 108, 2, 54, "Input"], Cell[19499, 690, 164, 5, 54, "Input"], Cell[19666, 697, 112, 3, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[19815, 705, 96, 2, 34, "Text"], Cell[19914, 709, 164, 5, 54, "Input"], Cell[20081, 716, 66, 1, 54, "Input"] }, Open ]], Cell[20162, 720, 127, 3, 34, "Text"], Cell[20292, 725, 232, 7, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[20561, 737, 169, 2, 70, "Subtitle"], Cell[CellGroupData[{ Cell[20755, 743, 721, 19, 80, "Text", CellTags->{ "mmtag:07:linear_transformations__on_polyhedra", "mmtag:07:Polyhedra__graphical_example_of_linear_transformations", "mmtag:07:permutations"}], Cell[21479, 764, 316, 7, 85, "Input", CellTags->"mmtag:07:Polyhedra_package"], Cell[21798, 773, 401, 6, 80, "Text"], Cell[22202, 781, 245, 5, 54, "Input"] }, Open ]], Cell[22462, 789, 292, 5, 57, "Text"], Cell[22757, 796, 252, 6, 54, "Input"], Cell[CellGroupData[{ Cell[23034, 806, 631, 16, 80, "Text", CellTags->"mmtag:07:Polyhedra__example_of_coloring_faces_manually"], Cell[23668, 824, 3948, 106, 385, "Input"] }, Open ]], Cell[27631, 933, 333, 7, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[28001, 945, 140, 1, 70, "Subtitle"], Cell[28144, 948, 533, 9, 80, "Text"], Cell[28680, 959, 1676, 41, 175, "Input"], Cell[30359, 1002, 760, 19, 85, "Input"], Cell[31122, 1023, 203, 4, 34, "Text"], Cell[31328, 1029, 3047, 85, 380, "Input"], Cell[34378, 1116, 344, 7, 57, "Text"], Cell[34725, 1125, 153, 4, 54, "Input"], Cell[34881, 1131, 544, 16, 115, "Input"], Cell[35428, 1149, 361, 6, 57, "Text"], Cell[35792, 1157, 3847, 85, 205, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[39676, 1247, 208, 4, 122, "Subtitle"], Cell[39887, 1253, 803, 12, 126, "Text"], Cell[40693, 1267, 3209, 95, 347, "Input"], Cell[43905, 1364, 343, 8, 60, "Text"], Cell[44251, 1374, 452, 16, 85, "Input"] }, Open ]], Cell[44718, 1393, 242, 5, 54, "Input"], Cell[44963, 1400, 268, 8, 54, "Input"], Cell[45234, 1410, 238, 5, 54, "Input"], Cell[45475, 1417, 591, 18, 172, "Input"], Cell[46069, 1437, 239, 5, 54, "Input"], Cell[46311, 1444, 247, 6, 115, "Input"], Cell[46561, 1452, 965, 24, 175, "Input"] } ] *) (* End of internal cache information *)