(* Content-type: application/mathematica *) (*** Wolfram Notebook File ***) (* http://www.wolfram.com/nb *) (* CreatedBy='Mathematica 7.0' *) (*CacheID: 234*) (* Internal cache information: NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 145, 7] NotebookDataLength[ 24804, 713] NotebookOptionsPosition[ 18821, 564] NotebookOutlinePosition[ 22119, 644] CellTagsIndexPosition[ 21441, 628] WindowTitle->Lecture 24 MIT 3.016 (Fall 2010) \251 W. Craig Carter \ 2003--2010 WindowFrame->Normal*) (* Beginning of Notebook Content *) Notebook[{ Cell["Systems of Differential Equations", "Title"], Cell[CellGroupData[{ Cell["A Predator-Prey Model: The Famous MIT Graduation Joke ", "Subtitle"], Cell["\<\ The traditional \"predator-prey\" model involves modelling the populations of \ predators and their prey. The changes in populations are related: more prey \ feed more predators, but an overpopulation of predators can lead to depletion \ of prey, causing a depopulation of predators... The problem simulated below \ is a take-off on the traditional one.\ \>", "Section"], Cell["THE MIT JOKE MODEL", "Subsection", PageWidth->WindowWidth, CellMargins->{{Inherited, 0}, {Inherited, Inherited}}, CellSize->{648, Inherited}, TextAlignment->Center, CellTags->"mmtag:24:the_MIT_joke_model"], Cell[TextData[{ "This is a model for what fraction of the MIT population would know a \ particular joke, the joke is told a fraction of the time when a person who \ has heard it meets someone who hasn't. The rate of joke spreading is \ proportional to how funny it is. There are two populations of students: 1) \ those that don't know the joke or have forgot it---these are the naive; 2) \ those that know the joke and think that they are pretty cool---these are the \ jaded. The objective is to find a model for the daily evolution of the two \ populations.\n\nIt is a closely held secret that Susan Hockfield, MIT's \ president, has an odd sense of humor--she will not let anyone graduate who \ cannot tell her the joke on graduation day. ", StyleBox["Therefore, only jaded students can graduate. ", FontSlant->"Italic"], "This often is a source of embarassment and confusion to the happy families. \ " }], "Subsection", PageWidth->WindowWidth, CellMargins->{{Inherited, 0}, {Inherited, Inherited}}, CellSize->{648, Inherited}, TextAlignment->Left, CellTags->"mmtag:24:the_MIT_joke_model"], Cell["\<\ A certain fraction of new students added to the population who presumably \ don't know the joke, the MIT administration yearly admit students \ proportional to how many slots are available less than a fixed capacity of \ 4000. The following is a model for how many students are added to the Naive pool \ each day:\ \>", "Text"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{"FreshmanEntranceRate", "[", RowBox[{"Naive_", " ", ",", " ", "Jaded_"}], "]"}], " ", ":=", " ", RowBox[{ RowBox[{"(", RowBox[{"4000", " ", "-", RowBox[{"(", RowBox[{"Jaded", " ", "+", "Naive"}], ")"}]}], ")"}], "/", "365"}]}], ";"}]], "Input"], Cell["\<\ About half the people who know the joke forget it each year. Only the Jaded \ know the joke, so the following will be part of the model for how many of the \ Jaded become Naive and how many Naive become Naive. The model for how many \ forget the joke each day is:\ \>", "Text"], Cell[BoxData[{ RowBox[{ RowBox[{"PopulationForgetfullness", " ", "=", ".5"}], ";"}], "\n", RowBox[{ RowBox[{"ForgotJoke", "[", RowBox[{"Naive_", " ", ",", " ", "Jaded_"}], "]"}], " ", ":=", RowBox[{"PopulationForgetfullness", "*", RowBox[{"Jaded", "/", "365"}]}]}]}], "Input", CellTags->"mmtag:24:PolulationForgetFullness"], Cell["\<\ Let's estimate that about 1/3 of the jaded population is in their senior year \ and that about 0.99 of that fraction will graduate---the model for how many \ leave each day by graduating is:\ \>", "Text"], Cell[BoxData[{ RowBox[{ RowBox[{"GraduationCoefficient", " ", "=", " ", RowBox[{"0.99", RowBox[{"(", RowBox[{"1", "/", "3"}], ")"}]}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"GraduationRate", "[", RowBox[{"TodaysNaive_", ",", " ", "TodaysJaded_"}], "]"}], " ", ":=", RowBox[{"GraduationCoefficient", "*", RowBox[{"TodaysJaded", "/", "365"}]}]}], ";"}]}], "Input"], Cell["\<\ The rate that the joke spreads will determine how many of the Naive will \ become Jaded. The probability that a Naive meets a Jaded who tells the joke \ is proportional to the joke funniness and the daily probability that the two \ meet.\ \>", "Text"], Cell[BoxData[{ RowBox[{ RowBox[{"JokeFunniness", " ", "=", "0.35"}], ";"}], "\n", RowBox[{ RowBox[{"JokeSpreadRate", "[", RowBox[{"Naive_", " ", ",", " ", "Jaded_"}], "]"}], " ", ":=", RowBox[{"JokeFunniness", "*", "Naive", "*", RowBox[{"Jaded", "/", RowBox[{"(", RowBox[{"365", "*", "365"}], ")"}]}]}]}]}], "Input", CellTags->"mmtag:24:JokeFunniness"], Cell["The fraction of students who remain naive tomorrow is", "Text"], Cell[BoxData[ RowBox[{ RowBox[{"TomorrowsNaive", "[", RowBox[{"TodaysNaive_", ",", "TodaysJaded_"}], "]"}], " ", ":=", " ", RowBox[{"TodaysNaive", " ", "+", " ", RowBox[{"FreshmanEntranceRate", "[", " ", RowBox[{"TodaysNaive", " ", ",", " ", "TodaysJaded"}], "]"}], "-", " ", RowBox[{"JokeSpreadRate", "[", RowBox[{"TodaysNaive", " ", ",", " ", "TodaysJaded"}], "]"}], " ", "+", " ", RowBox[{"ForgotJoke", "[", RowBox[{"TodaysNaive", " ", ",", " ", "TodaysJaded"}], "]"}], " "}]}]], "Input"], Cell["The fraction of students who will know the joke tomorrow is", "Text"], Cell[BoxData[ RowBox[{ RowBox[{"TomorrowsJaded", "[", RowBox[{"TodaysNaive_", ",", "TodaysJaded_"}], "]"}], " ", ":=", " ", RowBox[{"TodaysJaded", " ", "+", " ", RowBox[{"JokeSpreadRate", "[", RowBox[{"TodaysNaive", " ", ",", " ", "TodaysJaded"}], "]"}], " ", "-", " ", RowBox[{"ForgotJoke", "[", RowBox[{"TodaysNaive", " ", ",", " ", "TodaysJaded"}], "]"}], " ", "-", " ", RowBox[{"GraduationRate", "[", RowBox[{"TodaysNaive", " ", ",", " ", "TodaysJaded"}], "]"}], " "}]}]], "Input"], Cell["The population evolves each day as", "Text"], Cell[BoxData[ RowBox[{ RowBox[{"TomorrowsPopulation", "[", RowBox[{"{", RowBox[{"TodaysNaive_", ",", "TodaysJaded_"}], "}"}], "]"}], ":=", RowBox[{"{", RowBox[{ RowBox[{"TomorrowsNaive", "[", RowBox[{"TodaysNaive", " ", ",", " ", "TodaysJaded"}], "]"}], ",", RowBox[{"TomorrowsJaded", "[", RowBox[{"TodaysNaive", " ", ",", " ", "TodaysJaded"}], "]"}]}], "}"}]}]], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Visualizing the Graduation Joke", "Subtitle"], Cell["\<\ Calculate the population after 5 days from now if currently 40% of the \ students are naive and 60% of the total 1000 students are in the know.\ \>", "Text"], Cell[BoxData[ RowBox[{"NestList", "[", RowBox[{"TomorrowsPopulation", ",", RowBox[{"{", RowBox[{"400", ",", "600"}], "}"}], ",", "5"}], "]"}]], "Input", CellTags->"mmtag:24:NestList[]"], Cell["\<\ The following will create an animation of what would happen to an initial \ population of {Naive, Jaded} = {0,0}\ \>", "Text"], Cell[BoxData[ RowBox[{"Table", "[", RowBox[{ RowBox[{"ListPlot", "[", RowBox[{ RowBox[{"NestList", "[", RowBox[{"TomorrowsPopulation", ",", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}], ",", "i"}], "]"}], ",", RowBox[{"PlotJoined", "\[Rule]", "True"}], ",", RowBox[{"PlotStyle", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"Hue", "[", "1", "]"}], ",", RowBox[{"Thickness", "[", "0.01", "]"}]}], "}"}]}], ",", RowBox[{"AxesLabel", "\[Rule]", RowBox[{"{", RowBox[{"\"\\"", ",", "\"\\""}], "}"}]}], ",", RowBox[{"PlotRange", "->", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", "4000"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "4000"}], "}"}]}], "}"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "10", ",", "2500", ",", "50"}], "}"}]}], "]"}]], "Input",\ CellTags->"mmtag:24:the_MIT_joke_model__fixed_point_visualized"], Cell["\<\ From the above animation, one might conclude that the population will stably \ climb toware {4000,0}. No one would ever graduate---no one would be admitted. \ Aside from being a bad strategy, it is not even a stable solution. In the following animation, an initial population of {1,1} will show that a \ small pertubation away from having \"no jaded students to tell the joke\" \ has very different long-term behavior\ \>", "Text"], Cell[BoxData[ RowBox[{"Table", "[", RowBox[{ RowBox[{"ListPlot", "[", RowBox[{ RowBox[{"NestList", "[", RowBox[{"TomorrowsPopulation", ",", RowBox[{"{", RowBox[{"1", ",", "1"}], "}"}], ",", "i"}], "]"}], ",", RowBox[{"PlotRange", "->", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", "4000"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "4000"}], "}"}]}], "}"}]}], ",", RowBox[{"PlotJoined", "\[Rule]", "True"}], ",", RowBox[{"PlotStyle", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"Hue", "[", "1", "]"}], ",", RowBox[{"Thickness", "[", "0.01", "]"}]}], "}"}]}], ",", RowBox[{"AxesLabel", "\[Rule]", RowBox[{"{", RowBox[{"\"\\"", ",", "\"\\""}], "}"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "10", ",", "2500", ",", "50"}], "}"}]}], "]"}]], "Input",\ CellTags->"mmtag:24:the_MIT_joke_model__fixed_point_visualized"], Cell["\<\ Now calculate trajectories for a variety of initial conditions for the jaded \ and naive populations, selected randomly, then plot them on the \ naive\[Dash]jaded plane:\ \>", "Text"], Cell[BoxData[ RowBox[{"graphicslist", " ", "=", RowBox[{"Table", "[", RowBox[{ RowBox[{"ListPlot", "[", RowBox[{ RowBox[{"NestList", "[", RowBox[{"TomorrowsPopulation", ",", RowBox[{"{", RowBox[{ RowBox[{"4000", "*", RowBox[{"Random", "[", "]"}]}], ",", RowBox[{"4000", "*", RowBox[{"Random", "[", "]"}]}]}], "}"}], ",", "8000"}], "]"}], ",", RowBox[{"PlotRange", "\[Rule]", "All"}], ",", RowBox[{"PlotJoined", "\[Rule]", "True"}], ",", RowBox[{"PlotStyle", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"RGBColor", "[", RowBox[{ RowBox[{"Random", "[", "]"}], ",", RowBox[{"Random", "[", "]"}], ",", RowBox[{"Random", "[", "]"}]}], "]"}], ",", RowBox[{"Thickness", "[", "0.005", "]"}]}], "}"}]}], ",", RowBox[{"DisplayFunction", "\[Rule]", "Identity"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", "50"}], "}"}]}], "]"}]}]], "Input", CellTags->"mmtag:24:graphics_list__example"], Cell[BoxData[ RowBox[{"Show", "[", RowBox[{"graphicslist", ",", RowBox[{"DisplayFunction", "\[Rule]", "$DisplayFunction"}], ",", RowBox[{"AxesLabel", "\[Rule]", RowBox[{"{", RowBox[{"\"\\"", ",", "\"\\""}], "}"}]}], ",", RowBox[{"PlotRange", "->", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", "4000"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "8000"}], "}"}]}], "}"}]}]}], "]"}]], "Input", CellTags->"mmtag:24:the_MIT_joke_model__visualized"], Cell["\<\ The point that all the trajectories lead to can be calculated numerically:\ \>", "Text"], Cell[BoxData[ RowBox[{"fp", " ", "=", " ", RowBox[{"FixedPoint", "[", RowBox[{"TomorrowsPopulation", ",", RowBox[{"{", RowBox[{"800", ",", "2300"}], "}"}], ",", "20000"}], "]"}]}]], "Input"], Cell[BoxData[{ RowBox[{ RowBox[{"winsize", " ", "=", " ", RowBox[{"10", "^", RowBox[{"(", RowBox[{"-", "8"}], ")"}]}]}], ";", " ", RowBox[{"plotrange", "=", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"fp", "[", RowBox[{"[", "1", "]"}], "]"}], " ", "-", " ", "winsize"}], ",", " ", RowBox[{ RowBox[{"fp", "[", RowBox[{"[", "1", "]"}], "]"}], " ", "+", " ", "winsize"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"fp", "[", RowBox[{"[", "2", "]"}], "]"}], " ", "-", " ", "winsize"}], ",", " ", RowBox[{ RowBox[{"fp", "[", RowBox[{"[", "2", "]"}], "]"}], " ", "+", " ", "winsize"}]}], "}"}]}], "}"}]}]}], "\[IndentingNewLine]", RowBox[{"Show", "[", RowBox[{"graphicslist", ",", RowBox[{"DisplayFunction", "\[Rule]", "$DisplayFunction"}], ",", RowBox[{"AxesLabel", "\[Rule]", RowBox[{"{", RowBox[{"\"\\"", ",", "\"\\""}], "}"}]}], ",", RowBox[{"PlotRange", "->", "plotrange"}]}], "]"}]}], "Input", CellTags->"mmtag:24:the_MIT_joke_model__visualized"], Cell[TextData[{ "Note that all starting points produce trajectories that converge on the \ same critical point. This is an example of a system of equations that \ exhibits a ", StyleBox["stable", FontWeight->"Bold"], " critical point." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Stability Analysis of the Predator-Prey Model", "Subtitle", CellTags->"mmtag:24:predator_prey_models__stability_of"], Cell[TextData[{ "The model above can be written as the system of ODEs:\n", Cell[BoxData[ FormBox[ FractionBox["dN", "dt"], TraditionalForm]], FontWeight->"Bold"], StyleBox[" = (4000 - (N + J))/365 - \[Phi] J N + \[Alpha] J\n", FontWeight->"Bold"], Cell[BoxData[ FormBox[ FractionBox["dJ", "dt"], TraditionalForm]], FontWeight->"Bold"], StyleBox[" = \[Phi] N J - \[Gamma] J - \[Alpha] J", FontWeight->"Bold"] }], "Text"], Cell["Find the fixed points:", "Text"], Cell[BoxData[{ RowBox[{"Ndot", " ", "=", " ", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"4000", " ", "-", " ", RowBox[{"(", RowBox[{"N", " ", "+", " ", "J"}], ")"}]}], ")"}], "/", "365"}], " ", "-", " ", RowBox[{"\[Phi]", " ", "J", " ", "N"}], " ", "+", " ", RowBox[{"\[Alpha]", " ", "J"}]}]}], "\[IndentingNewLine]", RowBox[{"Jdot", " ", "=", " ", RowBox[{ RowBox[{"\[Phi]", " ", "J", " ", "N"}], " ", "-", " ", RowBox[{"\[Gamma]", " ", "J"}], " ", "-", " ", RowBox[{"\[Alpha]", " ", "J"}]}]}]}], "Input"], Cell[BoxData[ RowBox[{"fixedpoint", " ", "=", " ", RowBox[{"Solve", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Ndot", "\[Equal]", "0"}], ",", " ", RowBox[{"Jdot", "\[Equal]", "0"}]}], "}"}], ",", RowBox[{"{", RowBox[{"N", ",", "J"}], "}"}]}], "]"}]}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"MITModel", "=", " ", RowBox[{"{", RowBox[{ RowBox[{"\[Phi]", "->", " ", RowBox[{"0.75", "/", RowBox[{"(", RowBox[{"365", "*", "365"}], ")"}]}]}], ",", " ", RowBox[{"\[Alpha]", "->", RowBox[{"0.5", "/", "365"}]}], ",", " ", RowBox[{"\[Gamma]", "->", " ", RowBox[{"0.99", RowBox[{ RowBox[{"(", RowBox[{"1", "/", "3"}], ")"}], "/", "365"}]}]}]}], "}"}]}], ";"}]], "Input"], Cell[BoxData[ RowBox[{"fixedpoint", "/.", "MITModel"}]], "Input"], Cell[TextData[{ "The next final part of this notebook examines the ", StyleBox["stability", FontWeight->"Bold"], " of the critical point for this problem. This is discussed in Kreyszig ", StyleBox["AEM", FontSlant->"Italic"], ", pp. 170\[Dash]174. Kreyszig describes the stability analysis in terms of \ an eigenvalue problem. The matrix for which eigenvalues are calculated is the \ \"Jacobian\" defined below. It is the same as the matrix ", StyleBox["A", FontWeight->"Bold"], " in Kreyszig's Eq. (1) on p. 170." }], "Text"], Cell["Define the general Jacobian", "Text", CellTags->"mmtag:24:jacobian__relation_to_fixed_points"], Cell[BoxData[{ RowBox[{ RowBox[{"Jacob", " ", "=", " ", RowBox[{"{", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"D", "[", RowBox[{"Ndot", ",", "N"}], "]"}], ",", " ", RowBox[{"D", "[", RowBox[{"Ndot", ",", "J"}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ RowBox[{"D", "[", RowBox[{"Jdot", ",", "N"}], "]"}], ",", " ", RowBox[{"D", "[", RowBox[{"Jdot", ",", "J"}], "]"}]}], "}"}]}], "\[IndentingNewLine]", "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"Jacob", "//", "MatrixForm"}]}], "Input"], Cell["Find the Jacobian at the fixed point:", "Text"], Cell[BoxData[{ RowBox[{ RowBox[{"JacobFixedPoints", "=", " ", RowBox[{"Simplify", "[", RowBox[{"Jacob", "/.", "fixedpoint"}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"JacobFixedPoints", "[", RowBox[{"[", "1", "]"}], "]"}], "//", "MatrixForm"}]}], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"JacobFixedPoints", "[", RowBox[{"[", "2", "]"}], "]"}], "//", "MatrixForm"}]], "Input"], Cell[" Compute eigenvalues of the Jacobian at the fixed point", "Section"], Cell[BoxData[ RowBox[{"evals", " ", "=", " ", RowBox[{"{", RowBox[{ RowBox[{"Eigenvalues", "[", RowBox[{"JacobFixedPoints", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], ",", RowBox[{"Eigenvalues", "[", RowBox[{"JacobFixedPoints", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "}"}]}]], "Input", CellTags->{ "mmtag:24:predator_prey_models__eigenvalues_and_fixed_point_stability", "mmtag:24:eigenvalues__and_fixed_point_stability"}], Cell[BoxData[{ RowBox[{ RowBox[{"MITModel", "=", " ", RowBox[{"{", RowBox[{ RowBox[{"\[Phi]", "->", RowBox[{"0.35", "/", RowBox[{"(", RowBox[{"365", "*", "365"}], ")"}]}]}], ",", " ", RowBox[{"\[Alpha]", "->", RowBox[{"0.5", "/", "365"}]}], ",", " ", RowBox[{"\[Gamma]", "->", " ", RowBox[{"0.99", RowBox[{ RowBox[{"(", RowBox[{"1", "/", "3"}], ")"}], "/", "365"}]}]}]}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"fixedpoint", "/.", "MITModel"}], "\[IndentingNewLine]", RowBox[{"evals", "/.", "MITModel"}]}], "Input"], Cell["\<\ The Eigenvalues will always have a negative real part because the input \ parameters are positive real coefficients\ \>", "Text"], Cell["\<\ Considering the parameters used above, the solution is attracted to the fixed \ point but oscillates\ \>", "Text"] }, Closed]] }, CellGrouping->Manual, WindowSize->{1039, 668}, WindowMargins->{{Automatic, -1195}, {Automatic, 87}}, WindowTitle->"Lecture 24 MIT 3.016 (Fall 2010) \[Copyright] W. Craig Carter \ 2003--2010", PrintingCopies->1, PrintingPageRange->{1, Automatic}, ShowCellLabel->False, CellLabelAutoDelete->True, FrontEndVersion->"7.0 for Mac OS X x86 (32-bit) (November 11, 2008)", StyleDefinitions->FrontEnd`FileName[{"Creative"}, "NaturalColor.nb", CharacterEncoding -> "UTF-8"] ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{ "mmtag:24:the_MIT_joke_model"->{ Cell[1165, 36, 216, 5, 70, "Subsection", CellTags->"mmtag:24:the_MIT_joke_model"], Cell[1384, 43, 1104, 20, 70, "Subsection", CellTags->"mmtag:24:the_MIT_joke_model"]}, "mmtag:24:PolulationForgetFullness"->{ Cell[3454, 93, 342, 8, 70, "Input", CellTags->"mmtag:24:PolulationForgetFullness"]}, "mmtag:24:JokeFunniness"->{ Cell[4705, 129, 382, 10, 70, "Input", CellTags->"mmtag:24:JokeFunniness"]}, "mmtag:24:NestList[]"->{ Cell[7047, 199, 199, 5, 70, "Input", CellTags->"mmtag:24:NestList[]"]}, "mmtag:24:the_MIT_joke_model__fixed_point_visualized"->{ Cell[7388, 211, 1017, 28, 70, "Input", CellTags->"mmtag:24:the_MIT_joke_model__fixed_point_visualized"], Cell[8854, 250, 1017, 28, 70, "Input", CellTags->"mmtag:24:the_MIT_joke_model__fixed_point_visualized"]}, "mmtag:24:graphics_list__example"->{ Cell[10070, 286, 1102, 28, 70, "Input", CellTags->"mmtag:24:graphics_list__example"]}, "mmtag:24:the_MIT_joke_model__visualized"->{ Cell[11175, 316, 537, 14, 70, "Input", CellTags->"mmtag:24:the_MIT_joke_model__visualized"], Cell[12028, 343, 1190, 34, 70, "Input", CellTags->"mmtag:24:the_MIT_joke_model__visualized"]}, "mmtag:24:predator_prey_models__stability_of"->{ Cell[13510, 391, 123, 1, 31, "Subtitle", CellTags->"mmtag:24:predator_prey_models__stability_of"]}, "mmtag:24:jacobian__relation_to_fixed_points"->{ Cell[16112, 476, 101, 1, 26, "Text", CellTags->"mmtag:24:jacobian__relation_to_fixed_points"]}, "mmtag:24:predator_prey_models__eigenvalues_and_fixed_point_stability"->{ Cell[17430, 519, 479, 12, 70, "Input", CellTags->{ "mmtag:24:predator_prey_models__eigenvalues_and_fixed_point_stability", "mmtag:24:eigenvalues__and_fixed_point_stability"}]}, "mmtag:24:eigenvalues__and_fixed_point_stability"->{ Cell[17430, 519, 479, 12, 70, "Input", CellTags->{ "mmtag:24:predator_prey_models__eigenvalues_and_fixed_point_stability", "mmtag:24:eigenvalues__and_fixed_point_stability"}]} } *) (*CellTagsIndex CellTagsIndex->{ {"mmtag:24:the_MIT_joke_model", 19424, 582}, {"mmtag:24:PolulationForgetFullness", 19643, 587}, {"mmtag:24:JokeFunniness", 19762, 590}, {"mmtag:24:NestList[]", 19869, 593}, {"mmtag:24:the_MIT_joke_model__fixed_point_visualized", 20004, 596}, {"mmtag:24:graphics_list__example", 20263, 601}, {"mmtag:24:the_MIT_joke_model__visualized", 20401, 604}, {"mmtag:24:predator_prey_models__stability_of", 20649, 609}, {"mmtag:24:jacobian__relation_to_fixed_points", 20804, 612}, {"mmtag:24:predator_prey_models__eigenvalues_and_fixed_point_stability", \ 20980, 615}, {"mmtag:24:eigenvalues__and_fixed_point_stability", 21226, 620} } *) (*NotebookFileOutline Notebook[{ Cell[628, 22, 50, 0, 66, "Title"], Cell[CellGroupData[{ Cell[703, 26, 74, 0, 31, "Subtitle"], Cell[780, 28, 382, 6, 70, "Section"], Cell[1165, 36, 216, 5, 70, "Subsection", CellTags->"mmtag:24:the_MIT_joke_model"], Cell[1384, 43, 1104, 20, 70, "Subsection", CellTags->"mmtag:24:the_MIT_joke_model"], Cell[2491, 65, 338, 7, 70, "Text"], Cell[2832, 74, 328, 10, 70, "Input"], Cell[3163, 86, 288, 5, 70, "Text"], Cell[3454, 93, 342, 8, 70, "Input", CellTags->"mmtag:24:PolulationForgetFullness"], Cell[3799, 103, 214, 4, 70, "Text"], Cell[4016, 109, 421, 11, 70, "Input"], Cell[4440, 122, 262, 5, 70, "Text"], Cell[4705, 129, 382, 10, 70, "Input", CellTags->"mmtag:24:JokeFunniness"], Cell[5090, 141, 69, 0, 70, "Text"], Cell[5162, 143, 536, 12, 70, "Input"], Cell[5701, 157, 75, 0, 70, "Text"], Cell[5779, 159, 535, 13, 70, "Input"], Cell[6317, 174, 50, 0, 70, "Text"], Cell[6370, 176, 416, 11, 70, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[6823, 192, 51, 0, 31, "Subtitle"], Cell[6877, 194, 167, 3, 70, "Text"], Cell[7047, 199, 199, 5, 70, "Input", CellTags->"mmtag:24:NestList[]"], Cell[7249, 206, 136, 3, 70, "Text"], Cell[7388, 211, 1017, 28, 70, "Input", CellTags->"mmtag:24:the_MIT_joke_model__fixed_point_visualized"], Cell[8408, 241, 443, 7, 70, "Text"], Cell[8854, 250, 1017, 28, 70, "Input", CellTags->"mmtag:24:the_MIT_joke_model__fixed_point_visualized"], Cell[9874, 280, 193, 4, 70, "Text"], Cell[10070, 286, 1102, 28, 70, "Input", CellTags->"mmtag:24:graphics_list__example"], Cell[11175, 316, 537, 14, 70, "Input", CellTags->"mmtag:24:the_MIT_joke_model__visualized"], Cell[11715, 332, 98, 2, 70, "Text"], Cell[11816, 336, 209, 5, 70, "Input"], Cell[12028, 343, 1190, 34, 70, "Input", CellTags->"mmtag:24:the_MIT_joke_model__visualized"], Cell[13221, 379, 252, 7, 70, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[13510, 391, 123, 1, 31, "Subtitle", CellTags->"mmtag:24:predator_prey_models__stability_of"], Cell[13636, 394, 444, 14, 84, "Text"], Cell[14083, 410, 38, 0, 26, "Text"], Cell[14124, 412, 564, 15, 53, "Input"], Cell[14691, 429, 305, 9, 37, "Input"], Cell[14999, 440, 498, 16, 37, "Input"], Cell[15500, 458, 66, 1, 37, "Input"], Cell[15569, 461, 540, 13, 41, "Text"], Cell[16112, 476, 101, 1, 26, "Text", CellTags->"mmtag:24:jacobian__relation_to_fixed_points"], Cell[16216, 479, 652, 19, 98, "Input"], Cell[16871, 500, 53, 0, 26, "Text"], Cell[16927, 502, 294, 8, 70, "Input"], Cell[17224, 512, 126, 3, 70, "Input"], Cell[17353, 517, 74, 0, 70, "Section"], Cell[17430, 519, 479, 12, 70, "Input", CellTags->{ "mmtag:24:predator_prey_models__eigenvalues_and_fixed_point_stability", "mmtag:24:eigenvalues__and_fixed_point_stability"}], Cell[17912, 533, 624, 18, 70, "Input"], Cell[18539, 553, 139, 3, 70, "Text"], Cell[18681, 558, 124, 3, 70, "Text"] }, Closed]] } ] *) (* End of internal cache information *)