(* 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[ 66550, 2099] NotebookOptionsPosition[ 53111, 1716] NotebookOutlinePosition[ 58598, 1854] CellTagsIndexPosition[ 57483, 1828] WindowTitle->Lecture 07 MIT 3.016 (Fall 2011) \251 W. Craig Carter 2003--2011 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 ]] }, Closed]], 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}}] }, Closed]], 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"] }, Closed]], 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 ]] }, Closed]], Cell[CellGroupData[{ Cell["An example of Homogeneous plus Heterogeneous solutions", "Section"], 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[CellGroupData[{ Cell[BoxData[{ RowBox[{"mat", " ", "=", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "2"}], "}"}], ",", RowBox[{"{", RowBox[{"2", ",", "4"}], "}"}]}], "}"}]}], "\[IndentingNewLine]", RowBox[{"MatrixForm", "[", "mat", "]"}]}], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "2"}], "}"}], ",", RowBox[{"{", RowBox[{"2", ",", "4"}], "}"}]}], "}"}]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "2"}, {"2", "4"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Det", "[", "mat", "]"}]], "Input"], Cell[BoxData["0"], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"mat", ".", RowBox[{"{", RowBox[{"x1", ",", "x2"}], "}"}]}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"x1", "+", RowBox[{"2", " ", "x2"}]}], ",", RowBox[{ RowBox[{"2", " ", "x1"}], "+", RowBox[{"4", " ", "x2"}]}]}], "}"}]], "Output"] }, Open ]], Cell["\<\ Thus any x that satisifies the following is a solution to the homogeneous \ equation\ \>", "Subsection"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"xhom", " ", "=", " ", RowBox[{"{", RowBox[{ RowBox[{"constant", "[", "1", "]"}], ",", " ", RowBox[{ RowBox[{"-", RowBox[{"constant", "[", "1", "]"}]}], "/", "2"}]}], "}"}], " "}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"constant", "[", "1", "]"}], ",", RowBox[{"-", FractionBox[ RowBox[{"constant", "[", "1", "]"}], "2"]}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Simplify", "[", RowBox[{"mat", ".", "xhom"}], "]"}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]], "Output"] }, Open ]], Cell["\<\ However, are there any particular pair x and b which satisify Ax = b when \ Det[A]=0\ \>", "Subsection"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Reduce", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"x1", "+", RowBox[{"2", " ", "x2"}]}], " ", "\[Equal]", " ", "b1"}], ",", " ", RowBox[{ RowBox[{ RowBox[{"2", " ", "x1"}], "+", RowBox[{"4", " ", "x2"}]}], " ", "\[Equal]", " ", "b2"}]}], "}"}], ",", RowBox[{"{", RowBox[{"x1", ",", "x2"}], "}"}]}], "]"}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"b1", "\[Equal]", FractionBox["b2", "2"]}], "&&", RowBox[{"x2", "\[Equal]", RowBox[{ FractionBox["b2", "4"], "-", FractionBox["x1", "2"]}]}]}]], "Output"] }, Open ]], Cell["\<\ The there are special (particular) b for which the equation has solutions:\ \>", "Subsection"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"bpart", " ", "=", " ", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"constant", "[", "2", "]"}], "/", "2"}], ",", " ", RowBox[{"constant", "[", "2", "]"}]}], "}"}]}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ FractionBox[ RowBox[{"constant", "[", "2", "]"}], "2"], ",", RowBox[{"constant", "[", "2", "]"}]}], "}"}]], "Output"] }, Open ]], Cell["\<\ and special x for which there are also solutions to Ax=b\ \>", "Subsection"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"xpart", " ", "=", RowBox[{"{", RowBox[{ RowBox[{"constant", "[", "3", "]"}], " ", ",", " ", RowBox[{ RowBox[{ RowBox[{"constant", "[", "2", "]"}], "/", "4"}], " ", "-", " ", RowBox[{ RowBox[{"constant", "[", "3", "]"}], "/", "2"}]}]}], "}"}]}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"constant", "[", "3", "]"}], ",", RowBox[{ FractionBox[ RowBox[{"constant", "[", "2", "]"}], "4"], "-", FractionBox[ RowBox[{"constant", "[", "3", "]"}], "2"]}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"mat", ".", "xpart"}], "//", "Simplify"}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ FractionBox[ RowBox[{"constant", "[", "2", "]"}], "2"], ",", RowBox[{"constant", "[", "2", "]"}]}], "}"}]], "Output"] }, Open ]], Cell["\<\ Now, we can always add back in the part A xhom that has a \ \[OpenCurlyDoubleQuote]vanishing b\[CloseCurlyDoubleQuote]\ \>", "Subsection"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"mat", ".", RowBox[{"(", RowBox[{"xpart", " ", "+", " ", "xhom"}], ")"}]}], "//", "Simplify"}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ FractionBox[ RowBox[{"constant", "[", "2", "]"}], "2"], ",", RowBox[{"constant", "[", "2", "]"}]}], "}"}]], "Output"] }, Open ]], Cell["\<\ Thus for the case that Det[A]=0: \tThere are special (particular) pairs xpart and bpart which satisify \tA xpart = bpart \tand \tThere are special xhom which satisify \tA xhom = 0 \t \tBecause the equations are linear, both solutions can be superposed. \t \tA (xhom + xpart) = bpart.\ \>", "Subsection"], 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 ]] }, 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}}] }, Closed]], 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}}] }, Closed]], 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"], 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"] }, Closed]] }, ScreenStyleEnvironment->"Presentation", PrintingStyleEnvironment->"ColorPrintout", CellGrouping->Manual, WindowSize->{1379, 816}, WindowMargins->{{Automatic, -1971}, {Automatic, 90}}, WindowTitle->"Lecture 07 MIT 3.016 (Fall 2011) \[Copyright] W. Craig Carter \ 2003--2011", 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->"8.0 for Mac OS X x86 (32-bit, 64-bit Kernel) (November 6, \ 2010)", StyleDefinitions->FrontEnd`FileName[{"Creative"}, "NaturalColor.nb", CharacterEncoding -> "UTF-8"] ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{ "mmtag:07:Chop[]__and_numerical_precision"->{ Cell[15811, 570, 415, 12, 58, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}], Cell[16350, 587, 454, 13, 58, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}]}, "mmtag:07:Det[]__and_numerical_precision"->{ Cell[15811, 570, 415, 12, 58, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}], Cell[16350, 587, 454, 13, 58, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}]}, "mmtag:07:Det[]__and_properties_of_determinants"->{ Cell[12894, 477, 390, 10, 58, "Input", CellTags->"mmtag:07:Det[]__and_properties_of_determinants"]}, "mmtag:07:Det[]__and_uniqueness"->{ Cell[2150, 78, 185, 4, 58, "Input", CellTags->{ "mmtag:07:systems_of_linear_equations__existence_and_determinants", "mmtag:07:Det[]__and_uniqueness"}]}, "mmtag:07:Inverse[]"->{ Cell[5858, 227, 162, 5, 58, "Input", CellTags->"mmtag:07:Inverse[]"]}, "mmtag:07:LinearSolve[]_solutions_without_direct_computation_of_matrix_\ inverse"->{ Cell[5125, 199, 193, 5, 58, "Input", CellTags-> "mmtag:07:LinearSolve[]_solutions_without_direct_computation_of_matrix_\ inverse"]}, "mmtag:07:linear_transformations__on_polyhedra"->{ Cell[26336, 981, 721, 19, 131, "Text", CellTags->{ "mmtag:07:linear_transformations__on_polyhedra", "mmtag:07:Polyhedra__graphical_example_of_linear_transformations", "mmtag:07:permutations"}]}, "mmtag:07:MatrixRank[]"->{ Cell[9062, 324, 183, 3, 84, "Input", CellTags->"mmtag:07:MatrixRank[]"]}, "mmtag:07:NullSpace[]"->{ Cell[9248, 329, 180, 3, 84, "Input", CellTags->"mmtag:07:NullSpace[]"]}, "mmtag:07:permutations"->{ Cell[26336, 981, 721, 19, 131, "Text", CellTags->{ "mmtag:07:linear_transformations__on_polyhedra", "mmtag:07:Polyhedra__graphical_example_of_linear_transformations", "mmtag:07:permutations"}]}, "mmtag:07:Permutations[]"->{ Cell[22975, 863, 215, 4, 84, "Input", CellTags->"mmtag:07:Permutations[]"]}, "mmtag:07:Polyhedra_package"->{ Cell[27060, 1002, 316, 7, 84, "Input", CellTags->"mmtag:07:Polyhedra_package"]}, "mmtag:07:Polyhedra__example_of_coloring_faces_manually"->{ Cell[28615, 1044, 631, 16, 102, "Text", CellTags->"mmtag:07:Polyhedra__example_of_coloring_faces_manually"]}, "mmtag:07:Polyhedra__graphical_example_of_linear_transformations"->{ Cell[26336, 981, 721, 19, 131, "Text", CellTags->{ "mmtag:07:linear_transformations__on_polyhedra", "mmtag:07:Polyhedra__graphical_example_of_linear_transformations", "mmtag:07:permutations"}]}, "mmtag:07:systems_of_linear_equations__creating_from_matrices_and_vectors"->{\ Cell[4170, 159, 244, 7, 55, "Text", CellTags-> "mmtag:07:systems_of_linear_equations__creating_from_matrices_and_\ vectors"]}, "mmtag:07:systems_of_linear_equations__existence_and_determinants"->{ Cell[2150, 78, 185, 4, 58, "Input", CellTags->{ "mmtag:07:systems_of_linear_equations__existence_and_determinants", "mmtag:07:Det[]__and_uniqueness"}]}, "mmtag:07:systems_of_linear_equations__existence_and_uniqueness"->{ Cell[625, 21, 143, 1, 183, "Title", CellTags->"mmtag:07:systems_of_linear_equations__existence_and_uniqueness"]} } *) (*CellTagsIndex CellTagsIndex->{ {"mmtag:07:Chop[]__and_numerical_precision", 54038, 1743}, {"mmtag:07:Det[]__and_numerical_precision", 54395, 1752}, {"mmtag:07:Det[]__and_properties_of_determinants", 54759, 1761}, {"mmtag:07:Det[]__and_uniqueness", 54902, 1764}, {"mmtag:07:Inverse[]", 55095, 1769}, {"mmtag:07:LinearSolve[]_solutions_without_direct_computation_of_matrix_\ inverse", 55257, 1773}, {"mmtag:07:linear_transformations__on_polyhedra", 55451, 1778}, {"mmtag:07:MatrixRank[]", 55695, 1784}, {"mmtag:07:NullSpace[]", 55801, 1787}, {"mmtag:07:permutations", 55907, 1790}, {"mmtag:07:Permutations[]", 56153, 1796}, {"mmtag:07:Polyhedra_package", 56268, 1799}, {"mmtag:07:Polyhedra__example_of_coloring_faces_manually", 56415, 1802}, {"mmtag:07:Polyhedra__graphical_example_of_linear_transformations", 56600, \ 1805}, {"mmtag:07:systems_of_linear_equations__creating_from_matrices_and_vectors", \ 56895, 1811}, {"mmtag:07:systems_of_linear_equations__existence_and_determinants", 57104, \ 1817}, {"mmtag:07:systems_of_linear_equations__existence_and_uniqueness", 57341, \ 1822} } *) (*NotebookFileOutline Notebook[{ Cell[625, 21, 143, 1, 183, "Title", CellTags->"mmtag:07:systems_of_linear_equations__existence_and_uniqueness"], Cell[CellGroupData[{ Cell[793, 26, 48, 0, 39, "Subtitle"], Cell[844, 28, 259, 8, 189, "Text"], Cell[CellGroupData[{ Cell[1128, 40, 138, 5, 44, "Text"], Cell[1269, 47, 667, 18, 184, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[1973, 70, 174, 6, 44, "Text"], Cell[2150, 78, 185, 4, 58, "Input", CellTags->{ "mmtag:07:systems_of_linear_equations__existence_and_determinants", "mmtag:07:Det[]__and_uniqueness"}] }, Open ]], Cell[CellGroupData[{ Cell[2372, 87, 404, 10, 49, "Text"], Cell[2779, 99, 143, 4, 58, "Input"], Cell[2925, 105, 148, 4, 58, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[3110, 114, 64, 0, 44, "Text"], Cell[3177, 116, 133, 4, 58, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[3347, 125, 68, 0, 44, "Text"], Cell[3418, 127, 176, 4, 84, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[3631, 136, 190, 6, 44, "Text"], Cell[3824, 144, 247, 7, 58, "Input"], Cell[4074, 153, 59, 1, 58, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[4170, 159, 244, 7, 55, "Text", CellTags-> "mmtag:07:systems_of_linear_equations__creating_from_matrices_and_vectors"],\ Cell[4417, 168, 350, 10, 58, "Input"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[4816, 184, 51, 0, 39, "Subtitle"], Cell[4870, 186, 195, 8, 44, "Text"], Cell[5068, 196, 54, 1, 58, "Input"], Cell[5125, 199, 193, 5, 58, "Input", CellTags-> "mmtag:07:LinearSolve[]_solutions_without_direct_computation_of_matrix_\ inverse"], Cell[5321, 206, 534, 19, 52, "Text"], Cell[5858, 227, 162, 5, 58, "Input", CellTags->"mmtag:07:Inverse[]"], Cell[6023, 234, 471, 10, 110, "Text"], Cell[6497, 246, 196, 4, 58, "Input"], Cell[6696, 252, 142, 1, 44, "Text"], Cell[6841, 255, 287, 5, 84, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[7165, 265, 56, 0, 39, "Subtitle"], Cell[7224, 267, 45, 0, 123, "Section"], Cell[7272, 269, 90, 2, 38, "Text"], Cell[7365, 273, 870, 22, 159, "Input"], Cell[8238, 297, 67, 1, 58, "Input"], Cell[8308, 300, 100, 2, 58, "Input"], Cell[8411, 304, 648, 18, 131, "Text"], Cell[9062, 324, 183, 3, 84, "Input", CellTags->"mmtag:07:MatrixRank[]"], Cell[9248, 329, 180, 3, 84, "Input", CellTags->"mmtag:07:NullSpace[]"], Cell[CellGroupData[{ Cell[9453, 336, 136, 5, 44, "Text"], Cell[9592, 343, 96, 2, 58, "Input"], Cell[9691, 347, 255, 7, 58, "Input"], Cell[9949, 356, 205, 6, 58, "Input"], Cell[10157, 364, 284, 9, 58, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[10478, 378, 179, 5, 44, "Text"], Cell[10660, 385, 534, 16, 58, "Input"] }, Open ]], Cell[11209, 404, 234, 6, 73, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[11480, 415, 137, 1, 39, "Subtitle"], Cell[11620, 418, 59, 1, 58, "Input"], Cell[CellGroupData[{ Cell[11704, 423, 123, 3, 44, "Text"], Cell[11830, 428, 363, 12, 58, "Input"], Cell[12196, 442, 55, 1, 58, "Input"], Cell[12254, 445, 55, 1, 58, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[12346, 451, 134, 5, 44, "Text"], Cell[12483, 458, 203, 6, 58, "Input"], Cell[12689, 466, 62, 1, 58, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[12788, 472, 103, 3, 44, "Text"], Cell[12894, 477, 390, 10, 58, "Input", CellTags->"mmtag:07:Det[]__and_properties_of_determinants"], Cell[13287, 489, 329, 9, 58, "Input"], Cell[13619, 500, 73, 0, 44, "Text"], Cell[13695, 502, 416, 11, 84, "Input"], Cell[14114, 515, 74, 0, 44, "Text"], Cell[14191, 517, 381, 11, 58, "Input"], Cell[14575, 530, 74, 0, 44, "Text"], Cell[14652, 532, 355, 10, 58, "Input"], Cell[15010, 544, 574, 15, 84, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[15621, 564, 187, 4, 73, "Text"], Cell[15811, 570, 415, 12, 58, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}], Cell[16229, 584, 118, 1, 44, "Text"], Cell[16350, 587, 454, 13, 58, "Input", CellTags->{ "mmtag:07:Det[]__and_numerical_precision", "mmtag:07:Chop[]__and_numerical_precision"}] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[16853, 606, 73, 0, 76, "Section"], Cell[CellGroupData[{ Cell[16951, 610, 190, 2, 39, "Subtitle"], Cell[CellGroupData[{ Cell[17166, 616, 279, 8, 84, "Input"], Cell[17448, 626, 171, 6, 58, "Output"], Cell[17622, 634, 585, 17, 83, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[18244, 656, 58, 1, 58, "Input"], Cell[18305, 659, 28, 0, 58, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[18370, 664, 100, 3, 58, "Input"], Cell[18473, 669, 200, 7, 58, "Output"] }, Open ]], Cell[18688, 679, 114, 3, 59, "Subsection"], Cell[CellGroupData[{ Cell[18827, 686, 244, 8, 52, "Input"], Cell[19074, 696, 189, 6, 81, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[19300, 707, 89, 2, 58, "Input"], Cell[19392, 711, 73, 2, 58, "Output"] }, Open ]], Cell[19480, 716, 114, 3, 59, "Subsection"], Cell[CellGroupData[{ Cell[19619, 723, 417, 13, 52, "Input"], Cell[20039, 738, 208, 7, 81, "Output"] }, Open ]], Cell[20262, 748, 104, 2, 58, "Subsection"], Cell[CellGroupData[{ Cell[20391, 754, 216, 6, 52, "Input"], Cell[20610, 762, 168, 5, 81, "Output"] }, Open ]], Cell[20793, 770, 86, 2, 58, "Subsection"], Cell[CellGroupData[{ Cell[20904, 776, 317, 9, 52, "Input"], Cell[21224, 787, 255, 8, 81, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[21516, 800, 86, 2, 58, "Input"], Cell[21605, 804, 168, 5, 81, "Output"] }, Open ]], Cell[21788, 812, 148, 3, 59, "Subsection"], Cell[CellGroupData[{ Cell[21961, 819, 151, 5, 52, "Input"], Cell[22115, 826, 168, 5, 81, "Output"] }, Open ]], Cell[22298, 834, 314, 11, 401, "Subsection"], Cell[22615, 847, 113, 3, 122, "Section"], Cell[CellGroupData[{ Cell[22753, 854, 42, 0, 38, "Text"], Cell[22798, 856, 174, 5, 58, "Input"], Cell[22975, 863, 215, 4, 84, "Input", CellTags->"mmtag:07:Permutations[]"], Cell[23193, 869, 827, 18, 259, "Input"], Cell[24023, 889, 140, 3, 58, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[24200, 897, 61, 0, 44, "Text"], Cell[24264, 899, 690, 22, 119, "Input"], Cell[24957, 923, 108, 2, 58, "Input"], Cell[25068, 927, 164, 5, 58, "Input"], Cell[25235, 934, 112, 3, 58, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[25384, 942, 96, 2, 44, "Text"], Cell[25483, 946, 164, 5, 58, "Input"], Cell[25650, 953, 66, 1, 58, "Input"] }, Open ]], Cell[25731, 957, 127, 3, 44, "Text"], Cell[25861, 962, 232, 7, 58, "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[26142, 975, 169, 2, 39, "Subtitle"], Cell[CellGroupData[{ Cell[26336, 981, 721, 19, 131, "Text", CellTags->{ "mmtag:07:linear_transformations__on_polyhedra", "mmtag:07:Polyhedra__graphical_example_of_linear_transformations", "mmtag:07:permutations"}], Cell[27060, 1002, 316, 7, 84, "Input", CellTags->"mmtag:07:Polyhedra_package"], Cell[27379, 1011, 401, 6, 102, "Text"], Cell[27783, 1019, 245, 5, 58, "Input"] }, Open ]], Cell[28043, 1027, 292, 5, 73, "Text"], Cell[28338, 1034, 252, 6, 58, "Input"], Cell[CellGroupData[{ Cell[28615, 1044, 631, 16, 102, "Text", CellTags->"mmtag:07:Polyhedra__example_of_coloring_faces_manually"], Cell[29249, 1062, 3948, 106, 209, "Input"] }, Open ]], Cell[33212, 1171, 333, 7, 58, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[33582, 1183, 140, 1, 39, "Subtitle"], Cell[33725, 1186, 533, 9, 102, "Text"], Cell[34261, 1197, 1676, 41, 134, "Input"], Cell[35940, 1240, 760, 19, 58, "Input"], Cell[36703, 1261, 203, 4, 44, "Text"], Cell[36909, 1267, 3047, 85, 242, "Input"], Cell[39959, 1354, 344, 7, 73, "Text"], Cell[40306, 1363, 153, 4, 58, "Input"], Cell[40462, 1369, 544, 16, 107, "Input"], Cell[41009, 1387, 361, 6, 102, "Text"], Cell[41373, 1395, 3847, 85, 184, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[45257, 1485, 208, 4, 39, "Subtitle"], Cell[45468, 1491, 803, 12, 189, "Text"], Cell[46274, 1505, 3209, 95, 302, "Input"], Cell[49486, 1602, 343, 8, 77, "Text"], Cell[49832, 1612, 452, 16, 84, "Input"], Cell[50287, 1630, 242, 5, 58, "Input"], Cell[50532, 1637, 268, 8, 58, "Input"], Cell[50803, 1647, 238, 5, 58, "Input"], Cell[51044, 1654, 591, 18, 107, "Input"], Cell[51638, 1674, 239, 5, 58, "Input"], Cell[51880, 1681, 247, 6, 109, "Input"], Cell[52130, 1689, 965, 24, 134, "Input"] }, Closed]] } ] *) (* End of internal cache information *)