Zbudowanie segmentu równego iloczynowi lub proporcji pozostałych dwóch za pomocą cyrkla i linijki to praca twórcza. Podstawowe zadania do budowy

23.09.2019

Ten artykuł jest oparty na jednym z rozdziałów książki "Programowanie w Pythonie" autorstwa Sedgwicka, Wayne'a i Dondero, o którym była już mowa wcześniej. Ta sekcja nosi nazwę „Systemy funkcji iteracyjnych” i opisuje konstrukcję różnych obrazów, takich jak trójkąt Sierpińskiego, paproć Barnsley i kilka innych, przy użyciu dość prostego algorytmu, który, co więcej, jest również łatwy w implementacji.

Zacznę od opisania tego algorytmu. Będę się posługiwał terminologią matematyczną, w tym taką, której autorzy książki w swojej narracji nie posługują się. Czysto matematyczne spojrzenie na algorytmy ułatwia mi ich zrozumienie i całkiem wygodnie jest mi wyrażać je za pomocą języka matematycznego.

Tak więc, aby zrozumieć teoretyczną część artykułu, czytelnik będzie potrzebował znajomości niektórych działów matematyki, które zwykle czyta się na politechnikach. Mianowicie przydatne byłoby zapoznanie się z teorią prawdopodobieństwa i elementami analizy matematycznej.

Po części teoretycznej artykułu nastąpi część praktyczna opisująca implementację algorytmu w języku C99. Ponieważ rezultatami działania programu będą obrazy, będziemy korzystać z biblioteki graficznej pgraph w programie, zakładając, że czytelnik, przynajmniej ogólnie, jest z nią zaznajomiony.

Przejdźmy więc do teoretycznej części naszej historii.

Funkcje iteracyjne i ciągi losowe

Zanim opiszemy schemat, według którego będą budowane obrazy, porozmawiajmy o sekwencjach, których składowe są obliczane za pomocą formuł rekurencyjnych.

Zdefiniujmy 2 ciągi, x n n = 1 ∞ i y n n = 1 ∞ , używając następujących formuł rekurencyjnych:

X n = f x n - 1 , y n - 1 , n ∈ ℕ , y n = g x n - 1 , y n - 1 , n ∈ ℕ .

Wyjaśnijmy to x 0 i tak 0 to niektóre predefiniowane liczby, a f(x, tak) oraz g(x, tak) to niektóre funkcje dwóch zmiennych o nazwie wielokrotny. Proces obliczania następnego członka określonej sekwencji za pomocą takich funkcji zostanie nazwany iteracje, a powyższy zestaw powtarzających się formuł jest schematem iteracyjnym.

Rekurencyjny sposób określania sekwencji jest najprawdopodobniej znany czytelnikowi, który studiował matematykę na uniwersytecie. Nieco niezwykłą może wydawać się „krzyżowa” metoda obliczania członków ciągów, w której do obliczania n th członek każdej z dwóch sekwencji jest potrzebny nie tylko n− 1. członek tego samego ciągu, ale także n− 1. członek jest inny.

Rozważmy teraz schemat konstruowania członków dwóch sekwencji, który używa nie tylko jednej pary funkcji iteracyjnych, ale m parowy. Każda z tych funkcji będzie liniowa w obu zmiennych i będzie również zawierać stałą addytywną. Dokładniej funkcje będą wyglądać tak:

F k x , y = a k x + b k y + c k g k x , y = d k x + e k y + h k , k = 0 , 1 , … , m-1 .

Dla wszystkich n, zaczynając od 1, losowo wybierze liczbę od 0 do m− 1, a przy obliczaniu x n oraz y n we wzorach rekurencyjnych wykorzystana zostanie para funkcji iteracyjnych, których indeksy są równe danej liczbie losowej. Zauważ, że losowe liczby „pojawiające się” przed każdą iteracją nie muszą być jednakowo prawdopodobne. Jednak dla różnych kroków prawdopodobieństwo wystąpienia określonej stałej liczby jest takie samo.

Sformułujmy teraz to, co zostało powiedziane ściśle matematycznym językiem. Rozważmy ciąg dyskretnych zmiennych losowych T n = 1 ∞ , niezależnych w całości i rozłożonych zgodnie z tym samym prawem. Mianowicie: każda zmienna losowa przyjmuje wartości 0, 1, ..., m− 1 z odpowiednimi prawdopodobieństwami p 0 , p 1 , …, p m-1 .

Teraz sekwencje x n n = 1 ∞ i y n n = 1 ∞ definiujemy za pomocą następującego schematu iteracyjnego:

X n = f T n x n - 1 , y n - 1 , n ℕ , y n = g T n x n - 1 , y n - 1 , n ∈ ℕ .

Jak wcześniej, x 0 i tak 0 to niektóre predefiniowane liczby.

Zatem każdy z ciągów jest losowy, to znaczy jego elementy są zmiennymi losowymi. Jednak każdą z tych sekwencji można „zrealizować”, czyli wszystkie jej elementy można obliczyć (oczywiście takich implementacji będzie nieskończenie wiele).

Przyjrzyjmy się głównemu pytaniu tego rozdziału. A co obrazy, które zbudujemy, mają wspólnego z tą parą losowych sekwencji? Bardzo prosta. Skonstruujmy realizację tych dwóch sekwencji. Dla każdego naturalnego n para ( x n, y n) można uznać za współrzędne punktu podanego w prostokątnym kartezjańskim układzie współrzędnych na płaszczyźnie. Tak więc obraz odpowiadający pewnej parze zaimplementowanych sekwencji jest miejscem wszystkich takich punktów na płaszczyźnie.

Wydawałoby się, że za każdą realizację pary sekwencji otrzymamy własny obraz, inny od pozostałych. Jakkolwiek paradoksalne może się to wydawać, powstałe obrazy za każdym razem będą się prawie pokrywać (tj. nakreślone na komputerze będą nie do odróżnienia dla ludzkiego oka). A przy odpowiednim doborze funkcji iteracyjnych i praw rozkładu zmiennych losowych biorących udział w tworzeniu elementów sekwencji można stworzyć bardzo interesujące wzorce.

Dodajemy, że konstruując obrazy na komputerze oczywiście wykonamy tylko skończoną (ale wystarczająco dużą) liczbę iteracji.

O generowaniu liczb pseudolosowych

Pisząc program, staniemy przed koniecznością generowania liczb pseudolosowych rozłożonych generalnie nie równomiernie, ale zgodnie z ustalonym prawem. Jednocześnie będziemy mieli tylko programowy generator liczb pseudolosowych równomiernie rozłożonych w przedziale . Jak zdobyć pierwszą z drugiej dystrybucji?

Przełóżmy problem na płaszczyznę matematyczną. Niech będzie ciągła zmienna losowa U, rozłożone równomiernie na segmencie . Postawmy sobie za cel skonstruowanie dyskretnej zmiennej losowej T jako funkcja U, aby T przyjął wartości 0, 1, ..., m− 1 z odpowiednimi prawdopodobieństwami p 0 , p 1 , …, p m-1 .

Rozwiązanie problemu jest bardzo proste. Wprowadźmy pod uwagę sumę prawdopodobieństw

s k = ∑ i = 0 k - 1 p i , k = 0 , 1 , … , m - 1 .

Jeśli górny limit sumowania przekroczy i jest mniejsza niż dolna, to z definicji przyjmiemy, że taka suma jest równa 0.

T ekspresowe przez U w następujący sposób:

T = 0 jeśli U s 0 , s 1 , 1 jeśli U ∈ s 1 , s 2 , 2 jeśli U ∈ s 2 , s 3 , … … … … … … , … … … … … … , m - 1 jeżeli U∈sm-1,1.

Oczywiście zmienna losowa T dystrybuowane zgodnie z prawem, którego wymagamy. Zauważ, że w rzeczywistości T- jest to numer przedziału, w którym mieści się zmienna losowa U(o ile ponumerujemy przedziały liczbami od 0 do m− 1 w porządku rosnącym ich lewych granic).

Z praktycznego punktu widzenia uzyskany wynik pozwala na każdym kroku iteracji przyjąć jako liczbę funkcji iteracyjnych liczbę przedziału, do którego wpada liczba generowana przez generator liczb pseudolosowych równomiernie rozłożonych na przedziale .

Teraz możemy przejść do pisania programu.

Struktura programu

Program składa się z pliku main.c oraz plików wchodzących w skład biblioteki graficznej pgraph. Zawartość pliku main.c zaczyna się od następującej dyrektywy, która zawiera bibliotekę graficzną:

#include "pgraph.h"

Ponadto plik zawiera opisy globalnych zmiennych stałych i tablic stałych. Za nimi znajdują się definicje funkcji get_random_value() i main(). Pierwszy z nich generuje liczby pseudolosowe, a drugi wykonuje główną pracę polegającą na budowaniu obrazów.

Globalne zmienne stałe i tablice stałych

