A Numerical Study of the Lorenz and Lorenz-Stenflo Systems TOMMY EKOLA Doctoral Thesis

A Numerical Study of the Lorenz and Lorenz-Stenflo Systems TOMMY EKOLA Doctoral Thesis
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.
Was this manual useful for you? yes no
Thank you for your participation!

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

Download PDF

advertisement