Module 2 : Geometry

202 : Historic Quests

2000 Gregory A. Moore

___________________________________________________________________________________

A. Proof of Pythagoras' Theorem

___________________________________________________________________________________

In this section we will create a famous diagram which can be an aid in proving the validity of the theorem of Pythagoras. This is one of more than 100 proofs of this famous and fundamental theorem.

> a := 5; b := 7;

a := 5

b := 7

> with(plots):
display( polygonplot( [[0,0],[b,0],[0,a]],color = red ),
polygonplot( [[b,0],[a+b,0],[a+b,b]], color = green ),
polygonplot( [[a+b,b],[a+b,a+b],[a,a+b]], color = blue ),
polygonplot( [[0,a],[a,a+b],[0,a+b]], color = violet ),
polygonplot({[[b,0],[a+b,b],[a,a+b],[0,a]]},color = yellow), scaling= constrained);

Warning, the name changecoords has been redefined

[Maple Plot]

___________________________________________________________________________________

B. Area of A Circle Using Polygons

___________________________________________________________________________________

Its easy enough to compute the area of triangles and rectangles. In fact, the area of any region bounded by straight lines can be computed by cutting it into triangles or other simple shapes. However, a curved shape like a circle defies this method. A crude estimate for the area of circle would be to find the area of an inscribed regular polygon - that is, a polygon which has all of its vertices on the circle, and each edge is same length. We can use MapleÕs built-in command to generate regular polygons. Then if we increase the number of sides, the area of the polygon becomes closer and closer to the area of the circle.

In the geometry package, the name for a geometric object is usually the first name in the parameter list. Also the geometry package uses draw rather than plot or polygonplot.

> with(geometry): point(orig,0,0);

orig

> RegularPolygon( P, 12, orig, 1);

P

> draw( P );

[Maple Plot]

Every regular polygon will fit inside of a circle and can be considered to be inscribed in the circle.

> with(geometry): point(orig, 0, 0);

orig

> circle( C, [point( origin, 0, 0), 1]);

C

> ### WARNING: calls to `C` for generating C code should be replaced by codegen[C]
draw( {C(color = black),P(color = gold, filled = true)} );

[Maple Plot]

Lets look at several related regular polygons.

Notice that for the 20 sided polygon, the area is 99% the same as the area of the circle!

> with(geometry): point(orig, 0, 0);

orig

> RegularPolygon(Poly5,5,point(Origin,0,0),1);

Poly5

> RegularPolygon(Poly10,10,point(Origin,0,0),1);

Poly10

> RegularPolygon(Poly20,20,point(Origin,0,0),1);

Poly20

> ### WARNING: calls to `C` for generating C code should be replaced by codegen[C]
draw( {C(color = black),Poly5(color= blue),
Poly10(color =green),Poly20(color= red)});

[Maple Plot]

> evalf( area(Poly5)); evalf( area(Poly10)); evalf( area(Poly20));

2.377641291

2.938926262

3.090169944

Notice that these numbers are less than but approaching .

In the diagram above, you might have noticed that the greater the number of sides in the regular polygon, the closer it resembles the circle its inscribed in. We can compare the area of the polygons to the area of the circle

> evalf( area(Poly5)) / evalf(area(C));

.7568267286

> evalf( area(Poly10)) / evalf(area(C));

.9354892838

> evalf( area(Poly20)) / evalf(area(C));

.9836316430

We can do the same thing with perimeters. The perimeters of the polygons should be getting close to 2 (the circumference of the unit circle).

> evalf( perimeter(Poly5)); evalf( perimeter(Poly10)); evalf( perimeter(Poly20));

5.877852524

6.180339888

6.257378604

> evalf(perimeter(Poly5)/(2*Pi));

.9354892840

> evalf(perimeter(Poly10)/(2*Pi));

.9836316430

> evalf(perimeter(Poly20)/(2*Pi));

.9958927354

___________________________________________________________________________________

C. Impossible Constructions

___________________________________________________________________________________