Wszystkie informacje potrzebne do zbudowania konkretnego obrazu zawarte są w globalnych zmiennych stałych i tablicach stałych. Oczywiście dla każdego obrazu zbiór wartości stałych i elementów tablic stałych będzie „swój”.

Poniżej znajdują się opisy tych stałych i tablic.

  • n to liczba iteracji;
  • w - szerokość obrazu w pikselach;
  • h - wysokość obrazu w pikselach;
  • xc - odcięta początku nowego układu współrzędnych w starym układzie;
  • yc - rzędna początku nowego układu współrzędnych w starym układzie;
  • l jest długością w pikselach odcinka równoległego do jednej z osi współrzędnych, o długości jednostkowej w nowym układzie współrzędnych;
  • m to liczba par funkcji iteracyjnych, czyli liczba m;
  • s - jednowymiarowa tablica rozmiarów m zawierające sumy prawdopodobieństw zmiennych losowych T n (k-ty element tablicy zawiera s k);
  • f jest dwuwymiarową tablicą składającą się z m f k(x, takk, 0), (k, 1), (k, 2) zawierają liczby K, b k, c k odpowiednio, gdzie 0 ≤ km − 1);
  • g - dwuwymiarowa tablica składająca się z m"wiersze" i 3 "kolumny" zawierające stałe używane w funkcjach g k(x, tak) (elementy tablicy z indeksami ( k, 0), (k, 1), (k, 2) zawierają liczby d k, e k, hk odpowiednio, gdzie 0 ≤ km − 1).

Wszystkie zmienne są typu int , a typ bazowy wszystkich tablic to double .

Wyjaśnijmy, że „stary” układ współrzędnych oznacza układ zdefiniowany w bibliotece pgraph. Konstrukcja wszystkich obrazów zostanie przeprowadzona w nowym układzie uzyskanym ze starego poprzez przeniesienie równoległe (przesunięcia wzdłuż osi odciętych i rzędnych są równe odpowiednio x c oraz yc) i „kompresja” w ja raz. Zatem punkt, który ma współrzędne w nowym systemie ( x, tak), w starym będzie miał współrzędne ( x l + x c, ja ja + yc). Myślę, że zbędne jest wyjaśnianie, jakiego rodzaju przechowywanie liczb x c, yc oraz ja odpowiedzialne są odpowiednio zmienne stałe xc , yc i l .

Przechowywanie numerów x 0 i tak 0 zmiennych nie jest przydzielanych, ponieważ we wszystkich przypadkach obrazowania za te liczby przyjmuje się zera.

Generowanie liczb pseudolosowych: funkcja get_random_value()

Funkcja get_random_value() generuje pseudolosową liczbę całkowitą z zakresu od 0 do m− 1 zgodnie ze schematem opisanym wcześniej. Oto kod tej funkcji:

1. int pobierz_losową_wartość() 2. { 3. podwójne r = (podwójne) rand() / RAND_MAX; 4. intc = 1; 5. gdy (s[c]< r && ++c < m) 6. ; 7. powrót c-1; 8. }

Korzystając ze standardowej funkcji biblioteki rand() otrzymujemy liczbę pseudolosową z zakresu od 0 do wartości makra RAND_MAX, dzielimy wynik przez tę wartość i przypisujemy iloraz do zmiennej r (s. 3). Teraz r przechowuje liczbę należącą do przedziału . Można ją w przybliżeniu uznać za wartość zmiennej losowej równomiernie rozłożonej w tym segmencie.

Wyjaśnijmy, że wartość makra RAND_MAX w naszym przypadku (czyli w przypadku użycia kompilatora MinGW64 w wersji 4.9.2 dla systemów 64-bitowych) wynosi 32767.

Teraz, używając wyszukiwania liniowego z pętlą while, szukamy indeksu największego elementu tablicy s, który jest mniejszy lub równy wartości r plus jeden, i zapisujemy go w zmiennej c (patrz strona 4- 6). Zauważ, że jeśli wartość r wynosi zero, pętla nigdy nie jest wykonywana, a zmienna c zachowuje pojedynczą wartość (patrz strona 4).

Wartość zwracaną przez funkcję można w przybliżeniu uznać za wartość zmiennej losowej T opisane w sekcji wymienionej powyżej.

Generowanie obrazu: funkcja main()

A oto kod funkcji main():

1. int main() 2. { 3. obraz *img = utwórz_obraz(w,h); 4. podwójne x = 0 , y = 0 ; 5. dla (int i = 0 ; i< n; i++) 6. { 7. int r = pobierz_losową_wartość(); 8. podwójne x1 = f[r] * x + f[r] * y + f[r]; 9. podwójne y1 = g[r] * x + g[r] * y + g[r]; 10.x=x1; 11.y=y1; 12. set_color(img, round(x * l) + xc, round(y * l) + yc, CZARNY); 13. } 14. save_to_file(img, "out.bmp" ); 15.darmowe(zdjęcie); 16. powrót 0 ; 17. }

Utwórz obraz o określonych wymiarach (str. 3). Przydziel pamięć na zmienne x oraz tak, który będzie przechowywać bieżące elementy sekwencji i zainicjować je na zero (s. 4). Przypomnę, że jako liczby x 0 i tak 0 , biorących udział w obliczaniu pierwszych członków każdej z sekwencji, brane są zera.

Oblicz w pętli for pierwszy n członków każdej sekwencji (strony 5-13). Najpierw otrzymujemy liczbę pseudolosową i zapisujemy ją do r (s. 7). Następnie obliczamy aktualne wartości członków obu ciągów, umieszczając je w zmiennych tymczasowych x1 i y1 (s. 8, 9). Podczas obliczeń używamy stałych, które pojawiają się w funkcjach iteracyjnych i są przechowywane w tablicach f i g . Wybór jednej lub drugiej pary zestawów współczynników (a tym samym pary funkcji iteracyjnych) zależy od wartości r , która jest używana jako pierwsze wskaźniki elementów tablicy biorących udział w obliczeniach.

Obliczone wartości prądu przepisujemy do zmiennych x i y (s. 10, 11). Współrzędne punktów zawarte w tych zmiennych są konwertowane na współrzędne oryginalnego układu współrzędnych, zaokrąglane do liczb całkowitych, a punkt z otrzymanymi współrzędnymi jest nanoszony na obraz w kolorze czarnym (s. 12).

Po zakończeniu cyklu należy zapisać wygenerowany obraz w pliku „out.bmp” (s. 14) i zwolnić pamięć zajmowaną przez obraz (s. 15). To kończy funkcję.

Budowanie obrazu trójkąta Sierpińskiego

Trójkąt Sierpińskiego to zbiór punktów uzyskanych ze wszystkich punktów pewnego początkowego trójkąta równobocznego w następujący sposób. Trójkąt jest podzielony trzema środkowymi liniami na 4 trójkąty, po czym usuwa się trójkąt „środkowy”. Ponadto ta sama operacja jest wykonywana z każdym z pozostałych trzech trójkątów równobocznych. Na koniec robimy to samo z uzyskanymi dziewięcioma trójkątami równobocznymi.

Kontynuując opisane operacje do nieskończoności, ostatecznie usuwamy z pierwotnego trójkąta nieskończoną liczbę trójkątów równobocznych, których suma pól jest równa powierzchni pierwotnego. Pozostałe punkty tworzą linię zwaną Trójkąt Sierpińskiego, który odgrywa ważną rolę w teorii mnogości.

Książka Sedgwicka i innych autorów proponuje następującą metodę konstruowania obrazu trójkąta Sierpińskiego. Rozważmy 3 punkty na płaszczyźnie, które są wierzchołkami trójkąta równobocznego, na przykład punkty o współrzędnych 0 , 0 , 0 , 1 , 1 / 2 , 3 / 2 w prostokątnym układzie współrzędnych kartezjańskich. Wybieramy losowo (z równymi prawdopodobieństwami) jeden z trzech wierzchołków trójkąta i budujemy punkt dzielący na pół odcinek łączący wierzchołek o współrzędnych 0, 0 i wierzchołek wybrany losowo. To pierwszy punkt naszego wizerunku.

Powyższy algorytm można umieścić w opisanym wcześniej schemacie konstrukcji obrazu, który obejmuje sekwencje losowe i funkcje iteracyjne.

Potrzebujemy 3 par funkcji iteracyjnych. Ich indeksy 0, 1, 2 należy dobierać z prawdopodobieństwami odpowiednio 1/3, 1/3, 1/3. Same funkcje iteracyjne są pokazane poniżej.

F 0 x , y = 1/2 x , g 0 x , y = 1/2 y , f 1 x , y = 1/2 x + 1/2 , g 1 x , y = 1/2 y , f 2 x , y = 1/2 x + 1/4 , g 2 x , y = 1/2 y + 3/4 .

Wstawmy teraz do naszego programu deklaracje zmiennych globalnych stałych i tablice stałych odpowiadające danym prawdopodobieństwu i zadanym funkcjom iteracyjnym. Ale najpierw zdefiniujmy makro TRIANGLE, umieszczając następującą instrukcję w pliku main.c po instrukcji #include

