A Numerical Study of the Lorenz and Lorenz-Stenflo Systems TOMMY EKOLA Doctoral Thesis Stockholm, Sweden 2005 ISBN 91-7283-997-X KTH Matematik SE-100 44 Stockholm SWEDEN Akademisk avhandling som med tillstånd av Kungl Tekniska högskolan framlägges till offentlig granskning för avläggande av teknologie doktorsexamen fredagen den 22 april 2005 kl. 10.00 i Sal M3, Kungl Tekniska högskolan, Brinellvägen 64, Stockholm. © Tommy Ekola, April 2005 Tryck: Universitetsservice US AB iii Abstract In 1998 the Swedish mathematician Warwick Tucker used rigorous interval arithmetic and normal form theory to prove the existence of a strange attractor in the Lorenz system. In large parts, that proof consists of computations implemented and performed on a computer. This thesis is an independent numerical verification of the result obtained by Warwick Tucker, as well as a study of a higher-dimensional system of ordinary differential equations introduced by the Swedish physicist Lennart Stenflo. The same type of mapping data as Warwick Tucker obtained is calculated here via a combination of numerical integration, solving optimisation problems and a coordinate change that brings the system to a normal form around the stationary point in the origin. This data is collected in a graph and the problem of determining the existence of a strange attractor is translated to a few graph theoretical problems. The end result, after the numerical study, is a support for the conclusion that the attractor set of the Lorenz system is a strange attractor and also for the conclusion that the Lorenz-Stenflo system possesses a strange attractor. Keywords. Warwick Tucker, Strange attractor, Lorenz equations, Lorenz-Stenflo equations, Lorenz attractor, Lorenz-Stenflo attractor, Dynamical systems, Normal form theory. 2000 Mathematics Subject Classification. Primary 37D45; Secondary 34C20, 65P20. iv Sammanfattning År 1998 bevisade den svenske matematikern Warwick Tucker med hjälp av rigorös intervallaritmetik och normalformsteori att en ”strange attractor” existerar för Lorenzsystemet. Till stora delar består detta bevis av beräkningar som programmerats på och utförts av en dator. Denna avhandling är en oberoende numerisk undersökning av Warwick Tuckers resultat och en studie av ett högredimensionellt system av ordinära differentialekvationer framtaget av den svenske fysikern Lennart Stenflo. Samma typ av avbildningsdata som Warwick Tucker använde i sitt bevis beräknas här via en kombination av numerisk integration, lösande av optimeringsproblem och ett koordinatbyte som omvandlar systemet till ett normalformssystem runt den stationära punkten i origo. Dessa data används i en graf för att avgöra om en ”strange attractor” existerar. Slutresultatet, efter den numeriska studien, stöder slutsatsen att en ”strange attractor” existerar för Lorenzsystemet och samma slutsats för Lorenz-Stenflo systemet. Preface In 1963 the American meteorologist Edward Lorenz presented a simple system of three ordinary differential equations with remarkably intricate solutions. Almost all solutions of this system tend to a complicated wing-sized subset of the phase space and on this subset, also known as the Lorenz attractor, orbits seem to exhibit a complex behaviour described in technical terms as a strange attractor. At the time this was a new phenomena and starting from the 1970’s, when there were more systematic studies performed, the Lorenz system has been one of the most prominent model problems in studying chaotical dynamical systems. It even has it that the famous mathematician Steven Smale mentioned proving the existence of a strange attractor in the Lorenz system as one of the eighteen great problems in mathematics for the twenty-first century [Mathematical Intelligencer 20 (1998), no. 2, pages 7–15]. Although the basic mechanism of the Lorenz system has more or less been well understood since the introduction of the geometric Lorenz model by John Guckenheimer and Robert F. Williams in 1979 the existence of a strange attractor remained an unsolved problem. During the 1980’s and early 1990’s several partial results were proved on the chaotical behaviour of the Lorenz equations but it was only in 1998 that the Swedish mathematician Warwick Tucker presented a proof via a novel combination of rigorous interval arithmetic and normal form theory. The purpose of this thesis is twofold: First, it is an independent numerical verification of the result obtained in the Lorenz case. It was felt that although Warwick Tucker profess to have a rigorous proof a large part of the calculations in his proof are performed on a computer and there is no easy way to ensure that his computer code is 100% correct. Secondly, the main focus in this thesis will be on an extended system of differential equations, called the Lorenz-Stenflo system. This will demonstrate that the method of Warwick Tucker also works in a higherdimensional situation. Needless to say, this thesis relies heavily on the work of Warwick Tucker but also contains modifications and improvements. The main features are: 1. The power series of the coordinate change functions φ and ψ, associated with the normal form system, are calculated with a high-order truncation which changes the remainder term estimates, especially that for ψ, and it was also natural to present the derivation in a new form. v vi 2. A more tight analysis of the difference between the normal form system and the linear system is needed to properly estimate cones as they flow through a cube centred at the origin and are flattened at the exit faces of the cube. A side effect of this is that the degree of the non-linearity of the normal form system can be chosen lower than before. 3. The invariant cone field is constructed in a more structured way and this results in narrower cones. This construction also works in a higher dimensional setting. 4. The total expansiveness of the return map is interpreted as a graph problem and solved in a more standard way. An important difference between this work and the work of Warwick Tucker is the usage of numerical integrator routines instead of rigorous interval arithmetic. This particular decision was made early on and the main motivation was to get a result closer to the true result by a combination of numerically integrating orbits and solving certain optimisation problems. Even if this means that the results obtained are not rigorous they can still be considered reliable as no orbit is integrated over any longer period of time. * I thank my advisor Professor Michael Benedicks for his continuous support during the years. My thanks also extend to the Department of Mathematics, KTH, for providing for me and offering a stimulating environment. Moreover, a big thank-you is in order to family and friends. Tommy Ekola Stockholm, 11 March 2005 Contents Contents vii 1 The 1.1 1.2 1.3 1.4 1.5 1.6 two systems A background to the Lorenz system The Lorenz attractor . . . . . . . . . The geometric Lorenz model . . . . The method of Warwick Tucker . . . Non-uniform hyperbolicity . . . . . . The Lorenz-Stenflo system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 7 10 15 16 2 The 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 numerical method A short summary . . Step 0 . . . . . . . . Step 1 and 2 . . . . Step 3 and 4 . . . . Step 5 and 6 . . . . Step 7 . . . . . . . . Step 8 and 9 . . . . Step 10 and 11 . . . Step 12 and 13 . . . Step 14 and 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 23 30 32 41 52 59 67 76 85 3 The 3.1 3.2 3.3 3.4 3.5 3.6 coordinate change around the origin The normal form method . . . . . . . . . The coordinate change function φ . . . . . The coordinate change function ψ . . . . The non-linear function G . . . . . . . . . The normal form flow . . . . . . . . . . . The Lorenz system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 91 92 105 114 120 130 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Results 135 A References 141 vii Chapter 1 The two systems 1.1 A background to the Lorenz system The first step towards a modern theory of meteorology was taken by the Norwegian meteorologist Vilhelm Bjerknes in 1904 [Meteorologische Zeitschrift 21 (1904), pages 1–7] when he wrote down the physical laws governing the state of the atmosphere as a set of integro-differential equations. The idea was that if you measured the relevant physical quantities at one time you could make a forecast of future weather by (numerically) solving the equations as an initial-value problem. Although this set the foundation of meteorology Bjerknes realized that it was impossible to perform the necessary calculations by hand. So his work had no immediate practical importance. During the First World War the British meteorologist Lewis F. Richardson took up this idea. He simplified the equations and developed extensive numerical procedures to solve the equations [Weather prediction by numerical process, Cambridge University Press (1922)]. Again the practical problems of actually performing the calculations prevented any real test of the method. Meteorology underwent a rapid development during the Second World War when accurate forecasts were needed and after the war the first computers were used to forecast the weather by numerical computations. One of these initiatives were organized by the famous mathematician John von Neumann at the Institute for Advanced Study and the goal was to develop a hierarchy of numerical models each building on the other with increasing complexity to clarify and capture the essential aspects of the forecast problem. This continued in the 1950’s and there was great optimism as the models were refined, although the results were still mediocre. It was during this time that a controversy broke out among meteorologists between a group who favoured traditional forecasts based on statistical methods as opposed to numerical methods. To show that this statistical group was incorrect and that it was not merely a lack of data behind the flawed predictions, the American meteorologist Edward Lorenz set out to find a simple non-periodic system of equations 1 2 CHAPTER 1. THE TWO SYSTEMS that he could use to test the statistical method against and hopefully get a contradictory result. His first successful test problem was to take two horizontal surfaces and the equations of the atmosphere between them. Each atmospheric variable was expanded in an orthogonal series and truncated. After some attempts and simplifications Lorenz arrived at a system of twelve equations which had the desired non-periodic behaviour. The statistical method failed for this problem so the result was as expected. In his experiments Lorenz wanted to examine one particular solution in greater detail. Instead of starting the computer from the beginning he chose an intermediate value typed out by the computer as a start value. When he returned to the computer after about two simulated weather months the result of the new computer run completely disagreed with the earlier run. He soon realized that the cause of this was that the typed out values had only three decimals while the computer used six decimals internally. This small difference in initial-values would be amplified each iteration and consequently yield a totally different solution. Lorenz concluded that if the weather system exhibited the same phenomena long-term forecasts would be impossible. Still not satisfied, Lorenz wanted to find an even simpler system with this kind of sensitive behaviour but his attempts to simplify the system were unsuccessful. When he later visited Barry Saltzman (Yale University) and discussed his problem he was shown a system of seven ordinary differential equations that Saltzman had derived from a similar physical problem [Journal for the Atmospheric Sciences 19 (1962), pages 329–341] and which had a solution that didn’t settle down. Since four of the components approached zero, Lorenz eliminated these and arrived at a system of three equations ẋ = −σx + σy, ẏ = %x − y − xz, (1) ż = xy − βz, with parameter values σ = 10, % = 28 and β = 8/3. This system was studied by Lorenz in his seminal paper [Journal for the Atmospheric Sciences 20 (1963), pages 130–141] and it turned out to have a surprisingly intricate behaviour. A first-hand account of the history of the Lorenz system is given by Edward Lorenz in [Lecture Notes in Mathematics 755 (1979), pages 53–75] and in [Historia Mathematica 29 (2002), pages 273–339] David Aubin and Amy Dahan Dalmedico put the Lorenz system into a proper historical context. Marcelo Viana [Mathematical Intelligencer 22 (2000), no 3, pages 6–19] gives a recent overview of results obtained for the Lorenz system. 1.2 The Lorenz attractor A first step in understanding the Lorenz system, or any system of ordinary differential equations, is to study its stationary points (points where the right-hand side 1.2. THE LORENZ ATTRACTOR 3 35 z C C− + 0 15 x −15 y −15 15 Figure 1.1: A combined picture of the stationary points together with local orbits. of (1) vanishes). Between the stationary points the flow is regular and after classifying the local behaviour of orbits near the stationary points it is often possible to extrapolate a global picture of the system by filling in the blanks. The Lorenz system has three stationary points p p −) = + β(% − 1), (+ (0, 0, 0) and C (+ (−) −) β(% − 1), % − 1 . When we linearise the system at the origin (0, 0, 0) we get a linear system ẋ = Ax, where the matrix A has the following eigenvalues λ1 ≈ 11.83, λ2 ≈ −22.83 and λ3 ≈ −2.67. This means that the origin is a saddle point with two contracting directions and −) the linearised system has a matrix with one expanding direction. At the points C (+ eigenvalues λ1 ≈ −13.85 and λ2,3 ≈ 0.09 ± 10.19 i. This is a saddle point with one contracting direction and two directions where the orbits are spiralling out. By drawing the stationary points and their local orbits in a combined picture we get Figure 1.1. It is not clear from this figure how the orbits fit together and form a complete phase portrait. 4 CHAPTER 1. THE TWO SYSTEMS 50 z C+ 0 30 x −20 C y 50 50 z z 0 30 0 30 − −20 x −20 30 (a) 50 z z 0 30 0 30 y 30 (d) −20 (b) 50 x −20 y 30 −20 x −20 x −20 y −20 30 (c) y −20 30 (e) Figure 1.2: The evolution of an orbit that starts in the point (1, 1, 1). Orbits of the system are also confined to be inside a sphere x2 + y 2 + (z − (σ + %)) = C 2 for large enough C. (This can easily be proved by showing that the vector field of the Lorenz system points inwards on the sphere.) This means that orbits must stay within a bounded region of the phase space and since all stationary points are saddle points a typical orbit cannot reach a steady-state solution but must instead, perhaps, approach a limit cycle or even something more complicated. To gain a better understanding of how orbits behave we pick some rather arbitrary starting point (x0 , y0 , z0 ) and study its orbit. We choose the starting point close to the origin. The orbit approaches the critical point C + and makes an arc around it (Figure 1.2a). It is then very rapidly thrown over to a region close to the critical point C − where it slowly spirals out (Figure 1.2b). Eventually the orbit moves far enough from C − to cross over to the C + -side. The orbit now makes its second turn around C + (Figure 1.2c). Since the orbit isn’t close to C + it will rapidly move over to C − again, where it makes two laps (Figure 1.2d). The pattern then repeats. The orbit comes over to the C + -side, this time closer to C + and therefore it makes a few turns before returning to the C − -spiral (Figure 1.2e). This type of behaviour, alternating between the two spirals with no apparent pattern, is observed for almost all orbits and they all seem to approach the same limiting figure regardless of starting point (the exceptions seem to be orbits that 2 1.2. THE LORENZ ATTRACTOR 5 Figure 1.3: This is a simplistic figure illustrating the attractor set as a surface. The two wing-sized sheets around the two stationary points appear to merge somewhere between the stationary points. The grey arrows illustrate how orbits move on the attractor. happen to land on a stationary point). In order to form a picture of how this attractor set looks like, Edward Lorenz suggested that one imagines the set to be a surface where two sheets merge as the two spirals join together on the way down towards the origin (see Figure 1.3). The two sheets cannot of course merge due to the uniqueness of orbits (only one orbit can pass through a non-stationary point) and they just appear to do so but are in reality two sheets very close to each other. As this pair of sheets return they again blend together as four sheets, then eight sheets and so on. Ultimately, the attractor set must consist of a complex of infinitely many sheets and the way they come together implies that the cross-section of the attractor has a Cantor set-like structure with uncountably many sheets. A truly complicated limiting behaviour for a system, which is so analytically simple. Apart from the circular motion, orbits also tend to spiral outwards as they move around anyone of the two stationary points until thrown over to the other spiral. The factor that seems to determine the changeover from one spiral to the other is how far out on the spiral an orbit is. To measure this, Lorenz used the maximum z-value of an orbit as it revolves around the spiral one turn. By then studying a typical orbit for a long time he obtained a sequence {zi } of such relative maximal z-values and plotted zi+1 against zi to find out how the position of an orbit on a spiral determines its position the next turn. This resulted in the diagram found in Figure 1.4(a). What can be concluded from this diagram is that there indeed appears to be an almost perfect relation between successive maximal z-values as the points line up to an essentially one-dimensional curve. The 2-to-1 correspondence of this map is caused by the fact that an orbit with a certain maximal z-value can stem from either one of the spirals. Interestingly, this one-dimensional map between maximal z-values is also everywhere expanding (has a slope strictly greater than 1 everywhere) and therefore has 6 CHAPTER 1. THE TWO SYSTEMS zi+1 1 50 45 40 35 30 0 30 35 40 45 50 zi 0 (a) 1 (b) Figure 1.4: The diagram (a) plots the relative maximum z-value of an orbit that makes a loop around one of the stationary points versus the same quantity of the previous loop. This diagram can be compared to the diagram (b) of a stepwise linear expanding map. a similar dynamics as the so-called tent map in Figure 1.4(b), ( f (z) = 2z, if z ≤ 21 , 2 − 2z, if z ≥ 12 . If we have two points with slightly different z-values z and z + ε then after n iterations with f they have separated by 2n ε. The same type of behaviour can then be translated to orbits on the attractor and this helps to explain the phenomena Lorenz observed of sensitivity on initial conditions. We have a somewhat paradoxical situation: Almost all orbits will tend to the same limiting set but on that set they have a divergent behaviour. This new phenomena was also later observed by other scientists, e.g. S. Smale and R. V. Plykin, in their work and in 1971 the mathematical physicist David Ruelle and his coauthor Floris Takens [Communications in Mathematical Physics 20 (1971), pages 167–192] introduced the loosely defined notion of a “strange attractor” to denote an attractor set with properties resembling those of the Lorenz attractor. Although there is no authoritative definition of the term strange attractor the following definition must be considered uncontroversial. (See the article by John Milnor [Communications in Mathematical Physics 99 (1985), pages 177–195] for a discussion of the general concept of an attractor.) Definition 1. A set Λ is called a strange attractor if 1. The set Λ is compact. 1.3. THE GEOMETRIC LORENZ MODEL 7 2. There exists an open set U that contains Λ and is attracted to Λ, i.e. the distance between the orbit of x and the set Λ tends to 0 as the time t → ∞ for all x in U . 3. There is a dense orbit in Λ, i.e. there is a point in Λ whose orbit visits every neighbourhood of every point in Λ. 4. For every point in Λ and any neighbourhood of that point there exists a point in the neighbourhood such that the two points eventually separate to a fixed distance δ > 0 under the flow. Over the years a number of attempts have been made to rigorously prove that the Lorenz attractor possesses chaotical behaviour. In this vein we find the work of S.P. Hastings and W.C. Troy [Bulletin of the American Mathematical Society 27, no. 2, pages 298–303] that shows the existence of a homoclinic orbit and the work of K. Mischaikow and M. Mrozek [Bulletin of the American Mathematical Society 32 (1995), no. 1, pages 66–72] that demonstrates the existence of horse shoes. Both these properties imply a chaotical behaviour of the system in a small subset of the phase space. However, the question of whether the Lorenz attractor is a strange attractor or not was only resolved in 1998 by Warwick Tucker in his thesis [The Lorenz attractor exists, Uppsala universitet] and subsequent article [Foundations of Computational Mathematics 2 (2002), pages 53–117]. 1.3 The geometric Lorenz model In 1979 John Guckenheimer and Robert F. Williams [Publ. Math. IHES 50 (1979), pages 59–72] introduced a model of the Lorenz system that was aimed at qualitatively understanding the system and help to explain the presence of an attractor set. (It is noteworthy that at about the same time three Russian mathematicians V.S. Afraı̆movič, V.V. Bykov and L.P. Sil’nikov [Dokl. Acad. Sci. USSR 234 (1977), pages 336–339] made a similar analysis.) In their model the origin plays an important role as the only stationary point that orbits on the attractor flow arbitrary close to. This is a fact that can be inferred from studying orbits very closely. The local behaviour of orbits near the origin resembles the linearised picture we illustrated in Figure 1.1. There is a twodimensional manifold W s (0) consisting of points with orbits that converge to the origin and also a one-dimensional unstable manifold W u (0) of points with orbits that originate from the origin if they are followed backwards. These two manifolds correspond to the stable plane and unstable line of the linearised system. On the stable manifold the sizes of the two negative eigenvalues λ2 < λ3 < 0 of the linearised system indicate how orbits will approach the origin. The orbits have a stronger approach rate in the direction that corresponds to λ2 and this causes them to converge towards the origin in the λ3 -direction, as seen in Figure 1.5. Although the orbits that actually belong to the stable manifold form a negligible subset of all orbits they do provide important information since any orbit that flows close to the 8 CHAPTER 1. THE TWO SYSTEMS Wu Ws (a) (b) Figure 1.5: The figure in (a) illustrates the stable manifold W s (0) and unstable manifold W u (0) of the origin, and also shows how orbits on the stable manifold tend to the origin almost exclusively from one direction. Compare this with the figure in (b) of the linearised system. origin will initially follow the same path as these orbits. Such an origin-bound orbit outside the stable manifold will therefore first advance towards the origin along a cusp-shaped path and then be pulled away from the origin in the direction of the unstable manifold. Depending on how close the orbit is to the stable manifold to begin with, it can spend an arbitrary long time approaching the origin and slowing down until passing it. Much of the coming analysis of the Lorenz system involves the origin and this makes it convenient, at this time, to introduce a linear change of coordinates, as suggested by Warwick Tucker, x1 x 1 1 0 y = A+ A− 0 x2 x3 z 0 0 1 p 2 where A(+ = σ + 1 (+ −) (σ + 1) + 4σ(% − 1) /2σ, that makes the new coordinate −) axes coincide with the stable and unstable directions of the origin. In these new coordinates the linear part of the Lorenz system is in a diagonal form and the whole system is written as ẋ1 = λ1 x1 − k1 (x1 + x2 )x3 , ẋ2 = λ2 x2 + k1 (x1 + x2 )x3 , ẋ3 = λ3 x3 + (x1 + x2 )(k2 x1 + k3 x2 ), where λ1 ≈ 11.83, λ2 ≈ −22.83, λ3 ≈ −2.67, k1 ≈ 0.29, k2 ≈ 2.18 and k3 ≈ −1.28. In the future we will only deal with this form of the Lorenz system. The geometric Lorenz model starts by picking a so-called Poincaré plane. This plane, or surface, is chosen to be transversal to the vector field of the system at 1.3. THE GEOMETRIC LORENZ MODEL 9 Figure 1.6: A schematic figure illustrating how a certain rectangle in the Poincaré plane evolves in the geometric Lorenz model and intersects the Poincaré plane again as two disjoint sets inside the rectangle. The stable manifold of the origin intersects the rectangle along a curve where this mapping is discontinuous. all points near the attractor (no orbit intersects the plane tangentially) and in the Lorenz case the plane x3 = % − 1 is a suitable choice as it contains the centre points C ± of the two spirals. In this plane there is a rectangle that is mapped back to the Poincaré plane according to Figure 1.6. The rectangle is cut in half by the stable manifold of the origin and the two halves return as two thin elongated cuspshaped sets inside the rectangle. The mapping from the Poincaré plane and back is called the first-return map (or the Poincaré map) and the effect it has on either of the two halves is that it expands the half-rectangle in one direction and compresses it in the perpendicular direction. Near the intersection of the rectangle and the stable manifold points flow close to the origin and this deforms the rectangle to the cusp shape it has when returning. The model assumes that the rectangle admits a stable foliation according to the following definition. Definition 2. A collection of regular and disjoint curves {γα } is called a stable foliation of the rectangle under the Poincaré map R if 1. the union of all curves is the whole rectangle (except, perhaps, for a set of Lebesgue measure zero), 2. the curves are mapped with the Poincaré map to each other, i.e. R(γα ) ⊂ γβ for some β, and 3. the Poincaré map restricted to a single curve is a strict contraction. An individual curve in the collection is called a stable leaf. With a stable foliation the dynamics can essentially be reduced to study one point on each stable leaf since all points on the same leaf tend to each other under iteration and therefore have the same dynamics. 10 CHAPTER 1. THE TWO SYSTEMS − + R + − Figure 1.7: The rectangle in the Poincaré plane crosses over the stable manifold of the origin and is mapped to two thin image sets. The left- and right-hand sides of the stable manifold are contracted under the Poincaré map to two points denoted by + and −. In the rectangle there is also a foliation consisting of stable leaves on which the Poincaré map is contractive. Perpendicular to the stable leaves the Poincaré map is expanding. For simplicity John Guckenheimer and Robert F. Williams assumed that the rectangle is 0 ≤ x1 , x2 ≤ 1 and that the Poincaré map can be written as R(x1 , x2 ) = f (x1 ), g(x1 , x2 ) . In this case the stable leaves are all lines with constant x1 -coordinate and the dynamics can be restricted to the line x2 = 0 and the function f . If the function f has the following properties • f is locally eventually onto (i.e., for every non-empty open set U there is a positive integer n such that f n (U ) = [0, 1]), • f has a single discontinuity at x1 = c and is strictly increasing on [0, c) and (c, 1], • f (c− ) = 1 and f (c+ ) = 0 where f (0) < c < f (1), • f 0 (x) → ∞ as x → c± , then they showed that the limiting set in the rectangle is what we call a strange attractor and, hence, that the whole Lorenz attractor is a strange attractor. It should be remarked that “locally eventually onto” implies property 4 in the definition√of strange attractor and that Guckenheimer and Williams showed that if f 0 (x) > 2 for all x then this follows. 1.4 The method of Warwick Tucker The main stumbling block to realizing the geometric Lorenz model is to rigorously handle the stationary point in the origin and orbits flowing close to it. As was mentioned in the last section there is no upper bound on the time an orbit can 1.4. THE METHOD OF WARWICK TUCKER 11 spend in a neighbourhood of the origin and this makes it impossible to use any standard numerical ODE solver to investigate this class of orbits. To introduce the novel approach by Warwick Tucker to this problem it is instructive to go back to the thesis of the famous French mathematician Henri Poincaré (reprinted in [Œuvres de Henri Poincaré, TOME I, Paris: Gauthier-Villars, 1928]) where he studied systems of ordinary differential equations around a stationary point. His idea was to introduce a formal analytic change of coordinates z = ψ(x) that transforms the system to its linearised system. In the Lorenz case this would mean that the Lorenz system λ 0 0 x1 x d 1 1 0 λ2 0 x2 + F (x), x2 (2) = dt x3 x3 0 0 λ3 where F (x) denotes the second degree terms, is transformed into the linear system λ 0 0 z1 z d 1 1 0 λ 2 0 z2 . z2 (3) = dt z3 z3 0 0 λ3 This presents an interesting way of dealing with the problem of the origin: When an orbit enters the region where the coordinate change is defined, the method is to transform to the linear system and use it to flow through the region (the linear system can be solved explicitly) and then when exiting the region transform back to the original system and continue. The problem with this method of attack is that the formal change of coordinates only exists if there is no so-called resonance between the linear coefficients λ1 , λ2 and λ3 , i.e. if λi 6= n1 λ1 + n2 λ2 + n3 λ3 for non-negative integers n1 , n2 and n3 where n1 + n2 + n3 ≥ 2. Although this could possibly be true for the parameter values used for the Lorenz system the infinite number of conditions involved in non-resonance make the set of “bad” parameters dense in the parameter space and the existence not robust to small parameter changes. Moreover, non-resonance only proves that a formal change of coordinates exists and the question of convergence and radius of convergence leads to a deeper study of near resonance (see e.g. Chapter 5 in [Geometrical Methods in the Theory of Ordinary Differential Equations, Springer Verlag (1983)]). Warwick Tucker overcame these difficulties in his method by using a variant of the coordinate change above, that is not a full linearisation of the Lorenz system but instead transforms the system to the form z1 λ1 0 0 z1 d z2 = 0 λ2 0 z2 + G(z), (4) dt z3 0 0 λ3 z3 10 where the non-linear term G(z) satisfies |Gi (z)| ≤ C|z1 |10 |z2 | + |z3 | near the origin. This special form of the non-linear term is chosen so that G(z) is particularly 12 CHAPTER 1. THE TWO SYSTEMS small close to the stable manifold, which in these coordinates is z1 = 0, and the unstable manifold z2 = z3 = 0, in a region where orbits that flow close to the origin must spend most of its time. A consequence is that orbits of the normal form system (4) can be approximated well by the corresponding orbits of the linear system (3) even though there are orbits with unbounded integration time. The new transformation does not completely eliminate the problem of resonance but makes it only necessary to check a finite set of integer linear combinations and Tucker was 1 able to show that the analytic coordinate change is defined in the cube {|xi | ≤ 10 } centred around the origin. In Chapter 3 there is a detailed derivation of estimates involved in this kind of transformation for the Lorenz-Stenflo system (see next section) but the calculations are almost identical in the Lorenz case. See also the original article by Warwick Tucker [Foundations of Computational Mathematics 2 (2002), pages 53–117]. With the analysis of the behaviour close to the origin in place Warwick Tucker uses a method of invariant rectangles and cones in the Poincaré plane to prove the existence of a strange attractor. The assumptions involved in the arguments of the proof are the following: 1. An invariant collection of rectangles {Bi } in the Poincaré plane that cover the attractor. Each rectangle in this collection is mapped with the Poincaré map R inside the collection. 2. On all rectangles there is an invariant regular cone field C(x). The invariance means that the cone C(x) is mapped with the differential of the Poincaré map dRx inside the cone at the image point R(x), i.e. dRx C(x) ⊂ C R(x) for all x excluding the points on the stable manifold. 3. Tangent vectors inside the invariant cones are eventually expanded, i.e. the inequality kdRxn (v)k ≥ Ckvkrn holds for almost all x, all tangent vectors v in C(x) and where r > 1 and C > 0. 4. On the rectangles that intersect the stable manifold of the origin, and therefore contain the discontinuity of the Poincaré map, the tangent vectors must be expanded by at least a factor of 2 before returning to these rectangles. The existence of an invariant regular cone field together with the fact that some iterate of the Poincaré map is area contracting (this follows from that the divergence of the Lorenz flow has a negative constant value and that the flow is transverse to the Poincaré plane) show that there exists a stable foliation inside the rectangle covering (see Section 3 in [Invariant Manifolds, Springer Verlag (1977)]) as predicted by the geometric model. Property 3 and 4 imply that the induced map f has a positive Lyapunov exponent and is eventually onto. This shows that f possesses a strange attractor and therefore that the Poincaré map attractor and the whole Lorenz attractor are strange attractors. The collection of rectangles in the Poincaré plane is generated dynamically by selecting rectangles from a grid of equal-sized rectangles covering the whole plane. 1.4. THE METHOD OF WARWICK TUCKER x3 13 x3 x1 x1 (a) (b) x3 x3 x1 (c) x1 (d) Figure 1.8: (a) The most common submapping is between two planes of the same type, (b) but as the flow turns it is necessary to change the orientation of planes. (c) If a rectangle grows beyond a certain size it is divided into subrectangles that independently flow back to the Poincaré plane. (d) These steps are put together to a mapping from the Poincaré plane and back. The procedure starts with picking one rectangle that supposedly cover a small part of the attractor set in the Poincaré plane and let that rectangle be the initial collection. Then all rectangles that cover the image of the start rectangle are added to the collection and for each new rectangle the same procedure is repeated. This goes on until all rectangles in the collection have been processed at which time the collection is invariant. A rectangle is mapped from the Poincaré plane and back by dividing its orbit into a number of intermediate planes and flowing it from one plane to the next by an Euler step. In each intermediate plane a rectangle, or a set of rectangles, is created that contains the image of the rectangle from the previous plane. In this way the rectangle, or rectangles, returning to the Poincaré plane is guaranteed to contain the image of the original rectangle. The main parts of this mapping scheme are illustrated in Figure 1.8. If a rectangle contains the stable manifold of the origin it will flow down and 1 } centred around the origin. The part of the rectangle that hit the cube {|xi | ≤ 10 lands inside the top face of the cube flows through the cube via the normal form 14 CHAPTER 1. THE TWO SYSTEMS x3 x1 z3 x1 z1 (a) z3 z1 (b) x3 z1 x1 (c) x3 x1 x1 (d) x3 x1 (e) z1 x1 x1 (f) 1 of the cube. (b) The Figure 1.9: (a) A rectangle hits the top face x3 = 10 1 1 part of the rectangle inside − 10 ≤ x1 , x2 ≤ 10 is transformed with the coordinate change ψ to the normal form coordinate system. (c) The rectangle flows through the cube by approximating the normal form system with the linear system. (d) The image rectangles are transformed back to the original coordinates with φ and (e) flattened to rectangles. (f) Then the rectangles flow back to the Poincaré plane in the standard way. transformation as illustrated in Figure 1.9. On the start rectangle, as the collection of rectangles is initialised, there is also a cone with angle aperture [ 0◦ , 10◦ ] relative to the x1 -direction. As the rectangle flows between two consecutive planes the equations of variation d Dϕ(x, t) = Df ϕ(x, t) Dϕ(x, t) dt is also estimated and in the next plane a cone is created that contains all images of the cone under the stepwise differential map. When the cone returns to the Poincaré plane it contains all images of the start cone and on the rectangles hit by the cone this return cone is picked as start cones. The new cones then go through the same thing. If a cone returns outside the cone on the hit rectangle then the cone on the hit rectangle is enlarged to contain the image cone and the new cone needs to be flown again. Eventually this results in an 1.5. NON-UNIFORM HYPERBOLICITY 15 invariant piecewise constant cone field and the existence of a regular invariant cone field. The last conclusion is easier to grasp if the single cone on each rectangle in the covering is replaced with two cones, an inner and outer cone, with the following properties: • The outer cone on a rectangle contains the inner cone on that rectangle as well as the inner cones on neighbouring rectangles. • The outer cone of a rectangle is mapped with the differential map inside the inner cones of the rectangles the image of the outer cone hits. A regular invariant cone field can then be fitted between the two cones and seamlessly cross the boundary between two rectangles. In each transition between two intermediate planes there is also an estimate of the smallest expansion factor a vector inside the cone is subjected to. These expansion factors are multiplied together to form an expansion estimate of the whole mapping from the Poincaré plane and back. All mapping data are then analysed and properties 3 and 4 are verified. 1.5 Non-uniform hyperbolicity The Lorenz system is probably the most well-known example in the science literature of a system with chaotical behaviour and the work of Warwick Tucker is the first method to rigorously prove the existence of a strange attractor for this system and with these parameter values. It should, however, be remarked that the Lorenz system is not a prototype for all kinds of chaotical behaviour and that the method outlined in the previous section is not applicable to all systems. An illuminating example is a system constructed by the German scientist Otto Rössler [Physics Letters A 57 (1976), no. 5, pages 397–398] ẋ = −y − z, ẏ = x + ay, ż = b + z(x − c). With parameter values a = b = 0.2 and c = 5.7 this system exhibits what seems to be a strange attractor, but the underlying mechanism of this attractor is different from the Lorenz attractor. In the Lorenz case the attractor set can be seen as a surface that is sliced up by the stable manifold of the origin and the two sheets are merged after a revolution around two stationary points (see Figure 1.3). A similar model can be made of the Rössler attractor but now the surface is not cut in two pieces but instead folded and thereafter the two sheets are merged. A study of the relative maximal x-values {xi } of a typical orbit of the Rössler system is shown in Figure 1.10(a) where xi+1 is plotted against xi . Notice that the one-dimensional curve in this case is of a different type than the one obtained for the Lorenz system. The folding introduces a quadratic-like maximum and dynamically 16 CHAPTER 1. THE TWO SYSTEMS xi+1 4 1 3 2 1 −1 0 0 1 2 3 4 xi (a) −1 1 (b) Figure 1.10: In diagram (a) the relative maximum x-value xi+1 of a typical orbit of the Rössler system is plotted against xi . This almost uniquely defined mapping of one maximal x-value to the next is of the same type as the quadratic map f (x) = 1 − ax2 found in diagram (b). it is more accurate to compare the induced one-dimensional map with a family of quadratic maps f (x) = 1 − ax2 than a piecewise expanding map. The dynamics of the family of quadratic maps is considerably more difficult to analyse and important studies were performed by M. Jakobson [Communications in Mathematical Physics 81 (1981), no. 1, pages 39– 88] and by M. Benedicks and L. Carleson [Annals of Mathematics 122 (1985), no. 1, pages 1–25]. A recent overview can be found in an article by M. Lyubich [Notices of the AMS 47 (2000), no. 9, pages 1042–1052]. If the analogy with the quadratic family holds then the expected behaviour is that the set of parameters yielding a strange attractor might very well be a substantial part of the parameter space (positive Lebesgue measure) but that it is perforated with a dense set of parameters which do not give rise to strange attractors. This would make it unlikely to expect a result that pinpoints a certain parameter value with a strange attractor. Even for the Lorenz system there are parameters where such a quadratic behaviour can be observed. One such parameter triple is σ = 10, % = 55 and β = 8/3. 1.6 The Lorenz-Stenflo system This thesis concentrates on a generalisation of the Lorenz system to four dimensions that was derived by the Swedish physicist Lennart Stenflo. In two articles [Physica Scripta 43 (1991), pages 599–600] and [Physica Scripta 53 (1996), pages 83–84] 1.6. THE LORENZ-STENFLO SYSTEM 17 zi+1 50 s = 30 45 s=0 40 35 30 30 35 40 45 50 zi Figure 1.11: This figure compares the zmax -diagram of the Lorenz-Stenflo system with σ = 10, % = 30, β = 8/3 and s = 30 (black curve) with the Lorenz system where s = 0 (grey curve). Lennart Stenflo studied the equations that govern atmospheric waves. By using a low-frequency and short-wavelength approximation he managed to derive a set of simplified equations and this system was reduced even further by removing one of the independent spatial variables and using a high latitude approximation (the earth rotation vector is constant). He then used the same strategy as Edward Lorenz and substituted a truncated orthogonal series solution into the equations. After normalisation of the variables the following system of ordinary differential equations arose ẋ = σ(y − x) + sv, ẏ = %x − xz − y, ż = xy − βz, v̇ = −x − σv, where v = v(t) is a new fourth variable and s is a parameter. The Lorenz system and this new Lorenz-Stenflo system share the same basic set-up. The Lorenz-Stenflo system has three stationary points (0, 0, 0, 0) and p p p 2 −) = + C (+ βzs /(1 + s/σ 2 ), (+ +) βzs /(s + σ 2 ) (−) −) βzs (1 + s/σ ), zs , (− where zs = r − 1 − s/σ 2 . For a suitable range of parameters the origin and C ± are saddle points where the origin has a one-dimensional unstable manifold and a three-dimensional stable manifold while both C ± have a one-dimensional stable manifold and a three-dimensional unstable manifold where orbits have an outwards spiralling motion. Almost all orbits of the system behave in a similar way and tend to an attractor set. This set consist of orbits that circle around the two points C ± and occasionally flow close to the origin; the same picture observed in the Lorenz case. After studying 18 CHAPTER 1. THE TWO SYSTEMS the attractor set more closely it seems plausible to expect that the Lorenz-Stenflo system has a strange attractor and this fact becomes even more so by considering the diagram in Figure 1.11 that plots the same type of zmax -diagram as in Figure 1.4. Take note of the similar shape of the one-dimensional curve for the parameter values σ = 10, % = 30, β = 8/3 and s = 30 compared to when s = 0 (the Lorenz system). These particular parameter values and the diagram in Figure 1.11 are found in the article [Physica Scripta 55 (1997), pages 394–402] and offer a suitable generalisation of the Lorenz system with the classical parameter values. In this thesis we redo the work Warwick Tucker did for the Lorenz system in the case of the Lorenz-Stenflo system. To this end some aspects of his work need to be generalised to cope with the higher-dimensional case and although our approach is to a large extent the same as his there are some differences. The most controversial part is probably that the rigorous interval arithmetic is replaced with a shooting algorithm. This issue together with more comments on other aspects are further discussed in the preface. A quick summary of the coming chapters is that Chapter 2 describes the programs and the numerical methods in detail. The most important parts of the programs are also listed with comments. Chapter 3 examines the analytical change of coordinates around the origin. This differ only in some details from Warwick Tucker’s analysis. The whole outcome of the numerical study is summarised in Chapter 4. Chapter 2 The numerical method This chapter describes the numerical method that we use when we study the two dynamical systems. In the first section we give a short summary of the various steps involved and thus try to give an overview of the whole numerical study. Then, we go into detail and study the individual programs. In chapter 4 we present the results obtained for the Lorenz and Lorenz-Stenflo systems when the computer programs are run. 2.1 A short summary The whole numerical method is divided into 15 consecutive steps (however, some of the steps are grouped in pairs and must be run in parallel). Results from one step, or a pair of steps, are passed to the next step by means of files to make it easy to check intermediate results. The details of this are displayed in a diagram in Figure 2.5 after the summarised presentation of the steps. Throughout the text we use the Lorenz-Stenflo system as the object of study since this higher dimensional system brings out certain multidimensional aspects more clearly than the Lorenz system does. Step 0 Step 0 is a collection of different Maple programs that output basic Matlab routines. These routines are all connected with the return map or the coordinate change functions around the origin. It is necessary to generate these routines before any of the real computational steps begin. Step 1 and 2 First the Poincaré plane (which in the Lorenz-Stenflo case is a three-dimensional hyperplane) is subdivided into a regular grid of non-overlapping same-sized boxes. 19 20 CHAPTER 2. THE NUMERICAL METHOD R Figure 2.1: Each box in the invariant box covering is mapped with the return map inside the covering itself. The algorithm starts by picking a point in the Poincaré plane (any point) and iterates it a few times, with the return map, until it is likely that the iterate is close to the attractor. The box that contains this iterate will most likely also contain points from the return map attractor and we therefore use this box as the starting box in a covering of the attractor. Step 3 and 4 In step 3 and 4 we determine inside which boxes the starting box from step 1 is mapped with the return map. The boxes hit by the starting box are then put through the same process and their hit boxes are found. By repeating this for all new boxes added to the covering we eventually get a collection of boxes which is mapped inside itself. This is a covering of the attractor. Step 5 and 6 In the Poincaré plane there is a discontinuity of the return map caused by points flowing on different sides of the stable manifold of the origin. We find the boxes in the covering that cross the discontinuity, and pick a small cube centred in the origin having faces parallel to the coordinate planes. The discontinuity boxes are then mapped with the flow stepwise down to the top of the cube and back to the return plane. Orbits flowing close to the origin are thereby split up into smaller pieces to avoid certain numerical problems associated with the great expansion of these orbits. If any of the boxes hit by the returning discontinuity boxes are new to the covering they are added to the covering and we run step 3 and 4 again to make the covering invariant. Step 7 After step 3 to 6 are done we have an invariant collection of boxes and inside this box covering there is an attractor of the return map. Furthermore, in step 3 to 6 we have also calculated a value of the differential map for each mapping from one 2.1. A SHORT SUMMARY 21 x4 ¬ ® ® x1 Figure 2.2: Points in the boxes crossing the discontinuity ¬ flow stepwise down to a cube centred around the origin, flow through the cube via an analytical coordinate change and then ® flow back to the Poincaré plane. box to another box. This means that if box i is mapped partially over box j then we have calculated the value of the differential in a point in box i which is mapped to a point inside box j. These values of the differential map are used, in a first phase, as a piecewise constant approximation of the differential map. The object of step 7 to 9 is to construct inner and outer cones, on the boxes of the covering, that are invariant when mapped with this piecewise constant approximation of the differential map. Step 7 creates inner and outer starting cones on a small sub-collection of the boxes to prime step 8 and 9, where the invariant cones under this approximation of the differential are created. Step 8 and 9 We take the cones created in step 7 and push them forward. This means that if the cone pair on box i is mapped to a box j then we create an inner and outer cone on box j that contain the image of the outer cone of box i. If box j already has a pair of cones then we instead check that they contain the image cone, and, if not, we enlarge them. Anytime a new or changed cone appears it is pushed forward in this Figure 2.3: After step 7 has been run an initial set of cones are defined on a sub-collection of boxes. 22 CHAPTER 2. THE NUMERICAL METHOD inner cone i outer cone i dR dR(outer cone i) inner cone j outer cone j Figure 2.4: Invariant cones means that if box i is mapped to box j then the outer cone on box i is mapped with the differential map inside the inner cone on box j. way. This is repeated until the cones have reached an equilibrium, at which point the cones are invariant (each inner cone contains all images of outer cones being mapped to this cone). Step 10 and 11 The result of step 8 and 9 is a collection of cones that are invariant under the piecewise constant approximation of the differential map. Since we expect this approximation of the differential to be fairly accurate these cone should also be close to invariant under the (non-constant) differential map. In step 10 and 11 we use the cones from step 8 and 9 as starting cones when we generate invariant cones under the proper differential map by applying the same algorithm as in step 8 and 9 (push cones forward). Step 12 and 13 After having created the invariant cones we determine the smallest expansion inside the outer cone of the starting box in each mapping between two boxes. Step 14 and 15 At this point we can create a graph that captures the mapping and expansion information of the return map on the box covering. In this graph the nodes correspond to the boxes and a directed edge from node i to node j with weight w means that box i is mapped to box j and that the logarithm of the smallest expansion factor of this mapping is w. The problem of showing that the return map attractor is a strange attractor can be translated into showing two properties of this graph • Every cycle in the graph has positive weight. • Every path between two nodes that correspond to discontinuity boxes (mentioned in step 5 and 6) has weight greater than log 2. 2.2. STEP 0 23 The first property is checked in step 14 which uses an exterior graph analysing program to investigate if there are any negative cycles. Step 15 verifies the second property, also using an exterior graph analysing program. 2.2 Step 0 Step 0 is really just a preliminary step. It consists of some Maple programs whose task is to generate a number of important numerical Matlab routines. The reason for using an indirect way of creating the Matlab functions is that due to their complexity they would be very tedious or next to impossible to write correctly by hand, and also that we can take advantage of the code generating capabilities of Maple to make the generated Matlab functions more efficient than would otherwise be possible. A sum-up of the five Maple programs is: • lsodedata.mpl outputs two parameter files for the Lorenz-Stenflo differential equations (after the linear change of coordinates). • R.mpl creates the return map routine. • box_R.mpl is a variation of R.mpl and creates an integrator routine for orbits confined to a box. This routine will be used when we approximate orbits that approach the origin. • xphi.mpl and xpsi.mpl generate the coordinate change routines around the origin. Below we make a short presentation of each of these programs and the Matlab functions they generate. A linear change of coordinates One of the first things we do when looking at the Lorenz-Stenflo system is to make a linear change of coordinates so that the stable and unstable directions of the origin coincide with the new coordinate axes. This coordinate change takes the form x1 x 1 1 1 0 y α1 α2 α3 0 x2 , z = 0 0 0 1 x3 γ1 γ2 γ3 0 x4 v where λ2i + 2σλi + σ 2 + s 1 , γi = − σ(λi + σ) λi + σ and λ1 > 0 > λ2 > λ3 , λ4 = −β are the eigenvalues of the linearised system in the origin. In this new coordinate system the x4 -direction coincides with the z-direction and the x1 -direction is the direction of the unstable manifold of the origin. αi = 24 CHAPTER 2. THE NUMERICAL METHOD step01.m step02.m Determine a box on the attractor. Determine points on the attractor. inprogress.dat finished.dat variables.mat unfinished.dat added_boxes.mat step03.m orbit.mat step04.m Create a covering of the attractor. if new boxes if new discontinuity boxes variables.mat unfinished.dat inprogress.dat finished.dat step06.m step05.m boxes.dat if no new discontinuity boxes variables.mat unfinished.dat inprogress.dat finished.dat added_boxes.mat boxes.dat Flow discontinuity boxes. if no new boxes variables.mat step07.m Create initial precones. variables.mat variables.mat cones.mat changed_boxes.mat hit_boxes.mat unfinished.mat Figure 2.5: A schematic outline of how all steps are interrelated and communicate via data files. 2.2. STEP 0 25 inprogress.dat finished.dat variables.mat cones.mat changed_boxes.mat hit_boxes.mat unfinished.mat step08.m step09.m Create invariant precones. cones.dat if an outer cone has changed unfinished.dat inprogress.dat finished.dat cones.mat changed_boxes.mat hit_boxes.mat If no outer cone has changed unfinished.dat cones.mat changed_boxes.mat hit_boxes.mat variables.mat inprogress.dat finished.dat step11.m step10.m cones.dat if no outer cone has changed if an outer cone has changed variables.mat unfinished.dat inprogress.dat finished.dat step12.m Determine cone expansions. Create invariant cones. unfinished.dat inprogress.dat finished.dat cones.mat changed_boxes.mat hit_boxes.mat variables.mat step13.m logexpansion.dat boxgraph_main.dat step15.m step14.m Find shortest paths. Check for negative cycles. short_paths.dat negative_cycles.dat Figure 2.5: (Cont.) 26 CHAPTER 2. THE NUMERICAL METHOD After this change of coordinates the Lorenz-Stenflo system is transformed into a system where the linear part is in a diagonal form with the eigenvalues λ1 , . . . , λ4 as diagonal elements and where the second order terms are merely rearranged. With new constants k1 , . . . , k9 the system can be written as ẋ1 = λ1 x1 + k1 (x1 + x2 + x3 )x4 ẋ2 = λ2 x2 + k2 (x1 + x2 + x3 )x4 (1) ẋ3 = λ3 x3 + k3 (x1 + x2 + x3 )x4 ẋ4 = λ4 x4 + k4 x21 + k5 x1 x2 + k6 x1 x3 + k7 x22 + k8 x2 x3 + k9 x23 or in an abbreviated form ẋ = Ax + F (x). In the Maple program lsodedata.mpl we calculate the numerical values of the constants λ1 , . . . , λ4 and k1 , . . . , k9 , and output them in the file lsodedata.m. The return map In an attempt to simplify our study of the Lorenz-Stenflo system we have introduced a Poincaré plane x4 = % − 1 − s/σ 2 and a return map R that maps a point x in the Poincaré plane to the point where the orbit of x hits this plane again, with downward pointing direction. The dynamical properties of the whole system then translate into dynamical properties of the return map on the Poincaré plane. x4 x Poincaré plane R(x) x1 Calculating the return map amounts to integrating a point according to the LorenzStenflo system • d ϕi (x, t) = fi ϕ(x, t) dt until it hits the Poincaré plane. In this equation ϕ(x, t) denotes the flow and is the point that corresponds to time t on the orbit that starts in x at time 0. Since we are also interested in calculating the derivatives of the return map we need the first and second order derivatives ∂ϕi /∂xj and ∂ 2 ϕi /∂xk ∂xj of the flow. We find equations for these derivatives by differentiating both sides of the Lorenz-Stenflo system, and thus deriving the so-called equations of first and second variation. 2.2. STEP 0 • 27 X ∂fi ∂ϕ` ∂ d ∂ϕi (x, t) = fi ϕ(x, t) = ϕ(x, t) (x, t), dt ∂xj ∂xj ∂x` ∂xj ` • ∂ϕ` d ∂ 2 ϕi ∂ X ∂fi (x, t) = ϕ(x, t) (x, t) dt ∂xk ∂xj ∂xk ∂x` ∂xj ` = X `,n + ∂ϕn ∂ 2 fi ∂ϕ` ϕ(x, t) (x, t) (x, t) ∂xn ∂x` ∂xk ∂xj X ∂fi ∂ 2 ϕ` ϕ(x, t) (x, t). ∂x` ∂xk ∂xj ` The return map can now be defined as Ri (x) = ϕi x, T (x) for i = 1, 2 and 3, where T (x) denotes the time it takes for the point x to flow back to the Poincaré plane. The time T (x) is therefore defined implicitly by the equation ϕ4 x, T (x) ≡ C. In order to calculate the derivatives of the return map we first differentiate both sides of ϕ4 x, T (x) ≡ C to get an expression for the derivatives of T (x), ∂ϕ4 ∂ ∂T ϕ4 x, T (x) = (x, T ) + ϕ̇4 (x, T ) (x) ∂xj ∂xj ∂xj ∂T ∂ϕ4 (x, T ) + f4 ϕ(x, T ) (x) = 0 = ∂xj ∂xj ∂T 1 ∂ϕ4 ⇔ (x) = − (x, T ). ∂xj f4 ϕ(x, T ) ∂xj We can then calculate the derivatives of R, ∂ϕi ∂ ∂T ∂Ri (x) = ϕi x, T (x) = (x, T ) + ϕ̇i (x, T ) (x) ∂xj ∂xj ∂xj ∂xj fi ϕ(x, T ) ∂ϕ4 ∂ϕi = (x, T ) − (x, T ). ∂xj f4 ϕ(x, T ) ∂xj Strictly speaking we have no direct use for the second order derivatives of the return map but as they turn out to be useful in certain situations (mostly related to improving some optimisation routines) we will nevertheless include them in the return map calculations. The second order derivatives are obtained by differentiating the 28 CHAPTER 2. THE NUMERICAL METHOD first order derivatives again, fi ϕ(x, T ) ∂ϕ4 ∂ϕi ∂ ∂ 2 Ri (x) = (x, T ) − (x, T ) ∂xk ∂xj ∂xk ∂xj f4 ϕ(x, T ) ∂xj ∂ 2 ϕi d ∂ϕi ∂T ∂ϕ4 = (x, T ) + (x, T ) · (x) − gik · (x, T ) ∂xk ∂xj dt ∂xj ∂xk ∂xj fi ϕ(x, T ) d ∂ϕ4 ∂T ∂ 2 ϕ4 (x, T ) + (x, T ) · (x) , − dt ∂xj ∂xk f4 ϕ(x, T ) ∂xk ∂xj where gik denotes the xk -derivative of the quotient fi ϕ(x, T ) /f4 ϕ(x, T ) and is equal to " 4 X ∂fi ∂R` 1 gik = ϕ(x, T ) · (x) · f4 ϕ(x, T ) 2 ∂x` ∂xk f4 ϕ(x, T ) `=1 4 # ∂R` X ∂f4 ϕ(x, T ) · (x) . − fi ϕ(x, T ) · ∂x` ∂xk `=1 It is now clear how the Matlab return map routine must work. It integrates the flow variables ϕi and its derivatives ∂ϕi /∂xj and ∂ 2 ϕi /∂xk ∂xj until time t = T (x), after which it calculates the return map together with its derivatives according to the formulas we derived above. The Maple program R.mpl derives all the needed equations and formulas, and then generates the main return map routine R.m. This Matlab routine has the following function prototype [Y,DY,DDY] = R(X); where the output arguments encode the return map information in the following way Y(i) = Ri (X), DY(i,j) = ∂Ri (X), ∂xj DDY(i,j,k) = ∂ 2 Ri (X). ∂xk ∂xj Normally X has three components and is assumed to be a point in the Poincaré plane, but if it has four components then it is instead interpreted as a point in the phase space. The box integrator routine Besides the return map routine we also make use of a Matlab routine box_R.m that doesn’t flow points back to the Poincaré plane but restricts orbits to the inside of a box. This routine will later on be used to subdivide certain difficult orbits into more manageable pieces. Its function prototype is 2.2. STEP 0 29 X X Y Y xi XMIN(i) xi XMAX(i) XMIN(i) XMAX(i) Figure 2.6: In the leftmost figure we have that HT(i) = −1 and HT(j) = 0 if j 6= i, while in the rightmost figure HT(i) = 1 and HT(j) = 0 if j 6= i. [HT,Y,DY,DDY] = box_R(X,XMIN,XMAX); where X is a point inside the box XMIN(i) ≤ xi ≤ XMAX(i). The output Y is the point on the boundary of the box where the orbit of X exits the box, and the output variables DY and DDY are the first and second order derivatives, respectively, of the mapping from X to Y. The first output variable HT indicates on which boundary face of the box the orbit of X exits the box. If Y(i) = XMIN(i) then HT(i) = −1 and if Y(i) = XMAX(i) then HT(i) = 1. Otherwise, if XMIN(i) < Y(i) < XMAX(i) then HT(i) = 0. The function box_R.m is to a large extent similar to the return map routine and is based on the same type of calculations as that function. The coordinate change functions Around the origin we use a change of coordinates that almost linearises the flow to help us analyse those orbits that flow very close to the origin. This coordinate change x = φ(z) and its inverse z = ψ(x) are derived in Chapter 3 and expressed as power series φi (z) = X c i,j z j and j ψi (x) = X ei,j x j , j where the coefficients c i,j and ei,j are shown to satisfy certain recurrence equations. In the Maple programs xphi.mpl and xpsi.mpl we use the recurrence equations to calculate all coefficients up to a certain degree and output Matlab routines xphi.m and xpsi.m, respectively, that approximate φ and ψ by truncated power series. The function prototype of xphi.m and xpsi.m are [X,DX,DDX] = xphi(Z) and [Z,DZ,DDZ] = xpsi(X), 30 CHAPTER 2. THE NUMERICAL METHOD where the output arguments are 2.3 X(i) = φi (Z), DX(i,j) = ∂φi (Z), ∂zj DDX(i,j,k) = ∂ 2 φi (Z), ∂zk ∂zj Z(i) = ψi (X), DZ(i,j) = ∂ψi (X), ∂xj DDZ(i,j,k) = ∂ 2 ψi (X). ∂xk ∂xj Step 1 and 2 The main objective of these two steps is to prepare for step 3 and 4. We start by explaining some Matlab functions related to the box covering and which will also be used in later steps before we go through the programs step01.m and step02.m. A subdivision of the Poincaré plane The Poincaré plane is subdivided into a grid of small boxes of equal side length dx, Bi,j,k = (x1 , x2 , x3 ) : i dx ≤ x1 ≤ (i + 1) dx, j dx ≤ x2 ≤ (j + 1) dx, k dx ≤ x3 ≤ (k + 1) dx and a subcollection of these boxes will in later steps be used to cover the whole return map attractor. When we work with the boxes in this subdivision we will keep track of individual boxes by their indices and to facilitate converting back and forth between boxes and coordinates there are a couple of functions which we use throughout all steps. • B = to_box(P). This function outputs the index vector B of the box that contains the point P. • [XMIN,XMAX] = from_box(B). The input B is the index vector of a box and the output XMIN and XMAX specify the coordinate range of that box, i.e. XMIN(i) ≤ xi ≤ XMAX(i). In an effort to cut down on the workload in subsequent steps we will only cover one branch of the return map attractor with boxes and work exclusively with these boxes. This doesn’t really leave anything out since by using the symmetry of the return map, R(−x1 , −x2 , −x3 ) = −R(x1 , x2 , x3 ), we can thereafter induce a symmetric box covering of the other branch and also translate mapping properties to those boxes. We therefore split the Poincaré plane in two halves {x2 ≥ − 61 x1 } and {x2 ≤ 1 − 6 x1 }, where we have assured that each half contains one of the branches. The mapping between the two symmetric halves is taken care of by the following functions 2.3. STEP 1 AND 2 31 Figure 2.7: The box covering has two components, each covering one branch of the return map attractor. These components are symmetric and on different sides of the plane x2 = − 61 x1 . • Y = xsigma(X). This function maps a point X to its symmetric point in the other half of the Poincaré plane. • M = dxsigma. The returned matrix M is the differential of the symmetry mapping. • S = xsigma_box(B). This function is analogous to xsigma and maps a box with index vector B to its symmetric box, which has index vector S. We also have corresponding functions xsym, dxsym and xsym_box that are equal to xsigma, dxsigma and xsigma_box, respectively, on the half {x2 ≤ − 16 x2 } but equal to the identity on the other half {x2 ≥ − 61 x1 }. In this way these functions always map to the second half of the Poincaré plane; the half where the return map will be studied. step01.m The task of the Matlab program step01.m is to find one starting box for the box covering of the attractor. We begin by picking a point x in the Poincaré plane and iterate it a few times with the return map. The resulting point will most likely be close to the attractor and as a starting box we choose the box that contains this point (or the symmetric box if this box is not in the correct half of the Poincaré plane). This box is then output in the file unfinished.dat in the format i j k where (i, j, k) is the index of the box. We initialise the data files variables.mat and added_boxes.mat with empty variables (these variables are explained later). step02.m The next Matlab program step02.m just iterates a point a large number of times to get a collection of points around the return map attractor. Step 4 will use these 32 CHAPTER 2. THE NUMERICAL METHOD points when providing progress reports. The points are stored in the 3×N -matrix orbit as columns and this matrix is output in the file orbit.mat. 2.4 Step 3 and 4 In step 3 and 4 we will produce a collection of boxes that cover one branch of the return map attractor and where each box in the covering is mapped with the return map inside the covering itself or inside the mirror covering (that covers the other branch of the attractor). This is what is known as an invariant covering of the attractor. When these two steps have finished we will have generated, besides the covering itself, the following mapping information for each box: • a list of boxes from the covering that together contain the image of the box, • points in the box that are mapped inside each one of the hit boxes that cover the image, • the images of these points, and • the value of the differential map in each of these points. The whole covering is built up step by step starting with the single box in the file unfinished.dat (the result of step 1) and the adding of boxes to the covering is done by the program step03.m using the following method: step03.m takes a box from the file unfinished.dat. For this box the program determines the mapping information mentioned above and outputs it in the file boxes.dat. Among the boxes that cover the image of the box there are boxes that have not yet been processed by step03.m and these boxes are added to unfinished.dat. After that step03.m starts over with a new box from unfinished.dat. This continues until no more boxes are found in unfinished.dat. The program step03.m can be run as several independent processes all working in parallel and to keep order of the boxes in the covering and their status we use three data files • unfinished.dat. This file contains boxes that have been added to the covering but not yet processed by step03.m. • inprogress.dat. In this file are the boxes currently being processed by the program step03.m. • finished.dat. Boxes in this file have already been processed by step03.m. Alongside step03.m we run step04.m which continuously reports how the covering is progressing and when step03.m has finished, it collects all the data from the file boxes.dat and outputs it as variables in the file variables.mat. 2.4. STEP 3 AND 4 33 A lock mechanism In order to run step03.m as several parallel processes we have a mechanism to prevent the individual processes from interfering with each other. If a process wants to read or write to any of the files unfinished.dat, inprogress.dat, finished.dat or boxes.dat it creates a file called LOCK which gives the process exclusive right to change any of these files. The process releases its lock on these files by deleting the file LOCK. • get_lock. This function creates an empty file LOCK in the current directory. If this file already exists the function waits until the file is removed before creating it. The details of this need some attention. We must check if the file exists and, if not, create it, all in one step. Otherwise it is possible for the following scenario to occur 1. Process 1 checks if LOCK exists. 2. Process 2 checks if LOCK exists. 3. Process 1 creates LOCK. 4. Process 2 creates LOCK. (This situation is called a race condition.) The way to handle this on a Unix system is to try to link LOCK to an existing file, ln -s EXISTING_FILE LOCK If LOCK already exists this command will fail and if the command succeeds LOCK is created. function get_lock(); [s,msg] = unix(’ln -n EXISTING_FILE LOCK’); while s~=0 pause(5); [s,msg] = unix(’ln -n EXISTING_FILE LOCK’); end; • rm_lock. This function deletes the file LOCK. function rm_lock(); unix(’rm -rf LOCK’); step03.m We have already discussed the basic tactics of step03.m and now we give a proper rundown of the program. The general structure of the program can be outlined in the following way: 34 CHAPTER 2. THE NUMERICAL METHOD h Initialisation i h Get an unfinished box i while ∼done h Store the boxes hit by the corner points of box in HB i h Find all boxes hit by box i h Output box data i h Get a new unfinished box i endwhile The rest of this section is devoted to explaining the different code sections found in the outline above. h Initialisation i All Matlab functions are kept in the directory ../m-files so we add the full path of this directory to the Matlab search path. 28 29 30 31 32 clear; p = pwd; cd(’..’); parent=pwd; cd(p); path(path,[parent ’/m-files’]); lsdata; lsodedata; In the data file lsdata.m the following constants are defined: d dx excess interplanes cube_radius The dimension of the Poincaré plane. Side length of the boxes in the Poincaré plane. An amount added to cones (see step 8 and 9). A row vector of x4 -coordinates of all intermediate planes between the Poincaré plane and the origin cube (see step 5 and 6). Half of the side length of the origin cube. and in lsodedata.m: lambda k pplane The linear coefficients of the Lorenz-Stenflo system. The quadratic coefficients of the Lorenz-Stenflo system. The x4 -coordinate of the Poincaré plane. h Get an unfinished box i We get a box from unfinished.dat by using get_unfinished_box. 34 35 36 box = get_unfinished_box; done = 0; if size(box,2)==0, done=1; end; 2.4. STEP 3 AND 4 35 This function either returns the index vector of a box or an empty matrix if there are no remaining boxes in unfinished.dat and inprogress.dat is empty (a box in inprogress.dat could potentially generate new boxes in unfinished.dat so both these files need to be empty before we know that all boxes have been processed). h Store the boxes hit by the corner points of box in HB i The goal in this program is to find all boxes that intersect the image of box. This will be done in a process which starts with a small number of boxes we know are hit by box, and then this set of boxes is enlarged by adding one box at a time. All the boxes hit by box and related information are kept throughout the program in the following matrices: • HB. The columns of this matrix contains the indices of the boxes hit by box. • SP. Each column of this matrix is a point in box that is mapped to the corresponding box in HB. • HP. The image points of the points in SP are columns of this matrix. • D. The differentials of the return map at the points in SP are stored as columns in this matrix. We initialise these variables by mapping the corner points of box and determining which boxes are hit by the points. 46 47 48 49 50 51 52 53 54 55 56 57 % Map the corners of the box [xmin,xmax] = from_box(box); xmin = [xmin; pplane]; xmax = [xmax; pplane]; p = cube_corners(xmin,xmax); q = zeros(d,pow2(d)); dq = zeros(d*(d+1),pow2(d)); for i=1:pow2(d) [q(:,i),tmp] = R(p(:,i)); dq(:,i) = tmp(:); end; [HB,SP,HP,D] = delete_dup(to_box(q),p,q,dq); In the lines above we have used the following functions • cube_corners(xmin,xmax). The output of this function is the corner points of the cube xmin(i) ≤ xi ≤ xmax(i). • delete_dup(a,b,c,...). This function removes duplicate columns in a and the corresponding columns that are removed from a are also removed from b,c,... 36 CHAPTER 2. THE NUMERICAL METHOD h Find all boxes hit by box i The work of finding all boxes in the Poincaré plane intersecting the image of box is done by the function find_hit_boxes. 59 60 61 % Find all hit boxes [HB,SP,HP,D] = find_hit_boxes(xmin,xmax,zeros(1,d+1),... 0,HB,SP,HP,D,1,1); This function has the following function prototype [B,X,Y,D] = find_hit_boxes(XMIN,XMAX,N,C,B,X,Y,D,OB,FID); where the columns of the output matrix B are index vectors of all boxes hit by points from the box XMIN(i) ≤ xi ≤ XMAX(i). (The input arguments N and C are not used in this program.) In the column X(:,I) of the output matrix X there is a point from the starting box [XMIN,XMAX] which is mapped to a point Y(:,I) inside the box B(:,I). The differential of this mapping is stored as the column D(:,I) (and the command reshape restores the matrix). To set up the search for hit boxes the function uses the initial data found in the input arguments B, X, Y and D. If OB = 1 then those boxes that are added to B that are not yet part of the covering (i.e. not in unfinished.dat, inprogress.dat nor in finished.dat) are also added to the covering (i.e. to unfinished.dat). Since the function find_hit_boxes often takes a long time to finish it also outputs progress information in the file with file identifier FID (standard output if FID=1 or no output if FID=0). In short, the algorithm in find_hit_boxes dynamically expands the set of boxes found in the input argument B. The key step in this enlargement is to look at neighbouring boxes to the boxes in B and investigate if any of them is hit by points from the box [XMIN,XMAX]. Such boxes are added to B and in the next iteration their neighbouring boxes are investigated in the same way. This goes on until no neighbours to the boxes in B intersect the image of the starting box. At that time we will have found all boxes hit by the starting box. This algorithm also works when the return map has a discontinuity in the starting box (under the assumption that not all points in the input matrix X are on the same side of the discontinuity) but this situation also involves numerical problems and will be treated further in step 5 and 6. Inside the function find_hit_boxes the problem of determining if the image of the starting box [XMIN,XMAX] intersects a box b (a neighbour to the boxes in B) is solved by a search for a point in the starting box which is mapped inside b. In order for this search to be successful and swift it is necessary to find a suitable starting guess and this is done in the following way: 1. Take all boxes b1 , . . . , bn in B that are neighbours to b (in the function these boxes are stored in the variable nboxes). 2.4. STEP 3 AND 4 37 b1 b q1 box R p1 p p2 q b2 q2 Figure 2.8: This figure illustrates how the starting guess in the function find_hit_boxes is found, as outlined in the text. 2. Since b1 , . . . , bn are in B there are points p1 , . . . , pn (which we store in sguess) in the starting box that are mapped to points q1 , . . . , qn (stored in iguess) inside the boxes b1 , . . . , bn , respectively. 3. Find the convex combination q = α1 q1 + · · · + αn qn , where 0 ≤ αi ≤ 1 and α1 + · · · + αn = 1, that is closest to the box b. The corresponding convex combination p = α1 p1 + · · · + αn pn will be our starting guess of a point in the starting box that hits b. This scheme is implemented in the function closest_point which outputs the point p and the point in b closest to q (which we use as a starting guess in box b for the image point of p). The actual search for a point being mapped to box b is done with the function intersection which has the following function prototype, [X,Y,D,I] = intersection(XMIN,XMAX,N,C,YMIN,YMAX,SG,HG); with input and output arguments • [XMIN,XMAX] are the bounds of the starting box and [YMIN,YMAX] are bounds of the hit box (b in our case). The point SG in [XMIN,XMAX] and the point HG in the box [YMIN,YMAX] are starting guesses for the search. • The output argument I is equal to 1 if there is a point X in [XMIN,XMAX] that is mapped to a point Y in [YMIN,YMAX], otherwise I is equal to 0. The matrix D is the differential of the return map at X. The algorithm in intersection works by solving an optimisation problem. To start with, we have starting guesses X = SG and Y = HG, and typically R(X) 6= Y. This non-equality can be rewritten as Yi − Ri (X) ± µi = 0, where µi measures the discrepancy between Yi and Ri (X), and the sign ± is chosen so that µi ≥ 0. 38 CHAPTER 2. THE NUMERICAL METHOD Now we solve the minimisation problem min µ1 + µ2 + µ3 Y − Ri (X) ± µi = 0, i X ∈ [XMIN,XMAX], Y ∈ [YMIN,YMAX], µi ≥ 0. If this problem has solution µ1 + µ2 + µ3 = 0 then we must have µ1 = µ2 = µ3 = 0 and the corresponding points X and Y satisfy Y = R(X). Otherwise, if µ1 + µ2 + µ3 > 0, there is no point X in [XMIN,XMAX] being mapped to a point Y in HB. In some infrequent cases the optimisation routine in Matlab is unable to solve the minimisation problem and an error message is output in the file error.log. This happens exclusively when the starting box crosses the discontinuity of the return map and this case is studied in more detail in step 5 and 6. h Output box data i Once we are finished with box we output all the data found in HB and related variables. At the same time box is moved from inprogress.dat to finished.dat. 63 64 output_box_data(0,0,box,HB,SP,HP,D(1:d*d,:)); move_box(box,’inprogress.dat’,’finished.dat’); h Get a new unfinished box i The last thing we do is to get a new box and start all over. 71 72 box = get_unfinished_box; if size(box,2)==0, done=1; end; step04.m The program step04.m has a fairly simple purpose. First it is to report on how the program step03.m is progressing, then to rearrange the mapping data output by step03.m in a more suitable form and lastly to prepare for step 5 and 6. h Initialisation i h Track the progress made by step03.m i h Save box data in variables.mat i h Save new boxes crossing the discontinuity in unfinished.dat i 2.4. STEP 3 AND 4 39 h Track the progress made by step03.m i Once every minute we track the progress made by step03.m by plotting the return map attractor (the points from step02.m) and the boxes produced so far using the following colour scheme: • red for boxes in unfinished.dat. • yellow for boxes in inprogress.dat. • black for boxes in finished.dat. h Save box data in variables.mat i When step03.m has finished the next phase is to store the box information produced by step 3 in variables.mat. The data file boxes.dat that step03.m uses for output has the following seven-line format: i s a1 b1 x1 y1 d1 a2 b2 x2 y2 d2 a3 b3 x3 x4 y3 d3 d4 d5 d6 d7 d8 d9 where this means that the image of the box with indices (a1, a2, a3) intersects the box with indices (b1, b2, b3) and that the point (x1, x2, x3) in the first box is mapped to (y1, y2, y3) in the second box (the redundant fourth coordinate x4 is only included to enable us to use the same box data format in step 5 and 6). The differential of the return map at (x1, x2, x3) is equal to d1 d4 d7 d2 d5 d8 . d3 d6 d9 The first two lines i and s are only used in step 5 and 6 and are set to zero in this program. All mapping information will be repackaged in the variables listed below and then saved in the file variables.mat. • BOXES. Each column of this matrix contains the indices of a box belonging to the covering. • CNS. If the image of box i intersects box j (boxes are numbered according to their column index in BOXES) then the element (i, j) in this matrix is non-zero. When the index j is between N + 1 and 2N , where N is the number of boxes in BOXES, then the box j is on the symmetric covering of the other branch of the attractor and is the mirror box of box j − N . 40 CHAPTER 2. THE NUMERICAL METHOD • IPS and OC. We explain these variables in step 6. • SPS. If n = CNS(i,j) then the column SPS(:,n) is a point in box i that is mapped to box j. • HPS. The columns of this matrix are the image points of the corresponding columns in SPS. • DS. The columns of this matrix are the values of the differential map evaluated at the corresponding columns in SPS. • DISC. The boxes in the covering that cross the discontinuity of the return map are listed as columns in this matrix. In later steps, variables associated with cones and expansion are also added to the file variables.mat. All variables were initialised in step 1 to empty matrices and we extend them with the mapping data generated in step03.m by using read_box_data. 52 53 load ’input/variables’; load ’input/added_boxes’; 54 55 56 57 [CH,BOXES,DISC,CNS,SPS,HPS,DS,IPS,OC] = ... read_box_data(BOXES,DISC,CNS,SPS,HPS,DS,IPS,OC); added_boxes = [added_boxes CH]; h Save new boxes crossing the discontinuity in unfinished.dat i In step 5 and 6 we will investigate the boxes that cross the discontinuity of the return map more thoroughly and to prepare for that, we shall extract these boxes and output them in unfinished.dat. When we run step03.m and step04.m for the first time all boxes in the covering are new to us and produced in this run. It is, however, possible that we are running these two steps a second time (or third) after step 5 and 6. In that situation step05.m and step06.m will have added new boxes to the covering and we are re-running step03.m and step04.m on those boxes to make the covering complete. If this is the case then we are only interested in finding discontinuity boxes among the new boxes (since the old discontinuity boxes have already been through step 5 and 6). To keep track of which boxes are new we use the variable added_boxes. New discontinuity boxes are found by using find_discontinuity_boxes which searches through the boxes in added_boxes for boxes that are mapped to both branches of the return map attractor (and hence must cross the discontinuity). 66 NEWDISC = find_discontinuity_boxes(added_boxes,BOXES,CNS); 67 68 69 fprintf(1,’\n\n’); if size(NEWDISC,2)~=0 2.5. STEP 5 AND 6 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 2.5 41 k = size(IPS,1); for B = NEWDISC k = k+1; DISC = [DISC B]; for L=1:size(interplanes,2) IPS(k,L).left.CNS = sparse(1,2*size(BOXES,2)); IPS(k,L).right.CNS = sparse(1,2*size(BOXES,2)); end; OC(k).left.CNS = sparse(1,2*size(BOXES,2)); OC(k).right.CNS = sparse(1,2*size(BOXES,2)); end; NEWDISC = NEWDISC’; save ’result/unfinished.dat’ NEWDISC -ASCII; save ’result/variables’ BOXES CNS SPS HPS DS DISC IPS OC; fprintf(1,’ %d new discontinuity boxes.\n’,... size(NEWDISC,1)); fprintf(1,’ Next, do the following steps\n’); fprintf(1,’ cd ../step05-06\n’); fprintf(1,’ make from03-04\n’); fprintf(1,’ and then start STEP05 and STEP06.\n\n’); else save ’result/variables’ BOXES CNS SPS HPS DS DISC IPS OC; fprintf(1,’ No new discontinuity boxes.\n’); fprintf(1,’ Next, do the following steps\n’); fprintf(1,’ cd ../step07\n’); fprintf(1,’ make from03-04\n’); fprintf(1,’ and then start STEP07.\n\n’); end; Step 5 and 6 The result of step 3 and 4 is a covering of the return map attractor and in step 5 and 6 we will complement this covering by adding boxes and mapping data that were not properly accounted for in the previous two steps. There is a small fraction of points in the Poincaré plane near the discontinuity of the return map that have orbits flowing close to the hyperbolic fix point in the origin before returning to the Poincaré plane. These orbits are subject to strong expansive and contractive forces which make them elusive to the numerical return map and at the same time important for the overall behaviour of the system. If we follow one of the boxes, that contains the discontinuity, as it flows down towards the origin, the expansion in the x1 -direction and the contraction in the x2 , x3 -directions will elongate the box in the x1 -direction and compress it in the other directions. The result is that most points in the box will simply be deflected 42 CHAPTER 2. THE NUMERICAL METHOD Figure 2.9: In a box containing the discontinuity a very narrow (<10−15 ) 1 set of points flow within a distance of 10 of the origin. and flow past the origin while a tiny set of points actually comes close to the origin. It will therefore be difficult to isolate the orbits flowing close to the origin. Another complicating fact is that when orbits flow in the vicinity of the origin they can spend an arbitrary long time in a neighbourhood of the origin (depending on how close they are to the stable manifold of the origin) and this must be dealt with in some non-straightforward way since standard numerical ode-routines will break down when used with long integration times. A way to get a handle of the problematic orbits is implemented in the program step05.m. This program starts with a box in the Poincaré plane that contains 1 the discontinuity (prepared by step04.m) and a small cube C1/10 = {|xi | ≤ 10 } centred around the origin. It will track how this box flows down to the origin by introducing a number of intermediate planes {x4 = Ci } between the Poincaré plane and the cube. Since every orbit that starts from the box and flows the whole way down to the cube must intersect all intermediate planes inside certain hit regions this means that we will get hold of these close-to-origin orbits if we use the following stepwise flowing method: We let the box flow down and hit the first intermediate plane. In this plane we determine a box that contains that part of the intersection which is inside the hit region. We also fix a plane on each side of the hit region, according to Figure 2.10, and determine boxes in these two planes that intersect the rest of the orbits. These side boxes then flow back to the Poincaré plane and ¬ ® ® Figure 2.10: A box ¬ in an intermediate plane flows down and lands in a box inside a hit region in the next intermediate plane. The part of the box that flows outside lands in two boxes ® on sloping side planes. 2.5. STEP 5 AND 6 43 we use the same shooting algorithm as in step 3 to find the boxes in the Poincaré plane hit by these two boxes. The box in the first intermediate plane is used as a new starting box and we let it flow down to the second intermediate plane by repeating the procedure. All this is reiterated until we end up with a box on top of the cube C1/10 (which is guaranteed to contain all points of intersection between orbits emanating from the original box and the top lid of the cube). This puts us on top of the cube. To get around the problem with orbits flowing very close to the origin, making them seemingly untrackable by numerical means, we use a coordinate change. This change of coordinates z = ψ(x), as discussed in Section 1.4 and analysed in Chapter 3, transforms the Lorenz-Stenflo system ẋ = Ax + F (x) into an almost linear system ż = Az + G(z) where the non-linear term G(z) is pushed to be very small close to the stable and unstable manifolds. The orbits of this so-called normal form system can, as an effect, be approximated well by the corresponding orbits of the linear system ż = Az and these orbits can be integrated analytically, which factors out the problem of long integration 1 we change back to the standard times. Once orbits exit the cube at z1 = ± 10 coordinates x = φ(z) and resume with the numerical integrator routine. A detailed study of this coordinate change and accompanying approximations can be found in Chapter 3 where it is shown that all errors involved are sufficiently small and can be included in our estimates of boxes and cones. After the box has undergone these coordinate transformations and is transported by the flow through 1 the cube we have two new boxes around each of the boundary faces x1 = ± 10 that intersect all orbits stemming from the box on top of the cube as they exit the 1 z-cube at z1 = ± 10 . We then use the shooting algorithm of step 3 to find all boxes in the Poincaré plane hit by orbits starting from these two last boxes. If any of the boxes in the Poincaré plane are not part of the covering we need to add them to the covering and re-run step03.m on them. The program step05.m can be run as many separate processes (just as we x4 ¯ ¬ ® x1 Figure 2.11: Origin passage: ¬ change coordinates with ψ, flow linearly through the cube, ® change back to the original coordinates with φ and ¯ flow to the Poincaré plane. 44 CHAPTER 2. THE NUMERICAL METHOD did with step03.m) and each process works with one of the discontinuity boxes performing the steps described above. Parallel to step05.m we run step06.m which has a similar function as step04.m. It reports the progress step05.m is making and when step05.m has finished collects all data and outputs it in the file variables.mat. (Any newly introduced boxes are output in unfinished.dat.) step05.m Before going into the details of the program step05.m we first present it in an outline form in order to give the general plan of the program. h Initialisation i h Get a discontinuity box i while ∼done % Let box stepwise climb down to the cube h Let box be the starting box i for yd = interplanes h Define a hit region in the next plane i h Determine a hit box containing the image of the starting box i h Determine a hit box in the left-hand plane i h Determine a hit box in the right-hand plane i h Let the hit box in the next plane be the new starting box i endfor % Flow the box back to the Poincaré plane h Transform the box to new coordinates with ψ i for S = [−1 1] % Flow on both sides of the origin h Let the box flow through the origin cube i h Transform back to the original coordinates with φ i h Find all boxes in the Poincaré plane hit by the box i endfor h Get a new discontinuity box i endwhile While reading the rest of this section it is good to keep a print-out of the program next to you, so as not to get lost in all details. h Get a discontinuity box i In this program we use the same three-file system as we did in step03.m to keep track of boxes and their status. This time the file unfinished.dat carries only boxes that intersect the discontinuity of the return map. 2.5. STEP 5 AND 6 27 28 29 45 done = 0; box = get_unfinished_box; if size(box,2)==0, done=1; end; h Let box be the starting box i Throughout the descent to the cube we will let [xmin,xmax] be the coordinate range of the starting box, which we initialise to be box. In every mapping from one intermediate plane to the next we will also calculate the differential of that mapping (in some point in the first plane) and the variable D will be the differential accumulated so far by multiplying the differentials of these stepwise mappings (D will eventually form an approximate differential of the whole mapping from the box down to the cube). 41 42 43 44 45 [xmin,xmax] = from_box(box); xmin = [xmin; pplane]; xmax = [xmax; pplane]; D = eye(d+1); k = 0; h Define a hit region in the next plane i Our first task is to choose a hit region in the next intermediate plane that contains all points of intersection between the plane and orbits flowing from the starting box down to the cube. If we look at the set of all intersection points in the next plane with orbits originating from the starting box (including orbits that do not approach the origin), this set is delimited by orbits that have a tangential intersection with the plane (as illustrated in Figure 2.12(a)). Since these orbits, and nearby orbits, do not flow towards the cube at the origin we shall pick the hit region well within these peripheral points. At the tangential intersection points, the fourth component of the vector field vanishes, which means that F4 (x) = λ4 x4 + k4 x21 + k5 x1 x2 + k6 x1 x3 + k7 x22 + k8 x2 x3 + k9 x23 = 0. For a fixed value of x4 this describes a second degree algebraic surface in the plane and rewriting it in canonical form makes it easy to read off the shortest distance from the set to the x4 -axis. We choose the hit region to be a square box centred at the x4 -axis with side length half of that distance (but not larger than 1). 52 53 54 55 56 57 % Pick a hit region in the next plane fprintf(1,’ Next hit region’); if yd~=interplanes(end) [hmin,hmax] = hit_region(yd,1); else hmin = [repmat(-yd,d,1); yd]; 46 CHAPTER 2. THE NUMERICAL METHOD x4 x4 x1 (a) x1 (b) Figure 2.12: (a) The strong hyperbolicity of the origin deflects orbits from the starting box making them intersect the next intermediate plane tangentially. (b) On the three faces indicated in the figure the vector field points outwards and on the rest of the faces it points inwards. 58 59 hmax = [repmat(yd,d,1); yd]; end; To rule out that an orbit landing outside the hit region could still flow down to the origin cube we check that the vector field points outwards on the three planar faces illustrated in Figure 2.12(b) and orbits can therefore not enter a corresponding region further down in the x1 -direction. 60 61 62 63 64 65 66 67 68 69 BMIN = [min([xmin(1:end-1) hmin(1:end-1)]-0.05,[],2); ... hmin(end)]; BMAX = [max([xmax(1:end-1) hmax(1:end-1)]+0.05,[],2); ... xmax(end)+0.05]; if k>1 CouldOrbitReenter = ~check_flowbox(BMIN,BMAX); if CouldOrbitReenter error(’Hit region allows re-entering orbits’); end; end; h Determine a hit box containing the image of the starting box i We will now go on to determine a box in the hit region that the orbits from the starting box land inside, but before that we need to find a point x in the starting box that is mapped to a point y in the hit region. This is done with the function stepwise_intersection. The box in the hit region is determined by solving the following optimisation 2.5. STEP 5 AND 6 47 ¬ ® Figure 2.13: The function stepwise_intersection works by first enclosing the starting box and the hit region in a box, ¬ map a point in the starting box with box_R and use shooting to find a point hitting the next plane. Then in a second phase ® use shooting to find a point landing in the hit region. problems min/max box_R i (x) ( x ∈ starting box, box_R(x) ∈ hit region, where box_R is used with a box that encloses the starting box and contains the hit region on one of its boundary faces (the same type of box as in Figure 2.13). These problems are solved in the function stepwise_box. 71 72 73 74 75 % Determine a middle box [x,y,dd,isHit] = stepwise_intersection(xmin,xmax,hmin,hmax); if ~isHit, error(’Unable to find intersection’); end; [ymin,ymax] = stepwise_box(xmin,xmax,hmin,hmax,x,y); output_iplane_data(k,0,box,ymin,ymax,zeros(1,d+1),0); This function has the following function prototype [YMIN,YMAX] = stepwise_box(XMIN,XMAX,YMIN,YMAX,X,Y); where the starting box is XMIN(i) ≤ xi ≤ XMAX(i), the hit region YMIN(i) ≤ xi ≤ YMAX(i) and X is a point in the starting box which lands in a point Y inside the hit region (these points are used to start the search). The output arguments are the coordinate range of the hit box. h Determine a hit box in the left-hand plane i Orbits that deviate to the left of the hit region are caught by a plane nvec · x = C to the left of the hit region. 77 78 % Left-hand plane fprintf(1,’\n Left plane\n’); 48 79 80 81 82 83 84 85 86 87 CHAPTER 2. THE NUMERICAL METHOD if ymin(1)<hmin(1)+1e-5 % Pick a left-hand plane nvec = [BMIN(d+1)-BMAX(d+1)+0.05 zeros(1,d-1) ... BMIN(1)-hmin(1)]; C = nvec*hmin; CouldOrbitReenter = ~outward_flow(BMIN,BMAX,nvec,C); if k~=1 & CouldOrbitReenter error(’Left hit plane allows re-entering orbits’); end; The box in this plane that contains all intersections with the orbits from the starting box is determined by solving the same type of optimisation problem as in stepwise_box and this is done in the function stepwise_plane_box. 88 89 90 91 92 93 % Determine a left box and hit boxes x = cube_corners(xmin,[xmin(1);xmax(2:end)]); [ht,y,dy] = box_R(x(:,1),BMIN,BMAX,nvec,C); [lmin,lmax] = stepwise_plane_box(xmin,xmax,BMIN,... [hmin(1);BMAX(2:end)],BMIN,BMAX,nvec,C,x); output_iplane_data(k,-1,box,lmin,lmax,nvec,C); From the box we use shooting to find which boxes in the Poincaré plane that are hit. 94 95 96 97 98 99 SP = y; [HP,DD] = R(SP); DD = DD(:); HB = to_box(HP); [HB,SP,HP,DD] = find_hit_boxes(lmin,lmax,nvec,C,... HB,SP,HP,DD,0,1); DD = append_matrix(DD,dy*D); output_box_data(k,-1,box,HB,SP,HP,DD(1:d*d,:)); end; The code section for the plane on the right-hand side is similar. h Let the hit box be the new starting box i We let the box in the hit region be the new starting box and go on to the next intermediate plane. 123 124 125 % New start box xmin = ymin; xmax = ymax; D = dd*D; h Transform the box to new coordinates with ψ i At this point we have a box on top of the cube. This box is transformed with the coordinate change z = ψ(x) into the coordinates z where the Lorenz-Stenflo system is a system written in normal form. We use the function xpsi_box to 2.5. STEP 5 AND 6 49 determine a box in the new coordinates that contains the transformed box (this is done inside xpsi_box by solving the same type of optimisation problems as in stepwise_box). 133 134 135 [zmin,zmax] = xpsi_box(xmin,xmax); [z,dd] = xpsi(0.5*(xmin+xmax)); D = dd*D; We also multiply D by the differential of this transformation at some point inside the box. The plan is to keep on composing D with the differentials of individual mappings so as in the end get an approximation of the differential of a mapping from Poincaré plane to Poincaré plane. h Let the box flow through the cube i 1 } with the linear system The resulting box will now flow through the cube {|zi | ≤ 10 and since the box is situated across the stable manifold z1 = 0 of the origin it is cut into two pieces and the two halves flow on different sides of the stable manifold. 1 On each of the two faces z1 = ± 10 we use the function linflow_box to calculate a box that contains the hit image of one of the half-boxes as it exits the cube. In the function linflow_box we also add a small amount of excess to the enclosing box due to approximation of the normal form flow with the flow of the linear system. This excess amount is calculated in Result 7 in Chapter 3. 137 for S = [-1 1] 138 139 140 if S<0, fprintf(1,’\n if S>0, fprintf(1,’\n Left-hand side\n’); end; Right-hand side\n’); end; 141 142 OD = D; 143 144 145 146 147 148 149 [wmin,wmax] = linflow_box(zmin,zmax,S,cube_radius,1.15e-8); z = 0.5*(zmin+zmax); if S==-1, z(1) = 0.5*(zmin(1)+0); end; if S==+1, z(1) = 0.5*(0+zmax(1)); end; [w,dd] = linflow(z,S,cube_radius); OD = dd*OD; h Transform back to the original coordinates with φ i 1 is then transformed back to the Each one of the boxes on the two faces z1 = ± 10 original coordinates with x = φ(z) and with the function xphi_box we determine a box in coordinates x that encloses the transformed box. 151 152 [wmin,wmax] = xphi_box(wmin,wmax); [w,dd] = xphi(0.5*(wmin+wmax)); 50 CHAPTER 2. THE NUMERICAL METHOD z4 z1 Figure 2.14: The box on top of the cube flows on different sides of the 1 plane z1 = 0 and exits the cube on the two faces z1 = ± 10 . 153 OD = dd*OD; 154 155 output_origin_data(S,box,wmin,wmax); h Find all boxes in the Poincaré plane hit by box i If we refer back to Figure 2.11 we now have completed steps ¬ to ® and the remaining step is to let the box flow back to the Poincaré plane. This is the same situation as in step 3 and we will use the same shooting algorithm to find all boxes in the Poincaré plane that intersect the landing set of the box. We initialise the algorithm by mapping one point from the box to the Poincaré plane. The variables that store the mapping data are the same as in step03.m. 157 158 159 % Map a point SP = 0.5*(wmin+wmax); [HP,DD] = R(SP); DD = DD(:); HB = to_box(HP); 160 161 162 163 164 165 % Find all hit boxes [HB,SP,HP,DD] = find_hit_boxes(wmin,wmax,zeros(1,d+1),0,... HB,SP,HP,DD,0,1); DD = append_matrix(DD,OD); output_box_data(-1,S,box,HB,SP,HP,DD(1:d*d,:)); h Get a new discontinuity box i As soon as both half-boxes are done we start working on the next box. 176 177 box = get_unfinished_box; if size(box,2)==0, done=1; end; step06.m Step 6 consists of two phases. The first phase is when step05.m is still running. During this time step06.m will just print out a progress report of the number of 2.5. STEP 5 AND 6 51 boxes that have been completed. The second phase starts when step05.m has finished and consists of reading boxes.dat, updating variables.mat and outputting new boxes in unfinished.dat. The program step06.m has about the same layout as step04.m. h Initialisation i h Track the progress made by step05.m i h Read box data i h Save box data i h Read box data i The mapping data output by step05.m is in the same format as in step 3 and 4, and we use the function read_box_data to update our variables. This time the data is added to the variables IPS and OC. • IPS. In the variable IPS all box and mapping data of the intermediate planes are recorded. IPS is a matrix and IPS(i,l) corresponds to the discontinuity box i (i is the column index of the box in DISC) and the intermediate plane on level l (0 = Poincaré plane, 1 = first intermediate plane, . . . ). IPS(i,l) has three fields .left, .middle and .right that correspond to the box in the left-hand plane, the box inside the hit region and the box in the right-hand plane, respectively. Each field has the following subfields: – XMIN and XMAX. The coordinate range of the box. – N and C. These variables are only used for the .left and .right cases and are the normal vector and the constant in the equation of the plane that contains the box. – CNS. This matrix corresponds to the variable CNS in variables.mat. If CNS(1,j)=k then the current box is mapped across box j in the Poincaré plane and k is the column index in SPS, HPS and DS that corresponds to this mapping (only used for .left and .right). – CMIN, MAX and CBS are cone variables and used in later steps. • OC. This variable holds the same kind of data as IPS but for the two exit faces of the origin cube. OC(i) corresponds to discontinuity box i and has two fields .left and .right. The fields correspond to the left and right exit faces, respectively, and each one has the following subfields XMIN, XMAX, CNS, CMIN, CMAX and CBS with the same meaning as in IPS. 27 % Update box covering 28 29 30 fprintf(1,’Updating box covering’); load ’input/variables’; 52 31 32 33 34 35 36 CHAPTER 2. THE NUMERICAL METHOD IPS = read_iplane_data(DISC,IPS); OC = read_origin_data(DISC,OC); [CH,BOXES,DISC,CNS,SPS,HPS,DS,IPS,OC] = ... read_box_data(BOXES,DISC,CNS,SPS,HPS,DS,IPS,OC); added_boxes = CH; fprintf(1,’\n\n’); h Save box data i If any new boxes were added to the covering in step05.m we need to go back and re-run step03.m and step04.m on them (and possibly step05.m and step06.m after that). If this is not the case we have processed all discontinuity boxes so we add them to the data file variables.mat and move on to step 7. 39 % Create unfinished.dat, ... 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 2.6 n = size(added_boxes,2); if n~=0 unfinished = added_boxes’; inprogress = []; finished = BOXES(:,end-n+1:end)’; save ’result/unfinished.dat’ unfinished -ASCII; save ’result/inprogress.dat’ inprogress -ASCII; save ’result/finished.dat’ finished -ASCII; save ’result/variables’ BOXES DISC CNS SPS HPS DS IPS OC; save ’result/added_boxes’ added_boxes; fprintf(1,’%d new boxes added\n’,n); fprintf(1,’Next, do the following steps\n’); fprintf(1,’ cd ../step03-04\n’); fprintf(1,’ make from05-06\n’); fprintf(1,’and then start STEP03 and STEP04.\n\n’); else save ’result/variables’ BOXES DISC CNS SPS HPS DS IPS OC; fprintf(1,’No new boxes added\n’,n); fprintf(1,’Next, do the following steps\n’); fprintf(1,’ cd ../step07\n’); fprintf(1,’ make from05-06\n’); fprintf(1,’and then start STEP07.\n\n’); end; Step 7 Let us summarise the results of the previous steps. We now have 2.6. STEP 7 53 • an invariant collection of boxes covering the attractor, meaning that each box in the collection is mapped with the return map inside the collection. • that if the image of box i intersects box j then we have a point in box i that is mapped inside box j. Moreover, we have the differential of the return map at that point. (This is not entirely true for the orbits that flow close to the origin. These orbits are approximated in step 5 and 6 by subdividing them into mappings from one intermediate plane to the next and the differential of the mapping from Poincaré plane and back is approximated by multiplying the differentials of these submappings.) In this step we will start to construct inner and outer cones with the following properties. • The two types of cones are constant on each box. • The inner cone of a box is inside the the outer cone of that box and also inside the outer cones of neighbouring boxes. • If box i is mapped to box j then the outer cone of box i is mapped with the differential of the return map (meaning the constant value of the differential evaluated at the point in box i that is mapped inside box j) inside the inner cone of box j. Such a set of inner and outer cones is called invariant (under this piecewise constant approximation of the differential map). The goal is to create an invariant set of cones where the cones are as small as possible. In this step we will only create an initial set of cones (satisfying the first two properties) and in step 8 and 9 push these cones forward to the whole collection of boxes and successively enlarge the cones until we get an invariant set of cones. It is important that the cones we generate in this step are chosen sensibly since they will influence the resulting invariant cones. The observation underlying our choice of initial cones is that near the discontinuity of the return map the differential has one large singular value and two small singular values. Because of this, almost any cone in the boxes crossing the discontinuity is mapped to a very thin cone practically coinciding with the image direction of the most expanding direction. It is therefore inevitable that any set of invariant cones must at least contain these most expanding image directions. As our initial set of inner cones we will, consequently, pick the boxes that intersect the images of the discontinuity boxes and for each such hit box we take the most expanding directions landing in the box, and coming from the discontinuity boxes, and then choose a cone which contains these directions. This will be the initial inner cones and we go on and create on each such box an outer cone that contains the inner cone of the box and its neighbouring boxes. 54 CHAPTER 2. THE NUMERICAL METHOD step07.m The main part of step07.m is an iteration over all boxes and on the boxes hit by any of the discontinuity boxes we create initial cones. h Initialisation i h Renumber the boxes of the covering i h Initialise the inner cones i for j = 1 : N % Iterate over hit boxes h Find all most expanding directions hitting the box i h Create an inner cone containing all the directions i endfor h Create outer cones i h Save cone data i h Renumber the boxes of the covering i When we created the box covering of the return map attractor back in step 3 to 6, boxes were added to the covering more or less haphazardly and since we will not add any new boxes this is a good time to rearrange the boxes in a more orderly fashion. We sort the boxes according to their first index. In this way it will be easier to to correlate the number of a box and its position on the attractor. It is also necessary to readjust the variables CNS, IPS and OC to correspond to the new enumeration. 23 24 25 26 27 28 29 30 31 32 33 [BOXES,I] = sortrows(BOXES’); BOXES = BOXES’; CNS = CNS(I,[I;I+N]); for i=1:size(DISC,2) for l=1:size(interplanes,2) IPS(i,l).left.CNS = IPS(i,l).left.CNS(:,[I;I+N]); IPS(i,l).right.CNS = IPS(i,l).right.CNS(:,[I;I+N]); end; OC(i).left.CNS = OC(i).left.CNS(:,[I;I+N]); OC(i).right.CNS = OC(i).right.CNS(:,[I;I+N]); end; h Initialise the inner cones i The inner cones we will use are constructed in the following way: 1. Pick a unit vector u1 which we call the central direction of the cone. 2.6. STEP 7 55 u1 u3 u2 Figure 2.15: First pick an ON-basis {u1 , . . . , ud } and in the plane perpendicular to u1 and with origin at the tip of u1 choose a rectangle with sides parallel to u2 , . . . , ud . The vectors to the corners of the rectangle span a cone. 2. Perpendicular to this direction there is a plane which we place with its origin at the tip of the vector u1 , and we choose an orthonormal basis {u2 , . . . , ud } in this plane. 3. Select a rectangle in the plane with sides parallel to the coordinate axes. The rectangle defines a cone as the positive and negative cones spanned by its corner vectors (corner vector = a vector that starts from the base point of u1 and ends in a corner point of the rectangle). The inner cones are then stored in the following variables • IBS (d 2 ×N -matrix). If the basis we have chosen for an inner cone is {u1 , u2 , . . . , ud }, where u1 is the central direction of the cone and the rest of the vectors u2 , . . . , ud are a basis in the perpendicular plane, then the column in the matrix IBS that corresponds to this inner cone contains the basis (stacked up as one column). • IMIN, IMAX (d×N -matrices). After the cone basis is fixed we can define a cone by giving bounds [umin , umax ] for the rectangle in the perpendicular plane (we have put the first coordinate of umin and umax equal to 1). The columns in IMIN and IMAX contain the vectors umin and umax , respectively, for the corresponding cone. We initialise IBS to be all zero (meaning that no inner cones nor bases are defined on any box) and the variables IMIN and IMAX also to be zero (except the first coordinate which is always 1). 44 45 46 IBS = zeros(d*d,N); IMIN = [ones(1,N); zeros(d-1,N)]; IMAX = [ones(1,N); zeros(d-1,N)]; h Find all most expanding directions hitting the box i For each box j in the covering we loop over the discontinuity boxes. 56 48 CHAPTER 2. THE NUMERICAL METHOD for j=1:N 49 50 51 52 dirs = []; for b = DISC i = box_index(b,BOXES); Box i hits box j if the entry n = CNS(i,j) is non-zero. This entry also point to the column number in DS where the differential of the mapping from box i to box j is stored. With a singular value decomposition of the differential we find the most expanding direction landing in box j and store it in the variable dirs. 53 54 55 56 57 58 n = CNS(i,j); if n~=0 X = reshape(DS(:,n),d,d); [U,S,V] = svds(X,1); dirs = [dirs U]; end; Since box i has a mirror box σ(i) on the other branch of the attractor we will at the same time investigate if that box hits box j, where σ denotes the symmetry mapping between the branches. Because of the way CNS is built up, only containing the information of how the boxes from one branch are mapped, we must look if there is a mapping from box i to box σ(j). If this is the case then we can conclude that there is also a symmetric mapping from box σ(i) to box j. The differentials are related as dRj←σ(i) = dσj←σ(j) ◦ dRσ(j)←i ◦ dσi←σ(i) . 59 60 61 62 63 64 65 66 n = CNS(i,j+N); if n~=0 X = reshape(DS(:,n),d,d); X = dxsigma*X*dxsigma; [U,S,V] = svds(X,1); dirs = [dirs U]; end; end; h Create an inner cone containing the most expanding directions i If there are discontinuity boxes hitting box j then we will construct a cone that contains all the most expanding directions that land in box j. All the work in this code section is done by the function create_cone. This function uses the vectors in dirs to create a suitable cone basis and a cone that contains all the vectors. 2.6. STEP 7 68 69 70 71 72 73 57 if size(dirs,2)~=0 [cone_min, cone_max, basis] = create_cone(dirs); IBS(:,j) = basis(:); IMIN(:,j) = cone_min; IMAX(:,j) = cone_max; end; 74 75 end; The input and output arguments of create_cone are [CMIN,CMAX,CB] = create_cone(D,BS,OCB); • D is a matrix with the vectors as columns. • BS. The vectors in D can be grouped into consecutive blocks, where vectors from one block are spanning a cone and the whole of that cone is to be included in the created cone. The number of vectors in each block is BS (default value is 1). • CB is an orthogonal matrix where the columns are the basis vectors of the created cone. The first column contains the central direction of the cone. • CMIN and CMAX are two column vectors that contain the minimal and maximal coordinates of the cone, respectively. • OCB is an optional third input argument. If this input argument is included the columns of OCB will be used as a cone basis instead of creating a new basis. (The output argument CB will then be equal to OCB.) Most of the work done in create_cone is in determining the cone basis and this starts with the central direction of the cone (i.e. the first basis vector) u1 which should be pointing in a direction similar to the vectors {vi } in D. If we assume that the vectors are unit vectors we will choose u1 as the solution to the problem min n X (u1 · vi )2 , where ku1 k2 = 1, i=1 i.e. minimizing the sum i cos2 αi where αi is the acute angle between u1 and vi . This is a classical optimisation problem and its solution is to choose u1 as the image direction corresponding to the largest singular value of the matrix whose columns are {vi }. The next thing is to choose the other basis vectors u2 , . . . , ud . We prolong the vectors vi until they reach the plane with origin at the tip of the vector u1 and perpendicular to u1 , thus getting the vectors wi = vi /(vi · u1 ). If we subtract the vector u1 from the vectors {wi } we get vectors in the plane originating from the P 58 CHAPTER 2. THE NUMERICAL METHOD origin of the plane to the points where the vectors wi hit the plane. We now choose the basis vectors u2 , . . . , ud to approximate the vectors wi − u1 well by solving the same type of minimisation problem we did for u1 , which means that u2 , . . . , ud will be the image directions corresponding to the non-zero singular values of the matrix with columns {wi − u1 }. h Create outer cones i On the boxes that have an inner cone we also define an outer cone. This outer cone will contain the inner cone of the box and its neighbours. All the outer cones are created using the function create_outer_cones. 80 % Outer cones 81 82 fprintf(1,’Create initial outer cones’); 83 84 85 [OMIN,OMAX,OBS,CH] = ... create_outer_cones(BOXES,IMIN,IMAX,IBS,excess); 86 87 fprintf(1,’\n’); The prototype of create_outer_cones is [OMIN,OMAX,OB,OCH] = ... create_outer_cones(B,IMIN,IMAX,IB,XS,OOMIN,OOMAX,OOB,ICH); where the input arguments are • B is a matrix whose columns are the boxes of the whole collection. • IB contains the cone bases for the inner cones. • IMIN and IMAX are column matrices with the minimal and maximal bounds of each inner cone expressed in the inner cone bases listed in IB. • XS is an extra amount that is added to the outer cones. • The three optional arguments OOMIN, OOMAX and OOB specify earlier outer cones that are to be enlarged to correspond to the new inner cones, i.e. keeping the same bases for the outer cones and only enlarging the minimal and maximal bounds. If these input arguments are missing then new outer cones will be created from scratch. • The last optional argument ICH lists those inner cones that have changed since we last created outer cones. The output arguments are • OCH specify the boxes that have a new or changed outer cone. • OMIN, OMAX and OB are all the outer cones created to accompany the inner cones. 2.7. STEP 8 AND 9 59 h Save cone data i The inner and outer cones are stored in the file cones.mat, and the boxes with a new outer cone are stored in changed_boxes.mat. 90 % Save cone data 91 92 93 94 fprintf(1,’Save cone data’); save ’result/cones’ IMIN IMAX IBS OMIN OMAX OBS; save ’result/changed_boxes’ CH; The last bit of information we store is the boxes that are hit by the boxes in changed_boxes.mat. This information is stored in the variable HBS and saved in hit_boxes.mat as well as in the file unfinished.dat (starting boxes for step 8 and 9). 97 % Find hit boxes 98 99 100 101 102 103 104 105 I = box_index(CH,BOXES); [X,J] = find(CNS(I,1:N)); HBS = BOXES(:,J); [X,J] = find(CNS(I,N+1:2*N)); HBS = [HBS BOXES(:,J)]; HBS = delete_dup(HBS); save ’result/hit_boxes’ HBS; 106 107 108 unfinished = HBS’; save ’result/unfinished.dat’ unfinished -ASCII; 109 110 fprintf(1,’\n\n’); 111 112 113 114 115 2.7 fprintf(1,’Next, do the following steps\n’); fprintf(1,’ cd ../step08-09\n’); fprintf(1,’ make\n’); fprintf(1,’and then start STEP08 and STEP09.\n\n’); Step 8 and 9 After having created a set of initial cones in step 7 we will now use an iterative method that pushes these cones onto new boxes and modifies existing cones until we eventually get a set of invariant cones on all boxes (invariant cones means that if box i is mapped to box j then the outer cone on box i is mapped inside the inner cone on box j). Each iteration starts with some initial data stored in the following files 60 CHAPTER 2. THE NUMERICAL METHOD • changed_boxes.mat. Boxes that have outer cones that either changed or were created in the last iteration. • hit_boxes.mat. The image boxes that the boxes in changed_boxes.mat are mapped inside. • cones.mat. All cones generated so far. At the start of the first iteration we get this data from step07.m. For each box j in hit_boxes.mat we loop over the boxes listed in the file changed_boxes.mat and check if the inner cone on box j contains the image of the outer cone coming from the box in changed_boxes.mat. If this is not the case (or if box j doesn’t yet have a cone pair) then we enlarge (or create) the inner cone on box j to contain those image cones. When all hit boxes have been checked and new inner cones have been created, or old inner cones enlarged, we go through all outer cones and change (or create) some of those to make sure they contain the inner cones of the box and its neighbouring boxes. All boxes with a modified outer cone are then included in changed_boxes.mat for the next iteration. The file hit_boxes.mat and cones.mat are also updated. The work in this iterative scheme is divided between the programs step08.m and step09.m. Program step08.m deals with individual hit boxes. It begins with a box from hit_boxes.mat, creates or changes its inner cone depending on the outer cones landing in the box and then restarts with a new box from hit_boxes.mat. Several instances of step08.m can be run in parallel. The other program step09.m manages the iterations. While step08.m is running step09.m tracks its progress by plotting and printing partial results. When step08.m has finished, step09.m collects all data, updates the outer cones and starts the next iteration by changing the data files. step08.m The program step08.m has the following layout: h Initialisation i h Get a hit box i while ∼done h Load cone data i h Progress report i h Find all image cones hitting the box i h Update inner cone i h Get a new hit box i endwhile 2.7. STEP 8 AND 9 61 h Get a hit box i As before we use three files to keep order of the boxes being processed, • unfinished.dat contains hit boxes that have not yet been processed. At the start of an iteration this file contains all hit boxes. • inprogress.dat holds all hit boxes that are currently being processed. • finished.dat has all completed hit boxes. To get a box we retrieve it from the file unfinished.dat (and move it over to inprogress.dat). If the file unfinished.dat is empty we are either in between two iterations, in which case we wait for a new iteration to start, or the last iteration has finished and we are done. All this is taken care of by the function get_hit_box which either returns a box (possibly after waiting some time) or an empty matrix (when no boxes are left and the last iteration has finished). 29 30 31 32 33 34 35 box = get_hit_box; if size(box,2)==0 done = 1; else j = box_index(box,BOXES); done = 0; end; h Load cone data i Since this program works asynchronously to step09.m we need to load all cone data each time we start with a new hit box (a new iteration might have started). 37 while ~done 38 39 40 41 42 get_lock; load ’cones’; load ’changed_boxes’; rm_lock; h Find all image cones hitting the box i We step through the boxes in changed_boxes.mat and those that are mapped to our box j. Each such box i has an outer cone which is the positive and negative cones spanned by a set of corner vectors. These corner vectors are mapped with the differential map to our box and we store the resulting vectors as columns in the matrix dirs. 62 52 53 54 CHAPTER 2. THE NUMERICAL METHOD dirs = []; k = 0; for i=1:N 55 56 57 58 59 60 61 62 63 64 65 66 80 % Box i --> Box j n = CNS(i,j); if n~=0 & ismember(BOXES(:,i)’,CH’,’rows’) k = k+1; X = reshape(OBS(:,i),d,d); A = reshape(DS(:,n),d,d); vects = cone_corners(OMIN(:,i),OMAX(:,i)); dirs = [dirs A*X*vects]; fprintf(1,’%5d’,k); if mod(k,10)==0, fprintf(1,’\n’); end; end; end; At the same time we check the mapping from the symmetric box σ(i) to box j. This is done by checking the transition from box i to box σ(j) and transforming the result. h Update inner cone i To see if the image cones spanned by the vectors in dirs are included in the inner cone we use create_cone and find the coordinate range of a cone that contains all these cones. We then compare this cone with the inner cone and if it is not completely inside the inner cone then we create a new inner cone. 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 % Update inner cone on box j isConeChanged = 0; if find(IBS(:,j)~=0) basis = reshape(IBS(:,j),d,d); [cone_min,cone_max] = create_cone(dirs,pow2(d-1),basis); isNewConeOutside = ... ~isempty(find(cone_min(2:d)<IMIN(2:d,j))) | ... ~isempty(find(cone_max(2:d)>IMAX(2:d,j))); if isNewConeOutside vects = cone_corners(IMIN(:,j),IMAX(:,j)); dirs = [dirs basis*vects]; [cone_min,cone_max,basis] = create_cone(dirs,pow2(d-1)); isConeChanged = 1; end; else [cone_min,cone_max,basis] = create_cone(dirs,pow2(d-1)); 2.7. STEP 8 AND 9 101 102 63 isConeChanged = 1; end; We output new inner cones in the file new_cones.dat and in step09.m this information is gathered and used in preparing for the next iteration. 104 105 106 107 108 if isConeChanged output_cone_data(0,0,BOXES(:,j), ... cone_min-[0;repmat(excess/2,d-1,1)], ... cone_max+[0;repmat(excess/2,d-1,1)], basis); end; Notice that we enlarge the inner cone slightly. The reason for this is that if a cone is mapped inside another cone and the image cone fits precisely into the second cone then any modification of the first cone will, ever so slightly, modify the image cone and make it necessary to change the second cone. To prevent this propagation of changing cones we add this small excess to the inner cone. h Get a new hit box i When we are done with this box we move it from inprogress.dat to finished.dat and get a new box. 110 move_box(box,’inprogress.dat’,’finished.dat’); 111 112 113 114 115 116 117 118 box = get_hit_box; if size(box,2)==0 done = 1; else j = box_index(box,BOXES); done = 0; end; step09.m The introduction of Section 2.7 gave a general description of the program step09.m. The program is organised in a fairly straight-forward way. h Initialisation i while ∼done h Load cone data i h Track the progress made by step08.m i h Read new inner cones i h Create new outer cones i h Prepare files for the next iteration i 64 CHAPTER 2. THE NUMERICAL METHOD endwhile h Save cone data i h Load cone data i At the start of an iteration we load the cone data stored in the three files changed_boxes.mat, hit_boxes.mat and cones.mat. 28 29 done = 0; iteration = 0; 30 31 while ~done 32 33 34 35 36 37 get_lock; load ’cones’; load ’changed_boxes’; load ’hit_boxes’; rm_lock; 38 39 iteration = iteration+1; h Track the progress made by step08.m i To give the user some information of how step08.m is progressing we plot boxes, inner and outer cones in a three-piece plot window. In the top third we plot the Boxes (black = boxes with cone, red = hit boxes) −3 Inner cone apertures −3 Outer cone apertures x 10 6 4 2 0 x 10 6 4 2 0 Figure 2.16: Boxes and their inner and outer cone apertures are plotted in three diagrams. Notice that the diagrams are aligned in such a way that directly below each box are the inner and outer cone apertures plotted. 2.7. STEP 8 AND 9 65 boxes of the covering and indicate their status with the following colours • red, if the box is included in the file hit_boxes.mat and, hence, is being processed in the current iteration. • black, if the box has a cone pair defined on it. All other boxes are omitted. The middle and bottom third show the maximal size of the inner and outer cones, respectively, and we use the same colour code as in the top third. We also print out the total number of boxes in hit_boxes.mat along with a count of how many boxes that have been processed. h Read new inner cones i When the current iteration step has finished step08.m will have created a number of new inner cones and output them in the file cones.dat in the format i S a1 a2 cmin1 cmax1 d1 d2 a3 cmin2 cmin3 cmax2 cmax3 d3 d4 d5 d6 d7 d8 d9 These six lines means that the box (a1, a2, a3) have a new inner cone with coordinate range [cmin1, cmax1] × [cmin2, cmax2] × [cmin3, cmax3] expressed in a cone basis that has columns of the matrix d1 d4 d7 d2 d5 d8 d3 d6 d9 as basis vectors (the first column is the central direction of the cone). The first two lines are not used in this case. We read this new cone data and update the inner cones. 69 70 71 72 73 % Read inner cones get_lock; fprintf(1,’Reading new inner cones’); [CH,IMIN,IMAX,IBS,IPS,OC] = ... read_cone_data(BOXES,DISC,IMIN,IMAX,IBS,IPS,OC); h Create new outer cones i New outer cones to correspond to the new inner cones are created with the function create_outer_cones which we used for the first time in step07.m. 66 75 76 77 78 CHAPTER 2. THE NUMERICAL METHOD % Create outer cones fprintf(1,’\nCreating new outer cones’); [OMIN,OMAX,OBS,CH] = create_outer_cones(BOXES,IMIN,IMAX,... IBS,excess,OMIN,OMAX,OBS,box_index(CH,BOXES)); h Prepare files for the next iteration i We initialise the next iteration by outputting the boxes that have new or changed outer cones in the file changed_boxes.mat and unfinished.dat, and we also update the files inprogress.dat, finished.dat, hit_boxes.mat and cones.mat. 80 if size(CH,2)~=0 81 82 fprintf(1,’\nDetermining new changed boxes’); 83 84 85 save ’cones’ IMIN IMAX IBS OMIN OMAX OBS; save ’changed_boxes’ CH; 86 87 88 89 90 91 92 93 I = box_index(CH,BOXES); [X,J] = find(CNS(I,1:N)); HBS = BOXES(:,J); [X,J] = find(CNS(I,N+1:2*N)); HBS = [HBS BOXES(:,J)]; HBS = delete_dup(HBS); save ’hit_boxes’ HBS; 94 95 96 97 98 99 100 unix([’rm cones.dat &&’ ... ’touch cones.dat’]); unfinished = HBS’; save ’unfinished.dat’ unfinished -ASCII; unix(’rm inprogress.dat && touch inprogress.dat’); unix(’rm finished.dat && touch finished.dat’); 101 102 else 103 104 done = 1; 105 106 end; 107 108 109 rm_lock; fprintf(1,’\n\n’); 110 111 end; 2.8. STEP 10 AND 11 67 h Save cone data i After all iterations have finished we have cones that are invariant under the piecewise constant approximation of the differential map. In the next two steps these cones will be used as initial cones when we create cones that are invariant under the differential map. We save the cones in cones.mat and initialise the next two steps with the file unfinished.dat empty and finished.dat containing a dummy box (to outsmart the routine get_hit_box and let step11.m run an initial phase before step10.m starts). 113 114 115 116 117 get_lock; unix(’rm unfinished.dat && touch unfinished.dat’); unix(’rm inprogress.dat && touch inprogress.dat’); unix(’rm finished.dat && touch finished.dat’); rm_lock; 118 119 save ’result/cones’ IMIN IMAX IBS OMIN OMAX OBS IPS OC; 120 121 122 CH = BOXES; save ’result/changed_boxes’ CH; 123 124 125 HBS = BOXES; save ’result/hit_boxes’ HBS; 126 127 128 129 unix(’touch result/unfinished.dat’); finished = zeros(1,d); save ’result/finished.dat’ finished -ASCII; 130 131 2.8 save ’result/variables’ BOXES DISC CNS SPS HPS DS IPS OC; Step 10 and 11 In these two steps we will produce the final invariant set of inner and outer cones. This means that the resulting cones have the property that if box i is mapped to box j then the inner cone on box j contains all possible images of the outer cone on box i when it is mapped with the differential of the return map (and not just the piecewise constant approximation of the differential). The plan is to use the same algorithm as in step 8 and 9: push cones forward and enlarge cones where needed until we get the invariant cones. As starting cones we pick the result cones from step 8 and 9 which are approximately invariant and hopefully will not need too much modifications to be truly invariant. On the surface the program step10.m might seem different from step08.m but the only place where they essentially differ is in the way cone images are determined. 68 CHAPTER 2. THE NUMERICAL METHOD Below we will examine the program step10.m and the parts that make it different from step08.m. After that we also go over step11.m which performs the same tasks as step09.m but, moreover, flows cones close to the origin. step10.m The layout of step10.m is a copy of the layout of step08.m. h Initialisation i h Get a hit box i while ∼done h Load cone data i h Find all image cones hitting the box i h Update inner cone i h Get a new hit box i endwhile Compared to step08.m the principal difference can be found in the code section h Find all image cones hitting the box i and this is the only piece of the program we go over in detail. h Find all image cones hitting the box i If box i is mapped to box j (the hit box we are currently working with) then the simplest case is if box i is not a box that crosses the discontinuity of the return map. This case is handled with the function image_cone and we store the range of the resulting image cone (expressed in the cone basis of box j) as a pair of columns in CMINS and CMAXS. Notice also that in the loop below we map cones from the symmetric box σ(i) to box j (via the mapping from box i to box σ(j)). 52 53 54 55 % The image cones landing on box CMINS = []; CMAXS = []; kk = 0; for j = [jj jj+N] 56 57 58 59 60 61 62 63 if j<=N [ymin,ymax] = from_box(box); HBS = reshape(IBS(:,j),d,d); else [ymin,ymax] = from_box(xsigma_box(box)); HBS = dxsigma*reshape(IBS(:,j-N),d,d); end; 64 65 for i=1:N 2.8. STEP 10 AND 11 69 66 n = CNS(i,j); isDiscBox = ismember(BOXES(:,i)’,DISC’,’rows’); isChangedBox = ismember(BOXES(:,i)’,CH’,’rows’); 67 68 69 70 if n~=0 & isChangedBox & ~isDiscBox kk = kk+1; [xmin,xmax] = from_box(BOXES(:,i)); xmin = [xmin; pplane]; xmax = [xmax; pplane]; SBS = reshape(OBS(:,i),d,d); SBS = [SBS zeros(d,1); zeros(1,d) 1]; SMIN = [OMIN(:,i); 0]; SMAX = [OMAX(:,i); 0]; [CMIN,CMAX] = image_cone(xmin,xmax,zeros(1,d+1),... 0,SMIN,SMAX,SBS,ymin,ymax,HBS,SPS(:,n)); CMINS = [CMINS CMIN]; CMAXS = [CMAXS CMAX]; fprintf(1,’%5d’,kk); if mod(kk,10)==0, fprintf(1,’\n’); end; end; 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 The function prototype of image_cone is [HMIN,HMAX] = image_cone(XMIN,XMAX,N,C,SMIN,SMAX,... SBS,YMIN,YMAX,HBS,X); where • XMIN and XMAX are bounds on the starting box and the cone on that box has range [SMIN,SMAX] in the basis SBS. If the input argument N is not a zero SMIN Basis SBS dR Basis HBS HMIN HMAX SMAX X R(X) Box [XMIN,XMAX] Box [YMIN,YMAX] Figure 2.17: A picture illustrating the input and output arguments of the function image_cone. 70 CHAPTER 2. THE NUMERICAL METHOD vector then only points in the starting box that are on the plane N · x = C are used. • YMIN and YMAX are the bounds on the hit box where we also have the cone basis HBS. The output arguments [HMIN,HMAX] are the range of a cone that contains all images of the starting cone. • X is a point in the starting box mapped inside the hit box. This point will be used as a starting point in the search for bounds on the image cone. This function finds the image cone range [HMIN,HMAX] by solving the following optimisation problems HBST ◦ dR(x) ◦ SBS v i min/max HBST ◦ dR(x) ◦ SBS v 1 x ∈ [XMIN,XMAX], R(x) ∈ [YMIN,YMAX], v ∈ [SMIN,SMAX]. These problems might, at first sight, seem complicated to solve but note that the numerator and denominator of the object function are both linear in v and, moreover, linear combinations of the components of dR(x), which are non-complicated functions (away from the discontinuity). The second type of boxes we need to deal with are those that cross the discontinuity of the return map. The cones on these boxes are transported stepwise down to the origin cube in the same way as in step 5 and the main part of that work is done in step11.m. In this program we map cones back to the Poincaré plane from the boxes on the side planes of the intermediate planes and from the exit faces of the origin cube. A first phase is to loop over all intermediate planes and map cones from the side planes to box j. We use the function image_cone with non-zero third and fourth input argument. 88 if n~=0 & isChangedBox & isDiscBox 89 90 91 kk = kk+1; ii = box_index(BOXES(:,i),DISC); 92 93 for l=1:size(interplanes,2) 94 95 96 97 98 99 if isfield(IPS(ii,l).left,’XMIN’) n = IPS(ii,l).left.CNS(1,j); if n~=0 CBS = IPS(ii,l).left.CBS; CBS = reshape(CBS,d+1,d+1); 2.8. STEP 10 AND 11 71 [CMIN,CMAX] = ... image_cone(IPS(ii,l).left.XMIN,... 102 IPS(ii,l).left.XMAX, IPS(ii,l).left.N, ... 103 IPS(ii,l).left.C, IPS(ii,l).left.CMIN, ... 104 IPS(ii,l).left.CMAX, CBS, ... 105 ymin,ymax,HBS,SPS(:,n)); 106 CMINS = [CMINS CMIN]; 107 CMAXS = [CMAXS CMAX]; 108 end; 109 end; 127 end; (The right-hand plane has been excluded from this listing but is very similar to the left-hand plane.) The second phase is to map cones from the two exit faces of the origin cube to box j (the right-hand side has been omitted in the listing below). 100 101 n = OC(ii).left.CNS(1,j); if n~=0 CBS = OC(ii).left.CBS; CBS = reshape(CBS,d+1,d+1); [CMIN,CMAX] = ... image_cone(OC(ii).left.XMIN,... OC(ii).left.XMAX, zeros(1,d+1), ... 0, OC(ii).left.CMIN, OC(ii).left.CMAX, ... CBS, ymin,ymax,HBS,SPS(:,n)); CMINS = [CMINS CMIN]; CMAXS = [CMAXS CMAX]; end; 129 130 131 132 133 134 135 136 137 138 139 140 step11.m Before step10.m can start its work step11.m needs to flow cones from the boxes that cross the discontinuity down to the intermediate planes and the origin cube. Thereafter step11.m is similar to step09.m. h Initialisation i while ∼done h Load cone data i for i = 1 : size(DISC, 2) % Iterate over discontinuity boxes if ismember(DISC(:,i)’, CH’, ’rows’) h Initialise box and cone i for yd = interplanes % Iterate over all intermediate planes h Determine a cone in the left-hand plane i 72 CHAPTER 2. THE NUMERICAL METHOD h Determine a cone in the right-hand plane i h Determine a cone in the next plane i h Let the cone in the next plane be the new cone i endfor h Transform the cone to new coordinates with ψ i for S = [−1 1] % Flow on both sides of the origin h Let the cone flow through the origin cube i h Transform the cone back to original coordinates with φ i endfor endif endfor h Prepare step10.m for a new iteration i h Track the progress made by step10.m i h Read new inner cones i h Create new outer cones i h Prepare files for the next iteration i endwhile h Save cone data i h Initialise box and cone i As we follow a box and its cone in its descent towards the origin cube the following variables are used to keep track of the box and cone: • [xmin,xmax] is the coordinate range of the box. • [CMIN,CMAX] is the range of the cone expressed in the basis CBS. 45 46 47 48 49 [xmin,xmax] = from_box(DISC(:,i)); xmin = [xmin; pplane]; xmax = [xmax; pplane]; CMIN = [OMIN(:,ii);0]; CMAX = [OMAX(:,ii);0]; CBS = [reshape(OBS(:,ii),d,d) zeros(d,1); ... zeros(1,d) 1]; h Determine a cone in the left-hand plane i When a box in an intermediate plane is mapped to the next plane a part of the box escapes to the left of the hit region in the next plane and lands in a left-hand plane (see Figure 2.10 in Section 2.5). In this code block we use the function stepwise_plane_cone to find a cone in the left-hand plane that contains all images of the cone in the intermediate plane after it is mapped to this plane. 59 60 % Left plane cone if isfield(IPS(i,l).left,’XMIN’) 2.8. STEP 10 AND 11 73 ymin = IPS(i,l).left.XMIN; ymax = IPS(i,l).left.XMAX; n = IPS(i,l).left.N; C = IPS(i,l).left.C; x = [xmin(1); 0.5*(xmin(2:end)+xmax(2:end))]; BMIN = [min([xmin(1:end-1) ymin(1:end-1)]-0.05,... [],2); ymin(end)]; BMAX = [max([xmax(1:end-1) ymax(1:end-1)]+0.05,... [],2); xmax(end)+0.05]; [ht,y,dy] = box_R(x,BMIN,BMAX,n,C); [HBS,whatever] = qr(dy*CBS); [HMIN,HMAX] = stepwise_plane_cone(xmin,xmax,... CMIN,CMAX,CBS,ymin,ymax,BMIN,BMAX,n,C,HBS,x); output_cone_data(l,-1,DISC(:,i),HMIN,HMAX,HBS); end; 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 The cone in the right-hand plane is found in the same way. h Determine a cone in the next plane i To find a cone in the next intermediate plane that contains all image cones under the mapping between the two planes we use the function stepwise_cone. % Next plane ymin = IPS(i,l).middle.XMIN; ymax = IPS(i,l).middle.XMAX; [x,y,dy] = stepwise_intersection(xmin,xmax,ymin,ymax); [HBS,whatever] = qr(dy*CBS); [HHMIN,HHMAX] = stepwise_cone(xmin,xmax,... CMIN,CMAX,CBS,ymin,ymax,HBS,x,y); DH = max([HHMAX(2:end-1)-HHMIN(2:end-1) ... repmat(1e-9,size(HHMIN,1)-2,1)],[],2); HMIN = [1; 0.5*(HHMAX(2:end-1)+HHMIN(2:end-1))-0.5*DH; 0]; HMAX = [1; 0.5*(HHMAX(2:end-1)+HHMIN(2:end-1))+0.5*DH; 0]; output_cone_data(l,0,DISC(:,i),HMIN,HMAX,HBS); 95 96 97 98 99 100 101 102 103 104 105 106 The function stepwise_cone is analogous to image_cone and it has the following prototype [HMIN,HMAX] = stepwise_cone(XMIN,XMAX,SMIN,SMAX,SBS, YMIN,YMAX,HBS,X,Y); where • XMIN(i) ≤ xi ≤ XMAX(i) is the starting box and [SMIN,SMAX] is the starting cone expressed in the basis SBS. 74 CHAPTER 2. THE NUMERICAL METHOD • YMIN(i) ≤ xi ≤ YMAX(i) is the hit region in the next intermediate plane and HBS is the cone basis used for the hit cone [HMIN,HMAX]. • X is a point in the starting box being mapped to a point Y in the hit region. Inside stepwise_cone the same kind of optimisation problems are solved as in the function image_cone. h Let the cone in the next plane be the new cone i The box and the cone in the next intermediate plane will be a new starting box and a new starting cone for the next iteration. 108 109 xmin = ymin; CMIN = HMIN; xmax = ymax; CMAX = HMAX; CBS = HBS; h Transform the cone to new coordinates with ψ i When the cone has reached the top of the cube it is transformed with ψ to the coordinate system where the Lorenz-Stenflo system is in normal form. This is done with the function xpsi_cone which determines a cone that contains all image cones after the transformation. It should be remarked that the cone output by xpsi_cone is a cone in the full phase space (a four-dimensional cone) and is constructed in the same way as lower dimensional cones (one central direction and a rectangle in the perpendicular plane). 120 121 122 123 124 % Transform with xpsi HBS = eye(d+1); [CMIN,CMAX] = xpsi_cone(xmin,xmax,CMIN,CMAX,CBS,HBS); [zmin,zmax] = xpsi_box(xmin,xmax); CBS = HBS; h Let the cone flow through the origin cube i Next, cones flow through the cube with the linear system and exit the cube on either 1 of the two faces z1 = ± 10 (depending on the sign of S). The function linflow_cone returns a cone in the tangent space of the exit face that contains all image cones under this mapping by solving the following problems min/max HBST ◦ dL̃(z) ◦ SBS v i , HBST ◦ dL̃(z) ◦ SBS v 1 under the appropriate constraints. In this formula L̃(z) denotes the mapping from the top of the cube onto either of the exit faces when points flow according to the 2.8. STEP 10 AND 11 75 linear system. Since we are using the linear system as opposed to the normal form system the cone apertures we obtain should be widened by the amount T HBST ◦ dL(z) ◦ SBS v HBS ◦ d L̃(z) ◦ SBS v i − i T HBST ◦ dL(z) ◦ SBS v 1 HBS ◦ dL̃(z) ◦ SBS v 1 to compensate for this approximation. The function L(z) corresponds to L̃(z) but flows orbits with the normal form system instead. By using the elementary inequality y + ∆y y max{|∆x|, |∆y|} |y| − ≤ 1 + , x + ∆x x |x| − |∆x| |x| where |x| > |∆x|, the amount we need to add to cones is less than HBST ◦ dL(z) − dL̃(z) ◦ SBS v ∞ HBS(:,1)T ◦ dL̃(z) ◦ SBS v − HBS(:,1)T ◦ dL(z) − dL̃(z) ◦ SBS v HBS(:,i)T ◦ dL̃(z) ◦ SBS v . × 1 + HBS(:,1)T ◦ dL̃(z) ◦ SBS v In Section 3.5 of Chapter 3 we derive the estimate kdL(z) − dL̃(z)k∞ ≤ 6.52×10−7 (z1 /r)−2−M λ4 /λ1 and if we use this on the last formula we can replace the upper bound on the cone aperture change with 6.52×10−7 kHBST k∞ kSBSk∞ HBS(:,1)T ◦ dL̃(z) ◦ SBS v − 6.52×10−7 kHBST k∞ kSBSk∞ min (z1 /r)−2−M λ4 /λ1 HBS(:,i)T ◦ dL̃(z) ◦ SBS v . × 1 + max HBS(:,1)T ◦ dL̃(z) ◦ SBS v The maximisation problem in this formula is something we already need to solve when calculating the cone aperture so the only additional problem we have is HBS(:,1)T ◦ dL̃(z) ◦ SBS v min (z1 /r)−2−M λ4 /λ1 and since dL̃(z) can be calculated explicitly this problem can easily be solved. One thing to observe when solving this problem is that the minimal value is positive only if λ1 + (M − 1)λ4 < 0 (an assumption we make in Chapter 3 and which reappears here). Special attention must also be paid to the points that start with z1 = 0. These points are on the stable manifold and will converge to the origin. For these points the routine linflow_cone does the proper thing and returns the limiting behaviour of cones as they tend to z1 = 0. 76 126 127 128 129 130 131 132 CHAPTER 2. THE NUMERICAL METHOD % Flow through cube for S=[-1 1] HBS = [0 0 0 1; 0 1 0 0; 0 0 1 0]’; [HMIN,HMAX] = linflow_cone(zmin,zmax,CMIN,CMAX,CBS,... HBS,S,cube_radius,6.52e-7); [wmin,wmax] = linflow_box(zmin,zmax,S,cube_radius,... 1.15e-8); h Transform the cone back to the original coordinates with φ i We then transform the cones back to the ordinary coordinates with xphi_cones which works in the same way as xpsi_cones. 133 134 135 136 137 138 139 140 % Transform with xphi SBS = [HBS [1;0;0;0]]; SMIN = [HMIN;0]; SMAX = [HMAX;0]; [x,dx] = xphi(0.5*(wmin+wmax)); [HBS,whatever] = qr(dx*SBS); [HMIN,HMAX] = xphi_cone(wmin,wmax,SMIN,SMAX,SBS,HBS); output_cone_data(-1,S,DISC(:,i),HMIN,HMAX,HBS); end; h Prepare step10.m for a new iteration i Once all cones on the discontinuity boxes have been transported down to the origin we update the variables IPS and OC, remove the dummy box in finished.dat and add the boxes from hit_boxes.mat to unfinished.dat. 147 148 149 150 151 152 153 154 155 get_lock; [CH,IMIN,IMAX,IBS,IPS,OC] = ... read_cone_data(BOXES,DISC,IMIN,IMAX,IBS,IPS,OC); save ’cones’ IMIN IMAX IBS OMIN OMAX OBS IPS OC; unix(’rm finished.dat && touch finished.dat’); load ’hit_boxes’; unfinished = HBS(:,size(HBS,2):-1:1)’; save ’unfinished.dat’ unfinished -ASCII; rm_lock; The rest of the program is similar to step09.m. 2.9 Step 12 and 13 If we look at the work done so far it has resulted in a box covering of the return map attractor and on each box a pair of invariant cones: inner and outer cones. The outer cone on a box contains the inner cone of the same box and also the inner 2.9. STEP 12 AND 13 77 cones of neighbouring boxes. The invariance means that the outer cone is mapped with the differential of the return map inside the inner cone of the box it is mapped to. In these two steps we will extend the previous results and for each mapping from one box to another box calculate the smallest expansion factor a vector inside the outer cone of the first box is subjected to when it is mapped to the second box. With this information we can build a graph of the box covering and its mapping data. The nodes in this graph are the boxes and a directed edge from box i to box j with weight w means that box i is mapped to box j and the logarithm of the smallest expansion factor of this mapping is w. This graph will be analysed in step 14 and 15 to see if we can conclude that the system possesses a strange attractor. The work is divided between the programs step12.m and step13.m. The program step12.m picks a box from the covering and looks at all boxes that are mapped to this box. For each such mapping it calculates the smallest logarithmic expansion factor and outputs it in the file logexpansion.dat. When all mappings to the box have been processed the program starts over with a new box. This continues until no box remains. The accompanying program step13.m is run in parallel with step12.m. First it calculates the log-expansion of the mappings from discontinuity boxes down to the intermediate planes and the origin cube. (The last mapping, back to the Poincaré plane, is done in step12.m.) After this is done step13.m tracks how step12.m is progressing and when step12.m has finished it collects the output from step12.m and prepares for the next two steps. step12.m The program step12.m is organised in the following way: h Initialisation i h Get a hit box i while ∼done h Calculate the smallest log-expansion of cones hitting the box i h Get a new hit box i endwhile Most of these code sections are standard and it is only in the code section where the logarithmic expansion is calculated that the actual computations are performed. h Get a hit box i We have the usual system of three box files unfinished.dat, inprogress.dat and finished.dat to keep track of boxes and the state they are in. 23 24 25 box = get_hit_box; if size(box,2)==0 done = 1; 78 26 27 28 29 CHAPTER 2. THE NUMERICAL METHOD else jj = box_index(box,BOXES); done = 0; end; h Calculate the smallest log-expansion of cones hitting the box i As we iterate through the boxes in the covering we divide the boxes that are mapped to box j into two classes: boxes that cross the discontinuity and those that do not. The mappings from the second type of boxes are easiest to deal with and the logarithmic expansion is calculated with the function image_logexpansion. 43 44 45 % The expansion inside the cone kk = 0; for j = [jj jj+N] 46 47 48 49 50 51 if j<=N [ymin,ymax] = from_box(box); else [ymin,ymax] = from_box(xsigma_box(box)); end; 52 53 for i=1:N 54 55 LES = []; 56 57 58 n = CNS(i,j); isDiscBox = ismember(BOXES(:,i)’,DISC’,’rows’); 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 if n~=0 & ~isDiscBox kk = kk+1; [xmin,xmax] = from_box(BOXES(:,i)); xmin = [xmin; pplane]; xmax = [xmax; pplane]; SBS = reshape(OBS(:,i),d,d); SBS = [SBS zeros(d,1); zeros(1,d) 1]; SMIN = [OMIN(:,i); 0]; SMAX = [OMAX(:,i); 0]; LE = image_logexpansion(xmin,xmax,zeros(1,d+1),0,... SMIN,SMAX,SBS,ymin,ymax,SPS(:,n)); LES = [LES LE]; fprintf(1,’%5d’,kk); if mod(kk,10)==0, fprintf(1,’\n’); end; end; 2.9. STEP 12 AND 13 79 The prototype of this function is LE = image_logexpansion(XMIN,XMAX,N,C,SMIN,SMAX,SBS,YMIN,YMAX,X); where [XMIN,XMAX] is a starting box and N · x = C is a plane in the box that the starting points are restricted to (if N = 0 and C = 0 then this plane vanishes). The output LE is the smallest logarithmic expansion inside the cone [SMIN,SMAX] expressed in the basis SBS when points from the starting box are mapped to the box [YMIN,YMAX]. What this function does is to solve the problem kdR(x) ◦ SBS vk2 min log kvk2 x ∈ [XMIN,XMAX] N · x = C R(x) ∈ [YMIN,YMAX] v ∈ [SMIN,SMAX] and this might seem straightforward, but notice that, disregarding the monotone logarithmic function, the object function behaves typically like a quadratic function and it is possible for it to have a local minimum on the boundary of the cone which is not a global minimum. This phenomena can be illustrated with a twodimensional cone having edge vectors v1 and v2 , and which is mapped according to Figure 2.18. In this case v1 is a local minimum (nearby vectors inside the cone are expanded more than v1 ) but the global minimum is in v2 . The example can be complicated further when dR varies with x and the global minimum can flip over from v2 to v1 , and vice versa, in different parts of the domain. To avoid that dR v2 v1 dR(v 2 ) dR(v 1 ) Figure 2.18: This figure illustrates how vectors expand when mapped with the differential map. The expansion factor can have local minima on the boundary that are not a global minimum. the numerical optimisation routine returns a non-global minimum of the expansion the function image_logexpansion solves the optimisation problem for each lowerdimensional subface of the cone boundary. 80 CHAPTER 2. THE NUMERICAL METHOD When it comes to the first type of mappings (from boxes that cross the discontinuity) these are split up, as before, into several parts: mapping stepwise down to the cube around the origin, through the cube and back to the Poincaré plane. In this program only the last part is performed (step13.m takes care of the rest). There are two types of mappings involved: mapping from the sides of the intermediate planes and from the exit faces of the origin cube. Both these kind of mappings are calculated with image_logexpansion. (The right-hand side calculations have been omitted in the listing below.) 76 if n~=0 & isDiscBox 77 78 79 kk = kk+1; ii = box_index(BOXES(:,i),DISC); 80 81 for l=1:size(interplanes,2) 82 83 84 85 86 87 88 89 90 91 92 93 94 95 111 if isfield(IPS(ii,l).left,’XMIN’) n = IPS(ii,l).left.CNS(1,j); if n~=0 CBS = IPS(ii,l).left.CBS; CBS = reshape(CBS,d+1,d+1); LE = image_logexpansion(IPS(ii,l).left.XMIN, ... IPS(ii,l).left.XMAX, IPS(ii,l).left.N, ... IPS(ii,l).left.C, IPS(ii,l).left.CMIN, ... IPS(ii,l).left.CMAX, CBS, ... ymin, ymax, SPS(:,n)); LES = [LES IPS(ii,l).left.LE+LE]; end; end; end; 112 113 114 115 116 117 118 119 120 121 122 135 136 137 n = OC(ii).left.CNS(1,j); if n~=0 CBS = OC(ii).left.CBS; CBS = reshape(CBS,d+1,d+1); LE = image_logexpansion(OC(ii).left.XMIN, ... OC(ii).left.XMAX, zeros(1,d+1), ... 0, OC(ii).left.CMIN, OC(ii).left.CMAX, ... CBS, ymin, ymax, SPS(:,n)); LES = [LES OC(ii).left.LE+LE]; end; fprintf(1,’%5d’,kk); if mod(kk,10)==0, fprintf(1,’\n’), end; 2.9. STEP 12 AND 13 81 end; 138 139 if size(LES,2)~=0 LE = min(LES,[],2); output_logexpansion(i,j,LE); end; 140 141 142 143 144 145 146 end; end; step13.m The program step13.m is organised in a similar way to step11.m. First it calculates the logarithmic expansion of the boxes that flow down to the intermediate planes and the origin cube. Then the work is mostly administrative. It monitors the progress step12.m is making and rearranges the data output by step12.m in a suitable format. h Initialisation i for i = 1 : size(DISC, 2) % Iterate over discontinuity boxes h Initialise box and cone i for yd = interplanes % Iterate over all intermediate planes h Calculate log-expansion of the mapping to the left-hand plane i h Calculate log-expansion of the mapping to the right-hand plane i h Calculate log-expansion of the mapping to the next plane i h Let the cone in the next plane be the new cone i endfor h Calculate log-expansion of transformation with ψ i h Calculate log-expansion of the mapping through the left half cube i h Calculate log-expansion of the mapping through the right half cube i endfor h Prepare data files for step12.m i h Track the progress made by step12.m i h Read expansion data i h Prepare files for the next steps i h Initialise box and cone i The same variables as in step11.m are used to keep track of the current box and cone. 29 30 [xmin,xmax] = from_box(DISC(:,i)); xmin = [xmin; pplane]; xmax = [xmax; pplane]; 82 31 32 CHAPTER 2. THE NUMERICAL METHOD CMIN = [OMIN(:,ii);0]; CMAX = [OMAX(:,ii);0]; CBS = [reshape(OBS(:,ii),d,d) zeros(d,1); zeros(1,d) 1]; h Calculate log-expansion of the mapping to the left-hand plane i To go from one intermediate plane to the next we first calculate the logarithmic expansion of the mapping to the left-hand plane of the next intermediate plane with the function stepwise_plane_logexpansion. This function solves the same type of optimisation problem as in image_logexpansion. 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 % Left plane cone if isfield(IPS(i,l).left,’XMIN’) ymin = IPS(i,l).left.XMIN; ymax = IPS(i,l).left.XMAX; n = IPS(i,l).left.N; C = IPS(i,l).left.C; x = [xmin(1); 0.5*(xmin(2:end)+xmax(2:end))]; BMIN = [min([xmin(1:end-1) ymin(1:end-1)]-0.05,[],2);... ymin(end)]; BMAX = [max([xmax(1:end-1) ymax(1:end-1)]+0.05,[],2);... xmax(end)+0.05]; LE = stepwise_plane_logexpansion(xmin,xmax,CMIN,CMAX,CBS,... ymin,ymax,BMIN,BMAX,n,C,x); if l>1 IPS(i,l).left.LE = IPS(i,l-1).middle.LE+LE; else IPS(i,l).left.LE = LE; end; end; The mapping to the right-hand side is handled in the same way. h Calculate log-expansion of the mapping to the next plane i We find the logarithmic expansion of the mapping to the next intermediate plane by using the function stepwise_logexpansion which is similar to the functions image_logexpansion and stepwise_plane_logexpansion. 82 83 84 85 86 87 88 % Next plane ymin = IPS(i,l).middle.XMIN; ymax = IPS(i,l).middle.XMAX; [x,y,dy] = stepwise_intersection(xmin,xmax,ymin,ymax); LE = stepwise_logexpansion(xmin,xmax,CMIN,CMAX,CBS,... ymin,ymax,x,y); if l>1 2.9. STEP 12 AND 13 89 90 91 92 83 IPS(i,l).middle.LE = IPS(i,l-1).middle.LE + LE; else IPS(i,l).middle.LE = LE; end; h Let the cone in the next plane be the new cone i The new box and cone become the starting box and starting cone of the next iteration. 94 95 96 97 xmin = ymin; xmax = ymax; CMIN = IPS(i,l).middle.CMIN; CMAX = IPS(i,l).middle.CMAX; CBS = reshape(IPS(i,l).middle.CBS,d+1,d+1); h Calculate log-expansion of transformation with ψ i Cones flow through the origin cube via the usual coordinate changes and linear flow. We use the function xpsi_logexpansion to calculate the logarithmic expansion of the first coordinate change. 108 109 110 111 112 113 114 % Transform with xpsi LE = xpsi_logexpansion(xmin,xmax,CMIN,CMAX,CBS); LE = LE + IPS(i,l).middle.LE; HBS = eye(d+1); [CMIN,CMAX] = xpsi_cone(xmin,xmax,CMIN,CMAX,CBS,HBS); [zmin,zmax] = xpsi_box(xmin,xmax); CBS = HBS; h Calculate log-expansion of the mapping through the left half cube i When cones flow through the cube we approximate the normal form system with the linear system and solve the problem min log kdL̃(z) ◦ SBS vk2 , kvk2 where L̃(z) is the map through the cube that uses the linear system to integrate orbits as opposed to the map L(z) that uses the normal form system. This approximation introduces an error in the expansion calculation and to correct this we use 84 CHAPTER 2. THE NUMERICAL METHOD that the object function in the normal form case (dL instead of dL̃) is greater than kdL̃(z) ◦ SBS vk2 − k dL(z) − dL̃(z) ◦ SBS vk2 log kvk2 √ kdL(z) − dL̃(z)k∞ kSBSk∞ kdL̃(z) ◦ SBS vk2 ≥ log + log 1 − 3 kvk2 kdL̃(z) ◦ SBS vk2 ! √ 6.52×10−7 · max kSBS vk∞ kdL̃(z) ◦ SBS vk2 + log 1 − 3 ≥ log kvk2 kdL̃(z) ◦ SBS vk2 min (z1 /r)−2−M λ4 /λ1 where we also have used Result 9 in Chapter 3. The calculations done in the function linflow_logexpansion use this formula to subtract the effect of using the “wrong” system in the optimisation. 118 119 120 121 122 123 124 125 % Flow through the left half of the cube LE = linflow_logexpansion(zmin,zmax,CMIN,CMAX,CBS,-1,... cube_radius,6.52e-7); LE = OLE + LE; HBS = [0 0 0 1; 0 1 0 0; 0 0 1 0]’; [HMIN,HMAX] = linflow_cone(zmin,zmax,CMIN,CMAX,CBS,... HBS,-1,cube_radius,6.52e-7); [wmin,wmax] = linflow_box(zmin,zmax,-1,cube_radius,1.15e-8); The smallest expansion of the second coordinate change φ is calculated with the function xphi_logexpansion which is analogous to xpsi_logexpansion. 126 127 128 SBS = [HBS [1;0;0;0]]; SMIN = [HMIN;0]; SMAX = [HMAX;0]; LE = LE + xphi_logexpansion(wmin,wmax,SMIN,SMAX,SBS); OC(i).left.LE = LE; Flowing through the right-hand side of the cube works the same way. h Read expansion data i When step12.m has finished all expansion data is stored in a three-line format in the output file logexpansion.dat i j le which means that box i is mapped to box j and the smallest logarithmic expansion of that mapping is le. This information is saved in the sparse matrix LE as LE(i,j) = le, and we then include this variable in the file variables.mat. 2.10. STEP 14 AND 15 164 165 166 167 168 169 170 85 % Read expansion data fprintf(1,’Reading expansion data’); load ’variables’; N = size(BOXES,2); [I,J] = find(CNS); LE = sparse(I,J,repmat(Inf,size(I,1),1),N,2*N); LE = read_logexpansion(LE); h Prepare files for the next steps i The variable LE will actually not be used by later steps but is used more for debugging purposes. The real output is made to the file boxgraph_main.dat in a row oriented format a i j le where "a" is a literal letter while i, j and le means as before that box i is mapped to box j with logarithmic expansion le. This is a standard format for encoding graphs and in the next steps we will use two graph analysing programs to investigate the shortest cycles and paths in the graph of boxes. 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 2.10 % Create boxgraph_main.dat fprintf(1,’\nCreating boxgraph_main.dat’); [fptr,errmsg] = fopen(’result/boxgraph_main.dat’,’w’); if fptr==-1, error(errmsg); end; for i=1:N for j=1:2*N n = CNS(i,j); if n~=0 fprintf(fptr,’a %d %d %12.12f\n’,i,j,LE(i,j)); if j<=N fprintf(fptr,’a %d %d %12.12f\n’,i+N,j+N,LE(i,j)); else fprintf(fptr,’a %d %d %12.12f\n’,i+N,j-N,LE(i,j)); end; end; end; end; fclose(fptr); Step 14 and 15 All mapping data created in the previous steps is put together in a graph. In this graph the nodes are the boxes and an edge from box i to box j corresponds to the fact that box i is mapped to box j. Each edge has a weight equal to the smallest logarithmic expansion factor of that mapping. If this graph doesn’t contain any 86 CHAPTER 2. THE NUMERICAL METHOD cycles with negative total weight then this translates into the fact that all orbits of the return map and the induced map have positive Lyapunov exponent, which is a crucial part in showing that there exists a strange attractor. Another part is showing that all paths in the graph between two boxes that cross the discontinuity of the return map must have total weight greater than log 2. This property implies that the attractor is topologically transitive (see page 12). Seen from a graph theory perspective we have two standard problems • show that a graph doesn’t contain any negative cycles, and • find the shortest (least weight) path between two nodes. In the programs step14.m and step15.m we solve these problems and the results can be found in Chapter 4. step14.m We use a C-program bfct to determine if the box graph has a negative cycle or not. This program is part of a bundle spc of several similar programs written by Boris V. Cherkassky and Andrew V. Goldberg in connection with a study of algorithms to solve this problem [Mathematical Programming 85 (1999), pages 277–311]. It can be downloaded from the web page http://www.avglab.com/andrew/soft.html The program step14.m adds a few lines to the graph file boxgraph_main.dat and starts bfct. The output of this program is redirected to the file neg_cycles.dat in the subdirectory result/ for later inspection. 15 16 17 clear; load ’input/variables’; path_to_bfct = ’spc-1.2/bin/’; 18 19 20 N = size(BOXES,2); M = size(find(CNS),1); 21 22 23 24 25 26 27 [fptr,errmsg] = fopen(’boxgraph.dat’,’w’); if fptr==-1, error(errmsg); end; fprintf(fptr,’t Box graph\n’); fprintf(fptr,’p sp %d %d\n’,2*N,2*M); fprintf(fptr,’n 1\n’); fclose(fptr); 28 29 30 31 unix(’cat input/boxgraph_main.dat >> boxgraph.dat’); unix([path_to_bfct ’bfct <boxgraph.dat ’ ... ’>result/neg_cycles.dat’]); 2.10. STEP 14 AND 15 87 step15.m The second graph problem is solved with a program gor1 which is part of the bundle splib that Boris V. Cherkassky, Andrew V. Goldberg and Tomasz Radzik wrote when they studied algorithms for determining shortest paths in a graph [Mathematical Programming 73 (1996), pages 129–174]. It can be downloaded from the same web page as spc. By using gor1 we find the shortest paths from one selected node to the rest of the nodes in the graph. When we do this for all nodes in the graph we get all shortest paths and then it is simple to determine all paths between the discontinuity boxes and print them. An outline of program step15.m is: h Initialisation i for i = 1 : 2 ∗ N h Find all shortest paths from node i i h Store shortest paths data i endfor h Add shortest cycles data i h Output result i h Initialisation i We store the information of the shortest paths in the two matrices • C, where the element (i, j) is the weight of the shortest path from node i to node j. • Theta, where the element (i, j) is the second to last node in the shortest path from node i to node j (the last node being j). These variables are appropriately initialised. 13 14 15 16 17 18 clear; p = pwd; cd(’..’); parent=pwd; cd(p); path(path,[parent ’/m-files’]); load ’input/variables’; path_to_gor1 = ’splib-1.4/bin/’; tmpdir = ’./’; 19 20 21 N = size(BOXES,2); M = size(find(CNS),1); 22 23 24 C = repmat(Inf,2*N,2*N); Theta = repmat([1:2*N]’,1,2*N); 88 CHAPTER 2. THE NUMERICAL METHOD h Find all shortest paths from node i i The program gor1 is fed the graph data through the file boxgraph.dat which we create by prepending a few lines to the file boxgraph_main.dat created in step13.m. The output is redirected to the file short_paths.dat. 26 27 fprintf(1,’Find shortest paths\n’); fprintf(1,’ Total %d\n’,N); 28 29 for i=1:N 30 31 32 33 34 35 36 [fptr,errmsg] = fopen(’boxgraph.dat’,’w’); if fptr==-1, error(errmsg); end; fprintf(fptr,’t Box graph\n’); fprintf(fptr,’p sp %d %d\n’,2*N,2*M); fprintf(fptr,’n %d\n’,i); fclose(fptr); 37 38 39 40 41 unix(’cat input/boxgraph_main.dat >> boxgraph.dat’); [s,m] = unix([’rm ’ tmpdir ’short_paths.dat’]); [s,m] = unix([path_to_gor1 ’gor1 <boxgraph.dat | tail +10 ’ ... ’>’ tmpdir ’short_paths.dat’]); h Store shortest paths data i Each line in the output file short_paths.dat has the format i j k w which means that the shortest path from node i to node j has weight w and that the second to last node in this path is k. 43 44 [fptr,errmsg] = fopen([tmpdir ’short_paths.dat’],’r’); if fptr==-1, error(errmsg); end; 45 46 47 48 49 50 51 52 53 54 55 56 while 1 line = fgetl(fptr); if ~ischar(line), break, end; tmp = sscanf(line,’%f’); ii = round(tmp(1)); jj = round(tmp(2)); kk = round(tmp(3)); C(ii,jj) = tmp(4); Theta(ii,jj) = kk; end; fclose(fptr); 2.10. STEP 14 AND 15 89 57 fprintf(1,’%5d’,i); if mod(i,10)==0, fprintf(1,’\n’); end; 58 59 60 61 end; 62 63 64 fprintf(1,’\n’); if mod(N,10)~=0, fprintf(1,’\n’); end; h Add shortest cycles data i To find the shortest cycle that contains node i (which is not explicitly calculated by gor1) we will for each other node j in the graph find the shortest path from i to j and then back from j to i. In this way we will find the shortest cycle going via node j. We can then compare all these cycles and determine the overall shortest cycle. The result is stored in the diagonal elements of the matrices C and Theta. 67 % Fill in the diagonal elements of C and Theta 68 69 70 71 72 73 74 75 76 77 78 79 for i=1:2*N C(i,i) = Inf; for j=1:2*N if j~=i if C(i,j)+C(j,i)<C(i,i) C(i,i) = C(i,j)+C(j,i); Theta(i,i) = Theta(j,i); end; end; end; end; h Output result i In the result file we print the overall smallest expansion of a cycle and the shortest paths between each pair of discontinuity boxes. Chapter 3 The coordinate change around the origin Arguably the most troublesome area in analysing the Lorenz or Lorenz-Stenflo system is the origin. The origin is a fixed point of saddle type and this means that there are orbits, i.e. those that flow close to the stable manifold, that stay an arbitrary long time in a neighbourhood of the origin. Our standard numerical integrator routines are unable to approximate these orbits well due to the long integration times involved but also because these orbits form a very small subset of all orbits and this makes them difficult to home in on. What follows in this chapter is an account of a method that uses so-called normal forms and were first introduced in this context by Warwick Tucker to produce rigorous results in connection with this particular problem. Our way of presenting the normal form method is in essence the same as Warwick Tucker’s although we differ in some details and we opt to work with recurrence equations directly instead of the corresponding generating functions. We will only do a thorough derivation for the Lorenz-Stenflo system and refer to the last section of this chapter for the corresponding results for the Lorenz system. 3.1 The normal form method The Lorenz-Stenflo system can be written as x1 λ1 0 0 d λ2 0 x2 = 0 0 λ3 dt x3 0 x4 0 0 0 0 x1 0 x2 0 x3 λ4 x4 + F (x) or in an abbreviated form ẋ = Ax + F (x), where F (x) represents the second order terms; see formula (1) in Chapter 2. Around the origin, inside a cube of side length 51 , we will use an analytic change of coordinates x = φ(z), and its 91 92 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN inverse z = ψ(x), that transforms linear system z1 λ1 d z 2 = 0 dt z3 0 z4 0 the Lorenz-Stenflo system to an approximately 0 λ2 0 0 0 0 λ3 0 z1 0 z2 0 0 z3 z4 λ4 + G(z), M where G(z) satisfies |Gi (z)| ≤ C |z1 |M |z2 | + |z3 | + |z4 | , which means that G is very small close to the stable and unstable manifolds. This is an example of a normal form transformation that pushes the non-linear terms in F to higher order terms and makes the system closer to a linear system. As we shall see, the existence of this kind of transformation depends on whether there are resonances between the diagonal elements λ1 , λ2 , λ3 and λ4 . The idea is that we will use these coordinates when orbits enter the cube. In the new coordinates we can flow points through the cube by approximating the normal form system with the linear system (see Section 3.5) and thereby avoid any numerical difficulties caused by long integration times by using closed-form formulas. When orbits exit the cube we change back to the original coordinates and continue with the standard integrator routine. A more detailed description of this procedure can be found in Section 2.5 of Chapter 2. In the upcoming sections we will first go over how the coordinate change functions φ and ψ are calculated and estimate the error in the approximations involved. Then we take a look at the non-linear term G(z) in the normal form system and derive estimates of it as well as of its derivative. In the section thereafter we show that the normal form flow, inside the cube mentioned above, can be well approximated by the flow of the linear system. In the final section we give the corresponding results for the Lorenz system. 3.2 The coordinate change function φ Our algorithm for calculating φ involves several steps. First we will derive a functional equation for φ and in order to solve this equation we write φ as a (formal) power series (using multi-index notation) X X φi (z) = c i,j z j = c i,j1 ,j2 ,j3 ,j4 z1j1 z2j2 z3j3 z4j4 . j1 ,j2 ,j3 ,j4 j When this series is substituted into the functional equation we get recurrence equations for the coefficients c i,j . Using the recurrence equations we calculate all coefficients up to degree N , i.e. coefficients c i,j for |j| = j1 + j2 + j3 + j4 ≤ N , and approximate φ by truncating its power series X φi (z) = c i,j z j + Remainder term. |j|≤N 3.2. THE COORDINATE CHANGE FUNCTION φ 93 Next we start working on estimating the remainder term in the approximation. The remainder term is split in two parts X X R1 + R2 = c i,j z j + c i,j z j . N <|j|≤N 0 |j|>N 0 For the first part we introduce quantities hi,j which are greater than the sums of the absolute values of the c i,j for fixed values of |j|, X hi,j ≥ |c i,j |, |j|=j and satisfy a simpler recurrence equation than that for the coefficients c i,j . Inside 1 we can then estimate the first part with the cube |zi | ≤ 10 0 |R1 | ≤ N X hi,j 1 j 10 . j=N +1 For the second part we prove an inequality of the form hi,j ≤ Ci K j , for j > N 0 , and can estimate the remaining series with |R2 | ≤ Ci ∞ K j X . 10 0 j=N +1 Similar estimates are also made for the derivatives of φ. The above calculations furthermore show that the power series of φ converges inside the domain |zi | < 1/K, but to assure that the whole coordinate transformation is analytic we need to show that the power series of the non-linear function G is also convergent and this is done in Section 3.4. Recurrence equations There are two different ways of expressing the derivative ẋ in terms of the new coordinate z, ẋ = Ax + F (x) = Aφ(z) + F φ(z) and d d x= φ(z) = Dφ(z) ż = Dφ(z) Az + G(z) . dt dt Putting these two expressions equal shows that φ must satisfy the following functional equation Aφ(z) + F φ(z) = Dφ(z) Az + G(z) ⇔ Dφ(z)Az − Aφ(z) = F φ(z) − Dφ(z)G(z). (∗) ẋ = 94 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN To solve this equation for φ we make the following Ansatz for φ and G as power series X X φi (z) = c i,j z j and Gi (z) = di,j z j , j j and identify coefficients on both sides of the equation. Starting with the left-hand side of (∗) we have that 4 X X ∂ X c i,j z j λk zk − λi c i,j z j Dφ(z)Az − Aφ(z) i = ∂zk k=1 = j j j 4 X X λk jk − λi c i,j z j . k=1 It is worth noting that the monomials φ(z) = z j are all eigenfunctions of the linear operator in the left-hand side and this fact simplifies the recurrence equations that will follow considerably. The right-hand side is more complex than the left-hand side so we treat the two terms separately. The first term expands to • F1 φ(z) = k1 φ1 (z) + φ2 (z) + φ3 (z) φ4 (z) X X c4,n z n (c1,m + c2,m + c3,m )z m = k1 n m = X k1 X X • F2 φ(z) = k2 X (c1,m + c2,m + c3,m )c4,j−m z j , m j X • F3 φ(z) = k3 X (c1,m + c2,m + c3,m )c4,j−m z j , m j X X j (c1,m + c2,m + c3,m )c4,j−m z j , m j • F4 φ(z) = k4 c1,m c1,j−m + k5 c1,m c2,j−m + k6 c1,m c3,j−m m + k7 c2,m c2,j−m + k8 c2,m c3,j−m + k9 c3,m c3,j−m and using the notation ek for the kth unit vector the second term is equal to 4 X ∂ Dφ(z)G(z) i = φi (z) · Gk (z) ∂zk k=1 X 4 X X m−ek n = c i,m mk z dk,n z k=1 m n zj , 3.2. THE COORDINATE CHANGE FUNCTION φ = X X 95 c i,m+e1 (m1 + 1)d1,j−m + c i,m+e2 (m2 + 1)d2,j−m m j + c i,m+e3 (m3 + 1)d3,j−m + c i,m+e4 (m4 + 1)d4,j−m z j . When we identify both sides of (∗) we end up with the following relations between the coefficients X • Ω1 (j) c1,j = k1 (c1,m + c2,m + c3,m )c4,j−m m + X c1,m+e1 (m1 + 1)d1,j−m + c1,m+e2 (m2 + 1)d2,j−m m + c1,m+e3 (m3 + 1)d3,j−m + c1,m+e4 (m4 + 1)d4,j−m , • Ω2 (j) c2,j = k2 X (c1,m + c2,m + c3,m )c4,j−m m + X c2,m+e1 (m1 + 1)d1,j−m + c2,m+e2 (m2 + 1)d2,j−m m + c2,m+e3 (m3 + 1)d3,j−m + c2,m+e4 (m4 + 1)d4,j−m , • Ω3 (j) c3,j = k3 X (c1,m + c2,m + c3,m )c4,j−m m + X c3,m+e1 (m1 + 1)d1,j−m + c3,m+e2 (m2 + 1)d2,j−m m + c3,m+e3 (m3 + 1)d3,j−m + c3,m+e4 (m4 + 1)d4,j−m , • Ω4 (j) c4,j = X k4 c1,m c1,j−m + k5 c1,m c2,j−m + k6 c1,m c3,j−m m + k7 c2,m c2,j−m + k8 c2,m c3,j−m + k9 c3,m c3,j−m X + c4,m+e1 (m1 + 1)d1,j−m + c4,m+e2 (m2 + 1)d2,j−m m + c4,m+e3 (m3 + 1)d3,j−m + c4,m+e4 (m4 + 1)d4,j−m , where the short-hand notation Ωi (j) = j1 λ1 + j2 λ2 + j3 λ3 + j4 λ4 − λi is an integer linear combination of the elements λ1 , λ2 , λ3 and λ4 . It is easy to see that since c i,0 = 0 and di,j = 0 when |j| ≤ 1, we must have that c i,j = 0 when |j| = 1 but j 6= ei . If j = ei then Ωi (j) = 0 and we can choose c i,ei freely, for example c i,ei = 1 so that φ approximates the identity map. Other than this the formulas above only express a relationship between the c- and d-coefficients and do not determine them uniquely. This freedom will be used to ensure that G only contains higher order terms, i.e. that di,j = 0 when |j| is small, and thus making the 96 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN system approximately linear. The precise formulation we choose is that G should satisfy |Gi (z)| ≤ C |z1 |M (|z2 | + |z3 | + |z4 |)M in a neighbourhood of the origin, which translates into that di,j = 0 if j1 ≤ M − 1 or j2 + j3 + j4 ≤ M − 1. This means that G is especially small close to the stable manifold z1 = 0 and the unstable manifold z2 = z3 = z4 = 0, which is an important fact when we approximate the normal form flow with the linear flow (orbits that stay a long time inside the cube spend most of that time close to either of these two manifolds). A consequence of this is that when j1 ≤ M − 1 or j2 + j3 + j4 ≤ M − 1 we have that di,j−m = 0 for all m ≥ 0 and the recurrence relations reduce to X (c1,m + c2,m + c3,m )c4,j−m , (1) • Ω1 (j) c1,j = k1 m • Ω2 (j) c2,j = k2 X (c1,m + c2,m + c3,m )c4,j−m , (2) (c1,m + c2,m + c3,m )c4,j−m , (3) m • Ω3 (j) c3,j = k3 X m • Ω4 (j) c4,j = X m k4 c1,m c1,j−m + k5 c1,m c2,j−m + k6 c1,m c3,j−m + k7 c2,m c2,j−m + k8 c2,m c3,j−m + k9 c3,m c3,j−m . (4) These relations express c i,j , for j in this parameter range, in terms of lower order coefficients c i,m (where |m| < |j|) and we can therefore use them to gradually determine values for the coefficients c i,j unless Ωi (j) happen to be zero. If the linear combination Ωi (j) degenerates to zero for some j we have what is called a resonance between the lambda elements and this is known in the normal form theory to be the obstacle that prevents one from eliminating higher order terms via an analytic coordinate change. This is also the reason why we do not try to choose all di,j = 0, i.e. G ≡ 0, because even if Ωi (j) 6= 0 for all j the values of Ωi (j) will get arbitrarily close to 0 and this leads to a more complicated analysis as mentioned in Section 1.4 (remember that we will anyhow be able to approximate the orbits of ż = Az + G(z) with the corresponding orbits of ż = Az in Section 3.5). We would on top of that also lose any form of robustness when it comes to small changes in the parameters k1 , . . . , k9 . In the case when j1 ≥ M and j2 + j3 + j4 ≥ M we can rewrite the recurrence relations on page 95 in the form X X Ωi (j) c i,j = ··· + · · · + di,j m |m|≥1 and observe that c i,j and di,j are simultaneously expressed in terms of lower order coefficients. We can use this relation to avoid the problem with degeneration 3.2. THE COORDINATE CHANGE FUNCTION φ 97 of Ωi (j) by letting c i,j = 0 and compensate by choosing di,j accordingly, X • d1,j = −k1 (c1,m + c2,m + c3,m )c4,j−m m − X c1,m+e1 (m1 + 1)d1,j−m + c1,m+e2 (m2 + 1)d2,j−m |m|≥1 + c1,m+e3 (m3 + 1)d3,j−m + c1,m+e4 (m4 + 1)d4,j−m , • d2,j = −k2 X (5) (c1,m + c2,m + c3,m )c4,j−m m − X c2,m+e1 (m1 + 1)d1,j−m + c2,m+e2 (m2 + 1)d2,j−m |m|≥1 + c2,m+e3 (m3 + 1)d3,j−m + c2,m+e4 (m4 + 1)d4,j−m , • d3,j = −k3 X (6) (c1,m + c2,m + c3,m )c4,j−m m − X c3,m+e1 (m1 + 1)d1,j−m + c3,m+e2 (m2 + 1)d2,j−m |m|≥1 + c3,m+e3 (m3 + 1)d3,j−m + c3,m+e4 (m4 + 1)d4,j−m , • d4,j = − X (7) k4 c1,m c1,j−m + k5 c1,m c2,j−m + k6 c1,m c3,j−m m + k7 c2,m c2,j−m + k8 c2,m c3,j−m + k9 c3,m c3,j−m X − c4,m+e1 (m1 + 1)d1,j−m + c4,m+e2 (m2 + 1)d2,j−m |m|≥1 + c4,m+e3 (m3 + 1)d3,j−m + c4,m+e4 (m4 + 1)d4,j−m . (8) Let us summarise. We saw at the beginning of this section that the coordinate change function φ satisfies a functional equation (∗) that also involves the new right-hand side function G, and by writing φ and G as power series this led to recurrence relations between the coefficients c i,j of φ and the coefficients di,j of G. These recurrence relations do not determine the coefficients completely since the function G is only specified by certain constraints. We use this to choose certain coefficients c i,j to be equal to zero and at the same time simplify the recurrence equations so that • when j1 ≤ M − 1 or j2 + j3 + j4 ≤ M − 1 the coefficients c i,j are defined by the recurrence equations (1) to (4), and di,j = 0. • when j1 ≥ M and j2 + j3 + j4 ≥ M all coefficients c i,j are zero and the coefficients di,j are given by the recurrence equations (5) to (8). 98 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN The first part of the remainder term Next on the agenda is to study the first part of the remainder term of φ, X R1 = c i,j z j , N <|j|≤N 0 1 . As mentioned earlier we estimate this part by introducing inside the cube |zi | ≤ 10 0 N a sequence {hi,j }j=N +1 of numbers that majorize the sums X hi,j ≥ |c i,j |, |j|=j because then we have that 0 0 N X |R1 | ≤ N X j X max |zk | |c i,j | ≤ hi,j k j=N +1 |j|=j 1 j 10 . j=N +1 For the first few values of hi,j we use the recurrence equations of c i,j and calculate hi,j as X hi,j = |c i,j | for j = N + 1, . . . , P , |j|=j but as j increases this becomes less and less feasible. Instead, for lager j we derive a simpler, yet cruder, recurrence equation for hi,j . This recurrence equation results from taking absolute value on both sides of the recurrence equations (1)–(4) for c i,j and summing over the parameter set Jj = {j ≥ 0 : |j| = j and (j1 < M or j2 + j3 + j4 < M )}. Starting with c1,j , i.e. equation (1), we get that X X X |c1,j | = Ω1 (j) |c1,j |, |Ω1 (j)| |c1,j | ≥ Ω1 (j) lhs = rhs ≤ |k1 | |j|=j j∈Jj j∈Jj XX |c1,m + c2,m + c3,m | |c4,j−m | j∈Jj m ≤ |k1 | j−1 X X X |c1,m + c2,m + c3,m | |c4,j−m | |j|=j m=1 |m|=m = |k1 | j−1 X X |c1,m + c2,m + c3,m | m=1 |m|=m ≤ |k1 | j−1 X m=1 ≤ |k1 | j−1 X m=1 h4,j−m X |c4,j−m | |j|=j X |c1,m | + |c2,m | + |c3,m | |m|=m h4,j−m (h1,m + h2,m + h3,m ), 3.2. THE COORDINATE CHANGE FUNCTION φ 99 where Ωi (j) = minj∈Jj |Ωi (j)|. The result is that we can use the following recurrence equation to define the sequence hi,j : h1,j j−1 |k1 | X h4,j−m (h1,m + h2,m + h3,m ) for j > P . = Ω1 (j) m=1 Since the recurrence equations for c2,j and c3,j are very similar to the recurrence equation for c1,j we can put h2,j = |k2 | Ω1 (j) h1,j |k1 | Ω2 (j) and h3,j = |k3 | Ω1 (j) h1,j |k1 | Ω3 (j) for j ≥ 2. When we do the corresponding calculations for h4,j we arrive at h4,j = j−1 1 X |k4 |h1,m h1,j−m + |k5 |h1,m h2,j−m + |k6 |h1,m h3,j−m Ω4 (j) m=1 + |k7 |h2,m h2,j−m + |k8 |h2,m h3,j−m + |k9 |h3,m h3,j−m . This sequence {hi,j } that we have just defined plays an important role in our estimate of the remainder term, not only in this first part of the remainder term but also in the second part. It is therefore necessary to study and understand this sequence better. Probably the most important factor that controls the size of hi,j is the integer linear combinations in Ωi (j). If the elements λ1 , λ2 , λ3 and λ4 happen to be close to a resonance, i.e. Ωi (j) very close to zero for a certain j, this could blow up the value of hi,j and possibly make our estimate useless. 104 102 100 10−2 10−4 10 100 1000 j Figure 3.1: A combined diagram plotting the values of Ω1 (j), Ω2 (j), Ω3 (j) and Ω4 (j). Note that both axes have a logarithmic scale. In Figure 3.1 there is a plot of Ωi (j) and we can observe that the minimal value of any Ωi (j) is Ω3 (16) ≈ 3×10−3 . This might seem worrying but we must keep in mind that this is a one-time occurrence and, moreover, since the recurrence 100 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN equations for h1,j , h2,j , h3,j and h4,j are coupled this makes the four sequences interrelated which tends to smooth out big differences. Another observation we make is that when j is larger than a certain value the quantities Ωi (j) will grow linearly. The explanation of this phenomena is that in the minimisation Ωi (j) = min |j1 λ1 + j2 λ2 + j3 λ3 + j4 λ4 − λi | j∈Jj the parameter set Jj = {j ≥ 0 : |j| = j and (j1 < M or j2 + j3 + j4 < M )} is such that for large enough j one must have either that j1 ≤ M −1 or j2 +j3 +j4 ≤ M −1, but not both, and this means that one term in the linear combination will dominate. After a tedious calculation one can in fact show that (assuming that M ≥ 3) • Ω1 (j) = j|λ4 |−(M −1)(|λ1 |+|λ4 |)+|λ1 | when j ≥ (M −1) |λ1 | + |λ4 | |λ1 | − , |λ4 | |λ4 | • Ω2 (j) = j|λ4 |−(M −1)(|λ1 |+|λ4 |)−|λ2 | when j ≥ (M −1) |λ1 | + |λ4 | |λ2 | + , |λ4 | |λ4 | • Ω3 (j) = j|λ4 |−(M −1)(|λ1 |+|λ4 |)−|λ3 | when j ≥ (M −1) |λ1 | + |λ4 | |λ3 | + , |λ4 | |λ4 | • Ω4 (j) = j|λ4 | − (M − 1)(|λ1 | + |λ4 |) − |λ4 | when j ≥ (M − 1) |λ1 | + |λ4 | + 1. |λ4 | In Table 3.1 we have listed values of hi,j around j = P and notice the distinct turn at j = P + 1 where we start using the recurrence equation to calculate hi,j . Instead of slowly decreasing the sequence starts to grow rapidly. Evidently, approximating with the recurrence equation gives a very rough upper bound on the P sums |j|=j |c i,j |, but as long as the sequence {hi,j } doesn’t grow as fast as 10j we can get some form of estimate of the remainder term. h1,j j= 7 8 9 10 11 12 h2,j −3 2.49×10 3.82×10−4 3.13×10−4 5.03×10−3 6.49×10−2 2.74×100 h3,j −4 1.35×10 3.04×10−5 1.43×10−5 8.64×10−4 1.11×10−2 4.70×10−1 h4,j −3 1.22×10 2.32×10−4 1.09×10−4 5.85×10−2 1.07×100 8.86×100 2.92×10−3 2.02×10−3 3.99×10−4 2.57×10−2 7.65×10−1 2.39×101 Table 3.1: A tabulation of hi,j around the threshold value j = P = 9. The Maple program phi_error.mpl implements this estimation scheme and by choosing the various parameters as M = 6, N = 8, P = 9 and N 0 = 40 the result is that |R1 | is smaller than 1.75×10−9 . See Table 3.2 on page 103. 3.2. THE COORDINATE CHANGE FUNCTION φ 101 The second part of the remainder term By extending Table 3.1 we can extrapolate that the sequence {hi,j } grows something like ∼ Ci K j , where K ≈ 3.7, and using induction we will prove that hi,j ≤ Ci K j for j > N 0 , where we have chosen K = 5 (somewhat larger than the optimal value in order to make the induction work). When we have this estimate the last part of the remainder term can be bounded by ∞ X |R2 | ≤ hi,j 1 j 10 ≤ Ci j=N 0 +1 ∞ K j X . 10 0 j=N +1 The induction is fairly straightforward. The induction hypothesis is that hi,m ≤ Ci K m for N 00 ≤ m ≤ j − 1. (∗) 00 0 To start the induction we choose Ci so that (∗) is satisfied for N ≤ m ≤ N − 1. For convenience we will also assume that 2N 00 ≤ N 0 − 1 in order to simplify the details when we work on the induction step. We start with h1,j and assuming that (∗) holds we want to show that h1,j j−1 |k1 | X ≡ h4,j−m (h1,m + h2,m + h3,m ) ≤ C1 K j . Ω1 (j) m=1 We break up this sum in three parts and use the induction hypothesis (this is where it is convenient to assume that 2N 00 ≤ N 0 − 1 so that none of the sums degenerates) h1,j |k1 | = Ω1 (j) |k1 | ≤ Ω1 (j) 00 NX −1 + + m=N 00 m=1 00 NX −1 00 j−N X j−1 X h4,j−m (h1,m + h2,m + h3,m ) m=j−N 00 +1 C4 K j−m · (h1,m + h2,m + h3,m ) m=1 + 00 j−N X C4 K j−m · (C1 + C2 + C3 )K m m=N 00 j−1 X + h4,j−m · (C1 + C2 + C3 )K m m=j−N 00 +1 = |k1 | Ω1 (j) 00 NX −1 (h1,m + h2,m + h3,m )C4 + (C1 + C2 + C3 )h4,m K −m m=1 + 00 j−N X m=N 00 (C1 + C2 + C3 )C4 K j . 102 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN The induction step will work if |k1 | Ω1 (j) 00 NX −1 (h1,m + h2,m + h3,m )C4 + (C1 + C2 + C3 )h4,m K −m m=1 + (C1 + C2 + C3 )C4 (j − 2N 00 + 1) ≤ C1 and since j − 2N 00 + 1 1 j − 2N 00 + 1 = ≤ Ω1 (j) j|λ4 | − M (|λ1 | + |λ4 |) + |λ1 | |λ4 | these conditions can all be replaced with the condition 00 NX −1 |k1 | (h1,m + h2,m + h3,m )C4 + (C1 + C2 + C3 )h4,m K −m 0 Ω1 (N + 1) m=1 + |k1 | (C1 + C2 + C3 )C4 · 1 ≤ C1 . |λ4 | (9) Due to the close relationship between h1,j , h2,j and h3,j it is easy to derive conditions that yield the corresponding inequalities for h2,j and h3,j . We have that • h2,j = |k2 | Ω1 (j) |k2 | Ω1 (j) h1,j ≤ C1 K j ; |k1 | Ω2 (j) |k1 | Ω2 (j) • h3,j = |k3 | Ω1 (j) |k3 | Ω1 (j) h1,j ≤ C1 K j , |k1 | Ω3 (j) |k1 | Ω3 (j) which means that the inequalities are satisfied if C2 ≥ |k2 | Ω1 (N 0 + 1) C1 |k1 | Ω2 (N 0 + 1) and C3 ≥ |k3 | Ω1 (N 0 + 1) C1 . |k1 | Ω3 (N 0 + 1) (10,11) The last inequality h4,j ≤ C4 K j is proved in the same way as h1,j ≤ C1 K j and, without going through all details, the induction step will work if 00 NX −1h 1 2C1 |k4 | + C2 |k5 | + C3 |k6 | h1,m 0 Ω4 (N + 1) m=1 + C1 |k5 | + 2C2 |k7 | + C3 |k8 | h2,m i + C1 |k6 | + C2 |k8 | + 2C3 |k9 | h3,m K −m + C12 |k4 | + C1 C2 |k5 | + C1 C3 |k6 | 1 + C22 |k7 | + C2 C3 |k8 | + C32 |k9 | ≤ C4 . |λ4 | (12) 3.2. THE COORDINATE CHANGE FUNCTION φ 103 These induction conditions are checked in the second part of the Maple program phi_error.mpl with N 00 = 19 and the same parameter values as for the first part of the remainder term. It turns out that • h1,j ≤ 4.00 × 10−4 · 5j for j ≥ 40, • h2,j ≤ 4.59 × 10 j for j ≥ 40, • h3,j ≤ 5.12 × 10−3 · 5j for j ≥ 40, • h4,j ≤ 5.80 × 10 for j ≥ 40. −4 −3 ·5 j ·5 A consequence is that the second part of the remainder term is considerable smaller than the first part. The details are listed in Table 3.2. |R1 | |R2 | i=1 i=2 i=3 i=4 3.23×10−10 3.64×10−15 1.06×10−10 4.17×10−15 6.75×10−10 4.66×10−14 1.75×10−9 5.28×10−14 Table 3.2: This table lists upper bounds on the remainder terms R1 and R2 for the different components i. These bounds are calculated in the Maple program phi_error.mpl. All this adds up to an estimate of the remainder term (φT denotes the truncated power series of φ). Result 1. If kzk∞ ≤ If kzk∞ ≤ 1 T −9 . 10 then kφ(z) − φ (z)k∞ ≤ 1.75 × 10 1 T −8 . 9 then kφ(z) − φ (z)k∞ ≤ 1.50 × 10 The derivatives of φ We get the derivatives of φ by differentiating its power series X ∂φi ∂ j X (z) = c i,j z = c i,j jk z j−ek ∂zk ∂zk j j and calculate them by truncating their power series X ∂φi (z) = c i,j jk z j−ek + Remainder term. ∂zk |j|≤N The remainder terms can be estimated in the same way as before by subdividing them in two parts and using the estimates from previous subsections, 4 X ∂φi ∂φTi T kDφ(z) − Dφ (z)k∞ = max ∂zk (z) − ∂zk (z) i k=1 ≤ max i 4 X X k=1 |j|>N |c i,j | jk z j−ek 104 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN ≤ max i 4 ∞ X X 1 j−1 10 k=1 j=N +1 ∞ X = max i 1 10 j j=N +1 X jk |c i,j | |j|=j j−1 X |c i,j | |j|=j 0 N X ≤ max i 1 j−1 jhi,j 10 ∞ X + Ci K j j=N 0 +1 j=N +1 K j−1 10 ! . When this bound is calculated in the Maple program phi_error.mpl we get the following result. Result 2. If kzk∞ ≤ 1 10 then kDφ(z) − DφT(z)k∞ ≤ 3.44 × 10−7 . For later use we also have the following estimates. Lemma 1. If kzk∞ ≤ If kzk∞ ≤ If kzk∞ ≤ If kzk∞ ≤ 1 8 1 8 1 8 1 8 then kφ(z) − zk∞ ≤ 0.72 kzk2∞ . then kφT(z) − zk∞ ≤ 0.72 kzk2∞ . then kDφ(z) − I k∞ ≤ 1.44 kzk∞ . then kDφT(z) − I k∞ ≤ 1.44 kzk∞ . These inequalities are derived in the Maple program phi_error.mpl using the following formulas kφ(z) − zk∞ = max | φi (z) − zi | i X j = max c i,j z i ≤ |j|≥2 kzk2∞ · max i X N0 j−2 hi,j 81 + Ci j=2 ∞ K j−2 X 8 0 j=N +1 and kDφ(z) − I k∞ = max i 4 X ∂φi (z) − δ ik ∂zk k=1 4 X X j−ek c i,j jk z = max i k=1 |j|≥2 ≤ kzk∞ · max i X N0 j=2 j−2 jhi,j 81 + Ci ∞ X j=N 0 +1 K j−2 j . 8 3.3. THE COORDINATE CHANGE FUNCTION ψ 3.3 105 The coordinate change function ψ In the last section we used the coordinate change φ to transform the Lorenz-Stenflo system to a normal form system and this resulted in a functional equation for φ. By reversing the roles of the right-hand side functions F and G we get a corresponding functional equation for the inverse function ψ of φ, Dψ(x)Ax − Aψ(x) = G ψ(x) − Dψ(x)F (x). (∗) Our plan of how to calculate ψ is the same as that for φ. We write ψ as a (formal) power series X ei,j xj ψi (x) = j and use the functional equation to derive a recurrence equation for the coefficients ei,j . The function ψ can then be approximated by truncating its power series X ψi (x) = ei,j xj + Remainder term. |j|≤N At this point we are faced with the problem of estimating the remainder term. If we compare the situation to the situation for φ there is an important difference and this can be traced back to the term G ψ(x) in the functional equation. In the case of the functional equation for φ we had the term F φ(z) which we are able to handle since F is only a second degree polynomial, but here G is a full-blown power series and this means that there are difficulties in controlling the coefficients of G ψ(x) . We will therefore not follow the same path we used for φ but instead use the fact that ψ is the inverse function of φ and that we already have a good error bound on the truncated power series of φ. If we let φT and ψ T denote the truncated power series of φ and ψ, respectively, then we will manage to show that the remainder term is small by basically using that kφT − φk∞ and kψ T ◦ φT − idk∞ are small. Corresponding estimates of the derivatives of ψ are also made. Recurrence equations When we insert the power series of ψ into the functional equation (∗) the left-hand side has the same form as the left-hand side of the functional equation for φ, 4 X X Dψ(x)Ax − Aψ(x) i = λk jk − λi ei,j xj . j k=1 Turning to the right-hand side we must keep in mind that the power series of G only contains terms of degree higher or equal to 2M and since ψ has no constant term the composition G ψ(x) will also only have those higher degree terms. In 106 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN our case the degree N of the truncation is lower than 2M , so for the parameter range of the coefficients we are interested in the right-hand has only one term, 4 X ∂ψi (x)Fk (x) Dψ(x)F (x) i = ∂xk k=1 4 X X j = ei,j+ek (jk + 1)x Fk (x) k=1 = j X ei,j+e1 (j1 + 1)x j k1 (x1 + x2 + x3 )x4 j + X ei,j+e2 (j2 + 1)xj k2 (x1 + x2 + x3 )x4 j + X ei,j+e3 (j3 + 1)xj k3 (x1 + x2 + x3 )x4 j + X ei,j+e4 (j4 + 1)x j j k4 x21 + k5 x1 x2 + k6 x1 x3 + k7 x22 + k8 x2 x3 + k9 x23 . If we expand this expression, collect all terms of equal degree and identify with the left-hand side we get the following recurrence equation for the coefficients ei,j , Ωi (j) ei,j = −ei,j−e4 j1 k1 − ei,j+e1 −e2 −e4 (j1 + 1)k1 − ei,j+e1 −e3 −e4 (j1 + 1)k1 − ei,j−e1 +e2 −e4 (j2 + 1)k2 − ei,j−e4 j2 k2 − ei,j+e2 −e3 −e4 (j2 + 1)k2 − ei,j−e1 +e3 −e4 (j3 + 1)k3 − ei,j−e2 +e3 −e4 (j3 + 1)k3 − ei,j−e4 j3 k3 − ei,j−2e1 +e4 (j4 + 1)k4 − ei,j−e1 −e2 +e4 (j4 + 1)k5 − ei,j−e1 −e3 +e4 (j4 + 1)k6 − ei,j−2e2 +e4 (j4 + 1)k7 − ei,j−e2 −e3 +e4 (j4 + 1)k8 − ei,j−2e3 +e4 (j4 + 1)k9 . Since ei,j = 0 if j 0 and ei,0 = 0 we can conclude from the recurrence equation that ei,j = 0 if |j| 6 1 except when j = ei in which case Ωi (j) = 0 and we can choose ei,j freely, for example equal to 1. Estimation of the remainder term Before we can begin to work on the scheme to estimate the remainder term we need to show that the coordinate function ψ exists and is defined in a suitable 3.3. THE COORDINATE CHANGE FUNCTION ψ 107 cube around the origin. This we are able to show by using Lemma 1 which we recapitulate here: φ and φT satisfy the following estimates • kφ(z) − zk∞ ≤ 0.72 kzk2∞ for kzk∞ ≤ 18 , • kφT(z) − zk∞ ≤ 0.72 kzk2∞ • kDφ(z) − I k∞ ≤ 1.44 kzk∞ • kDφT(z) − I k∞ ≤ 1.44 kzk∞ (13) for kzk∞ ≤ 81 , (14) for kzk∞ ≤ 18 , (15) for kzk∞ ≤ 18 , (16) where φT denotes the truncated power series of φ. Lemma 2. The functions φ and φT are injective in the cube C1/8 = {kzk∞ ≤ 81 }. Proof. Pick two separate points z1 and z2 inside the cube. By using the triangle inequality, the mean value theorem and inequality (15) we have that kφ(z1 ) − φ(z2 )k∞ = k(φ(z1 ) − z1 ) − (φ(z2 ) − z2 ) − (z2 − z1 )k∞ ≥ kz1 − z2 k∞ − k(φ(z1 ) − z1 ) − (φ(z2 ) − z2 )k∞ ≥ kz1 − z2 k∞ − kDφ(ζ) − I k∞ · kz1 − z2 k∞ = 1 − kDφ(ζ) − I k∞ kz1 − z2 k∞ > 0, where ζ is a point on the line segment between z1 and z2 (hence inside the cube). This shows that φ is injective. The proof for φT is analogous. Next we show that the images of φ and φT cover the cube C1/9 = {kzk ≤ 91 } and together with the last lemma this shows that ψ = φ−1 and (φT )−1 are defined and analytical in that cube. Lemma 3. If kzk∞ = If kzk∞ = Proof. When kzk∞ = 1 8 1 8 1 9 then kφ(z)k∞ ≥ then kφ(z)k∞ ≥ 1 1 T 9 and kφ (z)k∞ ≥ 9 . 1 1 T 10 and kφ (z)k∞ ≥ 10 . we have that kφ(z)k∞ ≥ kzk∞ − kφ(z) − zk∞ ≥ and when kzk∞ = 1 9 1 8 − 0.72 · 1 2 8 > 1 9 we have that kφ(z)k∞ ≥ kzk∞ − kφ(z) − zk∞ ≥ 1 9 − 0.72 · 1 2 9 > 1 10 . The proof for φT is analogous. The estimate of the remainder term that we will use hinges on Result 1 in Section 3.2 and on the following two lemmas. Lemma 4. If kxk∞ ≤ If kxk∞ ≤ 1 9 1 9 then kDφ−1 (x)k∞ ≤ 1.3. then kD(φT )−1 (x)k∞ ≤ 1.3. 108 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN Proof. Differentiating the identity φ ◦ φ−1 (x) = x using the chain rule gives us −1 Dφ−1 (x) = Dφ φ−1 (x) . If we use that φ−1 (C1/9 ) ⊂ C1/8 (Lemma 3) together with the following standard formula (see, for example, Lemma 2.3.3 in [Matrix Computations (1996), Johns Hopkins]) k(I − A)−1 k∞ ≤ 1 1 − kAk∞ (valid when kAk∞ < 1) we have that 1 1 − kDφ(z) − Ik∞ 1 ≤ max ≤ 1.3, z∈C1/8 1 − 1.44kzk∞ −1 kDφ−1 (x)k∞ ≤ max Dφ(z) ∞ ≤ max z∈C1/8 z∈C1/8 where we also have used inequality (15). The same proof works for φT . Lemma 5. If z ∈ C1/9 then kψ T ◦ φT(z) − zk∞ ≤ 1.32 × 10−10 . If z ∈ C1/9 then kD(ψ T ◦ φT )(z) − I k∞ ≤ 1.07 × 10−8 . Proof. We define coefficients ai,j by (ψ T ◦ φT )i (z) = X ai,j z j . j The polynomials φT and ψ T are the truncations of degree N of the power series of φ and ψ, respectively, which means that φ(z) = φT(z) + O(rN +1 ) and ψ(x) = ψ T(x) + O(rN +1 ). If we use the relation ψ ◦ φ(z) = z and that φT and ψ T do not have constant terms it is easy to see that ψ T ◦ φT(z) − z = O(rN +1 ), i.e. ai,j = 0 if |j| ≤ N and j 6= ei . Moreover, the composition ψ T ◦ φT(z) must be a polynomial of degree at most N 2 . The estimates that we want to prove are derived in the following way kψ T ◦ φT(z) − zk∞ = max (ψ T ◦ φT )i (z) − zi i X j = max ai,j z i N <|j|≤N 2 2 ≤ N X max j=N +1 kD(ψ T ◦ φT )(z) − I k∞ = max i 4 X k=1 i X |ai,j | 1 j 9 , |j|=j Dk (ψ T ◦ φT )i (z) − δik 3.3. THE COORDINATE CHANGE FUNCTION ψ 4 X = max i X k=1 N <|j|≤N 2 4 X ≤ max i X ai,j jk z j−ek |ai,j | jk z j−ek k=1 N <|j|≤N 2 X ≤ max i |ai,j | 1 |j|−1 9 N <|j|≤N 2 N2 X = 109 max i j=N +1 4 X jk k=1 |ai,j | j X 1 j−1 . 9 |j|=j From these formulas we see that the key to our estimates is to get a good bound on the quantities X max |ai,j |. i |j|=j The rest of the proof is therefore directed at estimating various coefficients that together lead to an estimate of the quantities above. First we introduce the coefficients fn,j as X φT1 (z)n1 φT2 (z)n2 φT3 (z)n3 φT4 (z)n4 = fn,j z j . (∗) j These coefficients have the following obvious boundary conditions: fn,j = 0, if n 0 or j 0; fei ,j = ci,j if |j| ≤ N ; fn,j = 1, if j = n; fn,j = 0, if |j| ≤ |n| and j 6= n. By multiplying (∗) with φTi(z) and identifying coefficients we get a recurrence equation for the coefficients fj,n , X fn+ei ,j = ci,j−m fn,m . m:|j−m|≤N With these coefficients we can find an expression for ai,j , X X ai,j z j = (ψ T ◦ φT )(z) = ei,m φT1 (z)m1 φT2 (z)m2 φT3 (z)m3 φT4 (z)m4 m j = X ei,m m = fm,j z j j X X j X ei,m fm,j z j , m which shows that ai,j = X m ei,m fm,j . 110 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN We will now derive a sequence {bn,j }n,j of numbers that estimates the coefficients fn,j in the following way X bn,j ≥ max |fn,j |. |n|=n |j|=j As boundary conditions we put bn,j = 0 if j < n and bn,j = 1 if j = n, and by using the recurrence equation of fn,j we have that XX X max |fn,j | ≤ max |ci,j−m | |fn−ei ,m | |n|=n |n|=n |j|=j = max |j|=j m X |n|=n j−1 X = m |n|=n j−1 X X |ci,j−m | |j|=j X max m=1 ≤ |fn−ei ,m | X |fn−ei ,m | |m|=m |ci,j−m | |j|=j bn−1,m hi,j−m . m=1 We therefore define bn,j = min i j−1 X bn−1,m hi,j−m for j ≥ j0 m=1 and put bn,j = max |n|=n X |fn,j | for j < j0 . |j|=j Now we can estimate the sum over the coefficients ai,j , X X X max |ai,j | ≤ max |ei,m | |fm,j | i i |j|=j ≤ j X m=1 ≤ j X m max |m|=m |j|=j X |j|=j |fm,j | · max i X |ei,m | |m|=m bm,j pm , m=1 P where pm = maxi |m|=m |ei,m |. In the Maple program psi_error.mpl these estimates are performed and this yields the result stated in Lemma 5. Now we are ready to estimate the remainder terms. We start with the remainder term in the truncation of ψ. 3.3. THE COORDINATE CHANGE FUNCTION ψ Result 3. If kxk∞ ≤ 1 10 111 then kψ(x) − ψ T(x)k∞ ≤ 1.97 × 10−8 . Proof. Fixing x, we use the triangle inequality for vector norms kψ(x) − ψ T(x)k∞ ≤ kψ(x) − (φT )−1 (x)k∞ + k(φT )−1 (x) − ψ T(x)k∞ . The right-most term in the right-hand side can be estimated using Lemma 3 and 5, k(φT )−1 (x) − ψ T(x)k∞ ≤ max z∈(φT )−1 (C1/10 ) kz − ψ T ◦ φT(z)k∞ ≤ max kψ T ◦ φT(z) − zk∞ ≤ 1.32 × 10−10 . z∈C1/9 After some rewriting, the left-most term in the right-hand side can be formulated as kψ(x) − (φT )−1 (x)k∞ = kφ−1 (x) − (φT )−1 (x)k∞ ≤ = max kz − (φT )−1 ◦ φ(z)k∞ max k(φT )−1 φT(z) + (φ(z) − φT(z)) − zk z∈φ−1 (C1/10 ) z∈φ−1 (C1/10 ) = { w = φ(z) − φT(z) } = = max z∈φ−1 (C 1/10 ) max z∈φ−1 (C1/10 ) k(φT )−1 φT(z) + w − (φT )−1 φT(z) k∞ kD(φT )−1 (ξ)wk∞ , where we have used the mean value theorem in the last step. Result 1 gives us that kwk∞ = kφ(z) − φT(z)k∞ ≤ 1.50 × 10−8 , which means that ξ = φT(z) + τ φ(z) − φT(z) = φ(z) + (1 − τ ) φT(z) − φ(z) is inside the cube C1/10+1.50×10−8 ⊂ C1/9 . We can now use Lemma 4 to complete the estimate: max z∈φ−1 (C1/10 ) kD(φT )−1 (ξ)wk∞ ≤ max kD(φT )−1 (ξ)k∞ · kwk∞ ≤ 1.95 × 10−8 . ξ∈C1/9 Before we address the remainder term of the derivative Dψ we need an intermediate result that plays the same role in that proof as the usage of the mean value theorem does in the proof of Result 3. 112 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN Lemma 6. If kxk∞ , kyk∞ ≤ 1 8 then kDφT(x) − DφT(y)k∞ ≤ 1.71 kx − yk∞ . Proof. We start by looking at the expression X ∂φTi ∂φTi (x) − (y) = ei,j jk xj−ek − y j−ek , ∂zk ∂zk |j|≤N and if we are to estimate this quantity we first need a bound on |xj − y j |. By using the mean value theorem on the function f (x) = xj we get that j x − y j ≤ |j| max{kxk∞ , kyk∞ } |j|−1 kx − yk∞ |j|−1 kx − yk∞ . ≤ |j| 81 Now we have that kDφT(x) − DφT(y)k∞ ≤ max i ≤ max i ≤ X N 4 X ∂φTi ∂φTi (x) − (y) ∂zk ∂zk k=1 N X (j − 1) 1 j−2 kx 8 j=1 j(j − 1)pj − yk∞ 4 X X jk |ei,j | k=1 |j|=j 1 j−2 8 kx − yk∞ , j=1 where pj are the quantities we introduced in the proof of Lemma 5. In the Maple program psi_error.mpl we calculate the factor in front of kx − yk∞ to be less than 1.71. Result 4. If kxk∞ ≤ 1 10 then kDψ(x) − Dψ T(x)k∞ ≤ 6.53 × 10−7 . Proof. This proof uses the same strategy as the proof of Result 3. First we fix x and use the triangle inequality for matrix norms kDψ(x) − Dψ T(x)k∞ ≤ kDψ(x) − D(φT )−1 (x)k∞ + kD(φT )−1 (x) − Dψ T(x)k∞ . We estimate the right-most term in the right-hand side with Lemma 4 and 5, kD(φT )−1 (x) − Dψ T(x)k∞ = kD(φT )−1 (x) − Dψ T(x)DφT (φT )−1 (x) D(φT )−1 (x)k∞ ≤ I − Dψ T(x)DφT (φT )−1 (x) ∞ · kD(φT )−1 (x)k∞ ≤ 1.3 · kD ψ T ◦ φT (φT )−1 (x) − I k∞ ≤ 1.3 · max kD ψ T ◦ φT z − I k∞ z∈(φT )−1 (C1/10 ) ≤ 1.3 · max kD ψ T ◦ φT (z) − I k∞ ≤ 1.40 × 10−8 . z∈C1/9 3.3. THE COORDINATE CHANGE FUNCTION ψ 113 The left-most term in the right-hand side is dealt with the same type of approximations we used for the corresponding term in Result 3 except that we use Lemma 6 instead of the mean value theorem, kDψ(x) − D(φT )−1 (x)k∞ = kDφ−1 (x) − D(φT )−1 (x)k∞ = kDφ−1 (x) − D(φT )−1 (x)Dφ φ−1 (x) Dφ−1 (x)k∞ ≤ kI − D(φT )−1 (x)Dφ φ−1 (x) k∞ · kDφ−1 (x)k∞ ≤ 1.3 · I − D(φT )−1 (x) DφT (φT )−1 (x) + Dφ φ−1 (x) − DφT (φT )−1 (x) ∞ = 1.3 · D(φT )−1 (x) Dφ φ−1 (x) − DφT (φT )−1 (x) ∞ ≤ 1.3 · D(φT )−1 (x)k∞ · kDφ φ−1 (x) − DφT (φT )−1 (x) ∞ ≤ 1.32 · Dφ φ−1 (x) − DφT φ−1 (x) ∞ + 1.32 · DφT φ−1 (x) − DφT (φT )−1 (x) . ∞ The first term is estimated using Result 2 and we obtain that it is less or equal to 1.32 · Dφ φ−1 (x) − DφT φ−1 (x) ∞ ≤ 1.32 · max z∈φ−1 (C1/10 ) kDφ(z) − DφT(z)k∞ ≤ 1.32 · max kDφ(z) − DφT(z)k∞ ≤ 5.82 × 10−7 , z∈C1/9 while for the second term we use that kφ−1 (x) − (φT )−1 (x)k∞ ≤ 1.95 × 10−8 (from the proof of Result 3) and Lemma 6, 1.32 · DφT φ−1 (x) − DφT (φT )−1 (x) ∞ ≤ 1.32 · 1.71 · kφ−1 (x) − (φT )−1 (x)k∞ ≤ 5.64 × 10−8 . We end this section with estimates of ψ T and Dψ T , which are similar to the estimates appearing in Lemma 1. Lemma 7. If kxk∞ ≤ If kxk∞ ≤ 1 10 1 10 then kψ T(x) − xk∞ ≤ 0.8 kxk2∞ . then kDψ T(x) − I k∞ ≤ 1.6 kxk∞ . Proof. The proof uses these two estimates kψ T(x) − xk∞ = max i X 2≤|j|≤N X N ei,j xj ≤ kxk2∞ · max pj i j=2 1 j−2 10 114 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN and T kDψ (x) − I k∞ 4 X = max i X ei,j jk x j−ek k=1 2≤|j|≤N ≤ kxk∞ · max i X N jpj 1 j−2 10 . j=2 These two expressions are calculated in the program psi_estimates.mpl. 3.4 The non-linear function G Let us review the role of G in the coordinate change. The function G is present in three places: in the coordinate functions φ and ψ, and in the normal form flow ż = Az + G(z). If we look at the coordinate changes φ and ψ they are both calculated with truncated power series and these truncations are of low enough order not to be directly influenced by G (meaning that their terms are unaffected by changes to any of the non-zero coefficients of G). It is only when we estimate the remainder terms that G comes in. Also when we deal with the normal form flow the function G will only play a minor part since we will approximate this flow inside the cube with the linear flow ż = Az (see Section 3.5). Our focus in this section will first be to show that the power series of G is convergent inside the cube. This will prove that the whole analytic change of coordinates exists. The second objective is to show that G is sufficiently small so that the approximation with the linear flow works. The plan we follow is very much the same plan we used for estimating the remainder term of φ. We have already derived recurrence equations (5) to (8) for the coefficients of G and to estimate G we divide its power series into two parts X X Gi (z) = R1 + R2 = di,j z j + di,j z j . 2M ≤|j|≤N 0 |j|>N 0 (Coefficients di,j of order |j| < 2M are zero.) By introducing a sequence {gi,j } of numbers that bounds the sums X gi,j ≥ |di,j | |j|=j and are calculated with a simple recurrence equation we are able to bound the first part of G inside the cube {|zi | ≤ 91 } with X M j−2M |R1 | ≤ |z1 |M max{|z2 |, |z3 |, |z4 |} gi,j 19 , 2M ≤|j|≤N 0 where z = (z1 , z2 , z3 , z4 ). We then use induction to prove an inequality of the form gi,j ≤ Ci0 Lj , for j > N 0 , 3.4. THE NON-LINEAR FUNCTION G 115 where L is slightly larger than the constant K we used for φ (a trade-off to make the induction work). This results in an estimate of the second part of G ∞ X M |R2 | ≤ |z1 |M max{|z2 |, |z3 |, |z4 |} j=N 0 +1 Ci0 L j−2M . L2M 9 M it Besides giving us a bound of the form kG(z)k∞ ≤ κ|z1 |M max{|z2 |, |z3 |, |z4 |} also shows that the power series of G is convergent inside the set kzk∞ < 1/L. The first part of the estimate To find suitable numbers gi,j we use the same strategy as when we defined the sequence {hi,j }. Take the absolute value on both sides of the recurrence equation (5) for d1,j and sum over the parameter set Jic = {j ≥ 0 : |j| = j and j1 ≥ M and j2 + j3 + j4 ≥ M }, we conclude that X X lhs = |d1,j | = |d1,j | = g1,j , j∈Jjc rhs ≤ |k1 | |j|=j X |c1,m + c2,m + c3,m | m + 4 X X j−1 X |c1,m+ek |(mk + 1) 4 X m=1 k=1 ≤ |k1 | |dk,j−m | X |c1,m | + |c2,m | + |c3,m | |m|=m j−2M X j−1 X X |j|=j h4,j−m m=1 + |c4,j−m | |j|=j |m|≥1 k=1 ≤ |k1 | X gk,j−m X |c1,m+ek |(mk + 1) |m|=m h4,j−m (h1,m + h2,m + h3,m ) m=1 + j−2M X h1,m+1 (m + 1)(g1,j−m + g2,j−m + g3,j−m + g4,j−m ). m=1 We can therefore define g1,j = |k1 | j−1 X h4,j−m (h1,m + h2,m + h3,m ) m=1 + j−2M X m=1 (m + 1)h1,m+1 (g1,j−m + g2,j−m + g3,j−m + g4,j−m ) (17) 116 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN for j > P . Similar calculations make it natural to define j−1 X g2,j = |k2 | h4,j−m (h1,m + h2,m + h3,m ) m=1 j−2M X + (m + 1)h2,m+1 (g1,j−m + g2,j−m + g3,j−m + g4,j−m ), (18) m=1 j−1 X g3,j = |k3 | h4,j−m (h1,m + h2,m + h3,m ) m=1 + j−2M X (m + 1)h3,m+1 (g1,j−m + g2,j−m + g3,j−m + g4,j−m ), (19) m=1 g4,j = j−1 X |k4 |h1,m h1,j−m + |k5 |h1,m h2,j−m + |k6 |h1,m h3,j−m m=1 + |k7 |h2,m h2,j−m + |k8 |h2,m h3,j−m + |k9 |h3,m h3,j−m + j−2M X (m + 1)h4,m+1 (g1,j−m + g2,j−m + g3,j−m + g4,j−m ). (20) m=1 The second part of the estimate If we start to analyse the recurrence equations (17) to (20) we notice that the righthand sides consist of two sums. The first sum is very similar to the right-hand side of the corresponding recurrence equation for hi,j and the second sum is j−2M X (m + 1)hi,m+1 (g1,j−m + g2,j−m + g3,j−m + g4,j−m ). m=1 This together with the fact that we were able to show that hi,j is bounded by Ci K j suggests that we can expect a similar bound on gi,j , but the absence of the dampening factor Ωi (j) in the first sum and the presence of the factor m+1 in the second sum means that an Ansatz of the form gi,j ≤ Ci0 K j will fail. We will instead choose a slightly larger L = 7 and choose a bound in the form gi,j ≤ Ci0 Lj . This gives us the edge we need. To prove by induction that gi,j ≤ Ci0 Lj for j > N 0 we assume that gi,m ≤ Ci0 Lm for N 00 ≤ m ≤ j − 1, (∗) where we also assume that 2N 00 ≤ N 0 − 1 (for the same reason as before when we 3.4. THE NON-LINEAR FUNCTION G 117 worked with hi,j ) and we want to show that g1,j ≡ |k1 | j−1 X h4,j−m (h1,m + h2,m + h3,m ) m=1 + j−2M X (m + 1)h1,m+1 (g1,j−m + g2,j−m + g3,j−m + g4,j−m ) ≤ C10 Lj . m=1 Following in the footprints of the proof of hi,j ≤ Ci K j we split the sums in the expression above in three parts j−1 X 00 −1 NX = m=1 + m=1 00 j−N X + m=N 00 j−1 X m=j−N 00 +1 and use the induction hypothesis (∗), g1,j ≤ |k1 | 00 NX −1 C4 K j−m (h1,m + h2,m + h3,m ) m=1 + |k1 | 00 j−N X C4 K j−m (C1 + C2 + C3 )K m m=N 00 j−1 X + |k1 | h4,j−m (C1 + C2 + C3 )K m m=j−N 00 +1 + 00 NX −1 (m + 1)h1,m+1 (C10 + C20 + C30 + C40 )Lj−m m=1 + 00 j−N X (m + 1)C1 K m+1 (C10 + C20 + C30 + C40 )Lj−m m=N 00 + j−2M X (m + 1)C1 K m+1 m=j−N 00 +1 × (g1,j−m + g2,j−m + g3,j−m + g4,j−m ). This sizable formula can be rearranged and by factoring out Lj be rewritten as 00 −1 K j NX g1,j ≤ |k | C (h1,m + h2,m + h3,m )K −m 1 4 L Lj m=1 K j + |k1 | C4 (C1 + C2 + C3 )(j − 2N 00 + 1) L 00 −1 K j NX + |k1 | (C1 + C2 + C3 ) h4,m K −m L m=1 118 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN + (C10 + C20 + C30 + C40 ) 00 NX −1 (m + 1)h1,m+1 L−m m=1 K N 00 + C1 (C10 + C20 + C30 + C40 ) L L 00 j−2N +1 X K m × (m + N 00 ) L m=1 + C1 00 −1 K j NX L (j − m + 1) m=2M × (g1,m + g2,m + g3,m + g4,m )K −(m−1) . If the right-hand side is smaller than C10 then the induction will work. Instead of testing this condition for all values of j we can derive a single condition by substituting j for N 0 or ∞ whenever this gives a dominating (finite) expression and in two places make non-obvious substitutions to get something bigger: K j we put j = 2N 00 − 1 − 1/ log(K/L), and • in (j − 2N 00 + 1) L K j we put j = N 0 . • in (j − m + 1) L Doing the same analysis for g2,j , g3,j and g4,j we derive analogous induction conditions. In the Maple program g_estimates.mpl we check these conditions and manage to prove that • g1,j ≤ 2.77×10−7 · 7j for j > N , • g2,j ≤ 4.73×10−8 · 7j for j > N , • g3,j ≤ 3.39×10−7 · 7j for j > N , • g4,j ≤ 7.79×10−7 · 7j for j > N . This results in the following estimate. Result 5. If kzk∞ ≤ 1 9 M then kG(z)k∞ ≤ κ|z1 |M max{|z2 |, |z3 |, |z4 |} , where κ = 2.81×103 . As we stated in the beginning of this section the constant κ is calculated with the formula " N0 # ∞ X X Ci0 L j−2M 1 j−2M + κ = max gi,j 9 i L2M 9 0 j=2M j=N +1 and this is done in the Maple program g_estimates.mpl. The estimate in Result 5 is derived by factoring out powers of |z1 | and max{|z2 |, |z3 |, |z4 |} from the power 3.4. THE NON-LINEAR FUNCTION G 119 series of G. These common factors arise due to the fact that di,j = 0 when j1 < M or j2 + j3 + j4 < M , |Gi (z)| ≤ X |di,j | |z j | j M ≤ |z1 |M max{|z2 |, |z3 |, |z4 |} X j2 +j3 +j4 −M |di,j | |z1 |j1 −M max{|z2 |, |z3 |, |z4 |} . × j Then we replace |z1 |, |z2 |, |z3 | and |z4 | with 1 9 inside the summation M X |Gi (z)| ≤ |z1 |M max{|z2 |, |z3 |, |z4 |} |di,j | M ≤ |z1 |M max{|z2 |, |z3 |, |z4 |} j ∞ X gi,j 1 |j|−2M 9 1 j−2M . 9 j=2M We end this section by deriving a corresponding estimate of the derivative DG. Result 6. If kzk∞ ≤ 1 9 M −1 then kDG(z)k∞ ≤ κ0 |z1 |M −1 max{|z2 |, |z3 |, |z4 |} where κ0 = 6.87×103 . Proof. First we estimate the individual components of DG by factoring out common powers of the variables z1 , z2 , z3 and z4 from the power series, ∂Gi M −1 M −1 max{|z2 |, |z3 |, |z4 |} ∂z1 (z) ≤ |z1 | X j2 +j3 +j4 −M +1 × |di,j | j1 |z1 |j1 −M max{|z2 |, |z3 |, |z4 |} j and for k = 2, 3 or 4, ∂Gi M −1 M −1 max{|z2 |, |z3 |, |z4 |} ∂zk (z) ≤ |z1 | X j2 +j3 +j4 −M × |di,j | jk |z1 |j1 −M +1 max{|z2 |, |z3 |, |z4 |} . j Since kzk∞ ≤ 1 9 we can replace |z1 |, |z2 |, |z3 | and |z4 | with 1 9 inside the summation 120 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN and get the following estimate kG(z)k∞ 4 X ∂Gi ≤ max ∂zk (z) i k=1 ≤ |z1 | X M −1 max{|z2 |, |z3 |, |z4 |} max |j| ≤ |z1 |M −1 ∞ X M −1 max{|z2 |, |z3 |, |z4 |} max j M −1 i i 1 |j|−2M +1 |di,j | 9 j 1 j−2M +1 gi,j . 9 j=2M This shows that the constant κ0 can be chosen to be " N0 # ∞ L j−2M +1 0 X X C j−2M +1 i 0 j gi,j + 2M −1 , j 91 κ = max i 9 L j=N 0 +1 j=2M which is calculated in the Maple program g_estimates.mpl. 3.5 The normal form flow The last and remaining part of our study in this chapter focus on analysing orbits of the normal form flow ż = Az + G(z) inside the cube C1/9 . We have arranged things so that the non-linear term G(z) satisfies M kG(z)k∞ ≤ κ|z1 |M max{|z2 |, |z3 |, |z4 |} throughout the cube and this means that G is not only small but, more importantly, decreasing rapidly close to the stable and unstable manifolds. As we shall see this means that orbits of the system can be approximated well by the corresponding orbits of the linear system ż = Az. The reason this works is that if an orbit stays a long time inside the cube (and, hence, the overall smallness of G is not a good enough approximation) it must spend most of that time close to the stable and unstable manifolds, in a region where G is falling-off rapidly, and this limits the accumulated error in the approximation. The initial set-up is that after a stepwise numerical integration (see Section 2.5 in Chapter 2) we have points inside the 1 strip { x ∈ C1/10 : |x2 |, |x3 | ≤ 10−5 and x4 = 10 } on top of the cube C1/10 . These points are first transformed with the change of coordinates z = ψ T(x), and using the two inequalities (see Lemma 1) |ψiT(x)| ≤ |xi | + |ψiT(x) − xi | ≤ |xi | + 0.8 kxk2∞ |ψ4T(x)| ≥ |x4 | − |ψ4T(x) − x4 | ≥ |x4 | − and 0.8 kxk2∞ we can see that the points are then inside the z-cube C1/9 and with |z2 |, |z3 | < z4 . We will in this section show that for an orbit that starts in a point z in C1/9 with |z2 |, |z3 | < z4 the difference between the orbit ϕ(z, t) of the normal form system 3.5. THE NORMAL FORM FLOW 121 z4 z1 Figure 3.2: Since the diagonal matrix A = diag(λ1 , λ2 , λ3 , λ4 ) has λ1 > 0 > λ4 > λ2 > λ3 orbits ϕ(z, t) pass through the cube with an increasing absolute value of the first component ϕ1 (z, t) while the other components ϕ2 (z, t), ϕ3 (z, t) and ϕ4 (z, t) are decreasing. and the orbit eAt ϕ(z, 0) of the linear system is sufficiently small when the orbits exit 1 the cube at z1 = ± 10 . To begin with, we derive estimates for the quantities ϕ1 (z, t), 1 ϕ4 (z, t) and the exit time τ = τ (z) (i.e. the time τ when ϕ1 (z, τ ) = ± 10 ). This is done by successively refining our estimates starting from a set of initial estimates. With these things in place it is then a matter of using the estimate of G from the last section to get good bounds on kϕ(z, τ )−eAτ̃ ϕ(z, 0)k∞ and kDϕ(z, τ )−eAτ̃ k∞ , 1 ). where τ̃ is the exit time of the linear flow (i.e. the time τ̃ when eλ1 τ̃ ϕ1 (z, 0) = ± 10 Henceforth we will assume, for simplicity, that ϕ1 (z, 0) > 0 and therefore that 1 orbits exit the cube at x1 = 10 . The case ϕ1 (z, 0) < 0 is symmetrical. 00 Lemma 8. If ϕ1 (z, 0) > 0 then ϕ1 (z, 0)e(λ1 −κ 00 where κ = 8.96×10 −8 )t 00 ≤ ϕ1 (z, t) ≤ ϕ1 (z, 0)e(λ1 +κ )t , . Proof. We have that ϕ̇1 (z, t) = λ1 ϕ1 (z, t) + G1 ϕ(z, t) and since the non-linear 2M −1 term satisfies |G1 (z)| ≤ κ 91 z1 ≤ 8.96×10−8 z1 we get that (λ1 − κ00 )ϕ1 (z, t) ≤ ϕ̇1 (z, t) ≤ (λ1 + κ00 )ϕ1 (z, t). The lemma then follows by applying Grönwall’s lemma. Lemma 8 immediately gives us an estimate of the exit time τ , 1 r 1 r log ≤τ ≤ log λ1 + κ00 ϕ1 (z, 0) λ1 − κ00 ϕ1 (z, 0) 1 . From this it is also apparent that the exit time tends to infinity where r = 10 when the first coordinate of the starting point approaches the stable manifold. Lemma 9. If |ϕ2 (z, 0)|, |ϕ3 (z, 0)| < ϕ4 (z, 0) then |ϕ2 (z, t)|, |ϕ3 (z, t)| < ϕ4 (z, t) as long as the orbit stays inside the cube C1/9 . 122 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN Proof. If for some t > 0 we have that ϕi (z, t) = ϕ4 (z, t), for i = 2, 3, then we get ϕ̇i (z, t) = λi ϕi (z, t) + Gi ϕ(z, t) ≤ λi ϕi (z, t) + κ |ϕ1 (z, t)|M |ϕ4 (z, t)|M M 1 M −1 ϕ4 (z, t), ≤ λi ϕ4 (z, t) + κ 91 9 and ϕ̇4 (z, t) = λ4 ϕ4 (z, t) + G4 ϕ(z, t) ≥ λ4 ϕ4 (z, t) − κ |ϕ1 (z, t)|M |ϕ4 (z, t)|M M 1 M −1 ≥ λ4 ϕ4 (z, t) − κ 19 ϕ4 (z, t), 9 which shows that 1 2M −1 ϕ4 (z, t) 9 ϕ̇4 (z, t) − ϕ̇i (z, t) ≥ λ4 − λi − 2κ > 0. If ϕi (z, t) = −ϕ4 (z, t) the same type of calculations show that ϕ̇4 (z, t)+ϕ̇i (z, t) > 0. This means that the set {z ∈ C1/9 : −z4 ≤ z2 , z3 ≤ z4 } is a trapping region and the lemma follows. For the orbits we focus on, Lemma 9 implies that max{|ϕ2 (z, t)|, |ϕ3 (z, t)|, |ϕ4 (z, t)|} = ϕ4 (z, t) and the estimate we have on G can therefore be simplified to G ϕ(z, t) ≤ κ ϕ1 (z, t)M ϕ4 (z, t)M . ∞ We can now use the same type of reasoning as in Lemma 8 to get a bound on ϕ4 (z, t). 00 Lemma 10. If ϕ1 (z, 0) > 0 then ϕ4 (z, 0)e(λ4 −κ )t 00 ≤ ϕ4 (z, t) ≤ ϕ4 (z, 0)e(λ4 +κ )t . Lemma 8 and 10 will serve as initial estimates for ϕ1 (z, t) and ϕ4 (z, t), and to improve these estimates we need the following generalisation of Grönwall’s lemma (inequalities of this type are discussed in Chapter 12 of [Inequalities Involving Functions and Their Integrals and Derivatives (1991), Kluwer]). Lemma 11. Let u(t) be a positive function that satisfies u̇(t) ≤ au(t) + f (t)u(t)M , for t ≥ 0, where f (t) is a non-negative function and the following inequality holds Z T (M − 1)u(0)M −1 f (s)ea(M −1)s ds < 1, 0 then we have for 0 ≤ t ≤ T that u(t) ≤ u(0)eat 1 − (M − 1)u(0)M −1 Z 0 t f (s)ea(M −1)s ds − 1 M −1 . 3.5. THE NORMAL FORM FLOW 123 Proof. Move the term au(t) over to the left-hand side of the differential inequality, divide both sides by u(t)M and multiply by the integrating factor −(M −1)ea(M −1)t . The left-hand side can then be written as a derivative " # d ea(M −1)t ≥ −(M − 1)f (t)ea(M −1)t . dt u(t)M −1 After integration we get the inequality Z t 1 ea(M −1)t − ≥ −(M − 1) f (s)ea(M −1)s ds u(t)M −1 u(0)M −1 0 which can be rearranged to the inequality in the lemma. Corollary 12. Let u(t) be a positive function that satisfies u̇(t) ≥ au(t) − f (t)u(t)M , for t ≥ 0, where f (t) is a non-negative function, then we have for t ≥ 0 that u(t) ≥ u(0)eat 1 + (M − 1)u(0)M −1 Z t f (s)ea(M −1)s ds − 1 M −1 . 0 We will now use Lemma 11 and Corollary 12 to derive more precise estimates of the two flow variables ϕ1 (z, t) and ϕ4 (z, t). Lemma 13. If ϕ1 (z, 0) > 0 then 000 1 − κ1 eM (λ4 +κ )t 000 ϕ1 (z, 0)eλ1 t ≤ ϕ1 (z, t) ≤ 1 + κ1 eM (λ4 +κ )t ϕ1 (z, 0)eλ1 t for 0 ≤ t ≤ T = 1/(λ1 − κ00 ) · log r/ϕ1 (z, 0) , where κ1 = 1.31×10−9 and κ000 = 1.80×10−7 . Proof. By using Lemma 10 we have that G1 ϕ(z, t) ≤ κ ϕ4 (z, 0)M eM (λ4 +κ00 )t ϕ1 (z, t)M , which shows that 00 ϕ̇1 (z, t) ≤ λ1 ϕ1 (z, t) + κϕ4 (z, 0)M eM (λ4 +κ )t ϕ1 (z, t)M . 124 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN Before we can apply Lemma 11 to this differential inequality we first need to show that the inequality condition in Lemma 11 holds, Z T 00 M −1 (M − 1)ϕ1 (z, 0) κϕ4 (z, 0)M eM (λ4 +κ )s eλ1 (M −1)s ds 0 = κ(M − 1)ϕ1 (z, 0)M −1 ϕ4 (z, 0)M T Z 00 e[(M −1)λ1 +M (λ4 +κ )]s ds 0 ≤ M −1 κ(M − 1)ϕ4 (z, 0)M ϕ1 (z, 0)eλ1 τ̃ 00 (M − 1)λ1 + M (λ4 + κ ) h i × exp M (λ4 + κ00 )T + (M − 1)λ1 (T − τ̃ ) . We can write T = (1 + ε)τ̃ , where ε = κ00 /(λ1 − κ00 ) ≤ 7.92×10−9 , and since ϕ1 (z, 0)eλ1 τ̃ = r and ϕ4 (z, 0) ≤ 91 the right-hand side can be bounded by M h i κ(M − 1) 19 rM −1 00 exp M (λ + κ )(1 + ε) + (M − 1)λ ε τ̃ . 4 1 (M − 1)λ1 + M (λ4 + κ00 ) The exponent satisfies M (λ4 + κ00 )(1 + ε) + (M − 1)λ1 ε ≤ −15.9 < 0 which means that the exponential factor is smaller than 1 and the right-hand side is smaller than M κ(M − 1) 19 rM −1 ≤ 6.52×10−8 < 1. (M − 1)λ1 + M (λ4 + κ00 ) Lemma 11 now gives us that ϕ1 (z, t) is majorized by ϕ1 (z, 0)eλ1 t M −1 1 − κ(M − 1)ϕ1 (z, 0) M Z ϕ4 (z, 0) t [(M −1)λ1 +M (λ4 +κ00 )]s e ds 1 M −1 0 and after the integral in the denominator is evaluated this expression can be estimated by ϕ1 (z, 0) eλ1 t 1− M −1 κ(M − 1) ϕ1 (z, 0)eλ1 t ϕ4 (z, 0)M eM (λ4 +κ00 )t (M − 1)λ1 + M (λ4 + κ00 ) The fact that t ≤ (1 + ε)τ̃ and ϕ1 (z, 0)eλ1 τ̃ = r means that M −1 M (λ4 +κ00 )t 000 ϕ1 (z, 0)eλ1 t e ≤ rM −1 eM (λ4 +κ )t , where κ000 = κ00 + λ1 ε ≤ 1.80×10−7 , and we arrive at ϕ1 (z, t) ≤ ϕ1 (z, 0) eλ1 t . 1 1 M M −1 M −1 κ(M − 1) 9 r eM (λ4 +κ000 )t 1− 00 (M − 1)λ1 + M (λ4 + κ ) 1 M −1 . 3.5. THE NORMAL FORM FLOW 125 This expression can be further reduced by using the following elementary inequality 1 α ≤1+ y α (1 − y) 1−c for 0 ≤ y ≤ c < 1 and 0 ≤ α < 1, which implies that ϕ1 (z, t) is bounded by M κ 91 rM −1 λ1 t ϕ1 (z, 0)e 1+ (M − 1)λ1 + M (λ4 + κ00 ) − κ(M − 1) M (λ4 +κ000 )t 1 M M −1 r 9 e . To show the lower bound in the lemma we use the inequality 00 ϕ̇1 (z, t) ≥ λ1 ϕ1 (z, t) − κϕ4 (z, 0)M eM (λ4 +κ )t ϕ1 (z, t)M and apply Corollary 12 in the same way. We can use Lemma 13 to get a new estimate of the exit time. The inequality (1 − κ1 )ϕ1 (z, 0)eλ1 t ≤ ϕ1 (z, t) ≤ (1 + κ1 )ϕ1 (z, 0)eλ1 t gives us that 1 1 log(1 + κ1 ) ≤ τ ≤ τ̃ − log(1 − κ1 ). (∗) λ1 λ1 With this exit time estimate and the estimate in Lemma 13 we can use the same type of calculations as in the proof of Lemma 13 to get a new estimate of ϕ4 (z, t). τ̃ − Lemma 14. If ϕ1 (z, 0) > 0 then 1 − κ2 e(M −1)λ4 t ϕ4 (z, 0)eλ4 t ≤ ϕ4 (z, t) ≤ 1 + κ2 e(M −1)λ4 t ϕ4 (z, 0)eλ4 t for 0 ≤ t ≤ T = τ̃ − (1/λ1 ) log(1 − κ1 ) and where κ2 = 8.72×10−9 . Although Lemma 13 is a good enough estimate for our needs we repeat the estimate calculations in the proof of that lemma once more and this time we use the estimate of ϕ4 from Lemma 14 to eliminate the annoying coefficient κ000 and get a better looking estimate of ϕ1 (z, t). Lemma 15. If ϕ1 (z, 0) > 0 then 1 − κ3 eM λ4 t ϕ1 (z, 0)eλ1 t ≤ ϕ1 (z, t) ≤ 1 + κ3 eM λ4 t ϕ1 (z, 0)eλ1 t for 0 ≤ t ≤ T = τ̃ − (1/λ1 ) log(1 − κ1 ) and where κ3 = 1.31×10−9 . We are now prepared to start working on the main estimate that compares ϕ(z, τ ) with eAτ̃ ϕ(z, 0). By using the triangle inequality we have that ϕ(z, τ ) − eAτ̃ ϕ(z, 0) = max ϕi (z, τ ) − eλi τ̃ ϕi (z, 0) ∞ i=2,3,4 ≤ max ϕi (z, τ ) − eλi τ ϕi (z, 0) i=2,3,4 + max eλi τ − eλi τ̃ · 19 . i=2,3,4 The two terms on the right-hand side are estimated in the following two lemmas. 126 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN Lemma 16. ϕi (z, τ ) − ϕi (z, 0)eλi τ ≤ 8.72×10−10 eM λ4 τ̃ for i = 2, 3 and 4. Proof. In the differential equation ϕ̇i (z, t) = λi ϕi (z, t) + Gi ϕ(z, t) we use that Gi ϕ(z, t) ≤ κ(1 + κ3 )M ϕ1 (z, 0)M eM λ1 t (1 + κ2 )M ϕ4 (z, 0)M eM λ4 t according to Lemma 14 and 15. This shows that ϕ̇i (z, t) − λi ϕ( z, t) ≤ κ(1 + κ2 )M (1 + κ3 )M ϕ1 (z, 0)M ϕ4 (z, 0)M eM (λ1 +λ4 )t . Now apply Grönwall’s lemma to this differential inequality, ϕi (z, τ ) ≤ ϕi (z, 0)eλi τ + κ(1 + κ2 )M (1 + κ3 )M ϕ1 (z, 0)M ϕ4 (z, 0)M Z τ × eλi τ e[M λ1 −λi +M λ4 ]s ds 0 ≤ ϕi (z, 0)eλi τ M κ(1 + κ2 )M (1 + κ3 )M ϕ1 (z, 0)eλ1 τ ϕ4 (z, 0)M eM λ4 τ . + M λ 1 − λi + M λ 4 In the second term in the right-hand side we substitute τ for τ̃ − (1/λ1 ) log(1 − κ1 ) in eλ1 τ and τ for τ̃ − (1/λ1 ) log(1 + κ1 ) in eM λ4 τ to get λi τ ϕi (z, τ ) ≤ ϕi (z, 0)e κ(1 + κ1 )−M λ4 /λ1 (1 + κ2 )M (1 + κ3 )M 91 + (M λ1 − λi + M λ4 )(1 − κ1 )M M −1 rM eM λ4 τ̃ . By working with −ϕi (z, t) instead and adjusting the estimates appropriately we can derive the lower bound. Lemma 17. eλi τ − eλi τ̃ ≤ 2.46×10−9 eλi τ̃ for i = 2, 3 and 4. Proof. By using the exit time estimate (∗) we get that h i eλi τ − eλ1 τ̃ ≤ eλi τ̃ (1 + κ1 )−λi /λ1 − 1 ≤ 2.46×10−9 eλi τ̃ , and h i eλi τ − eλ1 τ̃ ≥ eλi τ̃ (1 − κ1 )−λi /λ1 − 1 ≥ −2.46×10−9 eλi τ̃ . Combining these two lemmas we get the next result. Result 7. ϕ(z, τ ) − eAτ̃ ϕ(z, 0)∞ ≤ 1.15×10−8 e[λ1 +M λ4 ]τ̃ . We now do the corresponding estimate for the derivatives of ϕ. Lemma 18. kDϕ(z, τ ) − eAτ k∞ ≤ 2.70×10−8 e[λ1 +(M −1)λ4 ]τ̃ . Proof. The derivatives Dϕ(z, τ ) are obtained by solving the equations of variations, d Dϕ(z, t) = A + DG(ϕ(z, t)) Dϕ(z, t). dt 3.5. THE NORMAL FORM FLOW 127 We collect both terms in the left-hand side and multiply (from the left) by the integrating factor. This gives us that Z t d A + DG(ϕ(z, s)) ds Dϕ(z, t) = 0. exp − dt 0 After integrating this equality we arrive at Z τ Dϕ(z, τ ) = exp A + DG(ϕ(z, s)) ds . 0 The estimate in the lemma will be proved by using the following perturbation inequality (see Theorem 4 in [bit 17 (1977), pages 39–57]) A+B e − eA ≤ eµ(A) ekBk − 1 , where µ(A) is the logarithmic norm of the matrix A which in this case, since A is diagonal, is equal to µ∞ (A) = λ1 . We therefore have that " # Z τ DG ϕ(z, s) ds − 1 . Dϕ(z, τ ) − eAτ ≤ eλ1 τ exp (†) ∞ ∞ 0 From Result 6, Lemma 14 and 15 we get an estimate of DG, DG ϕ(z, s) ≤ κ0 (1 + κ2 )M −1 (1 + κ3 )M −1 ϕ1 (z, 0)M −1 ∞ × ϕ4 (z, 0)M −1 e(M −1)(λ1 +λ4 )s and the integral in the norm inequality (†) is bounded by Z τ 0 M −1 M −1 M −1 M −1 κ (1 + κ2 ) (1 + κ3 ) ϕ1 (z, 0) ϕ4 (z, 0) e(M −1)(λ1 +λ4 )s ds 0 M −1 κ0 (1 + κ2 )M −1 (1 + κ3 )M −1 ≤ ϕ1 (z, 0)eλ1 τ ϕ4 (z, 0)M −1 e(M −1)λ4 τ . (M − 1)(λ1 + λ4 ) In the factor ϕ1 (z, 0)eλ1 τ above we replace τ with τ̃ − (1/λ1 ) log(1 − κ1 ) and in e(M −1)λ4 τ replace τ with τ̃ − (1/λ1 ) log(1 + κ1 ) to obtain that the integral is smaller than M −1 M −1 κ0 (1 + κ1 )−(M −1)λ4 /λ1 (1 + κ2 )M −1 (1 + κ3 )M −1 19 r e(M −1)λ4 τ̃ , (M − 1)(λ1 + λ4 )(1 − κ1 )M −1 where the constant in front of e(M −1)λ4 τ̃ is smaller than 2.69×10−8 . If we now use this estimate in the norm inequality (†) and use that ex −1 ≤ x/(1−c) for x ≤ c < 1, we get that −8 Dϕ(z, τ ) − eAτ ≤ 2.69×10 e[λ1 +(M −1)λ4 ]τ̃ ≤ 2.70×10−8 e[λ1 +(M −1)λ4 ]τ̃ . ∞ 1 + κ1 128 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN Lemma 19. eλ1 τ − eλ1 τ̃ ≤ 1.32×10−9 e[λ1 +M λ4 ]τ̃ . Proof. From the inequality in Lemma 15 we have that ϕ1 (z, t) − ϕ1 (z, 0)eλ1 t ≤ κ3 ϕ1 (z, 0)e(λ1 +M λ4 )t . If we put t = τ and use the exit time estimate (∗) on the right-hand side we get λ1 +M λ4 r − ϕ1 (z, 0)eλ1 τ ≤ κ3 (1 + κ1 )− λ1 ϕ1 (z, 0) e(λ1 +M λ4 )τ̃ . Using that ϕ1 (z, 0)/r = eλ1 τ̃ in this inequality shows that λ1 +M λ4 λ τ̃ e 1 − eλ1 τ ≤ κ3 (1 + κ1 )− λ1 e[λ1 +M λ4 ]τ̃ . Once these lemmas are done it is a simple task to derive the main estimate Dϕ(z, τ ) − eAτ̃ ≤ Dϕ(z, τ ) − eAτ + max eλi τ − eλi τ̃ ∞ ∞ i ≤ 2.70×10−8 e[λ1 +(M −1)λ4 ]τ̃ + 2.46×10−9 e[λ1 +M λ4 ]τ̃ ≤ 2.95×10−8 e[λ1 +(M −1)λ4 ]τ̃ . Result 8. Dϕ(z, τ ) − eAτ̃ ∞ ≤ 2.96×10−8 e[λ1 +(M −1)λ4 ]τ̃ . The results so far show that the flow variables of the normal form system and the linear system differ very little (when M = 6 is chosen so that λ1 + (M − 1)λ4 < 0). Our last result will use this fact to also show that when comparing the differential 1 there is of the mapping from the top of the cube onto the exit faces z1 = ±r = ± 10 a relatively small discrepancy between using the the normal form system and the linear system. This result is used in Section 2.8 and 2.9 in Chapter 2 to correctly estimate aperture and expansion inside cones as they flow through the cube. In the proof of this last result we will use the following two elementary lemmas (given here without proof). Lemma 20. If z ∈ {z : z1 = r; |z2 |, |z3 | ≤ 10−5 ; 0 < z4 ≤ r} then |f1 (z)| > 1.2 and |fi (z)/f1 (z)| ≤ 0.3 for i = 2, 3 and 4. Lemma 21. If z ∈ {z : z1 = r; |z2 |, |z3 | ≤ 2×10−5 ; 0 < z4 ≤ r + 10−5 } then kDf1 (z)k∞ ≤ 12, kDf2 (x)k∞ ≤ 12, kDf3 (z)k∞ ≤ 22 and kDf4 (z)k∞ ≤ 4. Let L(z) = ϕ z, τ (z) be the mapping through the cube with the normal form system and let L̃(z) = ϕ(z, 0)eAτ̃ (z) be the same mapping but with the linear system. Result 9. If λ1 +(M −1)λ4 < 0 and z ∈ {z : 0 < z1 ≤ r; |z2 |, |z3 | ≤ 10−5 ; z4 = r} then kDL(z) − DL̃(z)k∞ ≤ 6.52×10−7 (z1 /r)−2−M λ4 /λ1 . 3.5. THE NORMAL FORM FLOW 129 Remark. The exponent −2−M λ4 /λ1 does not need to be positive for our purposes. Proof. The derivatives of L(z) are calculated with the formula fi ϕ(z, τ ) ∂ϕ1 ∂ϕi ∂Li (z) = (z, τ ) − (z, τ ). ∂zj ∂zj f1 ϕ(z, τ ) ∂zj (See the derivation of the derivative of the return map in Section 2.2 in Chapter 2.) In matrix form this formula can be written as f ϕ(z, τ ) Dϕ1 (z, τ ), DL(z) = Dϕ(z, τ ) − f1 ϕ(z, τ ) where Dϕ = (Dϕ2 , Dϕ3 , Dϕ4 ) and f = (f2 , f3 , f4 ). By letting ϕ̃ denote the flow of the linear system we have that kDL(z) − DL̃(z)k∞ is bounded by f ϕ(z, τ ) f ϕ̃(z, τ̃ ) Dϕ1 (z, τ ) − Dϕ̃1 (z, τ̃ ) kDϕ(z, τ ) − Dϕ̃(z, τ̃ )k∞ + . f1 ϕ(z, τ ) f1 ϕ̃(z, τ̃ ) ∞ The leftmost term can be estimated using Result 8 while for the rightmost term we use the inequality (A + E1 )(B + E2 ) − AB ≤ kAkkE2 k + kBkkE1 k + kE1 kkE2 k and get that it is bounded by f ϕ̃(z, τ̃ ) f ϕ̃(z, τ̃ ) Dϕ1 (z, τ ) − Dϕ̃1 (z, τ̃ ) ∞ 1 ∞ f ϕ(z, τ ) f ϕ̃(z, τ̃ ) + Dϕ̃1 (z, τ̃ )∞ f ϕ(z, τ ) − f ϕ̃(z, τ̃ ) 1 1 ∞ f ϕ(z, τ ) f ϕ̃(z, τ̃ ) − . + Dϕ1 (z, τ ) − Dϕ̃1 (z, τ̃ ) ∞ f1 ϕ(z, τ ) f1 ϕ̃(z, τ̃ ) ∞ From Lemma 20 we have that f ϕ̃(z, τ̃ ) /f1 ϕ̃(z, τ̃ ) ∞ ≤ 0.3, the next factor Dϕ1 (z, τ ) − Dϕ̃1 (z, τ̃ ) is estimated using Result 8 and kDϕ̃(z, τ̃ )k∞ = eλ1 τ̃ . ∞ To handle the last factor we use the following inequality x + ∆x x k∆xk kxk |∆y| y + ∆y − y ≤ |y| − |∆y| − |y| |y| − |∆y| , to conclude that f ϕ(z, τ ) f ϕ̃(z, τ̃ ) f ϕ(z, τ ) − f ϕ̃(z, τ̃ ) 1 1 ∞ kf ϕ(z, τ ) − f ϕ̃(z, τ̃ ) k∞ ≤ f1 ϕ̃(z, τ̃ ) − |f1 ϕ(z, τ ) − f1 ϕ̃(z, τ̃ ) | f1 ϕ(z, τ ) − f1 ϕ̃(z, τ̃ ) f ϕ̃(z, τ̃ ) + f ϕ̃(z, τ̃ ) f ϕ̃(z, τ̃ ) − |f ϕ(z, τ ) − f ϕ̃(z, τ̃ )| , 1 1 1 1 ∞ 130 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN where these quantities may be estimated using Result 7, Lemma 20 and 21 as follows, • f ϕ(z, τ ) − f ϕ̃(z, τ̃ ) ∞ ≤ kDf (ξ)k∞ kϕ(z, τ ) − ϕ̃(z, τ̃ )k∞ , • f1 ϕ(z, τ ) − f1 ϕ̃(z, τ̃ ) ≤ kDf1 (ξ)k∞ kϕ(z, τ ) − ϕ̃(z, τ̃ )k∞ , • f1 ϕ̃(z, τ̃ ) ≥ 1.1, and • f ϕ̃(z, τ̃ ) /f1 ϕ̃(z, τ̃ ) ∞ ≤ 0.3. These estimates put together show that f ϕ(z, τ ) f ϕ̃(z, τ̃ ) −8 [λ1 +M λ4 ]τ̃ f ϕ(z, τ ) − f ϕ̃(z, τ̃ ) ≤ 2.18×10 e 1 1 ∞ and the whole expression kDL(z) − DL̃(z)k∞ is bounded by 1.3 · 2.95×10−8 e[λ1 +(M −1)λ4 ]τ̃ + 2.18×10−8 e[2λ1 +M λ4 ]τ̃ + 2.95×10−8 · 2.18×10−8 e[λ1 +(M −1)λ4 ]τ̃ . As eλ1 τ̃ = r/z1 and 0 < z1 ≤ r this shows that kDL(z) − DL̃(z)k∞ ≤ 3.84×10−8 + 2.18×10−8 3.6 z1 −2−M λ4 /λ1 . r The Lorenz system The Lorenz system ẋ1 = λ1 x1 − k1 (x1 + x2 )x3 ẋ2 = λ2 x2 + k1 (x1 + x2 )x3 ẋ3 = λ3 x3 + (x1 + x2 )(k2 x1 + k3 x3 ) is transformed to a normal form system ż = Az + G(z), where A = diag(λ1 , λ2 , λ3 ) and |Gi (z)| ≤ C|z1 |M (|z2 | + |z3 |)M for M = 6, in practically the same way as the Lorenz-Stenflo system. The calculations in Section 3.2 to 3.5 can therefore more or less be repeated verbatim for the Lorenz system, and in the rest of this section we only provide a summary of the results one obtains for this system. The coordinate change function φ The first coordinate change function x = φ(z) is written as a power series φi (z) = P j j c i,j z where the coefficients c i,j satisfy the recurrence equations 3.6. THE LORENZ SYSTEM 131 104 102 100 10−2 10−4 10 100 1000 j Figure 3.3: A plot of Ωi (j) = minj∈Jj |Ωi (j)| which grows linearly with j after an initial transient part. • Ω1 (j)c1,j = −k1 X (c1,m + c2,m )c3,j−m , m • Ω2 (j)c2,j = k1 X (c1,m + c2,m )c3,j−m , m • Ω3 (j)c3,j = X (c1,m + c2,m )(k2 c1,j−m + k3 c2,j−m ), m for j such that j1 ≤ M − 1 or j2 + j3 ≤ M − 1, and otherwise c i,j = 0. In the recurrence equations Ωi (j) = j1 λ1 +j2 λ2 +j3 λ3 −λi is an integer linear combination of the values λ1 , λ2 and λ3 , and plays the same pivotal role as in the Lorenz-Stenflo system. We calculate φ by truncating its power series to degree N = 8 and estimate the P remainder term by introducing a sequence {hi,j }j such that the conditions hi,j ≥ |j|=j |ci,j | hold and these numbers satisfy a set of simpler recurrence equations • h1,j = j−1 |k1 | X (h1,m + h2,m )h3,j−m , Ω1 (j) m=1 • h2,j = Ω1 (j) h1,j , and Ω2 (j) • h3,j j−1 1 X = (h1,m + h2,m )(|k2 |h1,j−m + |k3 |h2,j−m ), Ω3 (j) m=1 where Ωi (j) = minj∈Jj |Ωi (j)| and Jj = {j : |j| = j and (j1 < M or j2 +j3 < M )}. For index j > N 0 = 40 we prove by induction that h1,j ≤ 3.75×10−13 · 5j , h2,j ≤ 1.48×10−12 · 5j , and h3,j ≤ 2.54×10−12 · 5j . 1 Combining these results shows that kφ(z) − φT(z)k∞ ≤ 1.23×10−14 for kzk∞ ≤ 10 1 T −14 T and kφ(z) − φ (z)k∞ ≤ 5.60×10 for kzk∞ ≤ 9 , where φ (z) is the truncated power series. A similar calculation also shows that kDφ(z) − DφT(z)k∞ ≤ 1 . 1.75×10−12 for kzk∞ ≤ 10 132 CHAPTER 3. THE COORDINATE CHANGE AROUND THE ORIGIN The coordinate change function ψ The opposite coordinate change function z = ψ(x) is also written as a power P series ψi (x) = j ei,j xj and the coefficients ei,j satisfy the recurrence equation Ωi (j)ei,j = ei,j−e3 j1 k1 + ei,j+e1 −e2 −e3 (j1 + 1)k1 − ei,j−e1 +e2 −e3 (j2 + 1)k1 − ei,j−e3 j2 k1 − ei,j−2e1 +e3 (j3 + 1)k2 − ei,j−2e2 +e3 (j3 + 1)k3 − ei,j−e1 −e2 +e3 (j3 + 1)(k2 + k3 ) assuming that |j| ≤ 2M . This power series of ψ is truncated to degree N and the remainder term is shown to be small by first proving that kψ T ◦ φT(z) − zk∞ ≤ 1.50×10−13 and kD(ψ T ◦ φT )(z) − I k∞ ≤ 1.56×10−11 , for kzk∞ ≤ 91 , using the same type of calculations as in Lemma 5, and then performing the rest of the calculations in Section 3.3. The end result is that we manage to prove that kψ(x) − ψ T(x)k∞ ≤ 2.10×10−13 for kxk∞ ≤ and kDψ(x) − Dψ T(x)k∞ ≤ 1.56×10−11 1 10 . The non-linear term G P Turning to the non-linear term G(z) its power series Gi (z) = j di,j z j has coefficients di,j that satisfy the following recurrence equations X • d1,j = k1 (c1,m + c2,m )c3,j−m m X − c1,m+e1 (m1 + 1)d1,j−m + c1,m+e2 (m2 + 1)d2,j−m |m|≥1 + c1,m+e3 (m3 + 1)d3,j−m , • d1,j = −k1 X (c1,m + c2,m )c3,j−m X − c2,m+e1 (m1 + 1)d1,j−m + c2,m+e2 (m2 + 1)d2,j−m m |m|≥1 + c2,m+e3 (m3 + 1)d3,j−m , • d1,j = − X m (c1,m + c2,m )(k2 c1,j−m + k3 c2,j−m ) X − c3,m+e1 (m1 + 1)d1,j−m + c3,m+e2 (m2 + 1)d2,j−m |m|≥1 + c3,m+e3 (m3 + 1)d3,j−m , 3.6. THE LORENZ SYSTEM 133 for j such that j1 ≥ M and j2 + j3 ≥ M , and otherwise di,j = 0. P In order to estimate G we introduce a sequence {gi,j }j that majorizes the sums |j|=j |di,j | and can be calculated with a scaled-down version of the recurrence equations for di,j , • g1,j = |k1 | j−1 X (h1,m m=1 j−2M X + h2,m )h3,j−m (m + 1)h1,m+1 (g1,j−m + g2,j−m + g3,j−m ), + m=1 • g2,j = |k1 | j−1 X (h1,m m=1 j−2M X + h2,m )h3,j−m (m + 1)h2,m+1 (g1,j−m + g2,j−m + g3,j−m ), + m=1 • g3,j = j−1 X (h1,m + h2,m )(|k2 |h1,j−m + |k3 |h2,j−m ) m=1 + j−2M X (m + 1)h3,m+1 (g1,j−m + g2,j−m + g3,j−m ), m=1 for j > P and gi,j = P |j|=j g1,j ≤ 6.59×10−15 · 7j , |di,j | for j ≤ P . By induction we can prove that g2,j ≤ 6.63×10−15 · 7j and g3,j ≤ 2.57×10−14 · 7j for j > N 0 . With these results we can factor out common subexpressions and show that kG(z)k∞ ≤ κ|z1 |M (max{|z2 |, |z3 |})M if kzk∞ ≤ 91 and where κ = 8.55×10−3 as well as kDG(z)k∞ ≤ κ0 |z1 |M −1 (max{|z2 |, |z3 |})M −1 where κ0 = 1.45×10−2 . The normal form flow A comparative analysis of the normal form flow and the flow of the linear system ż = 1 , as we did in Section 3.5, results in the following Az inside the cube kzk∞ ≤ 10 two estimates • kϕ(z, τ ) − eAτ̃ ϕ(z, 0)k∞ ≤ 3.32×10−15 e[λ1 +M λ3 ]τ̃ and • kDϕ(z, τ ) − eAτ̃ k∞ ≤ 6.10×10−14 e[λ1 +(M −1)λ3 ]τ̃ , where ϕ(z, t) is the normal form flow, eAτ̃ ϕ(z, 0) is the linear flow, τ and τ̃ are the exit times of the normal form and linear systems, respectively. By our choice of M = 6 we have that λ1 + (M − 1)λ3 < 0 and then it can be shown that kDL(z) − DL̃(z)k∞ ≤ 1.49×10−12 (z1 /r)−2−M λ3 /λ1 , where L and L̃ are the mapping through the cube with the normal form and linear systems, respectively. Chapter 4 Results In this final chapter the results from the computer runs are summarised and the practical details of running the programs are explained. The programs used in this thesis are downloadable from the web page http://www.math.kth.se/~ekola/thesis/programs.tgz This file unpacks into two directories lorenz/ and lorenz-stenflo/ which contain files that correspond to the Lorenz and Lorenz-Stenflo systems. Each of these directories has the following subdirectories: • m-files/ includes the Matlab functions used by the main programs step01.m to step15.m. • phipsi/ is where the Maple programs discussed in Chapter 3 are stored. • result/ keeps a copy of all result files generated by the main programs step01.m to step15.m. • step00/, step01-02/, . . . ,step14-15/ are the directories where the main programs are stored. Below is a step by step account of how to run the main programs and also some of the more important results. Step 0 Before the Matlab runs can start a few Matlab functions need to be generated by the five Maple programs: lsodedata.mpl, box_R.mpl, R.mpl, xphi.mpl and xpsi.mpl. A typical way to run these programs is to start Maple and type in the following lines: restart; restart; read "lsodedata.mpl": read "box_R.mpl": 135 136 CHAPTER 4. RESULTS restart; restart; restart; read "R.mpl": read "xphi.mpl": read "xpsi.mpl": After executing these lines the Matlab functions lsodedata.m, lsdata.m, box_R.m, R.m, xphi.m and xpsi.m are output in the directory m-files/. Step 1 and 2 The first two steps are run in the following way: 1. Change to the directory step01-02/ and type ‘make’ at the shell prompt. This will clean up the directory. 2. Start Matlab and type ‘step01’ followed by ‘step02’. The output is stored in the subdirectory result/ and in the files unfinished.dat (the box created in step01.m) and orbit.mat (the points from step02.m), plus the empty data files variables.mat and added_boxes.mat. Step 3 to 6 Step 3 to 6 is a combination of steps that creates the collection of invariant boxes. In a first phase, step 3 and 4 produce a set of boxes that form an almost invariant collection of boxes. This set is in step 5 and 6 augmented with additional boxes after a more detailed study of the boxes that flow close to the origin. By reapplying step 3 and 4 to the added boxes, a full set of invariant boxes is created. Run the programs step03.m and step04.m by doing the following steps: 1. Run ‘make from01-02’ in the directory step03-04/ to copy the output files from step 1 and 2 to the current directory. 2. Start Matlab and type ‘step03’. Several copies of step03.m can be run in parallel and each process is launched in this way. 3. Start Matlab and type ‘step04’. The program step04.m oversees all instances of step03.m and once they finish, it outputs the resulting box covering in the files unfinished.dat (a list of boxes prepared for step 5 and 6) and variables.mat (all boxes are listed in this file) in the subdirectory result/. Depending on how many copies of step03.m are running and the speed of the computers it normally takes several hours to finish these two steps. In step 5 and 6 the mappings from boxes crossing the discontinuity of the return map are analysed and programs step05.m and step06.m are run in the same way as step03.m and step04.m: 1. Do ‘make from03-04’ in the directory step05-06/ to copy the output files from step 3 and 4. 137 3 3 1 1 −1 −1 −3 −3 −5 −3 −1 1 3 5 −3 −1 1 33 1 −1 −3 Figure 4.1: The leftmost diagram is a plot of the box covering of the Lorenz attractor while the rightmost diagram is the box covering of the Lorenz-Stenflo attractor. The coverings are comprised of 1658 boxes and 1894 boxes, respectively, on each branch of the attractor. 2. Start Matlab and type ‘step05’. This program can be run as many parallel processes, but running more instances than there are discontinuity boxes has no effect. 3. Start Matlab and type ‘step06’. Once step06 has finished it outputs a text explaining if any new boxes were added to the covering or not. If new boxes are added (which they are for both the Lorenz and Lorenz-Stenflo systems) then it is necessary to rerun step03.m and step04.m before continuing to step 7: 1. Change to directory step03-04/ and run ‘make from05-06’. The output files from step05-06/ are copied to the current directory. 2. Run step03.m and step04.m as before. This time it is probably enough to run step03.m as a single process. Figure 4.1 is a plot of the box covering for the Lorenz and Lorenz-Stenflo attractors. Step 7 to 11 The next steps produce invariant cones on all the boxes of the collection in the following way: • step07.m creates an initial set of cones on just a few boxes. These cones contain directions that are certain to be inside any set of invariant cones. • step08.m and step09.m use an iterative method of pushing cones forward to create cones that are invariant under a piecewise constant approximation of the differential map of the return map. 138 CHAPTER 4. RESULTS • step10.m and step11.m take the cones generated by step08.m and step09.m and use the same type of iterative method to create invariant cones. Step 7 is run in the standard way: 1. In directory step07/ do ‘make from03-04’. If the last steps had been step 5 and 6 then ‘make from05-06’ should be used. 2. Start Matlab and execute ‘step07’. The created cones are output in the file result/cones.mat. Step 8 and 9 should be run alongside each other similar to step 3 and 4: 1. Do first ‘make’ in the directory step08-09/. 2. Start step08.m in Matlab. The program step08.m is capable of being run as several parallel processes but since it handles each box fairly fast it usually suffice to run it as one process. 3. Start step09.m in Matlab. The main task of step09.m is to manage the iterations that are involved in the algorithm. The creation of the invariant cones in step 10 and 11 is done in the following way: 1. ‘make’ in the directory step10-11/. 2. Start step11.m in Matlab. Step 11 is started before step 10 and this is because it flows cones down to the cube centred at the origin before step 10 can take over. 3. Start multiple instances of step10.m in Matlab. Step 10 and 11 will take a few iterations before a set of invariant cones emerge. The output cones are stored in the file result/variables.mat. Figure 4.2 shows how the aperture of the cones varies over the boxes. Step 12 to 15 In step 12 and 13 each mapping from one box to another box is studied and the smallest expansion factor is calculated when a vector inside the outer cone of the first box is mapped to the inner cone of the second box. These expansion factors are put together in a graph that models the return map (see Section 2.10) and in step 14 and 15 this graph is analysed to determine if all periodic orbits (cycles in the graph) have expansion greater than 1 and if mappings between two boxes that cross the discontinuity of the return map have expansion greater than 2. The programs step12.m and step13.m are run in the same way as step10.m and step11.m: 1. Type ‘make’ in the directory step12-13/. 139 0.005 0 500 1000 1500 0 500 1000 1500 0.010 0.005 Figure 4.2: These diagrams show the apertures of the outer and inner cones on each box (in black and grey colour, respectively). The aperture of a cone is measured as the largest side length of the rectangle in the perpendicular plane to the central direction of the cone. The top diagram is for the Lorenz system and bottom one is for the Lorenz-Stenflo system. 2. Start step13.m in Matlab. Besides managing step12.m this program calculates expansions down to the cube around the origin and therefore needs to be started first. 3. Start multiple instances of step12.m in Matlab. After the programs have finished, which could take several days, the expansion data is stored in the file result/box_graph.dat as well as together with other variables in the file result/variables.mat. The two remaining programs step14.m and step15.m depend on external graph analysing programs that first need to be installed manually. These programs are downloaded from the web page http://www.avglab.com/andrew/soft.html and compiled. The paths to the programs bfct and gor1 are then added to the lines path_to_bfct=’...’ and path_to_gor1=’...’ in step14.m and step15.m, respectively. The two steps are run in the following way: 1. Run ‘make’ in the directory step14-15/. 2. Start step14.m in Matlab. The program step14.m checks if the graph has any negative cycles (periodic orbits with expansion less than 1) by invoking the 140 CHAPTER 4. RESULTS program bfct. It redirects the output of bfct to the file result/negative_cycle.dat which needs to be inspected. 3. Start step15.m in Matlab. This program uses the program gor1 to find all shortest paths in the graph and also checks if the paths between the boxes that contains the discontinuity have expansion greater than 2. A short summary of the results is output in the file result/short_paths.dat. The conclusion of these last two computer runs is that the return map for both the Lorenz and Lorenz-Stenflo systems does not have any periodic orbits with expansion less than 1 and neither system has any orbits between two discontinuity boxes with expansion less than 2 (the smallest expansion is 226 and 164 for the Lorenz and Lorenz-Stenflo systems, respectively). This numerical study therefore supports the conclusion that the Lorenz and Lorenz-Stenflo systems have strange attractors. Appendix A References This appendix collects and gives more detailed data of the references used in the various sections, to complement the short form used there. In certain cases additional references are included when this is deemed appropriate. Preface 1. Steven Smale, Mathematical Problems for the Next Century, The Mathematical Intelligencer 20 (1998), no. 2, pages 7–15. Section 1.1 1. Vilhelm Bjerknes, Das Problem der Wettervorhersage, betrachtet vom Standpunkt der Mechanik und der Physik, Meteorologische Zeitschrift 21 (1904), pages 1–7. 2. Lewis F. Richardson, Weather predictions by numerical process, Cambridge University Press (1922). 3. Barry Saltzman, Finite Amplitude Free Convection as an Initial Value Problem–I, Journal of the Atmospheric Sciences 19 (1962), no. 4, pages 329–341. 4. Edward Lorenz, Deterministic Nonperiodic Flow, Journal of the Atmospheric Sciences 20 (1963), no. 2, pages 130–141. 5. David Aubin & Amy Dahan Dalmedico, Writing the History of Dynamical Systems and Chaos: Longue Durée and Revolution, Disciplines and Cultures, Historia Mathematica 29 (2002), no. 3, pages 273–339. 6. Marcelo Viana, What’s new on Lorenz strange attractors?, The Mathematical Intelligencer 22 (2000), no. 3, pages 6–19. 141 142 APPENDIX A. REFERENCES Section 1.2 1. David Ruelle & Floris Takens, On the Nature of Turbulence, Communications in Mathematical Physics 20 (1971), pages 167–192. 2. John Milnor, On the Concept of Attractor, Communications in Mathematical Physics 99 (1985), no. 2, pages 177–195. 3. John Milnor, On the Concept of Attractor: Correction and Remarks, Communications in Mathematical Physics 102 (1985), no. 3, pages 517–519. 4. S. P. Hastings & W. C. Troy, A shooting approach to the Lorenz equations, Bulletin (New Series) of the American Mathematical Society 27 (1992), no. 2, pages 298–303. 5. S. P. Hastings & W. C. Troy, A Shooting Approach to Chaos in the Lorenz Equations, Journal of Differential Equations 127 (1996), no. 1, pages 41–53. 6. Konstantin Mischaikow & Marian Mrozek, Chaos in the Lorenz equations: A computer-assisted proof, Bulletin (New Series) of the American Mathematical Society 32 (1995), no. 1, pages 66–72. 7. Konstantin Mischaikow & Marian Mrozek, Chaos in the Lorenz equations: A computer assisted proof. Part II: Details, Mathematics of Computation 67 (1998), no. 223, pages 1023–1046. 8. Brian Hassard & Jianhe Zhang, Existence of a homoclinic orbit of the Lorenz system by precise shooting, SIAM Journal on Mathematical Analysis 25 (1994), no. 1, pages 179–196. 9. Warwick Tucker, The Lorenz attractor exists, Uppsala Dissertations in Mathematics 11 (1998) [A revised edition is available from the author’s homepage.] 10. Warwick Tucker, A Rigorous ODE Solver and Smale’s 14th Problem, Foundations of Computational Mathematics 2 (2002), no. 1, pages 53–117. Section 1.3 1. John Guckenheimer & R. F. Williams, Structural stability of Lorenz attractors, Institut des Hautes Études Scientifiques Publications Mathématiques 50 (1979), pages 59–72. 2. V. S. Afraı̆movič, V. V. Bykov & L. P. Sil’nikov, The origin and structure of the Lorenz attractor (in Russian), Doklady Akademii Nauk SSSR 234 (1977), no. 2, pages 336–339. 143 Section 1.4 1. H. Poincaré, Œuvres de Henri Poincaré, TOME I, Paris: Gauthier-Villars, 1928. 2. V. I. Arnold, Geometrical Methods in the Theory of Ordinary Differential Equations, Springer Verlag (1983). 3. Warwick Tucker, A Rigorous ODE Solver and Smale’s 14th Problem, Foundations of Computational Mathematics 2 (2002), no. 1, pages 53–117. 4. M. W. Hirsch, C. C. Pugh & M. Shub, Invariant Manifolds, Lecture Notes in Mathematics 583 (1977), Springer Verlag. Section 1.5 1. O. E. Rössler, An equation for continuous chaos, Physics Letters A 57 (1976), no. 5, pages 397–398. 2. M. V. Jakobson, Absolutely Continuous Invariant Measures for One-Parameter Families of One-Dimensional Maps, Communications in Mathematical Physics 81 (1981), no. 1, pages 39–88. 3. Michael Benedicks & Lennart Carleson, On iterations of 1 − ax2 on (−1, 1), Annals of Mathematics 122 (1985), no. 1, pages 1–25. 4. Mikhail Lyubich, The Quadratic Family as a Qualitatively Solvable Model of Chaos, Notices of the AMS 47 (2000), no. 9, pages 1042–1052. Section 1.6 1. L. Stenflo, Equations Describing Solitary Atmospheric Waves, Physica Scripta 43 (1991), pages 599–600. 2. L. Stenflo, Generalized Lorenz Equations for Acoustic-Gravity Waves in the Atmosphere, Physica Scripta 53 (1996), pages 83–84. 3. Cangtao Zhou, C. H. Lai & M. Y. Yu, Chaos, Bifurcations and Periodic Orbits of the Lorenz-Stenflo System, Physica Scripta 55 (1997), pages 394–402. Other studies of the Lorenz-Stenflo system: 4. M. Y. Yu & B. Yang, Periodic and Chaotic Solutions of the Generalized Lorenz Equations, Physica Scripta 54 (1996), pages 140–142. 5. M. Y. Yu, C. T. Zhou & C. H. Lai, The Bifurcation Characteristics of the Generalized Lorenz Equations, Physica Scripta 54 (1996), pages 321–324. 144 APPENDIX A. REFERENCES 6. Cangtao Zhou, C. H. Lai & M. Y. Yu, Bifurcation behavior of the generalized Lorenz equations at large rotation numbers, Journal of Mathematical Physics 38 (1997), no. 10, pages 5225–5239. 7. M. Y. Yu, Some Chaotic Aspects of the Lorenz-Stenflo Equations, Physica Scripta T82 (1999), pages 10-11. 8. Santo Banerjee, Papri Saha & A. Roy Chowdhury, Chaotic Scenario in the Stenflo Equations, Physica Scripta 63 (2001), pages 177-180. Section 2.10 1. Boris V. Cherkassky & Andrew V. Goldberg, Negative-cycle detection algorithms, Mathematical Programming 85 (1999), pages 277–311. 2. Boris V. Cherkassky, Andrew V. Goldberg & Tomasz Radzik, Shortest paths algorithms: Theory and experimental evaluation, Mathematical Programming 73 (1996), pages 129–174. Section 3.3 1. Gene H. Golub & Charles F. van Loan, Matrix Computations (1996), Johns Hopkins University Press. Section 3.5 1. D. S. Mitrinović, J. E. Pecarić & A. M. Fink, Inequalities Involving Functions and Their Integrals and Derivatives (1991), Kluwer Academic Publishers. 2. Bo Kågström, Bounds and perturbation bounds for the matrix exponential, BIT 17 (1977), pages 39–57.

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement