(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 3.0, MathReader 3.0, or any compatible application. The data for the notebook starts with the line of 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[ 7898, 200]*) (*NotebookOutlinePosition[ 8576, 224]*) (* CellTagsIndexPosition[ 8532, 220]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["Qualitative Behavior of Non-Linear Systems: Limit Cycles.", "Subsection", FontFamily->"Helvetica", FontSize->24], Cell[BoxData[ \(Needs["\"]\)], "Input"], Cell[TextData[{ "We again consider a non-linear autonomous 2 x 2 system of ODE's.\n \ x' = f(x,y)\n y' = g(x,y)\nwhere for simplicity we assume that all \ partial derivatives of f and g with respect to x and y exist and are \ continuous. The Poincare-Bendixson Theorem asserts that any solution (x(t), \ y(t)) of such a system exhibits one of three behaviors as t goes to infinity. \ The first possibility is divergence--i.e. (x,y) goes to infinity as t \ increases. The second possibility is convergence to\na critical point--i.e. \ \n\n ", Cell[BoxData[ \(TextForm \`lim\+\(t\[LongRightArrow]\[Infinity]\)\((x \((t)\), y \((t)\))\)\ = \ \((x\_0, y\_0)\)\)]], ",\n \nwhere (", Cell[BoxData[ \(TextForm\`\(\(x\_0, y\_0)\)\ \)\)]], "is a constant solution of the system. The last possibility,\nand the one \ we will illustrate here, is that of convergence to a so-called\nlimit cycle. \ That is, it can happen for some systems and some intial conditions that ( \ x(t), y(t) ) is asymptotically periodic. A simple example of such behavior \ is exhibited by solutions of the linear system \n\n x'(t) = y(t)\n\ y'(t) = -x(t).\n \nThe general solution is \n\n \ ( x(t), y(t) ) = ( r cos (t+", Cell[BoxData[ \(TextForm\`\(\(\(t\_0)\), \ r\ sin \((t + t\_0)\)\ )\), \)\)]], "\n \nwhere ", Cell[BoxData[ \(TextForm \`\(t\_0\) and\ r\ are\ constants . \ \ One\ can\ easily\ see\ that\ when\ r\ is\)]], " not zero that\nall solution curves are circles, and (x(t), y(t) ) moves \ around one of these\ncircles at a constant rate. In this case, non-zero \ solutions are not just asymptotically periodic; they are simply periodic... \ period.\n\nA more complicated example of a limit cycle is provided by \ changing the previous example slightly so that it becomes non-linear. That \ is, we take the right side of the system" }], "Text"], Cell[BoxData[{ \(f[x_, y_]\ = \ y\), \(g[x_, y_]\ = \ \(-x\)\ + \ .2 \((1 - x^2)\) y\)}], "Input"], Cell["\<\ for some small but non-zero number a. Note that (0,0) is still a \ critical point of this system. We look at a direction field \t\t\t\ \>", "Text"], Cell[BoxData[ \(\(\(PlotVectorField[{f[x, y], g[x, y]}, {x, \(-4\), 4}, {y, \(-4\), 4}, \n\tAxesOrigin -> {0, 0}, \n\tAxes -> \ True, \n\t ScaleFunction \[Rule] \((1&)\), Ticks \[Rule] None, Frame \[Rule] True, AspectRatio \[Rule] 1, \ PlotPoints\ -> \ 20]; \)\n\)\)], "Input"], Cell["\<\ We definitely see a lot of rotation in this vector field--not \ surprising considering the fact that the system under scrutiny is a slight variation on a linear \ system with purely imaginary eigenvalues. To see if anything else is going on, we \ linearize about the origin and look at the eigenvalues of the linearization.\ \>", "Text"], Cell[BoxData[ \(Jac[x_, y_]\ = \ {{D[f[x, y], x], D[f[x, y], y]}, \n \t\t{D[g[x, y], x], D[g[x, y], y]}}; \nMatrixForm[Jac[x, y]]\)], "Input"], Cell[BoxData[ \(Eigenvalues[Jac[0, 0]]\)], "Input"], Cell["\<\ So actually the eigenvalues have become complex with positive real \ parts. Hence we expect solutions starting near zero to spiral outward. We \ check this for the nonlinear system by plotting a solution curve with \ initial condition (0,.01).\ \>", "Text"], Cell[BoxData[ \(\(soln[t1_, t2_, a_, b_]\ := \ {x[t], y[t]} /. First[\n\t\t\t NDSolve[\ {\(x'\)[t] == f[x[t], y[t]], \(y'\)[t] == g[x[t], y[t]], \n\t\t\t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ x[0]\ == \ a, \ y[0]\ == \ b}, \n \t\t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {x[t], y[t]}, \n \t\t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {t, t1, t2}]\n\t\t\t] \n\)\)], "Input"], Cell[BoxData[ \(\(ParametricPlot[Evaluate[soln[0, 100, 0, \ .1]], \n \t\ \ \ {t, 0, 100}, \n\tAspectRatio -> Automatic, \n\t AxesOrigin -> {0, 0}, \n\tPlotRange -> {{\(-4\), 4}, {\(-4\), 4}}, \n\t Ticks \[Rule] None, \n\tFrame \[Rule] True\t\ \ \ \n]; \)\)], "Input"], Cell["\<\ That is, the solution spirals outward until it settles down into a \ sort of circular pattern. The limiting shape is what we mean by a limit cycle. We \ now replot this solution together with two solution curves beginning outside the limit cycle.\ \>", "Text"], Cell[BoxData[ \(\(ParametricPlot[ Evaluate[{soln[0, 50, 0, \ .1], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ soln[0, 50, 0, \ 4], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ soln[0, 50, 0, \ \(-4\)]}], \n \t\ \ \ {t, 0, 50}, \n\tAspectRatio -> Automatic, \n\t AxesOrigin -> {0, 0}, \n\tPlotRange -> {{\(-4\), 4}, {\(-4\), 4}}, \n\t Ticks \[Rule] None, \n\tFrame \[Rule] True\t\ \ \ \n]; \)\)], "Input"], Cell["\<\ So solutions starting from outside the limit cycle can also spiral \ in toward the limit cycle. It is interesting to explore the limits of this behavior. If we increase the scale of the picture, and consider solutions with starting points evenly space along the line y=-x, we obtain the \ following\ \>", "Text"], Cell[BoxData[ \(\(ParametricPlot[ Evaluate[Table[soln[0, 50, c, \ \(-c\)], \n\t{c, \(-50\), 50, 4}]], \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \n\ \ {t, 0, 50}, \n\tAspectRatio -> Automatic, \n\tAxesOrigin -> {0, 0}, \n\t PlotRange -> {{\(-50\), 50}, {\(-50\), 50}}, \n\tTicks \[Rule] None, \n \tFrame \[Rule] True\t\ \ \ \n]; \)\)], "Input"], Cell["\<\ It's looking like no matter how far out we start, the solution \ spirals in toward the limit cycle.\ \>", "Text"] }, Open ]] }, FrontEndVersion->"X 3.0", ScreenRectangle->{{0, 1280}, {0, 1024}}, ScreenStyleEnvironment->"Presentation", WindowSize->{568, 578}, WindowMargins->{{Automatic, 198}, {114, Automatic}} ] (*********************************************************************** 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[1731, 51, 126, 3, 97, "Subsection"], Cell[1860, 56, 65, 1, 39, "Input"], Cell[1928, 59, 1989, 36, 779, "Text"], Cell[3920, 97, 111, 2, 63, "Input"], Cell[4034, 101, 161, 4, 89, "Text"], Cell[4198, 107, 302, 4, 207, "Input"], Cell[4503, 113, 348, 8, 181, "Text"], Cell[4854, 123, 165, 4, 87, "Input"], Cell[5022, 129, 55, 1, 39, "Input"], Cell[5080, 132, 272, 5, 112, "Text"], Cell[5355, 139, 466, 9, 207, "Input"], Cell[5824, 150, 290, 4, 207, "Input"], Cell[6117, 156, 272, 6, 112, "Text"], Cell[6392, 164, 594, 9, 255, "Input"], Cell[6989, 175, 323, 7, 112, "Text"], Cell[7315, 184, 441, 7, 255, "Input"], Cell[7759, 193, 123, 4, 50, "Text"] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)