#define TRÓJKĄT

Po instrukcjach wklej do pliku następujący kod:

// Trójkąt Sierpińskiego #ifdef TRÓJKĄT const int n = 100000 ; //liczba iteracji const int w = 620 , h = 550 ; //wymiary obrazu const int xc = 10 , yc = 10 ; // współrzędne początku nowego układu współrzędnych w starym const int l = 600 ; //Stopień sprężania const int m = 3 ; //liczba par funkcji iteracyjnych const double s = (0, 0,3333333, 0,6666667); //tablica sum prawdopodobieństw const double f = ((0.5 , 0.0 , 0.0 ), //tablica współczynników dla funkcji f(x,y), {0.5 , 0.0 , 0.5 }, //używane do obliczenia x {0.5 , 0.0 , 0.25 }}; const double g = ((0.0 , 0.5 , 0.0 ), //tablica współczynników dla funkcji g(x,y), {0.0 , 0.5 , 0.0 }, //używane do obliczenia y {0.0 , 0.5 , 0.4330127 }}; #endif

Powyższy fragment kodu (bez dyrektyw preprocesora) zostanie skompilowany tylko wtedy, gdy zostanie zdefiniowane (i jest zdefiniowane) makro TRIANGLE. Oczywiście stałe, które można przedstawić tylko za pomocą nieskończonych ułamków dziesiętnych (racjonalnych lub nieracjonalnych), zostały zaokrąglone.

W wyniku kompilacji i wykonania programu w katalogu głównym pliku wykonywalnego pojawia się plik graficzny out.bmp zawierający następujący obraz:

Budowanie wizerunku paproci Barnsley

Kolejny obraz, którego budowę opisano w książce Sedgwicka i innych, to obraz paproci Barnsley. Teraz potrzebujemy 4 par funkcji iteracyjnych. Ich indeksy 0, 1, 2, 3 zostaną wybrane z prawdopodobieństwami odpowiednio 0,01, 0,85, 0,07, 0,07. A oto same funkcje iteracyjne:

F 0 x , y = 0,5 , g 0 x , y = 0 , 16 y , f 1 x , y = 0 , 85 x + 0, 04 y + 0 , 075 , g 1 x , y = - 0 , 04 x + 0 , 85 y + 0 , 18 , f 2 x , y = 0 , 2 x - 0 , 26 y + 0 , 4 , g 2 x , y = 0 , 23 x + 0 , 22 y + 0 , 045 , f 3 x , y = - 0 , 15 x + 0 , 28 y + 0,575 , g 3 x , y = 0 , 26 x + 0 , 24 y - 0, 086 .

Wprowadzamy teraz zmiany w programie. Instrukcja #define zostaje zastąpiona instrukcją

#define FERN

A po bloku #ifdef -wstawiamy następujący fragment kodu:

// Paproć Barnsley #ifdef PARK const int n = 100000 ; const int l = 600 ; const int m = 4 ; const double s = (0 , 0,01 , 0,86 , 0,93 ); const double f = ((0.0 , 0.0 , 0.5 ), {0.85 , 0.04 , 0.075 }, {0.2 , -0.26 , 0.4 }, {-0.15 , 0.28 , 0.575 }}; const double g = ((0,0 , 0,16 , 0,0 ), {-0.04 , 0.85 , 0.18 }, {0.23 , 0.22 , 0.045 }, {0.26 , 0.24 , -0.086 }}; #endif

Wynikiem kompilacji i uruchomienia programu jest następujący obraz:

Budowanie obrazu drzewa

Teraz zbudujmy coś, co w książce Sedgwicka i innych nazywa się „drzewem”, chociaż to, co okazuje się być przedstawione, przypomina raczej zbiór drzew różnej wielkości. Tym razem w procesie iteracyjnym weźmie udział 6 par funkcji iteracyjnych. Ich indeksy 0, 1, 2, 3, 4, 5 zostaną wybrane z prawdopodobieństwami odpowiednio 0,1, 0,1, 0,2, 0,2, 0,2, 0,2. Oto funkcje:

F 0 x , y = 0,55 , g 0 x , y = 0,6 y , f 1 x , y = - 0,05 x + 0,525 , g 1 x , y = - 0,5 x + 0 , 75 , f 2 x , y = 0 , 46 x - 0 , 15 y + 0 , 27 , g 2 x , y = 0 , 39 x + 0 , 38 y + 0 , 105 , f 3 x , y = 0 , 47 x - 0 , 15 r + 0 , 265 , g 3 x , y = 0 , 17 x + 0 , 42 r + 0 , 465 , f 4 x , y = 0 , 43 x + 0 , 26 r + 0 , 29 , g 4 x , y = - 0 , 25 x + 0 , 45 y + 0 , 625 , f 5 x , y = 0 , 42 x + 0 , 26 y + 0 , 29 , g 5 x , y = - 0,35x + 0,31 roku + 0,525.

#definiuj DRZEWO

Po ostatnim bloku #ifdef wklej następujący kod:

//Drewno #ifdef DRZEWO const int n = 100000 ; const int w = 620 , h = 620 ; const int xc = 0 , yc = 10 ; const int l = 600 ; const int m = 6 ; const double s = (0 , 0,1 , 0,2 , 0,4 , 0,6 , 0,8 ); const double f = ((0.0 , 0.0 , 0.55 ), {-0.05 , 0.0 , 0.525 }, {0.46 , -0.15 , 0.27 }, {0.47 , -0.15 , 0.265 }, {0.43 , 0.26 , 0.29 }, {0.42 , 0.26 , 0.29 }}; const double g = ((0,0 , 0,6 , 0,0 ), {-0.5 , 0.0 , 0.75 }, {0.39 , 0.38 , 0.105 }, {0.17 , 0.42 , 0.465 }, {-0.25 , 0.45 , 0.625 }, {-0.35 , 0.31 , 0.525 }}; #endif

Wyjściem skompilowanego programu jest poniższy obrazek:

Ostatnim obrazem, jaki zbudujemy, kierując się książką Sedgwicka, jest obraz koralowca. Potrzebujemy 3 par funkcji iteracyjnych. Ich indeksy 0, 1, 2 zostaną wybrane z prawdopodobieństwami odpowiednio 0,4, 0,15, 0,45. Funkcje iteracyjne podano poniżej.

F 0 x, y = 0,3077 x - 0,5315 y + 0,8863, g 0 x, y = - 0,4615 x - 0. x - 0, 0769 y + 0,2166, g 1 x, y = 0,1538 x - 0, 4476 y + 0,3384, f 2 x, y = 0,5455 y + 0,0106, g 2 x, y = 0,6923 x - 0,1958 y + 0,3808 .

Zastąp instrukcję #define instrukcją

#definiuj KORAL

Po ostatnim bloku #ifdef -wstaw nowy blok:

//Koral #ifdef KORAL const int n = 100000 ; const int w = 620 , h = 620 ; const int xc = 10 , yc = 10 ; const int l = 600 ; const int m = 3 ; const double s = (0 , 0,4 , 0,55 ); const double f = ((0,3077 , -0,5315 , 0,8863 ), {0.3077 , -0.0769 , 0.2166 }, {0.0 , 0.5455 , 0.0106 }}; const double g = ((-0,4615 , -0,2937 , 1,0962 ), {0.1538 , -0.4476 , 0.3384 }, {0.6923 , -0.1958 , 0.3808 }}; #endif

Oto obraz, który otrzymujemy w wyniku kompilacji i wykonania programu:

Wniosek

Nie wiem jak wy, ale ciekawiło mnie, jak zbiory formuł matematycznych „zamieniają się” w bardzo zabawne obrazy. Zaskakuje mnie również to, że ci, którzy wymyślili to wszystko, potrafili tak dobrać prawdopodobieństwa i stałe związane z funkcjami iteracyjnymi, aby uzyskać tak niesamowite zdjęcia! Sposób doboru wszystkich tych liczb (z wyjątkiem przypadku trójkąta Sierpińskiego) jest dla mnie zupełnie niezrozumiały!

Zauważam, że sądząc po obrazach, trójkąt Sierpińskiego i paproć Barnsley to fraktale. Najprawdopodobniej to samo można powiedzieć o „drzewie” i „koralu”, ale ich fraktalna natura jest chyba nieco mniej oczywista.

Korzystając z poniższego linku, jak zawsze, możesz pobrać kod źródłowy programu omówionego w artykule. Plik main.c zawiera cztery instrukcje #define, z których każda odpowiada jednemu z czterech obrazów. Trzy z nich zostały skomentowane. Oczywiste jest, że aby przejść od jednego obrazu do drugiego, należy skomentować niekomentowaną instrukcję i odkomentować jeden z komentowanych. Cóż, masz pomysł...

Za pomocą prostego algorytmu możesz zapewnić, że obrazy omówione w artykule płynnie „zmienią się” w siebie. Ale to temat na osobny artykuł.

