Function Analysis Window
This window implements a fairly advanced
feature of McBilliards. In brief, it
lets you analyze certain universal formulas
which arise in the Taylor series expansions
of the defining functions for infinite families of
orbit tiles . Many infinite families of
orbit tiles we encounter converge up
to scale to a limiting shape. At least for some
examples of interest to us, this asymptotic
convergence is a consequence of a certain kind
of universal formula we see in these
Taylor series expansions. We think this is
a very wide ranging phenomenon for triangular
billiards, but have yet to explore it systematically.
This window lets the user explore the
universality phenomenon from an
algebraic point of view.
In order to operate this window, and understand
the documentation below, you should be pretty
familiar with
the following other windows:
- The main parameter window.
- The search window.
- The plot window.
- The unfolding window.
- The unfold function window
- The word window
You really need to use all of these components when
operating this window. For some of the features of
this window (described at the end)
you should also know a tiny bit about
Fourier series and modular arithmetic.
COMMUNICATION:
On the most basic level, this window lets you
store various pairs of the form (W,V), where
W is a word and V is a pair of vertices on
the unfolding of W. You could think of this
feature of the window as something like
short-term memory. The
blue strip running across the window, near the top,
stores the pairs you have saved. The green buttons at the
top left control the memory system. Here is how it works:
- Grabbing pairs:
Suppose you
have drawn the unfolding for W (relative to the current parameter
point) and
have selected a pair of vertices on the unfolding. If you select
the grab option and click one
of the black squares on the blue strip, you store the pair (W,V) in
memory. When you
do this, one of the black squares is replaced by an icon
showing the word. The icon shows the hexpath
of the word. If the hexpath is drawn in grey, it
means that you have failed to select a vertex pair.
If it is drawn in magenta and yellow, then you have succeeded. If
you click on a square which already has an icon in it, the
memory will be overwritten.
- Inserting Pairs The insert option
is almost the same as the grab except that
the grabbed pair does not overwrite a pair which is
stored in a given location.
-
Deleting
You can simply delete a stored pair by clicking
on the omit button and then clicking on the relevant
icon.
- Grabbing coordinates
The grab coords > button grabs the
current coordinate value and stores it in memory.
The display next the grab coordinate
shows the stored coordinate.
- rational approximation
When you grab coordinates from the main console,
McBilliards automatically computes a rational
approximation to those coordinates. The
arrow keys beneath the grab coords
button control the precision of this approximation.
If the precision number is N then the rational
approximation is within 10^(-N).
-
Sending
If you want to check what you have stored, you should
click on the send button. If you subsequently
click on an icon, the unfold window recreates the picture, drawn
for whatever the current parameter value is.
FUNCTION DISPLAY
The next most basic thing this window does is let you
see the evaluations of the functions associated to the
pairs you have stored. Here we explain how this is
managed:
- The Red Rectangles:
At least in its initial configuration, this window has an
array of red rectangles. These are called display boxes
Each display box is designed to store a list of complex numbers.
Typically these numbers will be function values or
coefficients of polynomials. When this whole window
is opened up, there are 10 display boxes shown and
each one has term capacity 3. This means that
the display box can display up to 3 complex numbers.
In general, the display box in the (i,j)th position
stores information about the (i,j)th partial
derivative of the relevant function. You can use
the controls on the magenta panel to change the
display, as follows:
- decimal truncate This button controls the rounding off
of the values displayed.
- display width This button controls the number of
digits which can be displayed on a line of the display box.
- # of terms This button controls the term capacity
of the display boxes.
- precision You have the option of doing high precision
computations. These computations are accurate to about 30 decimal
places. lo and hi buttons toggle between the
regular and high precision modes. The high precision mode is
sometimes much slower.
- display control
By clicking on the little squares in the 12x12 grid you
can determine which display boxes are shown.
-
The Functions:
A triple (W,V,Z) determines a number F(W,V;Z). Namely, we take
the unfolding U(W,Z), choose the pair V of vertices, and
compute (up to some global scaling factor) the difference
in y-coordinates between the first vertex of the pair and
the second. As it turns out, we always have
F=Im(PQ_bar), where P and Q are simpler functions associated to
(W,V). All of this is detailed in the Unfold Function Window
documentation.
- The Array:
Suppose that you have stored pairs (W1,V1),...,(Wk,Vk) with no
gaps. Let Fi, Pi, and Qi; be the functions associated to
the pair (Wi,Vi). Let X stand for any of P,Q F.
Given non-negative integers a and b let
D_abXi be the (a,b)th partial derivative of Xi, evaluated
at the displayed parameter point Z. Suppose you
do the following.
- Select the raw values option.
- Select the letter X.
- Click on the GO button.
Then you will
see the functions D_abXi listed in the display boxes.
The display box in the (a,b)position stores in a list the
values D_abX1,...,D_abXk. Let's call this list L_ab.
- diff operator Given a sequence of raw function
values X1,...,XN, the difference sequence is
defined as X2-X1,X3-X2,.... If you click on the arrow
keys beside the diff label on the green panel,
and set the value to k, you compute the kth iterated
difference sequences of the lists L_ab.
- Focus mode This window is originally in
the array mode, where it has an array of
display boxes. If you click on the focus mode
you can erase all the display boxes except the one
determined by the values of dx and dy .
You change these values using the arrow keys next
to the focus button . Clicking the array
button returns the array of display boxes.
POLYNOMIAL FITTING
If you just store some pairs at random, there will be
no relations between the numbers on the list L_ab.
However, often in McBilliards we see infinite families
of orbit tiles. If the pairs (W_j,V_j) are chosen
carefully and in relation to these tiles, then
the numbers L_ab might be the consecutive
values of a polynomial P_ab. That is, the jth
member of L_{ab} is P_ab(j). Typically, the degree
of P_{ab} is about a+b.
- Checking for Polynomials:
Given a list L of numbers let DL be the difference list .
That is DL is formed by taking consecutive differences of
the terms of L. If the terms of L grow linearly then
DL is the constant list and DDL is the 0 list. If the terms
of L obey a quadratic function then the terms of DDDL are
all 0. And so on. McBilliards checks if the numbers in
the list L_ab satisfy a polynomial by iterating the
difference operator and looking for the 0 sequence.
If you want McBilliards to search for a polynomial fit
for the list L_{ab}, you must have saved at least
a+b+3 consecutive terms.
-
Trying It Out If you select the Polynomial Fit
button and then push the Compute Functions button you
cause this window to search for P_ab, at least for small
enough pairs (a,b). If a polynomial is found then its
coefficients are displayed in the (a,b)th magenta box.
Otherwise, the box is left blank.
-
diff operator Assuming that you have selected the
polynomial fit option, the arrow keys beside the diff
label now have a different action. Setting the number
to k lets you compute the kth derivative of the polynomial
P_ab.
-
Normalizing
If you turn on the normalize button, then you
and make the following selections
- dx = X
- dy = Y
- term = k
- !value = n
Then you divide all the polynomials by a global constant so
that the kth term in the (X,Y) display box has value n factorial.
McBilliards will not perform this if it requires division
by zero.
- prepare for Failure Unless you set things
up just right, these features will never return
polyomials. However, once you see the patterns, you
can get polynomials all over the place. Below we
will guide you through a prototypical example.
AN EXAMPLE
Here we will guide you through an example which shows off
the sort of formulas we have been suggesting exist. Ultimately
we are going to do our calculations at the point (1/3,1/3)
in parameter space. You will be doing some searching
and plotting near this point.
We will describe a family
of 5 consecutive tiles. Once you see
the pictures, you should be able to easily
guess how the family continues.
The Example
Here will describe the first 5 tiles in an infinite family.
notation (x,N,i,j) denotes an orbit
tile associated to a word of length N, containing
the point (x,x). (We are looking near the isosceles
line.) The pair i,j denotes the
vertex pair (a_i,b_j). In general, the
pair (x,N) is not enough information to
specify the tile uniquely. However, it works
fine in our example. Also, the choices of x
we make are not canonical. We just pick x to
be some smallish fraction in the tile of
interest to us.
Here is the family
you should find and load into this window:
- (11/32,52,9,19)
- (43/128,84,13,31)
- (343/1024,116,17,43)
- (171/512,148,21,55)
- (1367/4096,180,25,67)
Notice that the word length and the vertex numbers
all belong to arithmetic progressions. This sort
of thing is the hallmark of a family of tiles.
Once you have several terms in the family, you
can use the subword search in tandem
with the subword selection feature of the
word window to rapidly generate additional
tiles in the sequence.
Computing Things
Now perform the following steps:
- grab the coordinate (1/3,1/3).
- Choose the polynomial fit option.
- set the diff number to 1.
- Turn on the normalize option,
with the settints
- dx=0
- dy=0
- term=0
- !value=1
- select the high precision option
- Select the function Q
- Compute the functions.
If you have done all these steps, you will see
entirely integers along the top lines of the
display boxes, making a geometric progression.
This sort of pattern persists for all the partial derivatives,
and you can see more of it by collecting more
pairs.
Universality
We have given a very opaque description of the
vertex pairs of interest to us. Once you have
plotted the orbit tiles in our example, you can
generate the vertex pairs in a more natural way:
Turn on the compute leaders option on
the unfolding window and then choose a
parameter point very near the
``bottom'' edges of the tiles, the ones
whose slopes are all about -1. You will
then see the vertex pairs generated
automatically. You could repeat this
same exercise using a different sequence of
edges in the tiles. You just have to take
care that the edges you select are all
``the same one'' throughout the family.
You will get the same formulas for your
new example if you repeat the above
calculation. You can do similar
things at other points. (For instance,
the points (1/n,1/n) have similar
families converging to them, for n=4,5,6...)
You can also do this away from the isosceles
line. The simple formula highlighted
above seems to work (when suitably generalized)
for a fairly general kind of infinite
family of orbit tiles. We hope to
exposit this phenomenon in a forthcoming paper.
PIX MODE AND FOURIER TRANSFORMS
The defining function F and all its partial derivatives
have the general form
A1 sin(B1 x+C1 y) + ... + An sin(Bn x + Cn y)
Where the pairs (Bj,Cj) are integers determined by the
combinatorics of the pair (W,V). If you click
on the pix button (on the magenta panel)
you can see a picture of these integer squares.
The number Aj is drawn in the box in the (Bj,Cj)
position. The number is white if positive and
black if negative. You select which function
is displayed by using the dx and
dy and term keys. The
triples (Aj,Bj,Cj) give rise to a compactly
supported integer valued function defined on
the integer lattice. This
function is essentially the Fourier transform
of the corresponding defining function.
The pix mode draws similar pictures of the Fourier transforms
for the defining
functions P and Q and their partial derivatives.
This time, these functions have the general form
A1 E(B1 x+C1 y) + ... + An E(Bn x + Cn y)
Where E(x)=exp(ix).
THE MODULAR TRANSFORM
One key step to understanding
the universality phenomenon discussed above is to understand
a kind of mod N integral of the Fourier transform.
We call the resulting object a modular transform .
Let (x,y) be the grabbed coordinate.
Let (p1/q1,p2/q2) be the rational approximation to
(x,y). In cases of interest we will have x=p1/q1 and y=p2/q2.
The green panel at the top has a modular transform
option. We will suppose that the options are set to
- coeff x = A
- coeff y = B
- mod = k
When the actual values option is selected
on the green panel, each line of each display box
shows some value H(x,y) where H is some
partial derivative of either P,Q, or F.
When the modular transform is on, we
compute a function [H](A,B,k) according to the
following recipe:
-
Define a new integer valued function g: Z+Z -> {0,1}
by the rule that g(X,Y)=1 if and only if ax+by is congruent to
k mod P. Here
-
N=LCM(A,B)
-
a=A/GCD(A,B)
-
b=B/GCD(A,B)
- Let H*
denote the Fourier transform of H, as we have
defined it above.
Define
[H](A,B,k) =
Sum (g times H*)
The sum is taken over the
Z+Z lattices. This is a finite sum because H* is
supported on a finite set. (If you have the
modular transform option on and you select
the pix mode you can see an picture of
H* and q together. The support of q is colored blue.)
Assuming that
- x=p1/q1
- y=p2/q2
-
A=4q1
-
B=4q2
we can simplify our notation by writing
[H](k)=[H](A,B,k). We call [H] the
modular transform of H. It is
not hard to see, once all the definitions
are unravelled, that
there are constants C1,...,CN such that
H(x,y)=C1 H[1]+...+CN H[N]
The constants C1,...,CN only depend on the
integers p1,q1,p2,q2. We call the above
equation the modular transform equation .
Once we have computed [H](k) in place of H we
can do the polynomial fitting just as above.
In other words, we can compute the polynomial growth
rates of our modular transforms. These
growth rates are the (algebraic) key to
understanding the universality phenomenon.