Its possible to construct many geometric figures using only an unmarked straight edge and a compass . From antiquity there were three constructions which were sought after but never found :
trisecting an angle
squaring a circle
doubling a cube
In the late 1800Õs, it was proven that all three of these are impossible to construct with straight edge and compass using the methods of abstract algebra. When we say something is impossible in mathematics, this is different than something being impossible in science. For example, its impossible to turn lead into gold - at least with our current technology. Howvever, many things we take for granted today such as travelling faster than the speed of sound, viewing a scene as is happens on the other side of the world, etc. were once impossibleÕ from a scientific point of view. In mathematics, something being impossible is a much stronger condition because it means not just that it canÕt be done now, but also that it will never be done in the future. The three construction problems listed above are indeed impossible - although that does not prevent various (uninformed) people from attempting to find solutions.

Because these constructions are impossible, we will not be able to solve them using the straightedge and compass. However, using Maple we can approximate to a high degree of accuracy the solutioins to better understand the unsuccessful quests.

TRISECT AN ANGLE

To trisect an arbitrary angle means to divide it evenly into three sections.

We define two points which will determine an angle from the origin.
Then we compute the angle between the lines, and construct the two angle trisectors. You can change the initial points A and B to create angles to trisectÕ!

> restart; with(geometry):

> point( orig, 0, 0); point( A, 5, 1); point( B, 2, 7);

orig

A

B

> line(L1,[orig,A]); line(L2,[orig,B]);
line(x_axis, [orig, point(xx, 10, 0)]);

L1

L2

x_axis

> a2 := evalf( FindAngle(L2, x_axis)):

> a1 := evalf( FindAngle(L1, x_axis)):

> angle_rad := evalf( a2 - a1);

angle_rad := 1.095101108

> draw( [L1(color=green),L2(color=red)]);

[Maple Plot]

> theta := angle_rad/3:

> point( C, cos( a1 + theta), sin(a1 + theta)):

> point( D, cos( a1 + 2*theta), sin(a1 + 2*theta)):

> line( s1, [orig, C]):

> line( s2, [orig, D]):

> draw( [L1,L2, s1, s2]);

[Maple Plot]

SQUARE A CIRCLE

To square a circle means to find a square with area equal to a given circle.

We define a circle at the origin of radius 2. Then we compute the area and square root of the area. We construct the square at the origin too. The square has the same area as the circle, and we verify it numerically!

> point( orig, 0,0); circle(c1, [orig, 2]);

orig

c1

> s := evalf(sqrt(area(c1)));

s := 3.544907702

> square(s1,[point(a, s/2, s/2), point(b, -s/2, s/2),
point(c, -s/2, -s/2), point(d, s/2, -s/2)]);

s1

> draw({c1,s1(color = coral, filled = true)} );

[Maple Plot]

> area(s1); evalf(area(c1));

12.56637062

12.56637062

You can change the radius of the circle and re-execute.

DOUBLE A CUBE

To double a cube means to find a cube with exactly twice the volumne. This is equivalent to constructing the cube root of two.

We invoke a new package of commands. Ignore the long list of warnings for new definitions. We construct a cube, compute the side we will need to double it, and then draw both together. Althought it may not look like it, the larger cube has twice the volume ofthe smaller!

> with(geom3d):

Warning, these names have been redefined: AreCollinear, AreConcurrent, AreConjugate, AreParallel, ArePerpendicular, DefinedAs, Equation, FindAngle, GlideReflection, IsEquilateral, IsRightTriangle, OnSegment, RadicalCenter, altitude, area, center, centroid, circle, coordinates, detail, distance, draw, dsegment, form, homology, homothety, intersection, inversion, line, midpoint, point, polar, projection, radius, randpoint, reflection, rotation, segment, sides, translation, triangle, vertices

> point(orig,0,0,0);
side_len := 8;

orig

side_len := 8

> cube( cube_1, orig ,side_len/2*sqrt(3) ):

> draw( cube_1 , axes = framed );

[Maple Plot]

> evalf( volume( cube_1 ));
side_2 := evalf( ( volume( cube_1 ))^(1/3) );

512.

side_2 := 8.000000000

> cube( cube_2, orig, side_2/2*sqrt(3) ):

> draw( [cube_1, cube_2(style=wireframe, color = blue)],
axes = framed );

[Maple Plot]