 Path:  physics insights > basics >

## Finding π from Pythagoras's Theorem

π (pi) is the ratio of the circumference of a circle to its diameter.  There are many ways to derive an approximate value for it, some highly arcane and others less so, but even the simplest approaches typically require moderately advanced trigonometry and some calculus.  For example, two solutions I learned in school were to do it by finding the area of a half-circle of radius 1 by integrating √1-x2, and by finding the arctangent of 1 by integrating 1/(1+x2) from 0 to 1.  Yet the value of π was known with some accuracy by the ancient Greeks, who had only rather simple mathematical tools available; clearly it's possible to do it more simply than the approaches I just mentioned.

On this page, we'll obtain a reasonably good value for π using nothing more advanced than Pythagoras's theorem. The accuracy of the value we obtain will actually be limited by accumulated floating point errors -- the technique we'll use doesn't behave particularly well with regard to error control, and so won't easily produce a highly precise result using ordinary double precision arithmetic.  However, it's sufficiently simple that one could do the calculations by hand and obtain a moderately accurate result (though on this page we'll actually use a Perl script for the "heavy lifting").

### Overview of the Method

We define the perimeter of a polygon as the sum of the lengths of all of its sides.  If we imagine an ant walking around the perimeter of a circle, and then walking around the perimeter of a polygon of the same radius, it's clear that, as the number of sides of the polygon increases, the total length walked by the ant in going around the polygon will approach the total length walked in going around the circle.  So, we'll just find the perimeter of a polygon with a very large number of sides.

If we start with a circle, we can either inscribe a polygon within the circle, or inscribe the circle within a polygon.  We're actually going to do it both ways; that way we obtain bounds on the perimeter of the circle:  It's at least as long as the interior polygon, and no longer than the exterior polygon.  And when the accumulated errors finally blow up and the method diverges, we'll know it, because the new values we obtain will fall outside the range we already established at previous steps of the process.  Finally, we'll use the average of the "best" two values we obtain as our estimate for π.

In each approach, we're going to start with a square, then split each side in half to make an octagon, and then split each side again to make a 16-sided figure, and so forth, finding better and better approximations to π (until we start to lose accuracy as a result of accumulating floating point errors).

To do this, we'll need to find a recurrence relation which, given an n-gon of a particular radius with a particular side length, tells us how long a side will be for a 2n-gon of the same radius.  Once we've found that, we can apply it repeatedly to obtain the perimeter of a figure with as many sides as we like.

### Circle Inscribed in a Polygon

In this section we'll find a formula for the perimeter of a polygon in which a circle is inscribed.  (The polygon's perimeter will be, in each instance, longer than the perimeter of the inscribed circle.)  We're going to work exclusively with polygons with power of 2 sides -- 4, 8, 16, etc.  The recurrence formula is easy to find for this case, and by doubling the number of sides at each step, we get to polygons with large numbers of sides quickly, which is what we want.

 Figure 1: Circle inscribed in a square: Circle in an octagon: Circle in a 16-gon: The perimeter of a square which inscribes a circle is easy enough to find (figure 1):  it's just 8 times the radius.

 Figure 2: Recurrence relation, inscribed circle: We'll now assume we have a polygon with n sides, where the length of one side is 2a, and with radius of the inscribed circle equal to r.  (We make the side length 2a rather than a to make the diagrams simpler.)  The radius, r, is also the distance from the center of the polygon to the midpoint of each of its sides.

Given those assumptions, we'll now find the length of one side of a polygon which has 2n sides.

Let:

(1) We're going to find the values for the new polygon by "cutting off the points" on the old polygon in order to double the number of sides.  In figure 2, we show a piece of the polygon, with sides of length 2a drawn in red, and the new segment we've added when we "cut off the point" is shown in green.  We can identify two right triangles in the figure, named here by their side lengths:

Triangle r a (r+c)
Triangle b c (a-b)

From Pythagoras's theorem, we then have:

(2a) (2b) Multiplying out the square in (2b) and canceling b2, we have:

(3) And from (2a) we have:

(4) Plugging (4) into (3), multiplying out, canceling terms, and multiplying through by -1, we obtain:

(5) Multiplying through by 1/(2a) and factoring out r2 we obtain,

(6) We don't really care about the absolute radius; all we're interested in is the ratio of the length of one side to the radius.  Dividing through by r, we obtain

(7) For clarity we define

(8) and then (7) becomes

 (9) This polygon has 2n sides, and βr is half the length of one side.  If we let N=2n=number of sides, then the perimeter will be 2Nrβ, and the ratio of the perimeter to the diameter, which is our approximate value for π, will be

 (10) Incidentally, since this doesn't depend on the size of the polygons we're using, we've just shown that π is the same for all circles regardless of their size.

For a square, we have the following:

(11) Using the square as a starting point, we can use (9) to find the value for β for each succeeding figure, where we double the number of sides at each step.  Along with (10) we can use that to find successively better approximations for π.  We will do that a little later, after we find the equivalent to (9) for a polygon inscribed in a circle.  But first, as a simple example, we'll work out the values for an octagon by hand.