Greccy geometrzy szczycili się logiczną czystością; jednak jeśli chodzi o przestrzeń fizyczną, kierowali się intuicją. Jednym z aspektów greckiej geometrii, na który szczególny wpływ miały względy fizyczne, była teoria konstrukcji. Znaczną część elementarnej geometrii linii prostych i okręgów można postrzegać jako teorię konstrukcji z linijką i cyrklami. Już sama nazwa przedmiotu, linie i okręgi, odzwierciedla narzędzia, które zostały użyte do ich wykonania. I wiele podstawowych problemów geometrii, takich jak przecięcie odcinka linii lub kąta,

budowanie pionu lub rysowanie okręgu przez trzy podane punkty można rozwiązać budując za pomocą linijki i cyrkla.

Po wprowadzeniu współrzędnych łatwo jest pokazać, że punkty, które można zbudować z punktów, mają współrzędne w zbiorze liczb utworzonym ze współrzędnych przez operacje i [por. Muaz (1963) lub ćwiczenia do sekcji 6.3. Pierwiastki kwadratowe pojawiają się oczywiście dzięki twierdzeniu Pitagorasa: jeśli wykreśla się punkty, to wykreśla się odległość między nimi (rozdział 1.6 i rysunek 2.4). Odwrotnie, konstrukcja jest możliwa dla dowolnej długości I (Ćwiczenie 2.3.2).

Rysunek 2.4: Budowanie odległości

Patrząc z tego punktu widzenia, konstrukcje z linijką i kompasem wyglądają wyjątkowo i jest mało prawdopodobne, że takie liczby zostaną podane np. Jednak Grecy bardzo się starali rozwiązać ten konkretny problem, który był znany jako podwajanie sześcian (tak zwany, ponieważ aby podwoić objętość sześcianu, trzeba było pomnożyć bok przez inne niesławne problemy to trisekcja kąta i kwadratura koła. Ostatnim problemem było skonstruowanie kwadratu o równej powierzchni do danego okręgu lub skonstruować liczbę równą tej samej. Wydaje się, że nigdy nie porzucili tych celów, chociaż rozpoznali możliwość rozwiązania negatywnego i dopuszczali rozwiązania mniej elementarnymi sposobami. W następnych rozdziałach zobaczymy niektórzy z nich.

Niemożność rozwiązania tych problemów za pomocą linijek i cyrkla pozostawała nieudowodniona aż do XIX wieku. W przypadku podwojenia sześcianu i trisekcji kąta niemożność wykazał Vantzel (1837). Zasługę rozwiązania tych problemów, z którymi najlepsi matematycy zmagali się od 2000 lat, rzadko przypisuje się Wantzelowi, być może dlatego, że jego metody zostały zastąpione przez potężniejszą teorię Galois.

Niemożność kwadratury koła udowadnia Lindemann (1882) w sposób bardzo rygorystyczny, nie tylko za pomocą nieokreślenie racjonalnych operacji i pierwiastków kwadratowych; jest również transcendentalny, to znaczy nie jest pierwiastkiem żadnego równania wielomianowego ze współczynnikami wymiernymi. Podobnie jak praca Wantzela, był to rzadki przykład znaczącego wyniku udowodnionego przez drobnego matematyka. W przypadku Lindemanna wyjaśnieniem może być:

W tym ważnym kroku został już zrobiony, kiedy Hermite (1873) udowodnił transcendencję.Dostępne dowody na oba te wyniki można znaleźć u Kleina (1924). Późniejsza kariera Lindemanna była matematycznie nijaka, a nawet żenująca. Odpowiadając sceptykom, którzy uważali, że jego sukces był szczęśliwym trafem, skupił się na najsłynniejszym nierozwiązanym problemie matematycznym, Wielkim Twierdzeniu Fermata (o genezie tego problemu patrz rozdział 11). Jego wysiłki zakończyły się fiaskiem w serii nieprzekonujących artykułów, z których każdy poprawiał błąd w poprzednim. Fritsch (1984) napisał interesujący artykuł biograficzny o Lindemann.


I. Wstęp.

II. Główną częścią:

    Budowa segmentu równego iloczynowi dwóch pozostałych za pomocą cyrkla i linijki:

    1. pierwsza metoda budowy;

      druga metoda budowy;

      trzeci sposób budowania,

d) czwarta metoda budowy.

2) Budowa odcinka równego stosunkowi pozostałych dwóch za pomocą cyrkla i linijki:

      pierwsza metoda budowy;

      druga metoda budowy.

Wniosek.

Aplikacja.

Wstęp

Konstrukcje geometryczne lub teoria konstrukcji geometrycznych to gałąź geometrii, w której pytania i metody konstruowania figur geometrycznych są badane przy użyciu określonych elementów konstrukcyjnych. Konstrukcje geometryczne są badane zarówno w geometrii Euklidesa, jak iw innych geometriach, zarówno na płaszczyźnie, jak iw przestrzeni. Klasycznymi narzędziami konstrukcyjnymi są cyrkle i linijka (jednostronna matematyczna), jednak są konstrukcje z innymi narzędziami: tylko jeden cyrkiel, tylko jedna linijka, jeśli okrąg i jego środek narysowane są na płaszczyźnie, tylko jedna linijka z równoległością krawędzie itp.

Wszystkie problemy konstrukcyjne opierają się na postulatach konstrukcyjnych, to znaczy na najprostszych elementarnych problemach konstrukcyjnych, a problem uważa się za rozwiązany, jeśli sprowadzi się do skończonej liczby tych najprostszych problemów postulacyjnych.

Oczywiście każdy instrument ma swoją siłę konstruktywną – własny zestaw postulatów. Wiadomo więc, że nie można podzielić segmentu za pomocą jednej linijki na dwie równe części, ale za pomocą kompasu można.

Sztuka konstruowania figur geometrycznych za pomocą cyrkla i linijki była bardzo rozwinięta w starożytnej Grecji. Jednym z najtrudniejszych zadań konstrukcyjnych, które już umieli wykonać, była budowa okręgu stycznego do trzech podanych okręgów.

W szkole uczą się kilku najprostszych konstrukcji z cyrklem i linijką (jednostronnych bez podziałów): budowa linii prostej przechodzącej przez dany punkt i prostopadłej lub równoległej do danej prostej; dzielenie danego kąta na pół, dzielenie odcinka na kilka równych części za pomocą twierdzenia Talesa (w rzeczywistości dzielenie odcinka przez liczbę naturalną); konstrukcja odcinka większego od podanego o liczbę całkowitą razy (w zasadzie pomnożenie odcinka przez liczbę naturalną). Jednak nigdy nie spotkaliśmy się z problemem, w którym za pomocą cyrkla i linijki trzeba byłoby pomnożyć odcinek przez odcinek, czyli zbudować odcinek równy iloczynowi dwóch danych odcinków, albo podzielić odcinek przez segment, to znaczy skonstruować segment równy stosunkowi dwóch pozostałych segmentów. Ten problem wydał nam się bardzo interesujący i postanowiliśmy go zbadać, spróbować znaleźć rozwiązanie i możliwość zastosowania metody znalezionego rozwiązania do rozwiązywania innych problemów, na przykład w matematyce i fizyce.

Przy rozwiązywaniu problemów konstrukcyjnych tradycyjna metodologia zaleca cztery etapy: analiza, konstrukcja, dowód i badania. Jednak wskazany schemat rozwiązywania problemów konstrukcyjnych uważany jest za bardzo akademicki, a jego wdrożenie zajmuje dużo czasu, dlatego często pomijane są poszczególne etapy tradycyjnego schematu rozwiązywania problemu, na przykład etapy dowodu , Badania. W naszej pracy w miarę możliwości wykorzystywaliśmy wszystkie cztery etapy, a i to tylko tam, gdzie była na to potrzeba i celowość.

I ostatnia rzecz: metoda, którą znaleźliśmy do skonstruowania wyżej wymienionych odcinków, polega na wykorzystaniu, oprócz cyrkla i linijki, arbitralnie wybranego pojedynczego odcinka. Wprowadzenie przedziału jednostkowego jest również podyktowane tym, że konieczne jest przynajmniej potwierdzenie słuszności wynalezionej przez nas metody znajdowania odcinka na konkretnych konkretnych przykładach.

PROBLEM OGÓLNY I

Używając cyrkla i linijki, skonstruuj segment równy iloczynowi dwóch pozostałych segmentów.

Notatka:

przypuszczalny:

    Władca jest jednostronny, bez podziałów.

    Podany jest segment o długości jednostki.

Nauka.

1. Rozważ proste y=2x-2 2 i y=3x-3 2 i spróbuj znaleźć współrzędne punktu przecięcia tych linii metodami geometrycznymi i analitycznymi:

a
) metoda geometryczna ( Rys.1) wykazały, że współrzędne punktu A przecięcia tych prostych: „5” to odcięta, „6” to rzędna, czyli AE=5, AD=6.

