(*********************************************************************** 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[ 23266, 673]*) (*NotebookOutlinePosition[ 24120, 703]*) (* CellTagsIndexPosition[ 24076, 699]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["Modelling with Directed Graphs", "Title", ImageRegion->{{-0, 1}, {0, 1}}], Cell[BoxData[{ \(Author : \ Thomas\ Shores\), "\[IndentingNewLine]", \(University\ of\ Nebraska\), "\[IndentingNewLine]", \(Send\ comments\ \(to : \ tshores@math . unl . edu\)\)}], "Input", FontFamily->"Helvetica", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], Cell[CellGroupData[{ Cell["Definition of a Graph", "Subsection", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "A (", StyleBox["directed", FontSlant->"Italic"], ") ", StyleBox["graph", FontSlant->"Italic"], " is simply a set of points V, whose elements are called ", StyleBox["vertices", FontSlant->"Italic"], ", together with a set E of ordered pairs from V", "\[Cross]", "V, whose elements are called (", StyleBox["directed", FontSlant->"Italic"], ") ", StyleBox["edges", FontSlant->"Italic"], ". In the edges are not directed in the sense that whenever (a,b) is an \ edge, so is (b,a), then the graph is called ", StyleBox["undirected", FontSlant->"Italic"], " or simply, a graph. All the graphs we examine will be directed.\n\ Throughout the following discussion unless otherwise stated, the graph G is \ understood to have ", StyleBox["n", FontSlant->"Italic"], " vertices in the set V = {1, 2, ... , n} and ", StyleBox["m", FontSlant->"Italic"], " edges in the set E = {e", StyleBox["1", FontVariations->{"CompatibilityType"->"Subscript"}], ", e", StyleBox["2", FontVariations->{"CompatibilityType"->"Subscript"}], ", ... , e", StyleBox["m", FontVariations->{"CompatibilityType"->"Subscript"}], "}. Here each edge e", StyleBox["i", FontVariations->{"CompatibilityType"->"Subscript"}], " is an ordered pair." }], "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "A picture is worth a thousand words. So use your Browser to look in the \ subdirectory \n/Users/Math314Files for the file called GraphExample.eps Now \ activate the figures by double clicking on the file name. You will see the \ Example used for the following discussion. Next click inside the Mathematica \ window to get back to this tutorial. Notice that the Example graph G has \ vertices V = {1, 2, 3, 4} and edges E = {e", StyleBox["1", FontVariations->{"CompatibilityType"->"Subscript"}], ", e", StyleBox["2", FontVariations->{"CompatibilityType"->"Subscript"}], ", e", StyleBox["3", FontVariations->{"CompatibilityType"->"Subscript"}], ", e", StyleBox["4", FontVariations->{"CompatibilityType"->"Subscript"}], ", e", StyleBox["5", FontVariations->{"CompatibilityType"->"Subscript"}], "}. To be exact, e", StyleBox["1", FontVariations->{"CompatibilityType"->"Subscript"}], " = (1,2), e", StyleBox["2", FontVariations->{"CompatibilityType"->"Subscript"}], " = (2,3), e", StyleBox["3", FontVariations->{"CompatibilityType"->"Subscript"}], " = (1,3), e", StyleBox["4", FontVariations->{"CompatibilityType"->"Subscript"}], " = (3,4) and e", StyleBox["5", FontVariations->{"CompatibilityType"->"Subscript"}], " = (1,4). We will sometimes abuse the language and refer to the edges as \ simply edges 1, 2, 3 ,4 and 5. Now for some terminology we need to talk \ about graphs :" }], "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "A ", StyleBox["path", FontSlant->"Italic"], " in a graph G is a sequence of edges (v", StyleBox["0", FontVariations->{"CompatibilityType"->"Subscript"}], ", v", StyleBox["1", FontVariations->{"CompatibilityType"->"Subscript"}], "), (v", StyleBox["1", FontVariations->{"CompatibilityType"->"Subscript"}], ", v", StyleBox["2", FontVariations->{"CompatibilityType"->"Subscript"}], "), ... , (v", StyleBox["m-1", FontVariations->{"CompatibilityType"->"Subscript"}], ", v", StyleBox["m", FontVariations->{"CompatibilityType"->"Subscript"}], ") which goes from vertex v", StyleBox["0", FontVariations->{"CompatibilityType"->"Subscript"}], " to vertex v", StyleBox["m", FontVariations->{"CompatibilityType"->"Subscript"}], ", where all vertices except possibly v", StyleBox["0", FontVariations->{"CompatibilityType"->"Subscript"}], " and v", StyleBox["m", FontVariations->{"CompatibilityType"->"Subscript"}], " are distinct. The length of the path is ", StyleBox["m", FontSlant->"Italic"], ". For instance, you can see that the sequence of edges 1, 2, and 4 is a \ path from vertex 1 to vertex 4 of length 3. " }], "Clipboard", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "The graphs we shall consider are all ", StyleBox["connected", FontSlant->"Italic"], ": this means that between any two vertices ", StyleBox[" i", FontSlant->"Italic"], " and ", StyleBox["j", FontSlant->"Italic"], " there is a sequence of vertices, each of which is connected by an edge, \ though these edges may run in different directions. Note this is not the \ same as saying that there is a path between any two vertices. Our Example \ graph is connected, yet there is not a path from vertex 4 to vertex 2, for \ instance; yet we see that there is an edge between vertex 4 and 3, and then \ one between vertex 3 and 2. This notion of connecting vertices by edges not \ all running in the same direction is a useful one. We can represent such an \ object as a vector whose coordinates are indexed by the edges of the graph \ and whose entries are 0, -1 or 1. For instance, in our Example, the \ connection from vertex 4 to 2 may be represented by the vector {0, -1, 0, -1, \ 0}. The minus signs indicate that edges 2 and 4 are traversed in the \ negative direction, i.e., from head to tail. " }], "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "A sequence of edges which goes from a vertex back to itself without \ passing through any vertex except the initial one more than once, is called a \ ", StyleBox["loop ", FontSlant->"Italic"], "(or", StyleBox[" ", FontSlant->"Italic"], "a", StyleBox[" cycle", FontSlant->"Italic"], "). As in the previous paragraph, loops can be represented by a vector \ indexed by the edges. For instance, in our Example graph, {0,0,1,1,-1} \ represents the loop starting at vertex 1, passing through vertex 3 by way of \ edge 3, through vertex 4 by way of edge 4, and finally back to 1 by way of \ edge 5. Notice, the -1 in the 5th place means that edge 5 is traversed in \ the negative direction. There are other loops in our graph; for example, \ {1,1,-1,0,0} and {1,1,0,1,-1}. Interestingly enough, {1,1,0,1,-1} = \ {1,1,-1,0,0} + {0,0,1,1,-1}. As a matter of fact, all loops are built from \ the smallest loops {1,1,-1,0,0} and {0,0,1,1,-1}." }], "Text", ImageRegion->{{-0, 1}, {0, 1}}] }, Closed]], Cell[CellGroupData[{ Cell["The Adjacency Matrix", "Subsection", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "Adjacency Matrix: The adjacency matrix of a graph G is an n", "\[Cross]", "n matrix whose ", StyleBox["(i,j)", FontSlant->"Italic"], "th entry is 1 if there is an edge from v", StyleBox["i", FontVariations->{"CompatibilityType"->"Subscript"}], " to v", StyleBox["j", FontVariations->{"CompatibilityType"->"Subscript"}], ", i.e., if (v", StyleBox["i", FontVariations->{"CompatibilityType"->"Subscript"}], ",v", StyleBox["j", FontVariations->{"CompatibilityType"->"Subscript"}], ") ", "\[Element]", " E, and is 0 otherwise. For example, the adjacency matrix A of our \ Example is a 4", "\[Cross]", "4 matrix defined in the cell below. Activate this cell by putting the \ insertion point in it and pressing enter or by marking it and choosing the \ option Action, then Evaluate Selection." }], "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell["A = {{0,1,1,1},{0,0,1,0},{0,0,0,1},{0,0,0,0}}", "Input", ImageRegion->{{-0, 1}, {0, 1}}], Cell["\<\ Next, you might prefer to see the matrix in standard form. \ Activate the next cell:\ \>", "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell["MatrixForm[A]", "Input", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "Here is the connection between adjacency matrices and paths: the number \ of distinct paths of length 1 from vertex ", StyleBox["i", FontSlant->"Italic"], " to vertex ", StyleBox["j", FontSlant->"Italic"], " is simply the ", StyleBox["(i,j)", FontSlant->"Italic"], "th entry of A. Likewise, the number of distinct paths from vertex ", StyleBox["i", FontSlant->"Italic"], " to ", StyleBox["j", FontSlant->"Italic"], " of length 2 is the ", StyleBox["(i,j)", FontSlant->"Italic"], "th entry of A A. And so on! The ", StyleBox["(i,j)", FontSlant->"Italic"], "th entry of A times itself ", StyleBox["m", FontSlant->"Italic"], " times gives the number of paths from vertex ", StyleBox["i", FontSlant->"Italic"], " to vertex ", StyleBox["j", FontSlant->"Italic"], " of length ", StyleBox["m", FontSlant->"Italic"], ". It follows that the number of paths from vertex ", StyleBox["i", FontSlant->"Italic"], " to", StyleBox[" j", FontSlant->"Italic"], " of length less than or equal to ", StyleBox["m", FontSlant->"Italic"], " is the ", StyleBox["(i,j)", FontSlant->"Italic"], "th entry of the sum of matrices A + A A + ... + A A ... A, where the last \ product is A multiplied by itself ", StyleBox["m", FontSlant->"Italic"], " times. Try experimenting with the following two cells and compare with \ the picture of our Example A to see how things work. Activate them, then \ change them to see the effects of computing longer paths by adding more \ terms. For example, the following product has (1,4)th entry equal to 1 and, \ sure enough, there is only one path of length two from vertex 1 to vertex 4 \ (see it?). Also notice that the next cell has (1,4)th entry equal to 2, \ which is exactly the number of paths of length at most 2 from vertex 1 to \ vertex 4." }], "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell["MatrixForm[A.A]", "Input", ImageRegion->{{-0, 1}, {0, 1}}], Cell["MatrixForm[A + A.A]", "Input", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "There are several ideas that are very important in applications of graph \ theory to the social sciences. One of the idea of a \ \[OpenCurlyDoubleQuote]", StyleBox["dominance-directed", FontSlant->"Italic"], "\[CloseCurlyDoubleQuote] graph. This is a graph that has no paths from a \ vertex to itself, and for any pair of distinct vertices, ", StyleBox["i", FontSlant->"Italic"], " and ", StyleBox["j", FontSlant->"Italic"], ", there may be a path from ", StyleBox["i", FontSlant->"Italic"], " to ", StyleBox["j", FontSlant->"Italic"], ", or from", StyleBox[" j", FontSlant->"Italic"], " to ", StyleBox["i", FontSlant->"Italic"], ", but not both. For such a graph, the \[OpenCurlyDoubleQuote]power\ \[CloseCurlyDoubleQuote] of a vertex is defined to be the number of paths of \ length 1 or 2 from that vertex to any other vertex. For instance, you can \ see in our Example, which is a dominance-directed graph, that the power of \ vertex 2 is 2 (there is a path of length 1 to vertex 3 and one of length 2 to \ vertex 4). In general, the power of the ", StyleBox["i", FontSlant->"Italic"], "th vertex is simply the sum of all the entries in row ", StyleBox["i", FontSlant->"Italic"], " of A + A A, in view of the discussion of the previous paragraph. Here \ is an illustration of the idea: suppose a group of teams play a round-robin \ tournament of games with no ties. Build a graph as follows. The vertices of \ the graph are the teams. There is an edge from ", StyleBox["i", FontSlant->"Italic"], " to", StyleBox[" j", FontSlant->"Italic"], " if team ", StyleBox["i", FontSlant->"Italic"], " defeated team", StyleBox[" j.", FontSlant->"Italic"], " Thus, the power of a team is the number of teams that it has defeated or \ that have been defeated by a team it defeated. Add up the entries of each \ row of the matrix A + A A in our Example and you see that vertex 1 is the \ most powerful of the vertices, while vertex 4 is the least powerful. \n \ This idea of dominance-directed graphs is used in sociological studies of \ group interactions, where \[OpenCurlyDoubleQuote]dominance\ \[CloseCurlyDoubleQuote] means cooperation between groups, which are \ represented as vertices of a graph. In voting analysis studies, dominance \ represents influence with respect to voting choice. In communications, \ dominance can mean the ability of one vertex to communicate with another." }], "Text", ImageRegion->{{-0, 1}, {0, 1}}] }, Closed]], Cell[CellGroupData[{ Cell["The Incidence Matrix", "Subsection", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "The next important idea about graphs that we will discuss is that the the \ ", StyleBox["edge-vertex incidence matrix", FontSlant->"Italic"], " (", StyleBox["incidence matrix", FontSlant->"Italic"], " for short) of a graph. Here is the idea: form a matrix B whose rows \ are indexed by the edges of the graph, and whose columns are indexed by the \ vertices of the graph. Now if edge e", StyleBox["i", FontVariations->{"CompatibilityType"->"Subscript"}], " is the ordered pair (j,k), put a -1 in the ", StyleBox["j", FontSlant->"Italic"], "th column of row", StyleBox[" i", FontSlant->"Italic"], ", a +1 in the ", StyleBox["k", FontSlant->"Italic"], "th column of row ", StyleBox["i", FontSlant->"Italic"], " and 0 in every other entry of row ", StyleBox["i. ", FontSlant->"Italic"], "The result is the incidence matrix B of the graph.\n For instance, the \ incidence matrix of our Example is given below. Activate this cell to define \ the incidence matrix and the subsequent cell to get a nice form for the \ matrix." }], "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell["B = {{-1,1,0,0},{0,-1,1,0},{-1,0,1,0},{0,0,-1,1},{-1,0,0,1}}", "Input", ImageRegion->{{-0, 1}, {0, 1}}], Cell["MatrixForm[B]", "Input", ImageRegion->{{-0, 1}, {0, 1}}], Cell["\<\ Notice that the sum of the entries in each row is 0. Hence the \ vector {1,1,1,1} belongs to the null space of B. Now it is not hard to see \ that the rank of B is 3. In fact, it in instructive to see the row-echelon \ form of B. Try activating the next cell to see this.\ \>", "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell["MatrixForm[RowReduce[B]]", "Input", ImageRegion->{{-0, 1}, {0, 1}}], Cell["Next, have a look at the null space of B:", "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell["NullSpace[B]", "Input", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "Is this an accident? No. Here is what happens in general: if G is a \ connected graph and B is the incidence matrix of G, then the rank of B is \ exactly ", StyleBox["n", FontSlant->"Italic"], " - 1, where G has ", StyleBox["n", FontSlant->"Italic"], " vertices, and the vector {1,1,...,1} spans the null space of B." }], "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell["\<\ An even more interesting object is the null space of the transpose \ of B. Try activating the next cell.\ \>", "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell["NullSpace[Transpose[B]]", "Input", ImageRegion->{{-0, 1}, {0, 1}}], Cell["\<\ Now compare this output to the discussion of loops at the end of \ the introductory section of these notes and note that these amount to two of \ the three loops (up to a factor of \[PlusMinus]) of our Example graph. \ Moreover, we could get the third loop (up to a sign) by subtracting these two \ loops. In other words, all the information about loops is contained in the \ null space of the transpose of B.\ \>", "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "There is one more context in which the incidence matrix turns out to be \ interesting. Suppose our graph G represents an electrical curcuit. The \ edges might represent locations in the circuit where objects like resistors \ or capacitors are placed. At each vertex we would have a potential assigned; \ say at vertex ", StyleBox["i", FontSlant->"Italic"], " we have potential value x", StyleBox["i", FontVariations->{"CompatibilityType"->"Subscript"}], ". Then the jump in potential across the ", StyleBox["k", FontSlant->"Italic"], "th edge e = (i, j) would simply be x", StyleBox["j", FontVariations->{"CompatibilityType"->"Subscript"}], " - x", StyleBox["i", FontVariations->{"CompatibilityType"->"Subscript"}], ". Interestingly enough, this is exactly the ", StyleBox["k", FontSlant->"Italic"], "th entry of Bx. So suppose we wanted to design a circuit where the \ potential differences across the edges is given by the vector ", StyleBox["f", FontSlant->"Italic"], ". Is it possible for any vector ", StyleBox["f", FontSlant->"Italic"], "? The answer is no. For ", StyleBox["f", FontSlant->"Italic"], " represents the potential differences across edges corresponding to some \ distribution of potential values ", StyleBox["x", FontSlant->"Italic"], " if and only if the equation Bx = ", StyleBox["f", FontSlant->"Italic"], " is consistent. Since the rank of B is ", StyleBox["n", FontSlant->"Italic"], " - 1, this will not always happen, because the system will not be \ consistent for every choice of ", StyleBox["b", FontSlant->"Italic"], ". When will it happen?" }], "Text", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "Both null spaces can be informative in this context of electrical \ curcuits. For example, we get a necessary condition for Bx =", StyleBox[" f", FontSlant->"Italic"], " to have a solution. Let ", StyleBox["y", FontSlant->"Italic"], " be any element of the null space of the transpose of B. Then yB = 0. \ Given that Bx =", StyleBox[" f", FontSlant->"Italic"], ", we can multiply on the left by (the transpose of) ", StyleBox["y", FontSlant->"Italic"], " to obtain that y ", StyleBox["f", FontSlant->"Italic"], " = yBx = 0 x = 0 . In particular, if ", StyleBox["y", FontSlant->"Italic"], " represents a loop, then the condition y ", StyleBox["f ", FontSlant->"Italic"], "= 0", StyleBox[" ", FontSlant->"Italic"], "really says that the total potential drop around the loop should be 0.\n\ The null space of B is also relevant. If x", StyleBox["0", FontVariations->{"CompatibilityType"->"Subscript"}], " is any particular solution to the equation Bx = ", StyleBox["f", FontSlant->"Italic"], ", then so is x", StyleBox["0", FontVariations->{"CompatibilityType"->"Subscript"}], " + z, where ", StyleBox["z", FontSlant->"Italic"], " is any element of the null space of B. We have seen above that ", StyleBox["z", FontSlant->"Italic"], " will simply be a multiple of {1,1,...,1}. So what does this say? It \ says that if we add the same constant to the potential at each vertex of a \ circuit, we obtain a new vector of potentials whose potential differences is \ the same as before." }], "Text", ImageRegion->{{-0, 1}, {0, 1}}] }, Closed]], Cell[CellGroupData[{ Cell["Exercises", "Subsection", ImageRegion->{{-0, 1}, {0, 1}}], Cell[TextData[{ "You are given that the (directed) graph G has vertex set V = {1,2,3,4,5} \ and edge set \nE = {(2,1), (1,5), (2,5), (5,4), (4,2), (4,3), (3,2)}. \ Answer the following questions about the graph G:\n\n(1) What does the \ graph look like? You may draw this by hand or, if you prefer, you may use \ the Draw application (it has the icon with a compass on it) to draw the \ picture. \n\n(2) Next view the graph as representing an electrical circuit \ with potentials x", StyleBox["1", FontVariations->{"CompatibilityType"->"Subscript"}], ",...,x", StyleBox["5", FontVariations->{"CompatibilityType"->"Subscript"}], " to be assigned to the vertices. Find N(A) and N(A", StyleBox["T", FontSize->11, FontVariations->{"CompatibilityType"->"Superscript"}], ") using the Mathematica command NullSpace. What does the latter tell you \ about the loop structure of the circuit? Finally, use that fact that Ax = b \ implies that for all ", StyleBox["y", FontSlant->"Italic"], " in N(A", StyleBox["T", FontSize->11, FontVariations->{"CompatibilityType"->"Superscript"}], "), y", StyleBox["T", FontSize->11, FontVariations->{"CompatibilityType"->"Superscript"}], " b = 0 to find conditions that a vector ", StyleBox["b", FontSlant->"Italic"], " must satisfy in order for it to be a vector of potential differences for \ some potential distribution on the vertices.\n\nMath 314H students : this \ last exercise is not part of the assignment. Do not turn it in.\n\n(3) \ View this graph as representing a communications network. First find the \ adjacency matrix of the graph. Notice that G is a dominance-directed \ graph. Which point(s) have the greatest power? Which point(s) would be the \ best from which to initiate communications, based on this information?\n" }], "Text", ImageRegion->{{-0, 1}, {0, 1}}] }, Closed]] }, Closed]] }, FrontEndVersion->"4.0 for X", ScreenRectangle->{{0, 1152}, {0, 864}}, WindowToolbars->{}, CellGrouping->Manual, WindowSize->{520, 600}, WindowMargins->{{Automatic, 308}, {104, Automatic}}, PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}}, ShowCellLabel->True, ShowCellTags->False, RenderingOptions->{"ObjectDithering"->True, "RasterDithering"->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[CellGroupData[{ Cell[1739, 51, 81, 1, 154, "Title"], Cell[1823, 54, 297, 6, 64, "Input"], Cell[CellGroupData[{ Cell[2145, 64, 77, 1, 45, "Subsection"], Cell[2225, 67, 1373, 44, 70, "Text"], Cell[3601, 113, 1530, 40, 70, "Text"], Cell[5134, 155, 1273, 40, 70, "Clipboard"], Cell[6410, 197, 1192, 23, 70, "Text"], Cell[7605, 222, 1031, 22, 70, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[8673, 249, 76, 1, 29, "Subsection"], Cell[8752, 252, 906, 27, 70, "Text"], Cell[9661, 281, 96, 1, 70, "Input"], Cell[9760, 284, 143, 4, 70, "Text"], Cell[9906, 290, 64, 1, 70, "Input"], Cell[9973, 293, 1963, 60, 70, "Text"], Cell[11939, 355, 66, 1, 70, "Input"], Cell[12008, 358, 70, 1, 70, "Input"], Cell[12081, 361, 2570, 62, 70, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[14688, 428, 76, 1, 29, "Subsection"], Cell[14767, 431, 1159, 33, 70, "Text"], Cell[15929, 466, 111, 1, 70, "Input"], Cell[16043, 469, 64, 1, 70, "Input"], Cell[16110, 472, 333, 6, 70, "Text"], Cell[16446, 480, 75, 1, 70, "Input"], Cell[16524, 483, 91, 1, 70, "Text"], Cell[16618, 486, 63, 1, 70, "Input"], Cell[16684, 489, 400, 11, 70, "Text"], Cell[17087, 502, 163, 4, 70, "Text"], Cell[17253, 508, 74, 1, 70, "Input"], Cell[17330, 511, 469, 8, 70, "Text"], Cell[17802, 521, 1751, 49, 70, "Text"], Cell[19556, 572, 1657, 48, 70, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[21250, 625, 65, 1, 29, "Subsection"], Cell[21318, 628, 1920, 41, 70, "Text"] }, Closed]] }, Closed]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)