For the octagon, we start with a square and double the number of sides.  So, in (9) we plug in α=1, and since we have N=8 for an octagon, we find

(12) ### Polygon Inscribed in a Circle

In this section, we'll find a formula for the perimeter of a polygon which is inscribed in a circle.  (In each case the perimeter of the polygon will be shorter than the perimeter of the circle.)  Again, we will be working exclusively with polygons with a power of 2 number of sides.

 Figure 3: Square inscribed in a circle: Octagon inscribed in a circle: 16-gon in a circle: The perimeter of a square inscribed in a circle, as we see from figure 3 (and Pythagoras's theorem), is r·4√2.

 Figure 4:  Recurrence relation, inscribed polygon: As in the previous section, we'll now proceed to find a recurrence relation which, given the radius and length of one side of a polygon, will tell us the length of one side of a polygon with twice as many sides.   We will again define the length of one side of the "old" polygon to be 2a, and the length of one side of the "new" polygon to be 2b.  The old polygon is assumed to have n sides, and the new one will have 2n sides.  This time, since the polygon is inscribed in the circle, the radius, r, is the distance from the center to one point.  To double the number of sides, we'll split each side, and insert an extra vertex in the middle of the split side.  The splitting operation is shown in figure 4.

We can identify two distinct right triangles in figure 4.  Calling them by the lengths of their sides, they are:

Triangle c a r
Triangle a (r-c) (2b)

From triangle c,a,r, we have:

(13) From triangle a,(r-c),(2b) we have:

(14) Substituting (13) into (14) we obtain:

(15) Multiplying out the square and bringing b2 over onto the left by itself, we have:

(16) As above, we're interested in the ratio of the side lengths to the radius rather than the absolute lengths of the sides, so we will again define α and β as in equations (8).  Dividing (16) through by r2, expressing it in terms of α and β, and taking square roots of both sides, we obtain:

 (17) As in the previous section, the perimeter of the inscribed polygon with N sides is 2Nrβ, and our approximate value for π is the perimeter divided by twice the radius, which leads us again back to equation (10).

For the inscribed square, with N=4, we have:

(18) Using the square as a starting point, and using the recurrence relation in (17), doubling the number of sides at each step, we can again find successively better values for π.  We will, again, work out the case of the octagon "by hand" (with a small assist from a calculator for the square roots).  Plugging the value of β for the square into (17), and then multiplying by N=8 for the octagon, we have

(19) Averaging this with the value we obtained above, in equations (12), for a circle inscribed in an octagon, we obtain the value 3.188 -- not awful for a value which we can obtain with hand calculation, but we can do much better just iterating a few times, as we'll show in the next section.

### Finding a Better Value Using a Script

We built a small Perl script, which is here, which iterates, applying equations (9) and (17), along with (10), to find the ratio of the perimeter to twice the radius for polygons with increasing numbers of sides.  The script runs 20 steps, doubling the number of sides each time, and then goes back over the data to find the first step which went "out of bounds".  We use the "interior" polygon approximation for π as a lower bound and the "exterior" polygon approximation as an upper bound; at each step the new values for those should lie between the old values, unless accumulated errors have become so large that the result is not valid.

We've summarized the results in table 1, below.  The algorithm went "out of bounds" at step 14, when finding the values for polygons with 65,536 sides.  It's interesting to note that, since there were only 14 steps (because we're doubling the number of sides at each step), it would have been be very tedious but none the less possible to compute the values in the table entirely by hand.

Table 1:  Results of the Perl script:
 Sides Interior Polygon Value for Pi Exterior Polygon Value for Pi Average 4 2.82842712474619 4 3.41421356237309 8 3.06146745892072 3.31370849898476 3.18758797895274 16 3.12144515225805 3.18259787807453 3.15202151516629 32 3.13654849054594 3.15172490742924 3.14413669898759 64 3.14033115695474 3.14411838524586 3.1422247711003 128 3.14127725093276 3.14222362994269 3.14175044043772 256 3.14151380114415 3.14175036917004 3.14163208515709 512 3.14157294036788 3.14163208070386 3.14160251053587 1024 3.14158772527996 3.14160251023713 3.14159511775855 2048 3.14159142150464 3.14159511763137 3.141593269568 4096 3.14159234561108 3.14159326953813 3.14159280757461 8192 3.141592576545 3.1415928080678 3.1415926923064 16384 3.14159263346325 3.14159268885851 3.14159266116088 32768 3.14159265480759 3.14159265160561 3.1415926532066 65536 3.14159264532122 3.14159262180328 3.14159263356225

The last row, which finally went "out of bounds" due to accumulation of errors, is colored red.  Our "best" value for π, which is the average of the interior and exterior polygon values on the step before the algorithm "went out of bounds", is 3.1415926532066, where we have again colored the erroneous digits red.  The correct value, rounded to 11 places, is 3.14159265359.  The difference is 3.832e-10.  So, our approximation is good to 10 digits (or 9 decimal places), which is about the best we can expect from the double precision floating point package we were using.

Page created on 2/20/2008.  Table of values corrected, later on 2/20/2008.  Clarifications to last paragraph, 8/21/2009