In Need of Ideas for a Small Fractal Program I am a freshman in high school who needs a math related project, so I decided on the topic of fractals.  Being an avid developer, I thought it would be awesome to write a Ruby program that can calculate a fractal.  The only problem is that I am not some programming god, and I have not worked on any huge projects (yet).  So I need a basic-ish fractal 'type' to do the project on.  I am a very quick learner, and my math skills greatly outdo that of my peers (I was working on derivatives by myself last year).  So does anybody have any good ideas?  Thanks!!!! :)
PS: my school requires a live resource for every project we do, so would anybody be interested in helping? :)
 A: A rather simple one (that is given as an exercise in recursion in many LOGO classes) is to draw the Koch Snowflake.
A slightly more complex one would be the Mandelbrot set. The basic concept behind it is this:
You have a set of numbers, called Complex numbers. The basic concept is that they define $i=\sqrt{-1}$. Yep, it's a number which doesn't exist, but it's extremely useful. A Complex number is any "number" of the form $a+bi$. These don't exist either (unless $b=0$), so another way to look at a complex number is that it is a point on the coordinate plane, $(a,b)$. Just like you can plot numbers on a number line, complex numbers can be plotted on the Cartesian plane. They multiply and divide normally, just pretend that $i$ is any run-of-the-mill variable and replace all $i^2$s with $-1$ when they appear.
So how does this relate to a fractal? Well, let's consider this recursive relation for a given complex number $c$:
$z_{i+1}=z_{i}^2+c,z_0=0$
Basically, this means you take the number $c$, add it to $z_0^2=0$, and get $z_1$. You plug $z_1$ back into the equation (square it and add $c$), and you get $z_2$. And so on. 
Now, you check if this sequence of $z$s escapes to infinity (i.e., the $a$ or $b$ becomes infinite). If it doesn't do so within some fixed number of iterations, the number belongs in this "Mandelbrot set".
Now, all you do is take some fixed area of the coordinate plane (The most common is to let x range from $-2$ to $1$, and y from $-1$ to $1$), and check which points in the area belong to the set (By this, I mean "check if the complex number $x+iy$ corresponding to the point $(x,y)$ is in this set"). Plot the point if it belongs to the set, and you get a beautiful snowman-like thing.
It gets even more interesting if you replace the $z^2$ with some other power (note that fractional powers will require you to know a bit more about complex numbers)
A: Many fractals are fairly simple to write. Most of them will have a list of 'something' (say lines) and a function that splits each 'something' into several parts thus generating a new, larger list from the old one. Then it only remains to draw the list after several iterations. Of course, each fractal will have slightly different algorithm.
Note that I'm talking about fractals like Koch snowflake or Sierpinski triangle. Things like Mandelbrot set are quite different as they do not have such discrete parts. There the simplest idea is to test each point for membership.
Example: Sierpinski triangle
Have a structure containing three points that define a triangle. Have a function, that takes one triangle and returns an array of 3 smaller triangles formed from corners and midpoints of sides of the input triangle like this. Start with an array containing one large triangle. Then do 'map' and 'flatten' on that array to fill it with small triangles. Finally draw each of them. 
A: Maybe you want to consider iterated function systems
A: Mandelbrot set in Ruby :
http://eigenjoy.com/2008/02/22/ruby-inject-and-the-mandelbrot-set/
See also :
http://en.wikibooks.org/wiki/Fractals
HTH
