1. Trang chủ
  2. » Luận Văn - Báo Cáo

Invitation to Dynamical Systems97

289 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 289
Dung lượng 6,64 MB

Nội dung

Invitation to Dynamical Systems Edward R Scheinerman Department of Mathematical Sciences The Johns Hopkins University The following is the Library of Congress information from the original version of this book Library of Congress Cataloging-in-Publication Data Scheinerman, Edward R Invitation to dynamical systems / Edward R Scheinerman p cm Includes bibliographical references and index ISBN 0-13-185000-8 Differentiable dynamical systems I Title QA614.8.S34 1996 003’.85 dc20 95-11071 CIP All rights reserved No part of this book may be reproduced, in any form or by any means, without permission in writing from the author The names Excel, Macintosh, Maple, Mathcad, Mathematica, MATLAB, Monopoly, Mosaic, MS-DOS, Unix, Windows, and X-Windows are trademarks or registered trademarks of their respective manufacturers To Amy iv Foreword This is the internet version of Invitation to Dynamical Systems Unfortunately, the original publisher has let this book go out of print The version you are now reading is pretty close to the original version (some formatting has changed, so page numbers are unlikely to be the same, and the fonts are different) If you would like to use this book for your own personal use, you may so If you would like to photocopy this book for use in teaching a course, I will give you my permission (but please ask) Please contact me at ers@jhu.edu Thanks Please note: Some of the supporting information in this version of the book is obsolete For example, the description of some Matlab commands might be incorrect because this book was written when Matlab was at version In particular, the syntax for the Matlab commands ode23 and ode45 have changed in the new release of Matlab Please consult the Matlab documentation The various supporting materials (web site, answer key, etc.) are not being maintained at this time Ed Scheinerman June, 2000 v vi Foreword Contents Forward v Preface ix Introduction 1.1 What is a dynamical system? 1.1.1 State vectors 1.1.2 The next instant: discrete time 1.1.3 The next instant: continuous time 1.1.4 Summary Problems 1.2 Examples 1.2.1 Mass and spring 1.2.2 RLC circuits 1.2.3 Pendulum 1.2.4 Your bank account 1.2.5 Economic growth 1.2.6 Pushing buttons on your calculator 1.2.7 Microbes 1.2.8 Predator and prey 1.2.9 Newton’s Method 1.2.10 Euler’s method 1.2.11 “Random” number generation Problems 1.3 What we want; what we can get 1 4 6 12 12 14 16 17 19 20 23 23 25 Linear Systems 27 2.1 One dimension 2.1.1 Discrete time 2.1.2 Continuous time 2.1.3 Summary Problems 2.2 Two (and more) dimensions 2.2.1 Discrete time 2.2.2 Continuous time 2.2.3 The nondiagonalizable case* Problems 2.3 Examplification: Markov chains 2.3.1 Introduction 2.3.2 Markov chains as linear systems 2.3.3 The long term Problems 27 27 32 35 35 36 37 41 60 63 66 66 67 69 70 vii viii CONTENTS Nonlinear Systems 1: Fixed Points 73 3.1 Fixed points 73 3.1.1 What is a fixed point? 73 3.1.2 Finding fixed points 74 3.1.3 Stability 75 Problems 78 3.2 Linearization 79 3.2.1 One dimension 79 3.2.2 Two and more dimensions 85 Problems 91 3.3 Lyapunov functions 93 3.3.1 Linearization can fail 93 3.3.2 Energy 95 3.3.3 Lyapunov’s method 96 3.3.4 Gradient systems 100 Problems 104 3.4 Examplification: Iterative methods for solving equations 106 Problems 109 Nonlinear Systems 2: Periodicity and Chaos 111 4.1 Continuous time 111 4.1.1 One dimension: no periodicity 111 4.1.2 Two dimensions: the Poincar´e-Bendixson theorem 112 4.1.3 The Hopf bifurcation* 116 4.1.4 Higher dimensions: the Lorenz system and chaos 118 Problems 121 4.2 Discrete time 122 4.2.1 Periodicity 123 4.2.2 Stability of periodic points 126 4.2.3 Bifurcation 127 4.2.4 Sarkovskii’s theorem* 137 4.2.5 Chaos and symbolic dynamics 147 Problems 157 4.3 Examplification: Riffle shuffles and the shift map 159 4.3.1 Riffle shuffles 159 4.3.2 The shift map 160 4.3.3 Shifting and shuffling 162 4.3.4 Shuffling again and again 165 Problems 166 Fractals 169 5.1 Cantor’s set 169 5.1.1 Symbolic representation of Cantor’s set 170 5.1.2 Cantor’s set in conventional notation 170 5.1.3 The link between the two representations 172 5.1.4 Topological properties of the Cantor set 173 5.1.5 In what sense a fractal? 175 Problems 176 5.2 Biting out the middle in the plane 177 5.2.1 Sierpi´ nski’s triangle 177 5.2.2 Koch’s snowflake 177 Problems 178 5.3 Contraction mapping theorems 180 5.3.1 Contraction maps 180 5.3.2 Contraction mapping theorem on the real line 181 5.3.3 Contraction mapping in higher dimensions 182 5.3.4 Contractive affine maps: the spectral norm* 182 CONTENTS 5.4 5.5 5.6 5.7 ix 5.3.5 Other metric spaces 185 5.3.6 Compact sets and Hausdorff distance 186 Problems 188 Iterated function systems 189 5.4.1 From point maps to set maps 190 5.4.2 The union of set maps 191 5.4.3 Examples revisited 193 5.4.4 IFSs defined 197 5.4.5 Working backward 197 Problems 201 Algorithms for drawing fractals 202 5.5.1 A deterministic algorithm 202 5.5.2 Dancing on fractals 203 5.5.3 A randomized algorithm 206 Problems 208 Fractal dimension 209 5.6.1 Covering with balls 209 5.6.2 Definition of dimension 211 5.6.3 Simplifying the definition 212 5.6.4 Just-touching similitudes and dimension 218 Problems 222 Examplification: Fractals in nature 223 5.7.1 Dimension of physical fractals 224 5.7.2 Estimating surface area 225 5.7.3 Image analysis 228 Problems 230 Complex Dynamical Systems 6.1 Julia sets 6.1.1 Definition and examples 6.1.2 Escape-time algorithm 6.1.3 Other Julia sets Problems 6.2 The Mandelbrot set 6.2.1 Definition and various views 6.2.2 Escape-time algorithm Problems 6.3 Examplification: Newton’s method revisited Problems 6.4 Examplification: Complex bases 6.4.1 Place value revisited 6.4.2 IFSs revisited Problems 231 231 231 235 238 238 238 238 242 243 243 245 245 245 246 248 A Background Material 249 A.1 Linear algebra 249 A.1.1 Much ado about 249 A.1.2 Linear independence 249 A.1.3 Eigenvalues/vectors 250 A.1.4 Diagonalization 250 A.1.5 Jordan canonical form* 251 A.1.6 Basic linear transformations of the plane 251 A.2 Complex numbers 253 A.3 Calculus 254 A.3.1 Intermediate and mean value theorems 254 A.3.2 Partial derivatives 255 A.4 Differential equations 256 CONTENTS x A.4.1 Equations 256 A.4.2 What is a differential equation? 256 A.4.3 Standard notation 257 B Computing B.1 Differential equations B.1.1 Analytic solutions B.1.2 Numerical solutions B.2 Triangle Dance B.3 About the accompanying software Bibliography Index 259 259 259 260 266 267 269 271 Appendix B Computing Mathematics advances through discovery and proof Without proof, our observations are merely conjectural We not stress rigorous proofs in this book because our aim is to invite readers into the world of dynamical systems Proofs, however, are the second step in the process.1 We first need to discover the truths we hope to prove And there is no better exploration tool for dynamical systems than the computer Discovery and proof In this appendix we first consider (§B.1) how to use the computer to solve differential equations We show how to find both analytic and numerical solutions In §B.2 we give programs to perform the triangle dance of §5.5.2 Finally, in §B.3 we discuss the software which accompanies this book B.1 Differential equations A computer can be used to solve differential equations There are two types of solutions we can hope for Computer algebra packages (such as Maple and Mathematica) can find analytic solutions, i.e., formulas, in nearly standard mathematical notation, for the functions which solve the differential equation Sometimes analytic solutions are beyond the grasp of computer or human differential equation solvers In this case, numerical methods can be useful We show (§B.1.2) how to use Maple, Matlab, and Mathematica to find numerical solutions to differential equations B.1.1 Analytic solutions Suppose we are given a differential equation, such as equation (A.8) (from page 257) or equation (A.9) We repeat these equations here for your convenience: y0 = 2t + (A.8) y 00 = y (A.9) In this section we show how to use Maple and Mathematica to solve these equations Maple To solve these equations using Maple type, dsolve( diff(y(t),t) = 2*t+1, y(t) ); Please take the sequence “discovery first, proof second” with the proverbial grain of salt In research, I have had the experience of figuring out a proof and then spending a few hours trying to figure out just what the theorem was that was proved 259 The Maple command dsolve APPENDIX B COMPUTING 260 and the computer responds: y(t) = t + t + _C1 The dsolve command tells the computer you want to solve a differential equation For more detail on how to use it, give the command help(dsolve); Here is how to solve equation (A.9) in Maple Give the command dsolve( diff(y(t),t$2) = y, y(t) ); and the computer responds: y(t) = _C1 exp(t) + _C2 exp(- t) The diff(y(t),t$2) stands for the second derivative of y with respect to t Mathematica The Mathematica command DSolve Mathematica can also solve differential equations (A.8) and (A.9) To solve equation (A.8), type DSolve[ y’[t] == 2t+1, y[t], t] and the computer responds: {{y[t] -> t + t + C[1]}} To solve equation (A.9), type DSolve[ y’’[t] == y[t], y[t], t] and the computer replies: C[1] {{y[t] -> + E t E t C[2]}} In Mathematica, to get more information on how to solve differential equations, give the command ?DSolve and press ENTER B.1.2 A differential equation that’s too hard to solve Numerical solutions Consider the following differential equation: y + y = t (B.1) This is a difficult equation to solve Indeed, it stumps Mathematica If we type DSolve[y’[t] + y[t]^2 == t, y[t], t] the computer responds (rather unhelpfully): DSolve[y[t] + y’[t] == t, y[t], t] Mathematica is telling us that it doesn’t know how to solve this differential equation analytically and simply returns it to us unsolved This is very disappointing However, let us try for a more modest goal Suppose we are given that y (0) = 1, and all we really want to know is y (1.2) It would seem that without a formula for y(t) we are stuck However, using numerical methods we can still answer our question Here we show how to use numerical methods to compute y (t) and to plot its graph B.1 DIFFERENTIAL EQUATIONS 261 1.2 1.1 0.5 1.5 0.9 0.8 Figure B.1: The graph of y(t) for the function y defined by equation (B.1) This graph was produced by Mathematica Mathematica In Mathematica we use the NDSolve command as follows: ans = NDSolve[{y’[t] + y[t]^2 == t, y[0]==1}, y, {t,0,2}] The Mathematica command NDSolve The NDSolve command takes three arguments The first is a list of equations (in braces); in this case the equations y0 + y2 = t and y (0) = are entered as y’[t] + y[t]^2 == t and y[0]==1 The second argument is the name of the independent variable, y in this case The third argument is a three-element list giving the name of the dependent variable and the first and last values the variable takes We want to deal with y(t) over the range ≤ t ≤ 2, so we give {t,0,2} as the third argument to NDSolve We begin the command with “ans =” so the computer will save the result in a variable called ans After we give the NDSolve command, Mathematica responds: {{y -> InterpolatingFunction[{0., 2.}, ]}} This is rather cryptic Suffice it to say that a function approximating y (t) is saved in ans Now, how we compute (say) y(1.2)? We give the command y[1.2] / ans This means (roughly): Please compute y(1.2) subject to the transformation rules in ans The computer responds to this command with the answer we want: {0.903008} We also might like to plot a graph of the function y (t) To so, we give the command Plot[ y[t] / ans, {t,0,2} ] and the computer plots the graph of y(t) over the range ≤ t ≤ The output of this command is shown in Figure B.1 Mathematica can also give numerical solutions to systems of differential equations Recall equation (1.16) on page 10: θ ω = ω − sin θ Suppose that this system starts with θ(0) = and ω(0) = We can compute the trajectory of this system via the Mathematica commands A more complicated example for Mathematica 262 APPENDIX B COMPUTING ans2 = NDSolve[ { theta’[t] == omega[t], omega’[t] == -Sin[theta[t]], omega[0] == 0, theta[0] == 3}, {omega,theta}, {t,0,30} ]; Plot[{theta[t] / ans2, omega[t] / ans2} , {t,0,30}]; The first command (which begins ans2 = NDSolve[ and ends a few lines later at the close bracket–semicolon) uses NDSolve to find approximating functions for ω(t) and θ(t) The result is saved in a variable called ans2 The second command Plot[ tells the computer to plot the graphs of θ(t) and ω(t) over the range ≤ t ≤ 30 The result is very similar to Figure 1.5 on page 11 MATLAB The Matlab command ode45 Now we show how to use Matlab to solve equations (B.1) and (1.16) Recall that equation (B.1) is y + y2 = t In order for Matlab to work with this equation, we first need to solve for y0 This is easy: y0 = t − y Next, we need to tell Matlab how to compute y0 given t and y We this by creating a file such as the following: function yprime = example(t,y) % % We use this function, together with ode45, % to numerically solve differential equation (B.1): % % y’ + y^2 = t % yprime = t - y^2; We save this file as example.m (the lines beginning with a percent sign % are comments and may be omitted) Next we have to tell Matlab what to with this file We use the ode45 command to compute the numerical values of y (t) In Matlab we give the command [t,y] = ode45(’example’, 0, 2, 1); Using the Matlab command interp1, but poorly Let’s examine this piece by piece The ode45 command gives two results The “[t,y] =” saves the two outputs in the variables t and y, respectively The first argument to ode45 is the name of the file which computes the right-hand side of the differential equation y0 = · · · In this case the file is example.m; we don’t type the m, and we enclose the name of the file in single quotes The second and third arguments (0 and 2) are the initial and final values of t we wish to consider The fourth argument, 1, is the initial value of y , i.e., y(0) = Finally, the command ends with a semicolon—this tells Matlab not to print the values of t and y on the screen Now we would like to compute y (1.2) and to plot the graph of y (t) on the screen Here is how we each of these tasks To interpolate the value of y (1.2) we use the Matlab function interp1 We type interp1(t,y,1.2) and the computer responds: B.1 DIFFERENTIAL EQUATIONS 263 1.3 1.2 1.1 0.9 0.8 0.7 0.2 0.4 0.6 0.8 1.2 1.4 1.6 1.8 Figure B.2: The graph of y(t) for the function y defined by equation (B.1) This graph was produced by Matlab 0.9037 You might notice that this answer disagrees with the y(1.2) we computed using Mathematica (where we found y(1.2) ≈ 0.903008) The inaccuracy is in how we used interp1 When ode45 computes y, it does so only for a modest number of values of t To find y(t) for another value, we use interp1 to interpolate The default action of interp1 is to approximate the curve y(t) by a straight line between the two values of t nearest 1.2 A better method of interpolation is to use cubic splines The interp1 command can use this method in place of linear interpolation To so, we type interp1(t,y,1.2,’spline’) and the computer responds: 0.9030 This agrees with Mathematica’s answer to the number of digits shown (Internally, Matlab has interpolated y (1.2) to be 0.90300610924786, which is extremely close to the value found by Mathematica.) Next, to plot a graph of y(t) we give the following command to Matlab: plot(t,y) and the result is shown in Figure B.2 To compute the motion of the rigid pendulum of §1.2.3 we again use the Matlab command ode45 The first thing Matlab needs is a version of equation (1.16) it can understand As before, we this by creating a file we call pendulum.m function xprime = pendulum(t,x) % % This function computes the right side % of equation (1.16) for use with the ode45 % differential equation solver % the first component of the state vector x is theta % and the second component is omega theta = x(1); omega = x(2); thetaprime = omega; omegaprime = -sin(theta); % the result is placed in xprime with the first % component of xprime being omega and the second % component being sin(theta) xprime = [thetaprime; omegaprime]; Using the Matlab command interp1 for greater accuracy APPENDIX B COMPUTING 264 Next, we need to give Matlab the ode45 command according to the following syntax: [t,x] = ode45(’pendulum’,t start ,t finish ,x ); where tstart is the initial time (we use 0), tfinish is the ending time, and x is the initial state vector We can then call plot(t,x) to obtain a picture of how the state variables (θ and ω) vary with time θ(0) = 0.1 The command we give is Let’s try this starting with x = ω(0) [t,x] = ode45(’pendulum’,0,20,[0.1;0]); We then give the command plot(t,x), and the result is shown in Figure 1.4 on page 11 For more information about the ode45 command, give Matlab the command help ode45 Maple The Maple command dsolve with the numeric option The dsolve in Maple, which produces analytic solutions to differential equations, can also be used to compute numerical solutions To solve equation (B.1) we give the command yy := dsolve( {D(y)(t) + (y(t))^2 = t, y(0)=1}, y(t), numeric): This defines yy to be a function which approximates the solution to equation (B.1) To find y(1.2), we give Maple the command yy(1.2); and the computer responds: 1.200000000, 9030065770 Do it yourself If you not have access to Matlab, Mathematica, or the like, it is not difficult to write your own program (in any common computer language such as Pascal or Basic) to find numerical solutions to differential equations The Runge-Kutta method While the Euler method (§1.2.10 on page 20) is the simplest to understand and to code, it is slow and inaccurate Here we present the Runge-Kutta method, a sample program (written in C), and the output The Runge-Kutta method is a simple-to-program, accurate method for computing numerical solutions to differential equations As in Matlab, we need to put the differential equation into standard form, namely y0 = f (t, y ) For our example, equation (B.1), we write y0 = t − y We also need to know the value of y at a particular value of t In our example, we know that at t = the value of y is The method computes y at increasing values of t At each step, we increase t by a small amount—called the step size—and we denote this quantity by h The smaller h is, the more accurate the results are, but more computations are required B.1 DIFFERENTIAL EQUATIONS 265 Given specific numbers for t and y (t), the method computes the values t + h and y(t + h) as follows: a ← f (t, y ), b ← f (t + h/2, y + ha/2), c ← f (t + h/2, y + hb/2), d ← f (t + h, y + hc), t ← t + h, y ← y + h(a + 2b + 2c + d)/6 At the end of one pass through these calculations, t and y = y(t) have their new values The steps are repeated until the desired range of t has been covered Here we give a C language program which uses the Runge-Kutta method to compute values of y(t) for differential equation (B.1) #include #define #define #define #define STEPSIZE TSTART TLAST YSTART 0.05 /* "h" in the method */ /* initial value for t */ /* last value for t */ /* initial value for y */ double f(t,y) /* a subroutine to compute the RHS */ double t,y; { return(t - y*y); } printout(t,y) /* a subroutine to print out t and y */ double t,y; { printf("%g\t%g\n",t,y); } main() { /* the main program starts here */ /* declare variables */ double t,y; /* t and y from algorithm */ double a,b,c,d; /* intermediate steps in RK */ double h; /* h = STEPSIZE */ /* initialize */ y = YSTART; t = TSTART; h = STEPSIZE; printout(t,y); while (t

Ngày đăng: 11/03/2022, 15:32

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN