(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 4.0, MathReader 4.0, or any compatible application. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 62202, 1881]*) (*NotebookOutlinePosition[ 63098, 1911]*) (* CellTagsIndexPosition[ 63054, 1907]*) (*WindowFrame->Normal*) Notebook[{ Cell["\<\ A Useful Trick for Generating Symbolic Matrices\ \>", "Title", TextAlignment->Center], Cell[TextData[StyleBox["Visualizing matrix operations on arbitrary symbolic \ matrices with \"standard\" subscripts on the elements is a helpful learning \ and discovery tool.", FontSize->18]], "Subtitle", FontSlant->"Italic"], Cell["\<\ by Danny W. Turner and Robert Piziak \ \>", "Text", TextAlignment->Left, FontWeight->"Bold"], Cell[TextData[{ "With ", StyleBox["Mathematica", FontSlant->"Italic"], " 3.0 manipulation and visualization of matrices have never been easier. \ Here we provide a simple way to generate arbitrary size matrices containing \ subscripted symbolic entries. The output form will look like that of a \ standard linear algebra text. The reader should consult Wagner[1997] for \ related material.\n\nThe ability to produce and manipulate the usual textbook \ form of a matrix will make it easy to \"track\" the actions of various matrix \ operations and will be especially useful for those who are first learning the \ basics of matrix theory. A number of illustrations are provided." }], "Text"], Cell[TextData[StyleBox["THE MATRIX GENERATION COMMAND", FontSize->14, FontWeight->"Bold"]], "Subtitle"], Cell[TextData[{ "Here is the simple procedure to create our command ", StyleBox["genmat", FontWeight->"Bold"], "." }], "Text"], Cell[BoxData[{ RowBox[{"Clear", "[", RowBox[{ "genmat", ",", "sub", ",", "m", ",", "n", ",", "i", ",", "j", ",", "b"}], "]"}], RowBox[{ RowBox[{"sub", "[", RowBox[{"i_", ",", "j_", ",", "b_"}], "]"}], " ", ":=", RowBox[{"HoldForm", "[", RowBox[{"Subscript", "[", RowBox[{"b", ",", RowBox[{"i", "*", "j"}]}], "]"}], "]"}]}], RowBox[{ RowBox[{"genmat", "[", RowBox[{"m_", ",", "n_", ",", "b_"}], "]"}], " ", ":=", " ", RowBox[{"Table", "[", RowBox[{ RowBox[{"sub", "[", RowBox[{"i", ",", "j", ",", "b"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "m"}], "}"}], ",", RowBox[{"{", RowBox[{"j", ",", "n"}], "}"}]}], "]"}]}]}], "Input"], Cell["\<\ We can now produce a general symbolic matrix with the \"usual\" subscripted \ entries.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"genmat", "[", RowBox[{"2", ",", "3", ",", "s"}], "]"}], "//", "MatrixForm"}]], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["s", RowBox[{"1", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["s", RowBox[{"1", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["s", RowBox[{"1", " ", "3"}]], HoldForm]}, { TagBox[ SubscriptBox["s", RowBox[{"2", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["s", RowBox[{"2", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["s", RowBox[{"2", " ", "3"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["Let's create a column vector and a row vector.", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{"Clear", "[", RowBox[{"mata", ",", "matb"}], "]"}], RowBox[{ RowBox[{"mata", " ", "=", RowBox[{"genmat", "[", RowBox[{"5", ",", "1", ",", "a"}], "]"}]}], ";", RowBox[{"matb", " ", "=", " ", RowBox[{"genmat", "[", RowBox[{"1", ",", "5", ",", "b"}], "]"}]}], ";", "\n", RowBox[{"mata", "//", "MatrixForm"}]}], RowBox[{"matb", "//", "MatrixForm"}]}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"4", " ", "1"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"5", " ", "1"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"1", " ", "4"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"1", " ", "5"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[StyleBox["MATRIX OPERATION ILLUSTRATIONS", FontSize->14, FontWeight->"Bold"]], "Subtitle"], Cell["\<\ Now we can illustrate the multiplication of these two vectors and see that \ the \"pattern\" of the general result of such an operation is clear.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"mata", ".", "matb"}], "//", "MatrixForm"}]], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "4"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "5"}]], HoldForm]}]}, { RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "4"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "5"}]], HoldForm]}]}, { RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "4"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "5"}]], HoldForm]}]}, { RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"4", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"4", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"4", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"4", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "4"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"4", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "5"}]], HoldForm]}]}, { RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"5", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"5", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"5", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"5", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "4"}]], HoldForm]}], RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"5", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "5"}]], HoldForm]}]} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ It is an easy matter to illustrate the pattern for matrix multiplication. \ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{ RowBox[{"Clear", "[", RowBox[{"A", ",", "B"}], "]"}], ";", "\n", RowBox[{"A", " ", "=", RowBox[{"genmat", "[", RowBox[{"3", ",", "3", ",", "a"}], "]"}]}], ";", "\n", RowBox[{"B", " ", "=", " ", RowBox[{"genmat", "[", RowBox[{"3", ",", "2", ",", "b"}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"(", RowBox[{"A", "//", "MatrixForm"}], ")"}], ".", RowBox[{"(", RowBox[{"B", "//", "MatrixForm"}], ")"}]}]}], RowBox[{ RowBox[{"A", ".", "B"}], "//", "MatrixForm"}], RowBox[{"%", "[", RowBox[{"[", RowBox[{"1", ",", "2"}], "]"}], "]"}]}], "Input"], Cell[BoxData[ RowBox[{ TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"1", " ", "3"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"2", " ", "3"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"3", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"3", " ", "3"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)], ".", TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm]}, { TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm]}, { TagBox[ SubscriptBox["b", RowBox[{"3", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"3", " ", "2"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)]}]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"3", " ", "1"}]], HoldForm]}]}], RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"3", " ", "2"}]], HoldForm]}]}]}, { RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"3", " ", "1"}]], HoldForm]}]}], RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"3", " ", "2"}]], HoldForm]}]}]}, { RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"3", " ", "1"}]], HoldForm]}]}], RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"3", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"3", " ", "2"}]], HoldForm]}]}]} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell[BoxData[ RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"3", " ", "2"}]], HoldForm]}]}]], "Output"] }, Open ]], Cell[TextData[{ "The following definition will simplify using the ", StyleBox["//MatrixForm", FontWeight->"Bold"], " operation in the remainder of our examples. " }], "Text"], Cell[BoxData[{ RowBox[{"Clear", "[", "mf", "]"}], RowBox[{ RowBox[{"mf", "=", "MatrixForm"}], ";"}]}], "Input"], Cell["\<\ We all know what happens to a given matrix when it is multiplied (on the left \ for example) by an identity matrix. But what happens if we permute the rows \ of our identity matrix and then multiply? Let's investigate.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{ RowBox[{"i3", " ", "=", " ", RowBox[{"IdentityMatrix", "[", "3", "]"}]}], ";", "\n", RowBox[{"permi3", "=", RowBox[{"{", RowBox[{ RowBox[{ "i3", "\[LeftDoubleBracket]", "2", "\[RightDoubleBracket]"}], ",", RowBox[{ "i3", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}], ",", RowBox[{ "i3", "\[LeftDoubleBracket]", "3", "\[RightDoubleBracket]"}]}], "}"}]}], ";", "\n", RowBox[{ RowBox[{"mf", "[", "permi3", "]"}], ".", RowBox[{"mf", "[", "A", "]"}]}]}], RowBox[{"mf", "[", RowBox[{"permi3", ".", "A"}], "]"}]}], "Input"], Cell[BoxData[ RowBox[{ TagBox[ RowBox[{"(", GridBox[{ {"0", "1", "0"}, {"1", "0", "0"}, {"0", "0", "1"} }], ")"}], (MatrixForm[ #]&)], ".", TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"1", " ", "3"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"2", " ", "3"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"3", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"3", " ", "3"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)]}]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"2", " ", "3"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"1", " ", "3"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"3", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"3", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"3", " ", "3"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[{ "Well, it looks like by interchanging the first two rows of a 3\[Cross]3 \ identity matrix and multiplying on the left of ", StyleBox["A", FontWeight->"Bold"], ", we've interchanged the first two rows of ", StyleBox["A", FontWeight->"Bold"], "! Have fun discovering other general results about elementary matrix \ operations." }], "Text"], Cell[TextData[{ "Here is a more complicated illustration involving the ", StyleBox["pseudoinverse(Moore\[Dash]Penrose inverse)", FontSlant->"Italic"], " of a \nrectangular matrix. First we look at a familiar problem--the \ inverse of a 2\[Cross]2 matrix. The use\nof the function ", StyleBox["ComplexExpand ", FontWeight->"Bold"], "carries out an expansion assuming that all variables are real.\n\nOf \ course symbolically we see that ", StyleBox["Apseudo", FontWeight->"Bold"], " is the same as the usual inverse ", StyleBox["A", FontWeight->"Bold"], Cell[BoxData[ FormBox[ SuperscriptBox["", RowBox[{"-", "1"}]], TraditionalForm]]], " and not surprisingly we observe that ", StyleBox["AA", FontWeight->"Bold"], Cell[BoxData[ FormBox[ SuperscriptBox["", RowBox[{"-", "1"}]], TraditionalForm]]], " = ", Cell[BoxData[ FormBox[ SubscriptBox[ StyleBox["I", FontWeight->"Bold", FontSlant->"Plain"], RowBox[{"2", "\[Cross]", "2"}]], TraditionalForm]]], " . " }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{"Clear", "[", RowBox[{"A", ",", "Apseudo", ",", "a"}], "]"}], RowBox[{ RowBox[{"A", "=", RowBox[{"genmat", "[", RowBox[{"2", ",", "2", ",", "a"}], "]"}]}], ";", "\n", RowBox[{"mf", "[", "A", "]"}]}], RowBox[{ RowBox[{"Apseudo", "=", RowBox[{ RowBox[{ RowBox[{"PseudoInverse", "[", "A", "]"}], "//", "Simplify"}], "//", "ComplexExpand"}]}], ";", "\n", RowBox[{"mf", "[", "Apseudo", "]"}]}], RowBox[{ RowBox[{"mf", "[", "A", "]"}], ".", RowBox[{"mf", "[", "Apseudo", "]"}]}], RowBox[{"mf", "[", RowBox[{ RowBox[{"A", ".", "Apseudo"}], "//", "Simplify"}], "]"}]}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { FractionBox[ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm], RowBox[{ RowBox[{ RowBox[{"-", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm]}], " ", TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm]}]}]], FractionBox[ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm], RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm]}], "-", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm]}]}]]}, { FractionBox[ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm]}], "-", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm]}]}]], FractionBox[ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], RowBox[{ RowBox[{ RowBox[{"-", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm]}], " ", TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm]}]}]]} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell[BoxData[ RowBox[{ TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm]}, { TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)], ".", TagBox[ RowBox[{"(", GridBox[{ { FractionBox[ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm], RowBox[{ RowBox[{ RowBox[{"-", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm]}], " ", TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm]}]}]], FractionBox[ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm], RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm]}], "-", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm]}]}]]}, { FractionBox[ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], RowBox[{ RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm]}], "-", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm]}]}]], FractionBox[ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], RowBox[{ RowBox[{ RowBox[{"-", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "1"}]], HoldForm]}], " ", TagBox[ SubscriptBox["a", RowBox[{"1", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["a", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["a", RowBox[{"2", " ", "2"}]], HoldForm]}]}]]} }], ")"}], (MatrixForm[ #]&)]}]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {"1", "0"}, {"0", "1"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[{ " Now, let's look at the \"inverse\" of a rectangular matrix. We define \ the general 2\[Cross]3 matrix ", StyleBox["B", FontWeight->"Bold"], ", find\n", StyleBox["Bpseudo", FontWeight->"Bold"], ", the Moore", StyleBox["\[Dash]", FontSlant->"Italic"], "Penrose inverse, and \"clean\" it up a bit. The output is suppressed due \ to the size of the full matrix. The dimensions of ", StyleBox["Bpseudo", FontWeight->"Bold"], " are output to check for correctness." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{"Clear", "[", RowBox[{"B", ",", "Bpseudo", ",", "b"}], "]"}], RowBox[{ RowBox[{"B", "=", RowBox[{"genmat", "[", RowBox[{"2", ",", "3", ",", "b"}], "]"}]}], ";", "\n", RowBox[{"mf", "[", "B", "]"}]}], RowBox[{ RowBox[{"Bpseudo", "=", RowBox[{ RowBox[{ RowBox[{"PseudoInverse", "[", "B", "]"}], "//", "Simplify"}], "//", "ComplexExpand"}]}], ";", "\n", RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"Dimensions", "[", "Bpseudo", "]"}]}], "]"}]}]}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm]}, { TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Bpseudo has dimensions: \"\>", "\[InvisibleSpace]", RowBox[{"{", RowBox[{"3", ",", "2"}], "}"}]}], SequenceForm[ "Bpseudo has dimensions: ", {3, 2}], Editable->False]], "Print"] }, Open ]], Cell[TextData[{ " In the next cell we look at one(simplified) entry from ", StyleBox["Bpseudo", FontWeight->"Bold"], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"mf", "[", RowBox[{"{", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Bpseudo", "[", RowBox[{"[", RowBox[{"1", ",", "2"}], "]"}], "]"}], "//", "Simplify"}], "//", "Together"}], "}"}], "}"}], "]"}]], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { FractionBox[ RowBox[{ RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], " ", SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], "2"]}], "-", RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], " ", SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm], "2"]}], "-", RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm]}]}], RowBox[{ RowBox[{ SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], "2"], " ", SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], "2"]}], "-", RowBox[{"2", " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm]}], "+", RowBox[{ SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], "2"], " ", SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm], "2"]}], "+", RowBox[{ SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], "2"], " ", SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm], "2"]}], "+", RowBox[{ SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm], "2"], " ", SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm], "2"]}], "-", RowBox[{"2", " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm]}], "-", RowBox[{"2", " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm]}], "+", RowBox[{ SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], "2"], " ", SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm], "2"]}], "+", RowBox[{ SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], "2"], " ", SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm], "2"]}]}]]} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[{ " Let's check the conditions that guarantee we have indeed found the \ correct pseudoinverse of ", StyleBox["B", FontWeight->"Bold"], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{"mf", "[", RowBox[{ RowBox[{"B", ".", "Bpseudo", ".", "B"}], "//", "Simplify"}], "]"}], RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"Bpseudo", ".", "B", ".", "Bpseudo"}], "==", "Bpseudo"}], ")"}], "//", "Simplify"}], "//", "Together"}], RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"B", ".", "Bpseudo"}], "]"}], "==", RowBox[{"B", ".", "Bpseudo"}]}], ")"}], "//", "Simplify"}], "//", "Together"}], RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"Bpseudo", ".", "B"}], "]"}], "==", RowBox[{"Bpseudo", ".", "B"}]}], ")"}], "//", "Simplify"}], "//", "Together"}]}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm]}, { TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm], TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm]} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell[BoxData["True"], "Output"], Cell[BoxData["True"], "Output"], Cell[BoxData["True"], "Output"] }, Open ]], Cell[TextData[{ "All defining conditions are seen to hold and thus we have obtained the \ Moore", StyleBox["\[Dash]", FontSlant->"Italic"], "Penrose generalized inverse of ", StyleBox["B", FontWeight->"Bold"], ". \n\nIt is also very interesting to look at the following matrices. Due \ to the size of the expressions, only the entry in row 1 and column 2 is \ viewed for the matrix ", StyleBox["Bpseudo.B", FontWeight->"Bold"], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{"mf", "[", RowBox[{ RowBox[{"(", RowBox[{"B", ".", "Bpseudo"}], ")"}], "//", "Simplify"}], "]"}], RowBox[{"mf", "[", RowBox[{"{", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"Bpseudo", ".", "B"}], ")"}], "[", RowBox[{"[", RowBox[{"1", ",", "2"}], "]"}], "]"}], "//", "Simplify"}], "}"}], "}"}], "]"}]}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {"1", "0"}, {"0", "1"} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { FractionBox[ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm]}], "-", RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm]}]}], ")"}], " ", RowBox[{"(", RowBox[{ RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm]}], "-", RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm]}]}], ")"}]}], RowBox[{ RowBox[{ SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], "2"], " ", RowBox[{"(", RowBox[{ SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], "2"], "+", SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm], "2"]}], ")"}]}], "+", SuperscriptBox[ RowBox[{"(", RowBox[{ RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm]}], "-", RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm]}]}], ")"}], "2"], "-", RowBox[{"2", " ", TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "1"}]], HoldForm], " ", RowBox[{"(", RowBox[{ RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "2"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm]}], "+", RowBox[{ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "3"}]], HoldForm], " ", TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm]}]}], ")"}]}], "+", RowBox[{ SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"1", " ", "1"}]], HoldForm], "2"], " ", RowBox[{"(", RowBox[{ SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "2"}]], HoldForm], "2"], "+", SuperscriptBox[ TagBox[ SubscriptBox["b", RowBox[{"2", " ", "3"}]], HoldForm], "2"]}], ")"}]}]}]]} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[ "An obvious theoretical question is generated by looking at the above \ results. Is the appearance of the 2\[Cross]2 identity matrix a \"fluke\" or \ is there a deeper result waiting to be discovered? (There is in fact a \ deeper result and the interested reader should consult an advanced matrix \ theory text.)"], "Text"], Cell["\<\ In conclusion, we hope these examples will inspire readers to make use of our \ tips/tricks to help elucidate some of the many aspects of linear algebra and \ matrix theory. \ \>", "Text"], Cell[TextData[{ StyleBox["REFERENCES", FontWeight->"Bold"], StyleBox["\n\n", FontSize->14, FontWeight->"Bold"], "Wagner, David B. 1997. Functional iteration. ", StyleBox["The Mathematica Journal ", FontSlant->"Italic"], "7 (1) 42\[Dash]53." }], "Text", CellFrame->{{0, 0}, {0, 0.5}}], Cell[TextData[{ StyleBox["ABOUT THE AUTHORS", FontWeight->"Bold"], StyleBox["\n\n", FontSize->14, FontWeight->"Bold"], "Danny W. Turner received a Ph.D. from Clemson University in 1973 and is \ currently Professor of Mathematics at Winthrop University. He \ enthusiastically uses ", StyleBox["Mathematica", FontSlant->"Italic"], " in both his teaching and research.\n\nDanny W. Turner\nDepartment of \ Mathematics\nWinthrop University\nRock Hill, SC 29733\nturnerd@winthrop.edu\n\ \nRobert Piziak received his Ph.D. from the University of Massachusetts in \ 1969 and is currently a Professor in the mathematics department at Baylor \ University, where he has been since 1981. He has extensive experience with ", StyleBox["Mathematica", FontSlant->"Italic"], " and has developed a large collection of classroom materials to guide his \ students through many aspects of the efficient use of this powerful software.\ \n\nRobert Piziak\nDepartment of Mathematics\nBaylor University\nP.O. Box \ 97328\nWaco, TX 76798-7328\nrobert_piziak@baylor.edu" }], "Text"], Cell[CellGroupData[{ Cell["ELECTRONIC SUBSCRIPTIONS", "Subsection"], Cell[TextData[{ "Included in the distribution for each electronic subscription is the file \ ", StyleBox["MatrixNotation.nb", "Input", FontWeight->"Plain"], " containing ", StyleBox["Mathematica", FontSlant->"Italic"], " code for the material described in this article." }], "Text"] }, Open ]] }, FrontEndVersion->"4.0 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 695}}, CellGrouping->Manual, WindowSize->{872, 632}, WindowMargins->{{2, Automatic}, {Automatic, 5}}, PrintingCopies->1, PrintingPageRange->{Automatic, Automatic}, PrintingOptions->{"PrintingMargins"->{{54, 54}, {72, 72}}, "PrintCellBrackets"->True, "PrintRegistrationMarks"->False, "PrintMultipleHorizontalPages"->False} ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[1717, 49, 98, 4, 150, "Title"], Cell[1818, 55, 230, 4, 83, "Subtitle"], Cell[2051, 61, 106, 5, 52, "Text"], Cell[2160, 68, 703, 12, 109, "Text"], Cell[2866, 82, 107, 2, 53, "Subtitle"], Cell[2976, 86, 136, 5, 33, "Text"], Cell[3115, 93, 824, 22, 70, "Input"], Cell[3942, 117, 110, 3, 33, "Text"], Cell[CellGroupData[{ Cell[4077, 124, 141, 4, 30, "Input"], Cell[4221, 130, 915, 30, 41, "Output"] }, Open ]], Cell[5151, 163, 62, 0, 33, "Text"], Cell[CellGroupData[{ Cell[5238, 167, 460, 11, 90, "Input"], Cell[5701, 180, 828, 29, 89, "Output"], Cell[6532, 211, 772, 25, 29, "Output"] }, Open ]], Cell[7319, 239, 108, 2, 53, "Subtitle"], Cell[7430, 243, 170, 4, 52, "Text"], Cell[CellGroupData[{ Cell[7625, 251, 95, 2, 30, "Input"], Cell[7723, 255, 7783, 234, 89, "Output"] }, Open ]], Cell[15521, 492, 99, 2, 33, "Text"], Cell[CellGroupData[{ Cell[15645, 498, 711, 19, 130, "Input"], Cell[16359, 519, 2390, 75, 57, "Output"], Cell[18752, 596, 6161, 175, 57, "Output"], Cell[24916, 773, 744, 28, 29, "Output"] }, Open ]], Cell[25675, 804, 184, 5, 33, "Text"], Cell[25862, 811, 126, 3, 50, "Input"], Cell[25991, 816, 244, 4, 52, "Text"], Cell[CellGroupData[{ Cell[26260, 824, 743, 20, 90, "Input"], Cell[27006, 846, 1613, 51, 57, "Output"], Cell[28622, 899, 1316, 43, 57, "Output"] }, Open ]], Cell[29953, 945, 373, 10, 52, "Text"], Cell[30329, 957, 1127, 35, 109, "Text"], Cell[CellGroupData[{ Cell[31481, 996, 740, 20, 150, "Input"], Cell[32224, 1018, 657, 22, 41, "Output"], Cell[32884, 1042, 3737, 104, 63, "Output"], Cell[36624, 1148, 4643, 127, 63, "Output"], Cell[41270, 1277, 161, 6, 41, "Output"] }, Open ]], Cell[41446, 1286, 526, 16, 71, "Text"], Cell[CellGroupData[{ Cell[41997, 1306, 641, 16, 110, "Input"], Cell[42641, 1324, 915, 30, 41, "Output"], Cell[43559, 1356, 267, 6, 25, "Print"] }, Open ]], Cell[43841, 1365, 143, 5, 33, "Text"], Cell[CellGroupData[{ Cell[44009, 1374, 329, 9, 30, "Input"], Cell[44341, 1385, 6678, 171, 41, "Output"] }, Open ]], Cell[51034, 1559, 176, 6, 33, "Text"], Cell[CellGroupData[{ Cell[51235, 1569, 880, 25, 90, "Input"], Cell[52118, 1596, 915, 30, 41, "Output"], Cell[53036, 1628, 31, 0, 29, "Output"], Cell[53070, 1630, 31, 0, 29, "Output"], Cell[53104, 1632, 31, 0, 29, "Output"] }, Open ]], Cell[53150, 1635, 471, 14, 71, "Text"], Cell[CellGroupData[{ Cell[53646, 1653, 491, 14, 50, "Input"], Cell[54140, 1669, 161, 6, 41, "Output"], Cell[54304, 1677, 5536, 134, 39, "Output"] }, Open ]], Cell[59855, 1814, 340, 5, 52, "Text"], Cell[60198, 1821, 199, 4, 33, "Text"], Cell[60400, 1827, 315, 11, 81, "Text"], Cell[60718, 1840, 1094, 23, 415, "Text"], Cell[CellGroupData[{ Cell[61837, 1867, 46, 0, 47, "Subsection"], Cell[61886, 1869, 300, 9, 33, "Text"] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)