## Calculating Pi for fun and profit

May 19, 2007This one is for my grandchildren :P. I found a nice intuitive way of calculating Pi. The only thing you need to understand is the Pythagoras Theorem. Consider the figure below:

To calculate the area of the circle, we take small steps.

- First we calculate the area of the grey part. It’s simple to see that this area is 0.5(1×1).
- Then the area of the red part. This is a little more tricky. To calculate the area, we first want to know the length of S. We see that the length from A to B equals 2S. With the use of Pythagoras, we find that 2S equals the square root of 2. So we know S: 0.5*sqrt(2). If we would also know T (and hence 1-T), then we could find the red area. But T is equal to S. A different way of finding T, is using Pythagoras again; we know OA=1, and we know S, hence we know T: the square root of 0.5. Thus the area of the red part equals: 0.5*0.5*sqrt(2)*(1-sqrt(0.5))=0.104.
- Now the green area. Well, we know (1-T) and S. So we know V. And W is 0.5*V. Now we only need to know the small side of the green triangle. This is where it gets tricky. (And messy). If we know O-fi then we’re all set. But OA=1, and we know Afi=W! Using Pythagoras (remember him?) we find filambda=1-fiO=1-sqrt(OA^2-Afi^2)=0.0439. So the area is approximately 0.0439*W=0.0439*0.29289=0.01286.

Note: wordpress doesn’t allow Greek symbols. So that explains “fi” and “lambda”

The only thing that needs to be mentioned, is that we have to multiply the grey are with 4 for a complete circle (we only considered 1 quadrant), the red area with 8, the green area with 16, etc.

Of course it’s possible to make a small script for this. I did all the fun for you, and coded it in Matlab. The code is a mess, but it’s posted here as a reference. If you understood the above (or if you came to this point without weeping), the code shouldn’t be hard to follow.

The real Pi is 3.1415926535897932384626433832795

# of iterations found value

1 2.0000000000000000000000000000000

2 2.4142135623730949234300169337075

3 3.0614674589207182551770244842800

4 3.1214451522580524351896677430859

5 3.1365484905459392823695871570607

10 3.1415877252771597505203060598746

25 3.1415926535897902256560013790759

30 3.1415926535897951086718985911613

50 3.1415926535897951086718985911613

This means there’s a difference of 1.7764e-015=0.0000000000000017764, or a percentage of 0.5953e-13%=0.0000000000005953%. Not bad.

After about 30 iterations, we don’t see any change in the calculated Pi anymore. This is due to my coding skills, and the precision of the script. But I think it’s clear it does what it needs to do; the method works.

## Leave a Reply