b) metoda analityczna potwierdza ten wynik, tj. A (5;6) - punkt przecięcia linii.

Rzeczywiście, rozwiązując układ równań

y=6 А(5;6) - punkt przecięcia prostych.

2. Rozważmy segment: OB=2, OS=3, AD=6, AE=5.

Można przyjąć, że BP=OV×OS, ponieważ 6=2×3; AE \u003d OB + OS, ponieważ 5=2+3 , gdzie

2=OB-nachylenie równania y=2x-2 2 , 3=OS - nachylenie równania y=3x-3 2 , AD=y A, OD=x A - współrzędne punktu A przecięcia naszego linie.

Swoje założenie sprawdzimy na ogólnym przykładzie metodą analityczną, tj. na równaniach prostych y=mx-m 2 i y=nx-n 2 (gdzie m≠n) sprawdź, czy punkt przecięcia prostych ma współrzędne:

y=nx-n 2 nx-n 2 =mx-m 2 x=(m 2 -n 2)÷(m-n)=m+n i y=mx-m 2 =m(m+n)-m 2 = mni

współrzędne punktu A przecięcia linii, gdzie m i n są nachyleniami tych linii itp.

3. Pozostaje znaleźć metodę konstruowania segmentu. HELL=OB×OC=m∙n=y A - rzędne punktu A przecięcia linii Y=mx-m 2 i Y=nx-n 2, gdzie m≠n i m=OB, n=OC- odcinki wykreślone na osi oh. A do tego musimy znaleźć metodę konstruowania prostych Y=mx-m 2 i Y=nx-n 2 . Z rozumowania wynika, że ​​te proste muszą przechodzić przez punkty B i C odcinków OB=m i OC=n, które należą do osi x.

Uwaga 1. Powyższe oznaczenia segmentów odpowiadają rys. 1 „Załączniki”

Pierwszy sposób konstruowanie odcinka AD=mn, gdzie m>1 jednostka, n>1 jednostka, m≠n.

pojedynczy segment

dowolny segment, m>1ed., n>1ed.

n jest dowolnym segmentem, gdzie m≠n.

Budynek (rys.2)

    Narysujmy linię prostą

    Na OH odkładamy OA 1 = m

    Na OX odkładamy A 1 C 1 \u003d 1 jednostkę

    Skonstruujmy C 1 B 1 =m, gdzie C 1 B 1 ┴ OH

    Narysujmy prostą A 1 B 1, której równanie to y=mx-m2 w osiach współrzędnych XOU (skala na osiach jest taka sama).

Notatka:


Rys.2

Uwaga 1.

Rzeczywiście, styczna nachylenia tej prostej tgά1 = C1B1/A1C1=m/1ed=m, która przechodzi przez punkt A1 odcinka OA1=m.

Podobnie budujemy linię prostą, której równanie to Y \u003d nx-n 2.

6. Na osi OX odkładamy OA 2 \u003d n (punkt A 2 przypadkowo zbiegł się z punktem C1).

7. Na osi OX odłóż na bok A 2 C 2 \u003d 1 jednostkę.

8. Budujemy B 2 C 2 \u003d n, gdzie B 2 C 2 ┴ OH.

9. Narysujmy linię prostą B 2 A 2, której równanie to Y \u003d nx-n 2.

Uwaga 2. Rzeczywiście, nachylenie tej linii prostej tg ά 2 =C 2 B 2 /A 2 C 2 =n/1ed=n, która przechodzi przez odcinek t. A2 OA2 =n.

10. Mamy t.A (m + n; mn) - punkt przecięcia linii Y \u003d mx-m 2 i Y \u003d nx-n 2

11. Narysujmy AD prostopadle do x, gdzie D należy do osi x.

12. Segment AD \u003d mn (rzędna punktu A), tj. żądany segment.

Uwaga 3. a) rzeczywiście, jeśli w naszym przykładzie n=4 jednostki, m=3 jednostki, to powinno być BP=mn=3 jednostki 4 jednostki=12 jednostek. Tak się dla nas wyszło: BP = 12 jednostek; b) linia B 1 B 2 nie została wykorzystana w tej konstrukcji. W B też.

Istnieją co najmniej trzy różne sposoby konstruowania segmentu AD=mn.

Drugi sposób konstrukcja segmentu AD=mni, gdziem> 1 jednostka,n> 1 jednostka,morazn- każdy.

Analiza

Analiza wcześniej wykonanego rysunku (rys. 2), gdzie przy użyciu znalezionej metody konstruowania linii prostych Y=mx-m 2 i Y=nx-n 2 znaleziono t.A (m+n; mn) (jest to pierwsza metoda ), sugeruje, że m.A (m + n; mn) można znaleźć, konstruując dowolną z tych linii (U \u003d mx-m 2 lub U \u003d nx-n 2) i prostopadłą AD, gdzie AD jest prostopadłą do OX , AD \u003d mn, D należy do osi OH. Następnie żądany punkt A (m + n; mn) jest punktem przecięcia którejkolwiek z tych linii i prostopadłej AD. Wystarczy znaleźć kąty nachylenia tych prostych, których styczne według współczynników nachylenia są równe m i n, tj. tan ά 1= m i tan ά 2 =n. Biorąc pod uwagę, że tg ά 1 =m/1ed=m oraz tg ά 2 =n/1ed=n, gdzie 1ed jest jednostkowym odcinkiem, można łatwo skonstruować proste o równaniach Y=mx-m 2 i Y=nx-n 2 .

pojedynczy segment

n n>1 jednostek, m i n to dowolne liczby.

P

konstrukcja (rys.3)

Rys.3

1. Narysujmy prostą linię OX.

2. Na osi OX odkładamy segment OA 1 \u003d m.

3. Na osi OX odkładamy segment A 1 D \u003d n.

4. Na osi OX odkładamy segment A 1 C 1 \u003d 1 jednostkę.

5. Budujemy C 1 B 1 \u003d m, gdzie C 1 B 1 ┴ OH.

6. Narysujmy prostą A1B1, której równanie to Y=mx-m2, w osiach współrzędnych XOU (podziałka na osiach jest taka sama).

7. Przywróć prostopadłość do OX w punkcie D.

8. Otrzymujemy punkt A (m + n; mn) - punkt przecięcia linii Y \u003d mx-m2 i prostopadłej AD

9. Segment AD=mn, czyli żądany segment.

Wniosek: Ta druga metoda jest bardziej uniwersalna niż pierwsza, ponieważ pozwala znaleźć punkt A (m + n; mn), a gdy m \u003d n> 1 jednostka, to współrzędne tego punktu to A (2m; m 2 ) i AD \u003d m 2.

Innymi słowy, ta metoda pozwala znaleźć odcinek równy kwadratowi danego, którego długość jest większa niż 1 jednostka.

Komentarz: Rzeczywiście, jeśli w naszym przykładzie m=3 jednostki, n=5 jednostek, to powinno być AD=mn=3 jednostki×5 jednostek=15 jednostek. Tak to zrobiliśmy: AD=15 jednostek.

Trzeci sposób konstruowanie segmentuOGŁOSZENIE= mni, gdziem> 1 jednostka,n>1 jednostka imn.

Korzystając z rysunku nr 2, narysuj linię przerywaną prostą linię B 1 B 2 aż przetnie się z OX w punkcie E € OX, a następnie prostą B 1 B ┴ B 2 C 2, a następnie

B 1 B \u003d C 1 C 2 \u003d OS 2 -OS 1 \u003d (n + 1 jednostka) - (m + 1 jednostka) \u003d n-m i B 2 B \u003d B 2 C 2 -B 1 C 1 \u003d m-n => B 1 В=В 2 В=>∆В 1 ВВ 2 - równoramienne, prostokątne>∆EC 1 В 1 - równoramienne, prostokątne => ά=45º

Dlatego OS 1 \u003d m + 1 jednostka i EU 1 \u003d B 1 C 1 \u003d m, następnie OE \u003d OS 1 -EC 1 \u003d m + 1 jednostka-m \u003d 1 jednostka.

Z rozumowania wynika, że ​​punkty B 1 i B 2 można znaleźć w inny sposób, ponieważ są to punkty przecięcia prostej EB 1 narysowanej pod kątem ά=45º do osi ОХ i prostopadłych do ОХ: В 1 С 1 i В 2 С 2 oraz jednostka OE=1. , będziemy mieli następującą metodę budowy.

Pojedyncze cięcie.

n n>1 jednostka, oraz m≠n.

Budowa (rys.4)

1. Narysujmy prostą linię OX.

5. Zbudujmy!
ά \u003d C 1 EV 1 \u003d 45º, gdzie B 1 jest punktem przecięcia prostopadłej C 1 B 1 z bokiem ά \u003d 45º.

7. Odłóż na bok OA 2 \u003d n, gdzie A 2 € OX.

8. Odłóż na bok A 2 C 2 \u003d 1 jednostkę, gdzie C 2 € OH.

