Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revisionBoth sides next revision | ||
research_report_pix [2008-03-09 13:44] – 88.6.21.0 | research_report_pix [2008-03-11 10:14] – 195.53.62.237 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | |||
==== An Aesthetic Exploration of Multivariate Polynomial Maps ==== | ==== An Aesthetic Exploration of Multivariate Polynomial Maps ==== | ||
Line 15: | Line 14: | ||
maps. An iterated map is an equation, or often a system of equations, which are | maps. An iterated map is an equation, or often a system of equations, which are | ||
evaluated iteratively. Iteration in this case means that we take the result of | evaluated iteratively. Iteration in this case means that we take the result of | ||
- | evaulating | + | evaluating |
inputs for the next evaluation. | inputs for the next evaluation. | ||
- | of results produced by succesive | + | of results produced by successive |
perhaps rapidly climbing to infinity, collapsing to 0 or some other fixed | perhaps rapidly climbing to infinity, collapsing to 0 or some other fixed | ||
value. For a small number of equations however, the set of results carves out a | value. For a small number of equations however, the set of results carves out a | ||
region of number space which exhibits interesting fractal properties. This | region of number space which exhibits interesting fractal properties. This | ||
region of number space is called an attractor. The complete term " | region of number space is called an attractor. The complete term " | ||
- | attractor" | + | attractor" |
CaTSA p127). | CaTSA p127). | ||
Line 119: | Line 118: | ||
The terms a< | The terms a< | ||
- | define a particular attractor. When I refer to " | + | define a particular attractor. When I refer to " |
collectively to these values. In the same way that you could take two numbers | collectively to these values. In the same way that you could take two numbers | ||
to be coordinates on a two-dimensional map, it can be useful to imagine a long | to be coordinates on a two-dimensional map, it can be useful to imagine a long | ||
Line 184: | Line 183: | ||
[ display issues ... when did i switch to soya? .. not documented, just before | [ display issues ... when did i switch to soya? .. not documented, just before | ||
- | getting the dotplot | + | getting the dot-plot |
My early plans were to make a neat, self contained application, | My early plans were to make a neat, self contained application, | ||
Line 196: | Line 195: | ||
I was to discover that relegating that 3D window to a region within another | I was to discover that relegating that 3D window to a region within another | ||
application window is not always a simple task. The problem was further | application window is not always a simple task. The problem was further | ||
- | complicated the particular 3D library I had hoped to use (OGRE) and the | + | complicated the particular 3D library I had hoped to use |
- | language in which I had hoped to do the interface programming (Python). | + | ([[http:// |
+ | interface programming ([[http:// | ||
[ summary of the problem? ] | [ summary of the problem? ] | ||
Line 218: | Line 218: | ||
Soon after completing an initial implementation of the evaluation code, I was | Soon after completing an initial implementation of the evaluation code, I was | ||
- | somewhat | + | somewhat |
generating maps of the parameter space would be much easier than I had | generating maps of the parameter space would be much easier than I had | ||
imagined. In fact, I was able to render my first parameter maps long before I | imagined. In fact, I was able to render my first parameter maps long before I | ||
Line 227: | Line 227: | ||
The first plots were quite time consuming. For each point on the map I was | The first plots were quite time consuming. For each point on the map I was | ||
calculating many iterations of the equations, only stopping if the values | calculating many iterations of the equations, only stopping if the values | ||
- | became incalculably large (infinte). During the ample opportunity for | + | became incalculably large (infinite). During the ample opportunity for |
reflection afforded by the long rendering times, I was reminded of the way in | reflection afforded by the long rendering times, I was reminded of the way in | ||
which the popular images of the Mandelbrot set are typically generated. | which the popular images of the Mandelbrot set are typically generated. | ||
Line 234: | Line 234: | ||
pixel in the image represents a unique starting value which is fed into an | pixel in the image represents a unique starting value which is fed into an | ||
iterative equation. The black region in the centre of the image are those | iterative equation. The black region in the centre of the image are those | ||
- | starting conditions for which the succesive | + | starting conditions for which the successive |
stay close to their initial value, and define the Mandelbrot set proper. The | stay close to their initial value, and define the Mandelbrot set proper. The | ||
coloured bands surrounding this region represent starting values for which | coloured bands surrounding this region represent starting values for which | ||
- | sucessive | + | successive |
different colours represent the number of iterations required for the values to | different colours represent the number of iterations required for the values to | ||
cross some arbitrary threshold. | cross some arbitrary threshold. | ||
Line 253: | Line 253: | ||
number space. The two-dimensional nature of Computer screens lend themselves | number space. The two-dimensional nature of Computer screens lend themselves | ||
predictably to the direct represention of two-dimensional data. It is possible | predictably to the direct represention of two-dimensional data. It is possible | ||
- | to stretch this situation to accomodate | + | to stretch this situation to accommodate |
animations, essentially mapping a new dimension (and hence a parameter) to | animations, essentially mapping a new dimension (and hence a parameter) to | ||
time. The resulting animations are made with a sequences of parallel slices | time. The resulting animations are made with a sequences of parallel slices | ||
Line 264: | Line 264: | ||
The first optimisation was to make use of | The first optimisation was to make use of | ||
- | [[http:// | + | [[http:// |
This required some changes in my code to avoid particular | This required some changes in my code to avoid particular | ||
[[http:// | [[http:// | ||
Line 279: | Line 279: | ||
considering some other avenues for increasing performance. Initially I had | considering some other avenues for increasing performance. Initially I had | ||
chosen to use Python as the language of implementation as it has many language | chosen to use Python as the language of implementation as it has many language | ||
- | features that make it comfortable to use when sketching out the intial | + | features that make it comfortable to use when sketching out the initial |
- | implemenation | + | implementation |
- | settled, I decided to reimplement | + | settled, I decided to re-implement |
efficiency between the two languages. I was assuming that the matrix functions | efficiency between the two languages. I was assuming that the matrix functions | ||
provided by SciPy were reasonably efficient, and that the performance increases | provided by SciPy were reasonably efficient, and that the performance increases | ||
Line 288: | Line 288: | ||
Creating a C implementation was also an excuse for me to try using a library I | Creating a C implementation was also an excuse for me to try using a library I | ||
- | had discovered called [[http:// | + | had discovered called [[http:// |
library of optimised functions for performing simple instructions across large | library of optimised functions for performing simple instructions across large | ||
sets of data. Most modern processor designs are able to efficiently perform | sets of data. Most modern processor designs are able to efficiently perform | ||
Line 307: | Line 307: | ||
discovered [[http:// | discovered [[http:// | ||
Pyrex is a meta-language for writing Python modules. It is very similar to | Pyrex is a meta-language for writing Python modules. It is very similar to | ||
- | Python, with the exception that it can use and access | + | Python, with the exception that it can use functions |
libraries. With Pyrex I was able to integrate my C evaluation code into my | libraries. With Pyrex I was able to integrate my C evaluation code into my | ||
existing Python code. Following this integration, | existing Python code. Following this integration, | ||
Line 318: | Line 318: | ||
compiler. | compiler. | ||
- | [ dotplot | + | [ dot-plot |
+ | Much of this work was performed without and graphical representation of the | ||
+ | strange attractors themselves, but only the maps of their parameter spaces. | ||
+ | Development of the dot-plot render was slowed by the problems mentioned | ||
+ | earlier. While the specific problems mentioned earlier had workarounds, | ||
+ | lingering problems persisted, most of them relating to the interaction between | ||
+ | C++ libraries (such as OGRE) and Python. | ||
+ | lack of progress, and eventually decided to implement the dot-plot renderer | ||
+ | using a Python game-development library called | ||
+ | [[http:// | ||
+ | OGRE implementation until this time because I thought the efficiency of the | ||
+ | graphical display would be one of the limiting factors. | ||
+ | [ explain fractal dimension / lyapunov somewhere before this paragraph ] | ||
+ | |||
+ | Implementing the Soya render was quite quick, but revealed the unfortunate | ||
+ | observation that the strange attractor which I had been mapping until this | ||
+ | point was not particularly interesting to look at, and was merely a wobbly 3D | ||
+ | loop. This was possibly caused by using an automated search which only examined | ||
+ | the fractal dimension as a selection criteria. | ||
+ | program developed in the CPiC) the Lyapanov exponent is also used. Rather than | ||
+ | improve my automated searching algorithm, I decided to focus on providing an | ||
+ | interface for manually navigating through the parameter space, relying on human | ||
+ | aesthetic judgements and instincts over mathematical analysis. | ||
+ | |||
+ | After experimenting with a number of methods for providing an interface to the | ||
+ | potentially large number of parameters, I settled on making some small | ||
+ | modifications to the Grid object provided by the | ||
+ | [[http:// | ||
+ | spread-sheet display of a grid of numbers. I added the ability to easily | ||
+ | incrementally modify the number in the current cell by scrolling with the mouse | ||
+ | wheel. | ||
[ basin of attraction 0,0,0 assumption ] | [ basin of attraction 0,0,0 assumption ] | ||
- | [ sprott | + | [ Sprott |
==== Solution/ | ==== Solution/ | ||
- | [ intial | + | [ initial |
For historical value, below is the first map I rendered. Mistakenly, it was the | For historical value, below is the first map I rendered. Mistakenly, it was the | ||
Line 338: | Line 368: | ||
became quite surprising. | became quite surprising. | ||
- | [ desc of basin of attraction, why the factal | + | [ desc of basin of attraction, why the factual |
highf-100.png (accidental basin plot) | highf-100.png (accidental basin plot) | ||
+ | |||
+ | [ first dot plot ] | ||
[ low order ] | [ low order ] | ||
Line 349: | Line 381: | ||
[ render errors? ] | [ render errors? ] | ||
+ | |||
+ | [ code ] | ||
==== Discussion ==== | ==== Discussion ==== | ||
Line 358: | Line 392: | ||
- | i've yet to speak to anyone with a maths background to ask if this is of any relevance, or more realistically to find out that it is very boring mathematically. i can imagine that it might be considered a little boring because i am working with big complicated polynomials. most of the famous fractals are based on very simple equations. | + | I've yet to speak to anyone with a maths background to ask if this is of any relevance, or more realistically to find out that it is very boring mathematically. i can imagine that it might be considered a little boring because i am working with big complicated polynomials. most of the famous fractals are based on very simple equations. |