Unfold Function Window
This is the unfold function window.
Given a word W we are mainly interested in the orbit tile
O(W) consisting of all points in parameter space which correspond
to triangles having a periodic billiard path of type W. The set
O(W) typically is a piecewise analytic polygon, whose sides
are defined by certain analytic functions. This window displays
these functions.
Each function is defined by a pair (a,b) of vertices in the
unfolding. The function F(p)=F(a,b;p) measures the
difference in y coordinates of the vertices a and b relative
to the unfolding U(W,p). Here p is a point in the
parameter space.
FORMS FOR THE FUNCTIONS
No Foil :
Here the formula is F= Im(P times Q-conjugate).
Each of P and Q is an exponential sum.
A typical term in either of these sums
has the form a exp(i(bx+cy)).
In this formula
- x and y are the angles in radians of the two
small angles of the triangle.
- b and c are integers. In fact b and c are
the turning pairs for one of the edges
associated to the spine connecting the two
relevant vertices. The spine for P is
drawn in thick yellow and the spine for Q
is drawn in thin magenta. (Of course, you can
change these colors.)
- The values of a alternate 1,-1,1,-1... or
else -1,1,-1,1...
When we list out these functions, we just list the
(b,c) pairs. The alternation for Q always starts
with 1. The alternation for P starts with a 1
if and only if P is colored black.
We draw this function on the red window to the right. We list the P
function on the top and the Q function on the bottom. Our
convention is that black numbers are negative and white ones
are positive. If the formula is too long to fit on the
screen you can scroll it by dragging it.
Foil
We multiply together P and Q-conjugate by the foil method, collect the terms, and take the imaginary part. We can write the resulting function F as
F(x,y)= a1 sin(b1 x+c1 y) + ... aN sin(bN x + cN y)
These constants are all real, and only depend on the
combinatorics of W and the vertices chosen.
We list the above
terms just by writing the a,b,c triples in
columns going across the screen.
We use the same convention about positive and negative
numbers.
Second Derivative Bounds
We can use the Foil form to produce a useful global bound on
the second partial derivatives of F.
Here are the bounds:
-
|F_xx| <= A11:= a1 b1 b1 + ... + aN bN bN
-
|F_xy| <= A12:= a1 b1 c1 + ... + aN bN cN
-
|F_yy| <= A22:= a1 c1 c1 + ... + aN cN cN
These bounds are important in our plotting algorithm.
You can learn about this by reading the documentation
for our plotter.
CONTROLS
The purple window has some control buttons which let you
manipulate the functions:
-
print
This button only works if you are using McBilliards
as a stand-alone application. In this case,
pressing this button will cause McBilliards
to print out the no foil version of the current
defining function to the screen. The functions will
be called Pm and Qm, where m is some integer between 0 and 9
that you select using the adjacent arrow keys. This
feature has been useful to us mainly for debugging
purposes.
See Palindromes Some of the unfoldings we
encounter have bilateral symmetry, with the first
and last edges being vertical. For these words,
the defining function Q is just an imaginary constant.
When the SEE PALINDROMES button is lit up, McBilliards
recognizes that this is the case, and computes a simpler
defining function based only on P. When the button is
not lit up, McBilliards just treats the unfolding as it
would any other generic one. Our plotting algorithm
uses the simpler defining functions when it runs,
because it runs much faster with these.
Our 100 degree result, however, uses the general
defining functions so as to get a unified approach
to the whole result.
Toggling the Forms
The remaining two buttons let you toggle between the
Foil and No Foil forms of the
defining functions.
VALUE DISPLAY
This window displays the values of the selected function F
evaluated at a selected point p in parameter space. Up to a
reasonable limit, you can actually see displayed the values
of all the partial derivatives F as well.
The blue window has various subcomponents. Here is a list
of what each one does.
-
Function Values Here our notation DABF corresponds
to the partial derivative of F obtained by applying d/dx A
times and d/dy B times. So D00F=F. Thus the first 3 lines
on the left display the value of F and the value of its
gradient dF at the selected point. Using the arrow keys
you can select A and B to within reasonable limits.
Once you make a selection, DABF is then displayed in blue
at bottom left.
- Blue Octagon:
A ray parallel to the gradient of F is drawn on the blue octagon.
As a very nice sanity check,
you can turn on the compute leaders button on the unfolding
window. (See the unfolding documentation for details.)
Next, you can click near the edge of a plotted tile.
Then McBilliards automatically computes the
pair of vertices associated to the given edge.
Finally, you can see that the gradient for the
associated defining function is nearly
perpendicular to the edge of the tile.
This is very strong evidence that we are
computing these defining functions correctly.
- Second derivative bounds The constants A20,A11,A02 shown in magenta are
bounds on the second derivatives of the defining function. We
mentioned the formulas above.
These bounds are used in our plotter.
See the plotter documentation for details.
In brief, we use these bounds to show try to certify
that dF lies in one of 8 special quadrants througout
a dyadic square Q (or a slightly larger square called odd(Q).)
- -log(side) Whenever we make
bounds on dF we always do it relative to a quantity s,
which is the side length of the dyadic square. s
is always a negative power of 2. Using the arrow keys
you can select a value of s, by selecting the integer
-log_2(s). Once you make this selection, McBilliards
automatically tries to carry out the certification
process. If it succeeds, the relevant magenta
quadrant is drawn over the blue octagon. You can
see this feature in action by bumping up the
value of -log(side) to a high integer. Eventually
the magenta quadrant will appear. You might
notice sometimes that the octagon will shift depending
on the value of s. This is not a bug in the program,
but rather an artifact of the order in which the
quadrants are checked.