9. Przywróć prostopadłą C 2 B 2 do osi OX w punkcie C 2, gdzie B 2 jest punktem przecięcia prostopadłej z prostą EB 1.

10. Rysujemy linię A 2 B 2, której równanie to Y \u003d nx-n 2, aż przetnie się z linią A 1 B 1 w punkcie A.

11. Obniżamy prostopadłą do OX z punktu A i otrzymujemy AD równe mn, gdzie D € OX, ponieważ w płaszczyznach współrzędnych osi XOY współrzędne punktu A (m + n; mn).


Rys.4

Komentarz: Wada tej metody jest taka sama jak w przypadku pierwszej metody budowy, gdzie budowa jest możliwa tylko pod warunkiem m≠n.

Czwarty sposób konstruowanie segmentuOGŁOSZENIE= mni, gdziemorazn- dowolny, większy niż pojedynczy segment.

Pojedyncze cięcie.

n n>1 jednostek, m i n są dowolne.

Budowa (rys.5)


Rys.5

1. Narysujmy prostą linię OX.

2. Odłóż na bok OE = 1 jednostka, gdzie E € OX.

3. Naciśnij EC 1 =m, gdzie C 1 € OH.

4. Przywróć prostopadłość w punkcie C 1 do osi OX.

5. Zbudujmy ά=C 1 EV 1 =45º, gdzie B 1 jest punktem przecięcia prostopadłej C 1 B 1 z bokiem ά=45º.

6. Odkładając OA 1 \u003d m, rysujemy linię prostą A 1 B 1, której równanie to Y \u003d mx-m 2, A € OH.

7. Odłóż na bok A 1 D=n, gdzie D € OX.

8. Przywróć prostopadłość w punkcie D, aż przetnie się w punkcie A z linią A 1 B 1, której równanie to Y \u003d mx-m 2.

9. Odcinek prostopadłego AD = iloczyn odcinków m i n, czyli AD = mn, ponieważ A (m + n; mn).

Komentarz: Ta metoda wypada korzystnie w porównaniu z pierwszą i trzecią metodą, gdzie m≠n, ponieważ mamy do czynienia z dowolnymi segmentami m i n, segment jednostkowy może być mniejszy niż tylko jeden z nich zaangażowany na początku konstrukcji (mamy m> 1 jednostka).

Ogólny problem II

Używając cyrkla i linijki mierniczej, skonstruuj odcinek linii równy stosunkowi dwóch pozostałych odcinków linii.

Notatka:

segment jednostki jest mniejszy niż segment dzielnika.

Pierwszy sposób na skonstruowanie segmentun= k/ m, gdziem>1 jednostka

Pojedyncze cięcie.

Budynek (Rys.6)

2. Na OU odkładamy OM = k.

3. Odłóż OA 1 na OX = m.

4. W OH odłóż na bok A 1 C 1 \u003d 1 jednostkę.

5. Zbudujmy С 1 В 1 \u003d m, gdzie С 1 В 1 ┴ ОХ.

6. Narysuj linię prostą A 1 B 1, której równanie to y=mx-m2 w osiach współrzędnych XOU (podziałka na osiach jest taka sama, równa 1 jednostce).

7. Przywróć prostopadłość MA w punkcie M do osi OY, gdzie A jest punktem przecięcia MA z linią prostą A 1 B 1 (tzn. A € A 1 B 1).

8. Opuść prostopadłą z punktu A do osi OX, aż przetnie się z osią OX w punkcie D. Odcinek AD=OM=k=mn.

9. Segment A 1 D \u003d n - pożądany segment, równy n \u003d k / m.

Rys.6

Dowód:

1. Równanie prostej A 1 B 1 to tak naprawdę Y=mx-m 2, przy Y=0 mamy 0=mx-m 2 => x=m=OA 1, a nachylenie wynosi tg

2. In ∆ADA 1 tg 1 D=AD/A 1 D=B 1 C 1 /A 1 C 1 =>A 1 D=AD×A 1 C 1 /B 1 C 1 =k×1jednostka/m= mn /m=n, tj. A 1 D=n=k/m jest pożądanym segmentem.

Komentarz. Rzeczywiście, jeśli w naszym przykładzie m=3 jednostki, k=15 jednostek, to powinno być A1 D=n=k/m=15 jednostek/3 jednostki=5 jednostek. Właśnie to zrobiliśmy.

Drugi sposób konstruowanie segmentun= k/ m, gdziem>1 jednostka

Pojedyncze cięcie.



Rys.7

1. Budujemy osie współrzędnych XOU.

2. Na OU odkładamy OM = k.

3. Odłóż na bok OE \u003d 1 jednostkę, gdzie E € OX.

4. Odłóż na bok EC 1 \u003d m, gdzie C 1 € OX.

5. Przywróć prostopadłość w punkcie C 1 do osi OX.

6. Budujemy C 1 EB 1 \u003d 45º, gdzie B 1 jest punktem przecięcia prostopadłej C 1 B 1 z bokiem kąta C 1 EB 1 \u003d 45º.

7. Odłóż OA 1 na OX = m.

8. Narysuj linię prostą A 1 B 1, której równanie to y=mx-m2 w osiach współrzędnych XOU (podziałka na osiach jest taka sama, równa 1 jednostce).

9. Przywróć prostopadłość MA w punkcie M do osi OY, gdzie A jest punktem przecięcia MA z linią prostą A 1 B 1 (tzn. A € A 1 B 1).

10. Opuść prostopadłą z punktu A do osi OX, aż przetnie się z osią OX w punkcie D. Odcinek AD=OM=k=mn.

11. Odcinek A 1 D=n - żądany odcinek równy n=k/m.

Dowód:

1.∆B 1 C 1 E - prostokątny i równoramienny, ponieważ C 1 EB 1 \u003d 45º \u003d\u003e B 1 C 1 \u003d EU 1 \u003d m.

2.A 1 C 1 \u003d OS 1 - OA 1 \u003d (OE + EC1) - OA 1 \u003d 1 jednostka + m-m \u003d 1 jednostka.

3. Równanie prostej A 1 B 1 to tak naprawdę Y=mx-m 2, przy Y=0 mamy 0=mx-m 2 => x=m=OA 1, a nachylenie wynosi tg

4.V ∆ADA 1 tg 1 D=AD/A 1 D=B 1 C 1 /A 1 C 1 => A 1 D=AD×A 1 C 1 /B 1 C 1 =k ×1 jednostka/m= mn/m=n, tj. A 1 D=n=k/m jest pożądanym segmentem.

Wniosek

W naszej pracy znaleźliśmy i zbadaliśmy różne metody konstruowania segmentu równego iloczynowi lub stosunkowi dwóch innych segmentów za pomocą cyrkla i linijki, uprzednio podając własną definicję tych operacji z segmentami, ponieważ nie mogliśmy znaleźć w żadnej literatura specjalna nie tylko definiuje mnożenie i dzielenie segmentów, ale nawet wspomina o tych operacjach na segmentach.

Tutaj wykorzystaliśmy prawie wszystkie cztery etapy: analizę, konstrukcję, dowód i badania.

Podsumowując, chcielibyśmy zwrócić uwagę na możliwość wykorzystania znalezionych metod konstruowania segmentów w niektórych działach fizyki i matematyki.

1. Jeśli przedłużysz linie proste y=mx-m 2 i y=nx-n 2 (n>m>0) aż do przecięcia się z osią OS, to możesz otrzymać odcinki równe m 2, n 2, n 2 - m 2 (Rys.8), gdzie OK \u003d m 2, OM \u003d n 2, KM \u003d n 2 - m 2.

R
Rys.8

Dowód:

Jeżeli x=0, to y=0-m 2 => OK=m 2 .

Podobnie udowodniono, że OM= n 2 =>KM=OM-OK= n 2 - m 2 .

2. Ponieważ iloczyn dwóch segmentów jest polem prostokąta o bokach równych tym segmentom, to po znalezieniu segmentu równego iloczynowi dwóch pozostałych reprezentujemy w ten sposób obszar prostokąta w forma odcinka, którego długość jest liczbowo równa temu obszarowi.

3. W mechanice, termodynamice występują wielkości fizyczne, na przykład praca (А=FS, A=PV), liczbowo równe obszarom prostokątów zbudowanych w odpowiednich płaszczyznach współrzędnych, a więc w zadaniach, w których np. jest wymagane do porównania pracy według pól prostokątów, bardzo łatwo jest to zrobić, jeśli te obszary są reprezentowane jako segmenty liczbowo równe powierzchniom prostokątów. A segmenty można łatwo ze sobą porównywać.

