Twierdzenia Pitagorasa dla wielokątów

Autor:
Tomasz Urbańczyk
Fizyka V rok
Wydział Fizyki, Astronomii i Informatyki Stosowanej
Uniwersytet Jagielloński
Kraków 2009

Wstęp

Dany jest trójkąt prostokątny. Dla każdego boku trójkąta zostaje skonstruowany wielokąt foremny foremny o (n bokach) taki, że długość boku wielokąta jest równa długości boku trójkąta. Poniższy skrypt sprawdza prawdziwość, następującego twierdzenia:

Suma pól dwóch wielokątów foremnych (o n bokach) o długościach boków takich jak przyprostokątne trójkąta prostokątnego jest równa polu wielokąta (także o n bokach) o długości boku takiej jak przeciwprostokątna trójkąta. 

Notebook tworzy rysunek trójkąta prostokątnego oraz wielokątów (przy czym każdy z wielokątów ma z trójkątem jeden wspólny bok).

,,Dowód'' twierdzenia Pitagorasa dla wielokątów

Zwracam uwagę, że omawiane twierdzenie jest prawdziwe gdyż pole wielokąta foremnego (o n bokach) jest kwadratową funkcją długości jego boku (bok długości a):
                                                                                                 P=(1/4)n (a^2) Ctg(π/n)                        

Powyższą tożsamość można udowodnić w następujący sposób: 
1) Wielokąt foremny o n bokach można podzielić na n trójkątów równoramiennych (o wspólnym wierzchołku w środku symetrii wielokąta).      
2) Kąt, między bokami trójkąta o równej długości,wynosi (((360°))/n)=(((2π))/n).
3) Wysokość h trójkąta (prostopadłą do podstawy będącej bokiem wielokąta o długościa) można wyrazić jako:  
  
                                                                                                 h=(1/2)a ctg(π/n)
                                                                                                 
Powyżej wykorzystano wzór na wysokość trójkąta równoramiennego o znanej długości podstawy i kącie między ramionami.
4) Pole pojedynczego trójkąta wynosi zatem  
                                                                                            (Subscript[P, trójkąta])= (1/4) (a^2)Ctg(π/n)
                                                                                            
5) Pole wielokąta jest równe polu pojedynczego trójkąta pomnożonemu przez  n :

                                                                                             P = (1/4)n (a^2)Ctg(π/n)
                                                                                             
Omawiane twierdzenie można także uogólnić na przypadek figur podobnych, które mają jeden bok wspólny z trójkątem prostokątnym.Uogólnienie opiera się na tym, że pole figur podobnych skaluje się z kwadratem długości boku. Załóżmy,że pole figury wyraża się za pomocą wzoru (x to długość boku figury wspólnego z trójkątem prostokątnym, N współczynnik proporcjonalności charakteryzujący daną figurę):
                                                                                                    P (x)=N (x^2)
Zatem wmyśl wykazywanego twierdzenia zachodzi:
                                                                                           N (a^2) + N (b^2) = N (c^2)        /N (dzielenie obustronne przez N)
                                                                                               (a^2) +  (b^2) =  (c^2)  

Zatem rozważane twierdzenie sprowadza się do twierdzenia Pitagorasa!!!

Animacja twierdzenia Pitagorasa dla wielokątów

Manipulate[
Last[
{
nn=ile;
A=DLA;
B=DLB;
CC=Sqrt[A^2+B^2];
Promien[n_,y_]:=y/(2*Sin[π/n]);
Pole[n_,y_]:=1/4*n*y^2*Cot[π/n];
R=Promien[nn,CC];
pu=Flatten[NSolve[{(x-A)^2+(y-0)^2==R^2,(x-0)^2+(y-B)^2==R^2}]];
xp1=x/.pu[[1]];
yp1=y/.pu[[2]];
xp2=x/.pu[[3]];
yp2=y/.pu[[4]];
If[xp1>xp2,{X1=xp1,Y1=yp1},{X1=xp2,Y1=yp2}];
f1=First[fa/.Solve[X1+R*Cos[fa]==A,fa,InverseFunctions->True]];
wielc[n_]:=Table[{X1+R*Cos[2*π*z/n+f1],Y1+R*Sin[2*π*z/n+f1]},{z,n}];
g1=Graphics[{Green,Polygon[wielc[nn]]}];
P1=Pole[nn,CC];



Ra=Promien[nn,B];
pua=Flatten[NSolve[{(x-0)^2+(y-0)^2==Ra^2,(x-0)^2+(y-B)^2==Ra^2}]];
X1a=x/.pua[[1]];
Y1a=y/.pua[[2]];
f1a=Re[First[faa/.Solve[X1a+Ra*Cos[faa]==0,faa,InverseFunctions->True]]];
wiela[n_]:=Table[{X1a+Ra*Cos[2*π*z/n+f1a],Y1a+Ra*Sin[2*π*z/n+f1a]},{z,n}];
g2=Graphics[{Red,Polygon[wiela[nn]]}];
P2=Pole[nn,B];

Rb=Promien[nn,A];
pub=Flatten[NSolve[{(x-A)^2+(y-0)^2==Rb^2,(x-0)^2+(y-0)^2==Rb^2}]];
X1b=x/.pub[[2]];
Y1b=y/.pub[[1]];
f1b=First[fab/.Solve[X1b+Rb*Cos[fab]==0,fab,InverseFunctions->True]];
wielb[n_]:=Table[{X1b+Rb*Cos[2*π*z/n+π+f1b],Y1b+Rb*Sin[2*π*z/n+π+f1b]},{z,n}];
g3=Graphics[{Blue,Polygon[wielb[nn]]}];
P3=Pole[nn,A];
g=Graphics[{Polygon[{{0,0},{0,B},{A,0}}]}];
Pt=0.5*DLA*DLB;
Column[{
StyleForm["TWIERDZENIE PITAGORASA DLA WIELOKĄTÓW",FontWeight->Bold,FontFamily->"Times",FontSize->20,Black],
StyleForm[N[P1,6]" - Pole figury na przeciwprostokątnej  ",FontSize->16,FontFamily->"Times"],
StyleForm[N[P2+P3,6]" - Suma pól figur na przyprostokątnych ",FontSize->16,FontFamily->"Times"],
StyleForm[N[Pt,6]" - Pole trójkąta",FontSize->16,FontFamily->"Times"],
Show[g1,g2,g3,g,If[osie==True,Axes->True,Axes->False],ImageSize->500]
},Center
]
}],{{ile,3,"Ilość boków wielokąta"},3,10,1},{{DLA,1,"Długość poziomej przyprostokątnej"},1,10},{{DLB,1,"Długość pionowej przyprostokątnej"},1,10},{{osie,False,"Układ współrzędnych"},{True,False}}]