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;
>
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
___________________________________________________________________________________
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);
> RegularPolygon( P, 12, orig, 1);
> draw( P );
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);
> circle( C, [point( origin, 0, 0), 1]);
>
### WARNING: calls to `C` for generating C code should be replaced by codegen[C]
draw( {C(color = black),P(color = gold, filled = true)} );
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);
>
RegularPolygon(Poly5,5,point(Origin,0,0),1);
>
RegularPolygon(Poly10,10,point(Origin,0,0),1);
>
RegularPolygon(Poly20,20,point(Origin,0,0),1);
>
### 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)});
> evalf( area(Poly5)); evalf( area(Poly10)); evalf( area(Poly20));
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));
>
evalf( area(Poly10)) / evalf(area(C));
> evalf( area(Poly20)) / evalf(area(C));
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));
>
evalf(perimeter(Poly5)/(2*Pi));
>
evalf(perimeter(Poly10)/(2*Pi));
> evalf(perimeter(Poly20)/(2*Pi));
___________________________________________________________________________________
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);
>
line(L1,[orig,A]); line(L2,[orig,B]);
line(x_axis, [orig, point(xx, 10, 0)]);
> a2 := evalf( FindAngle(L2, x_axis)):
> a1 := evalf( FindAngle(L1, x_axis)):
> angle_rad := evalf( a2 - a1);
> draw( [L1(color=green),L2(color=red)]);
> 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]);
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]);
> s := evalf(sqrt(area(c1)));
>
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)]);
> draw({c1,s1(color = coral, filled = true)} );
> area(s1); evalf(area(c1));
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;
> cube( cube_1, orig ,side_len/2*sqrt(3) ):
> draw( cube_1 , axes = framed );
>
evalf( volume( cube_1 ));
side_2 := evalf( ( volume( cube_1 ))^(1/3) );
> cube( cube_2, orig, side_2/2*sqrt(3) ):
>
draw( [cube_1, cube_2(style=wireframe, color = blue)],
axes = framed );