# JavaScript Algorithms and Data Structures: Math - Liu Hui π Algorithm

Liu Hui's π algorithm is a method to approximate the value of π using inscribed polygons. Learn how to implement Liu Hui's π algorithm in JavaScript.

Liu Hui remarked in his commentary to The Nine Chapters on the Mathematical Art, that the ratio of the circumference of an inscribed hexagon to the diameter of the circle was three, hence π must be greater than three. He went on to provide a detailed step-by-step description of an iterative algorithm to calculate π to any required accuracy based on bisecting polygons; he calculated π to between 3.141024 and 3.142708 with a 96-gon; he suggested that 3.14 was a good enough approximation, and expressed π as 157/50; he admitted that this number was a bit small. Later he invented an ingenious quick method to improve on it, and obtained π ≈ 3.1416 with only a 96-gon, with an accuracy comparable to that from a 1536-gon. His most important contribution in this area was his simple iterative π algorithm.

## Area of a circle

Liu Hui argued:

Multiply one side of a hexagon by the radius (of its circumcircle), then multiply this by three, to yield the area of a dodecagon; if we cut a hexagon into a dodecagon, multiply its side by its radius, then again multiply by six, we get the area of a 24-gon; the finer we cut, the smaller the loss with respect to the area of circle, thus with further cut after cut, the area of the resulting polygon will coincide and become one with the circle; there will be no loss

Liu Hui's method of calculating the area of a circle.

Further, Liu Hui proved that the area of a circle is half of its circumference multiplied by its radius. He said:

Between a polygon and a circle, there is excess radius. Multiply the excess radius by a side of the polygon. The resulting area exceeds the boundary of the circle

In the diagram d = excess radius. Multiplying d by one side results in oblong ABCD which exceeds the boundary of the circle. If a side of the polygon is small (i.e. there is a very large number of sides), then the excess radius will be small, hence excess area will be small.

Multiply the side of a polygon by its radius, and the area doubles; hence multiply half the circumference by the radius to yield the area of circle.

The area within a circle is equal to the radius multiplied by half the circumference, or A = r x C/2 = r x r x π.

## Iterative algorithm

Liu Hui began with an inscribed hexagon. Let M be the length of one side AB of hexagon, r is the radius of circle.

Bisect AB with line OPC, AC becomes one side of dodecagon (12-gon), let its length be m. Let the length of PC be j and the length of OP be G.

AOP, APC are two right angle triangles. Liu Hui used the Gou Gu (Pythagorean theorem) theorem repetitively:

From here, there is now a technique to determine m from M, which gives the side length for a polygon with twice the number of edges. Starting with a hexagon, Liu Hui could determine the side length of a dodecagon using this formula. Then continue repetitively to determine the side length of a 24-gon given the side length of a dodecagon. He could do this recursively as many times as necessary. Knowing how to determine the area of these polygons, Liu Hui could then approximate π.

## References

The Original Article can be found on https://github.com

#javascript #algorithms #datastructures #math

4.15 GEEK