4. Rozważana metoda konstrukcji pozwala na budowanie innych odcinków, np. korzystając z układu równań y=mx-m 3 i y=nx-n 3 , można budować odcinki z danymi m i n takimi jak m 2 +mn +n 2 i mn(m+n), ponieważ punkt A przecięcia prostych podanych przez ten układ równań ma współrzędne (m 2 +mn+n 2; mn(m+n), a także można skonstruować segmenty n 3 , m 3 i różnica n 3 - m 3 uzyskana w OS w regionie ujemnym przy X=0.

Dzieła sztuki. ... Wsparcie kompas oraz władcy. Algorytm dzielenia człon AB na pół: 1) połóż nogę kompas do punktu A; 2) zainstaluj zaprawę kompas równy długość człon ...

  • Biografia Pitagorasa

    Biografia >> Matematyka

    ... budynek regularne kształty geometryczne Wsparcie kompas oraz władcy. ... Wsparcie kompas oraz władcy. Więcej niż dwa ... jest równe b/4+p, jedna noga jest równa b/4, oraz inne b/2-str. Z twierdzenia Pitagorasa mamy: (b/4+p)=(b/4)+(b/4-p) lub ...

  • Zespół służy do sekwencyjnego konstruowania krzywych i linii prostych tak, aby koniec poprzedniego obiektu był początkiem następnego obiektu. Budowanie geometrii w ten sposób jest również możliwe z menu Narzędzia → Geometria

    Parametr Opis
    Ten przycisk kończy tworzenie łańcucha elementów geometrycznych. W takim przypadku kontur tych elementów zamyka się, łącząc ostatni element geometryczny z pierwszym punktem łańcucha. Ten przycisk jest aktywny, gdy możliwe jest zamknięcie łańcucha. Na przykład łańcuch nie zadziała, jeśli szeregowo zbudowane zostaną tylko 2 proste segmenty - można je zamknąć tylko 3 prostymi segmentami - uzyskamy trójkąt (minimalna figura). Ale w przypadku krzywej Beziera wystarczą 2 punkty, aby zamknąć kontur za pomocą trzeciego punktu
    OdcinekPolecenia tworzenia linii prostych
    Ten przycisk służy do rysowania dowolnego odcinka linii prostej równoległej do wybranej linii prostej. Ta linia może znajdować się poza budowanym łańcuchem
    Ten przycisk służy do rysowania linii prostej prostopadłej do wybranej linii prostej. Ta linia może znajdować się poza budowanym łańcuchem
    Ten przycisk służy do rysowania odcinka prostego stycznego do wybranej krzywej. Ta krzywa musi znajdować się poza budowanym łańcuchem. W niektórych przypadkach program może oferować kilka opcji konstruowania segmentów stycznych. Aby wybrać jeden z nich lub wszystkie razem, użyj przycisków obiektu Poprzedni lub Następny lub, wskazując żądaną opcję, naciśnij lewy przycisk myszy. Jeśli określisz w polu konkretną długość segmentu Długość, wówczas możliwe staje się skonstruowanie odcinka stycznego, którego drugi punkt może nie leżeć na wybranej krzywej
    ŁukPolecenia tworzenia łuku
    Ten przycisk służy do tworzenia dowolnego łuku poprzez sekwencyjne określanie trzech punktów w oknie graficznym lub na pasku opcji
    Ten przycisk rysuje łuk styczny do poprzedniego elementu w łańcuchu
    zakrzywiona krzywaPolecenia tworzenia krzywej
    Ten przycisk służy do budowania splajnu na podstawie serii punktów.
    Spline wzdłuż biegunówTen przycisk służy do tworzenia splajnu na podstawie liczby punktów granicznych. W tym samym czasie możesz ustawić Waga punkty i Zamówienie Waga określa „siłę przyciągania” krzywej do punktu na krzywej. Im większa waga, tym krzywa bliżej punktu. W rzeczywistości jest to parametr krzywizny krzywej (im większa krzywizna krzywej, tym mniejszy promień gięcia i odwrotnie). Parametr Zamówienie definiuje minimalną liczbę punktów, według których zostanie zbudowana krzywa. Minimalne zamówienie 3 - pozwala zbudować krzywą z trzech punktów

    Tworzenie geometrii za pomocą narzędzia Linia

    Zespół Linia służy do sekwencyjnego konstruowania linii prostych i łuków tak, aby koniec poprzedniego obiektu był początkiem następnego obiektu. Pasek opcji tego polecenia zawiera zdegenerowane menu poleceń . Budowanie geometrii w ten sposób jest również możliwe z menu Narzędzia → Geometria → Linia. Panel opcji tego przycisku zawiera następujące polecenia:

    Parametr Opis
    OdcinekTen przycisk służy do konstruowania dowolnego odcinka linii prostej
    ŁukTen przycisk służy do rysowania łuku stycznego do poprzedniego elementu w łańcuchu. W tym przypadku kierunek tworzenia łuku zmienia się przesuwając kursor w kierunku przeciwnym do punktu początkowego łuku
    Ten przycisk kończy tworzenie łańcucha elementów geometrycznych. Następnie program przechodzi w tryb oczekiwania na wprowadzenie nowego łańcucha.
    Jeśli ten przycisk zostanie naciśnięty, zostanie zbudowany łańcuch elementów. Jeśli ten przycisk nie jest zaznaczony, rysowane są oddzielne elementy (linie lub łuki).

    Budowa krzywych i polilinii

    Tworzenie krzywych jest możliwe z menu Narzędzia → Geometria → Krzywe. Konstrukcja polilinii jest możliwa z menu Narzędzia → Geometria → Polilinia. Krzywa Beziera jest szczególnym przypadkiem krzywej NURBS. Wszystkie te polecenia znajdują się na pasku narzędzi Geometria. Sposoby ich budowy są wymienione poniżej:

    Przycisk Klin ma na celu skonstruowanie krzywej o tej samej nazwie z szeregu punktów. Przyciski prezentowane na pasku opcji Otwórz obiekt oraz zamknięty obiekt pozwalają zbudować odpowiednio otwartą i zamkniętą krzywą, gdy pierwszy i ostatni punkt są połączone. Krzywą zamkniętą można zawsze przełączyć na krzywą otwartą i odwrotnie.

    Splajn posiada rozszerzoną edycję punktów charakterystycznych. Do tego służy przycisk. Edytuj punkty na panelu opcji. Również to polecenie jest automatycznie wywoływane po dwukrotnym kliknięciu lewym przyciskiem myszy na już skonstruowanej krzywej. W tym przypadku punkty krzywej są uzupełniane przez odcinki styczne, które przechodzą przez charakterystyczne punkty krzywej.

    Krzywą można podzielić na części za pomocą poleceń menu Podziel → Krzywa oraz Podziel → Krzywa na N części. Pierwsze polecenie pozwala podzielić wybraną krzywą na 2 części w określonym punkcie. Druga krzywa pozwala podzielić krzywą na kilka równych części. Aby to zrobić, wybierz liczbę części na pasku opcji i określ krzywą do podziału.

    Przesuwając myszą punkty charakterystyczne (punkty kwadratowe) i końce odcinków stycznych (punkty okrągłe) można kontrolować kształt krzywej. Możesz przesuwać te punkty za pomocą strzałek na klawiaturze, w tym celu przesuń kursor do żądanego punktu i naciśnij klawisz Enter. Następnie będzie można poruszać się za pomocą strzałek o krok będący wielokrotnością aktualnego kroku kursora. Możesz także zakończyć przenoszenie, naciskając klawisz Enter. Istnieją 3 możliwości przesuwania punktów charakterystycznych:

    • Poruszaj się w dowolnym kierunku - jeśli kursor wygląda jak cztery ukośne strzałki po najechaniu na punkt
    • Poruszanie się w ograniczonym zakresie kierunków - jeśli kursor wygląda jak cztery prostopadłe strzałki po najechaniu na punkt
    • Przesunięcie kursora powoduje obrót geometrii — jeśli kursor wygląda jak obracające się strzałki po najechaniu na punkt.

    Punkty krzywych można przyciągać do innych obiektów i innych punktów krzywych za pomocą przyciągania globalnego i lokalnego. Włączenie niezbędnego dociągania lokalnego w procesie przesuwania punktu charakterystycznego jest możliwe poprzez naciśnięcie prawego przycisku myszy (lub naciśnięcie SHIFT + F10) i wybranie dociągania z rozwijanego podmenu Wiążący.

    Przycisk Spline wzdłuż biegunów służy do budowania krzywej — splajnu wzdłuż szeregu punktów. Dla tego typu krzywej możesz ustawić Waga z punkty i Zamówienie krzywa na pasku opcji. Parametr Waga określa „siłę przyciągania” krzywej do punktu na krzywej. Im większa waga, tym krzywa bliżej punktu. W rzeczywistości jest to parametr krzywizny krzywej (im większa krzywizna krzywej, tym mniejszy promień gięcia i odwrotnie). Parametr Zamówienie definiuje minimalną liczbę punktów, według których zostanie zbudowana krzywa. Minimalne zamówienie 3 - pozwala zbudować krzywą za pomocą trzech punktów. Splajn biegunowy przypomina zwykły splajn w trybie edycji punktów. Jeśli punkty końcowe sąsiednich segmentów stycznych (stycznych) w splajnie są połączone, otrzymujemy podobieństwo splajnu wzdłuż biegunów. Splajn biegunowy jest z natury gładszy niż zwykły splajn, ponieważ splajn biegunowy zapewnia ciągłość krzywizny.

    Jeśli zbudujesz 2 splajny wzdłuż biegunów, możesz połączyć ich końce tak, aby zapewnić ciągłość („gładkość”) w punkcie przejścia.

    Aby to zrobić, musisz zbudować linię pomocniczą w punkcie przejścia o wymaganym nachyleniu (na przykład styczną linię pomocniczą w tym punkcie przejścia) i umieścić drugie punkty z punktu przejścia na tej linii pomocniczej. Teraz, podczas przesuwania o 3 punkty i wyżej (patrząc od punktu przejścia), każda z tych krzywych zachowa warunek ciągłości krzywej w punkcie przejścia.

    Możesz dodać punkt charakterystyczny, klikając lewym przyciskiem myszy na żądanym odcinku krzywej.

    Możesz usunąć punkt charakterystyczny za pomocą klawisza DEL podczas wybierania żądanego punktu. Zmieni to kształt krzywej.

    Interfejs do pracy ze splajnami według biegunów jest podobny do interfejsu do pracy ze zwykłymi splajnami. W panelu opcji możesz również tworzyć Otwórz obiekt i zamkniętym obiektem. I za pomocą przycisku Edytuj punkty możesz również poprawić kształt krzywej, przesuwając punkty kluczowe. W ten sam sposób, w jaki przyciąganie działa z krzywymi Beziera, punkty są przesuwane, a krzywa jest dzielona na części.

    Przycisk linia przerywana jest przeznaczony do budowy szeregu połączonych ze sobą linii prostych. Polilinia różni się od zwykłej sekwencji prostych odcinków tym, że przesunięcie żadnego elementu nie powoduje przerwania linii.

    Interfejs do pracy z liniami przerywanymi jest podobny do interfejsu do pracy z krzywymi. W panelu opcji możesz również tworzyć Otwórz obiekt, oraz zamknięty obiekt. I za pomocą przycisku Edytuj punkty możesz również poprawić kształt polilinii, przesuwając punkty kluczowe. W taki sam sposób, jak w przypadku krzywych, przyciąganie działa, a punkty są przesuwane. Charakterystyczną cechą polilinii jest to, że można ją podzielić na osobne elementy za pomocą polecenia menu Edytor → Zniszcz. Następnie poszczególne elementy polilinii można przesuwać lub usuwać bez wpływu na inne elementy.

    Jeśli jest całkiem naturalne, że przy założeniu większej różnorodności narzędzi okaże się możliwe rozwiązanie większego zestawu problemów konstrukcyjnych, to można by przewidzieć, że wręcz przeciwnie, przy ograniczeniach nałożonych na narzędzia, klasa rozwiązywalnych problemów będzie się zawężać. Tym bardziej niezwykłe jest odkrycie włoskiego Mascheroni (1750-1800): wszystkie konstrukcje geometryczne, które można wykonać za pomocą cyrkla i linijki, można wykonać tylko za pomocą cyrkla. Należy oczywiście zastrzec, że w rzeczywistości nie da się narysować linii prostej przez dwa dane punkty bez linijki, więc ta podstawowa konstrukcja nie jest objęta teorią Mascheroniego. Zamiast tego należy założyć, że prosta jest dana, jeśli dane są dwa jej punkty. Ale za pomocą samego kompasu można znaleźć punkt przecięcia dwóch tak podanych linii lub punkt przecięcia prostej z okręgiem.

    Chyba najprostszym przykładem konstrukcji Mascheroni jest podwojenie danego odcinka, rozwiązanie podano już na s. 185. Dalej na s. 186 dowiedzieliśmy się, jak podzielić dany odcinek na pół. Zobaczmy teraz jak podzielić łuk koła na pół ze środkiem O. Oto opis tej konstrukcji. Za pomocą promienia rysujemy dwa łuki o środkach Z punktu O odkładamy dwa takie łuki na tych łukach i to Następnie znajdujemy punkt przecięcia łuku ze środkiem P i promieniem oraz łuk ze środkiem i promieniem Na koniec, biorąc odcinek jako promień, opisujemy łuk ze środkiem P lub do momentu, gdy przecięcie z łukiem jest punktem przecięcia i jest pożądanym punktem środkowym łuku.Dowód jest pozostawiony czytelnikowi jako ćwiczenie.

    Ryż. 48. Przecięcie koła i linii nie przechodzącej przez środek

    Niemożliwe byłoby udowodnienie głównego twierdzenia Mascheroni przez pokazanie, dla każdej konstrukcji, którą można wykonać za pomocą cyrkla i linijki, jak można to zrobić za pomocą jednego cyrkla: w końcu istnieje nieskończona liczba możliwych konstrukcji. Ale ten sam cel osiągniemy, jeśli ustalimy, że każda z poniższych podstawowych konstrukcji jest możliwa do wykonania za pomocą jednego kompasu:

    1. Narysuj okrąg, jeśli podano środek i promień.

    2. Znajdź punkty przecięcia dwóch okręgów.

    3. Znajdź punkty przecięcia prostej i okręgu.

    4. Znajdź punkt przecięcia dwóch linii.

    Każda konstrukcja geometryczna (w zwykłym znaczeniu, z założeniem cyrkla i linijki) składa się ze skończonej sekwencji tych elementarnych konstrukcji. To, że pierwsze dwa z nich są możliwe do wykonania za pomocą jednego kompasu, jest od razu jasne. Trudniejsze konstrukcje 3 i 4 są wykonywane przy użyciu właściwości inwersji omówionych w poprzednim akapicie.

    Przejdźmy do konstrukcji 3: znajdź punkty przecięcia danego okręgu C z linią prostą przechodzącą przez te punkty Rysujemy łuki o środkach i promieniach, odpowiednio, równych i z wyjątkiem punktu O, przecinają się w punkcie P. Następnie konstruujemy punkt odwrotny do punktu P względem okręgu C (patrz konstrukcja opisana na stronie 186). Na koniec rysujemy okrąg o środku i promieniu (z pewnością będzie się przecinał z C): jego punkty przecięcia z okręgiem C będą pożądanymi. Aby to udowodnić, wystarczy ustalić, że każdy z punktów znajduje się w tej samej odległości od (co do punktów, ich analogiczna własność wynika bezpośrednio z konstrukcji). Rzeczywiście, wystarczy odnieść się do okoliczności, że punkt odwrotny do punktu jest oddzielony od punktów odległością równą promieniowi okręgu C (zob. s. 184). Warto zauważyć, że okrąg przechodzący przez punkty jest linią odwrotną w odwróceniu względem okręgu C, ponieważ ten okrąg i prosta przecinają się

    Ryż. 49. Przecięcie koła i prostej przechodzącej przez środek

    z C w tych samych punktach. (W przypadku odwrócenia punkty na okręgu bazowym pozostają stałe.)

    Wskazana konstrukcja nie jest możliwa tylko wtedy, gdy prosta przechodzi przez środek C. Ale wtedy punkty przecięcia można znaleźć za pomocą konstrukcji opisanej na stronie 188, otrzymanej, gdy narysujemy dowolny okrąg o środku B przecinającym się z C w punktach Metoda narysowanie okręgu odwrotnego do prostej łączącej dwa punkty daje natychmiast konstrukcję rozwiązującą Zadanie 4. Niech linie będą podane przez punkty (rys. 50).

    Ryż. 50. Przecięcie dwóch linii

    Narysujmy dowolny okrąg C i, korzystając z powyższej metody, skonstruujmy okręgi, które są odwrotne do prostych i Te okręgi przecinają się w punkcie O iw jeszcze jednym punkcie Punkt X, odwrotność punktu, jest pożądanym punktem przecięcia: jak do jego budowy zostało już wyjaśnione powyżej. To, że X jest pożądanym punktem, jest jasne z faktu, że istnieje jeden punkt odwrotny do punktu, który jednocześnie należy do obu prostych, a zatem punkt X, odwrotność musi leżeć jednocześnie na i na

    Te dwie konstrukcje dopełniają dowodu równoważności między konstrukcjami Mascheroniego, w których dozwolone są tylko cyrkle, a zwykłymi konstrukcjami geometrycznymi z cyrklami i linijką.

    Nie dbaliśmy o elegancję rozwiązywania poszczególnych problemów, które tu rozważaliśmy, gdyż naszym celem było wyjaśnienie wewnętrznego znaczenia konstrukcji Mascheroniego. Ale jako przykład wskażemy również budowę pięciokąta foremnego; dokładniej, mówimy o znalezieniu jakichś pięciu punktów na okręgu, które mogą służyć jako wierzchołki pięciokąta foremnego wpisanego.

    Niech A będzie dowolnym punktem na okręgu K. Ponieważ bok sześciokąta foremnego jest równy promieniowi okręgu, nie będzie trudno wyznaczyć na K takie punkty, które



    Podobne artykuły