Liczba ta jest jednym z pierwszych fraktali zbadanych przez naukowców. Pochodzi z trzech egzemplarzy Krzywa Kocha, które po raz pierwszy pojawiło się w artykule szwedzkiego matematyka Helge von Kocha w 1904 roku. Krzywa ta została wymyślona jako przykład linii ciągłej, która nie może być styczna do żadnego punktu. Linie posiadające tę właściwość były znane już wcześniej (swój przykład zbudował Karl Weierstrass już w 1872 r.), jednak krzywa Kocha wyróżnia się prostotą konstrukcji. Nieprzypadkowo jego artykuł nosi tytuł „O ciągłej krzywej bez stycznych, która wynika z elementarnej geometrii”.

Rysunek i animacja doskonale pokazują krok po kroku budowę krzywej Kocha. Pierwsza iteracja to po prostu segment początkowy. Następnie dzieli się go na trzy równe części, dopełniając środkową zwykły trójkąt a następnie wyrzucony. Rezultatem jest druga iteracja - linia przerywana składająca się z czterech segmentów. Do każdego z nich stosuje się tę samą operację i uzyskuje się czwarty etap konstrukcji. Kontynuując w tym samym duchu, możesz uzyskać coraz więcej nowych linii (wszystkie będą liniami przerywanymi). A to, co dzieje się w granicy (będzie to już wyimaginowany obiekt), nazywa się krzywą Kocha.

Podstawowe własności krzywej Kocha

1. Jest ciągła, ale nigdzie nie jest różniczkowalna. Z grubsza rzecz biorąc, właśnie po to został wymyślony - jako przykład tego rodzaju matematycznych „dziwaków”.

2. Ma nieskończoną długość. Niech długość pierwotnego odcinka będzie równa 1. Na każdym etapie konstrukcji każdy z odcinków tworzących linię zastępujemy linią łamaną, która jest 4/3 razy dłuższa. Oznacza to, że długość całej linii łamanej mnoży się w każdym kroku przez 4/3: długość linii z liczbą N równy (4/3) N-1 . Dlatego linia graniczna nie ma innego wyjścia, jak tylko być nieskończenie długa.

3. Płatek śniegu Kocha ogranicza skończony obszar. I to pomimo faktu, że jego obwód jest nieskończony. Ta właściwość może wydawać się paradoksalna, ale jest oczywista - płatek śniegu wpasowuje się całkowicie w okrąg, więc jego powierzchnia jest oczywiście ograniczona. Pole można obliczyć i nie potrzebujesz do tego nawet specjalnej wiedzy - wzory na pole trójkąta i sumę postęp geometryczny odbywać się w szkole. Dla zainteresowanych obliczenia są wymienione poniżej drobnym drukiem.

Niech bok pierwotnego regularnego trójkąta będzie równy A. Wtedy jego pole wynosi . Najpierw bok wynosi 1, a pole wynosi: . Co się stanie wraz ze wzrostem iteracji? Możemy założyć, że małe trójkąty równoboczne są dołączone do istniejącego wielokąta. Za pierwszym razem jest ich tylko 3, a za każdym razem jest ich 4 razy więcej niż poprzednio. To znaczy na N krok dziewiąty zostanie ukończony Tn= 3 4 N–1 trójkąty. Długość boku każdego z nich wynosi jedną trzecią boku trójkąta wykonanego w poprzednim kroku. Więc to jest równe (1/3) N. Pola są proporcjonalne do kwadratów boków, więc pole każdego trójkąta wynosi . Dla dużych wartości N Swoją drogą to bardzo mało. Całkowity udział tych trójkątów w powierzchni płatka śniegu wynosi Tn · S n= 3/4 · (4/9) N · S 0. Dlatego po N-krok, obszar figury będzie równy sumie S 0 + T 1 · S 1 + T 2 · S 2 + ... +Tn S N = . Płatek śniegu uzyskuje się po nieskończonej liczbie kroków, co odpowiada N→ ∞. Wynik jest sumą nieskończoną, ale jest to suma malejącego postępu geometrycznego; istnieje na to wzór: . Powierzchnia płatka śniegu wynosi.

4. Wymiar fraktalny jest równy log4/log3 = log 3 4 ≈ 1,261859... . Dokładne obliczenia będą wymagały sporo wysiłku i szczegółowych wyjaśnień, dlatego tutaj jest raczej ilustracja definicji wymiaru fraktalnego. Ze wzoru na prawo potęgowe N(δ ) ~ (1/δ )D, Gdzie N- liczba przecinających się kwadratów, δ - ich rozmiar i D- wymiar, rozumiemy to D= log 1/ δ N. Ta równość jest prawdziwa aż do dodania stałej (tej samej dla wszystkich δ ). Rysunki przedstawiają piątą iterację konstruowania krzywej Kocha; przecinające się z nią kwadraty siatki są zacieniowane na zielono. Długość pierwotnego odcinka wynosi 1, więc na górnym rysunku długość boku kwadratów wynosi 1/9. Zacieniowano 12 kwadratów, log 9 12 ≈ 1,130929... . Jeszcze nie bardzo podobny do 1.261859... . Spójrzmy dalej. Na środkowym zdjęciu kwadraty są o połowę mniejsze, ich wielkość to 1/18, zacieniowana 30. log 18 30 ≈ 1,176733... . Już lepiej. Poniżej kwadraty są jeszcze o połowę mniejsze, zamalowano już 72 elementy. log 72 30 ≈ 1,193426... . Jeszcze bliżej. Następnie należy zwiększyć liczbę iteracji i jednocześnie zmniejszyć kwadraty, wówczas „empiryczna” wartość wymiaru krzywej Kocha będzie stale zbliżać się do log 3 4, a w granicy całkowicie się zbiegnie.

Fraktalny płatek śniegu, jeden z najbardziej znanych i tajemniczych obiektów geometrycznych, został opisany przez Helgę von Koch na początku naszego stulecia. Według tradycji w naszej literaturze nazywa się go płatkiem śniegu Kocha. Jest to bardzo „kolczasta” figura geometryczna, którą metaforycznie można postrzegać jako wynik wielokrotnego „powielania” Gwiazdy Dawida. Jego sześć głównych promieni pokrytych jest nieskończoną liczbą dużych i małych „igiełkowych” wierzchołków. Każdy mikroskopijny fragment konturu płatka śniegu jest jak dwa groszki w strąku, a duża belka z kolei zawiera nieskończoną liczbę tych samych mikroskopijnych fragmentów.

Na międzynarodowym sympozjum na temat metodologii modelowania matematycznego w Warnie w 1994 roku natknąłem się na prace bułgarskich autorów, którzy opisali swoje doświadczenia z wykorzystaniem płatków śniegu Kocha i innych podobnych obiektów na lekcjach w szkole średniej do zilustrowania problemu podzielności przestrzeni i filozoficzne aporie Zenona. Ponadto, z edukacyjnego punktu widzenia, moim zdaniem, bardzo interesująca jest sama zasada konstruowania regularnych fraktalnych struktur geometrycznych - zasada rekurencyjnego mnożenia podstawowego elementu. Nie bez powodu natura „uwielbia” formy fraktalne. Wyjaśnia to właśnie fakt, że uzyskuje się je poprzez prostą reprodukcję i zmianę wielkości pewnego elementarnego elementu budulcowego. Jak wiadomo, natura nie obfituje w rozmaite przyczyny i tam, gdzie to możliwe, radzi sobie z najprostszymi rozwiązaniami algorytmicznymi. Przyjrzyj się uważnie konturom liści, a w wielu przypadkach znajdziesz wyraźny związek z kształtem konturu płatka śniegu Kocha.

Wizualizacja fraktalnych struktur geometrycznych możliwa jest wyłącznie przy pomocy komputera. Już bardzo trudno jest ręcznie skonstruować płatek śniegu Kocha powyżej trzeciego rzędu, ale naprawdę chcesz spojrzeć w nieskończoność! Dlaczego więc nie spróbować opracować odpowiedniego programu komputerowego. W RuNet można znaleźć zalecenia dotyczące budowy płatka śniegu Kocha z trójkątów. Wynik tego algorytmu wygląda jak zbiór przecinających się linii. Bardziej interesujące jest połączenie tej figury z „kawałków”. Kontur płatka śniegu Kocha składa się z segmentów o równej długości, nachylonych pod kątem 0°, 60° i 120° w stosunku do poziomej osi x. Jeśli oznaczymy je odpowiednio 1, 2 i 3, to płatek śniegu dowolnej kolejności będzie składał się z kolejnych trójek - 1, 2, 3, 1, 2, 3, 1, 2, 3... itd. Każdy z tych trzech typów segmentów można dołączyć do poprzedniego na jednym lub drugim końcu. Biorąc tę ​​okoliczność pod uwagę, możemy założyć, że kontur płatka śniegu składa się z segmentów sześciu typów. Oznaczmy je 0, 1, 2, 3, 4, 5. W ten sposób otrzymujemy możliwość zakodowania konturu dowolnego rzędu za pomocą 6 cyfr (patrz rysunek).

Płatek śniegu wyższego rzędu uzyskuje się z poprzednika niższego rzędu, zastępując każdą krawędź czterema, połączonymi jak złożone dłonie (_/\_). Krawędź typu 0 zostaje zastąpiona czterema krawędziami 0, 5, 1, 0 itd. zgodnie z tabelą:

0 0 1 5 0
1 1 2 0 1
2 2 3 1 2
3 3 4 2 3
4 4 5 3 4
5 5 0 4 5

Prosty trójkąt równoboczny można traktować jako płatek śniegu Kocha zerowego rzędu. W opisywanym systemie kodowania odpowiada wpisowi 0, 4, 2. Wszystko inne można uzyskać poprzez opisane zamienniki. Nie będę tutaj podawać kodu procedury i tym samym pozbawiam Cię przyjemności tworzenia własnego programu. Podczas pisania nie jest wcale konieczne używanie jawnego wywołania rekurencyjnego. Można go zastąpić regularnym cyklem. W trakcie pracy będziesz miał kolejny powód, aby pomyśleć o rekurencji i jej roli w tworzeniu quasi-fraktalnych form otaczającego nas świata i na końcu ścieżki (jeśli oczywiście nie jesteś zbyt leniwy przejść przez to do końca) będziesz mógł podziwiać skomplikowany wzór konturów fraktalnego płatka śniegu, a także wreszcie spojrzeć w oblicze nieskończoności.

Temat: Fraktale.

1. Wstęp. Krótki odniesienie historyczne o fraktalach. 2. Fraktale są elementami geometrii w przyrodzie.

3. Obiekty o właściwościach fraktalnych w przyrodzie. 4. Definicja terminologii „fraktale”.

5.Klasy fraktali.

6.Opis procesów fraktalnych. 7.Procedury otrzymywania zbiorów fraktalnych.

8.1 Złamana Kokha (procedura uzyskania).

8.2 Płatek śniegu Kocha (Fraktal Kocha).

8.3 Gąbki Mengera.

9. Przykłady wykorzystania fraktali.

Wstęp. Krótkie tło historyczne dotyczące fraktali.

Fraktale są młodą gałęzią matematyki dyskretnej.

W W 1904 roku Szwed Koch wymyślił ciągłą krzywą, która nie ma nigdzie stycznej – krzywą Kocha.

W W 1918 roku Francuz Julia opisał całą rodzinę fraktali.

W W 1938 roku Pierre Levy opublikował artykuł pt. „Krzywe płaskie i przestrzenne oraz powierzchnie składające się z części podobnych do całości”.

W W 1982 roku Benoit Mandelbrot opublikował książkę „Fraktalna geometria natury”.

Z Za pomocą prostych konstrukcji i wzorów uzyskuje się obrazy. Pojawiło się „malarstwo fraktalne”.

Od 1993 roku World Scientific wydaje czasopismo „Fractals”.

Fraktale są elementami geometrii w przyrodzie.

Fraktale to narzędzia do opisywania obiektów, takich jak modele pasm górskich, nierówne linia brzegowa, układy krążenia wielu naczyń włosowatych i naczyń, korony drzew, kaskady wodospadów, mroźne wzory na szkle.

Albo takie: liść paproci, chmurki, kleks.

Obrazy takich obiektów można przedstawić za pomocą grafiki fraktalnej.

Obiekty o właściwościach fraktalnych w przyrodzie.

KoralowceRozgwiazdy i jeżowceMuszle

Kwiaty i rośliny (brokuły, kapusta) Owoce (ananas)

Korony drzew i liście roślin Układ krążenia i oskrzela ludzi i zwierząt W przyrodzie nieożywionej:

Granice obiektów geograficznych (krajów, regionów, miast) Linie brzegowe Pasma górskie Płatki śniegu Chmury Błyskawice

Wzory formowane na szkle Kryształy Stalaktyty, stalagmity, heliktyty.

Definicja terminologii „fraktale”.

Fraktale są figury geometryczne, które spełniają jedną lub więcej z następujących właściwości:

Ma złożoną, nietrywialną strukturę w dowolnym powiększeniu (we wszystkich skalach); jest (w przybliżeniu) samopodobny.

Ma ułamkowy wymiar Hausdorffa (fraktalny) lub przekracza wymiar topologiczny; Można go skonstruować za pomocą procedur rekurencyjnych.

W przypadku figur regularnych, takich jak okrąg, elipsa, wykres funkcji gładkiej mały fragment w bardzo dużej skali wygląda jak fragment linii prostej. Dla fraktala zwiększenie skali nie prowadzi do uproszczenia struktury, dla wszystkich skal otrzymamy obrazy równie złożone.

Klasy fraktalne

Fraktal to struktura składająca się z części (podstruktur) podobnych do całości.

Niektóre fraktale, jako elementy natury, można zaliczyć do fraktali geometrycznych (konstruktywnych).

Resztę można sklasyfikować jako fraktale dynamiczne (algebraiczne).

Procedury otrzymywania zbiorów fraktalnych.

Jest to prosta, rekurencyjna procedura uzyskiwania krzywych fraktalnych: określ dowolną linię przerywaną za pomocą skończoną liczbą linki - generator. Następnie wymienia się w nim każdy segment generatora. Następnie każdy segment w nim jest ponownie zastępowany przez generator i tak dalej w nieskończoność.

Pokazano: podział odcinka jednostkowego na 3 części (a), kwadratowy obszar jednostkowy na 9 części (b), sześcian jednostkowy na 27 części (c) i 64 części (d). Liczba części wynosi n, współczynnik skalowania wynosi k, a wymiar przestrzeni wynosi d. Mamy następujące zależności: n = kd,

jeśli n = 3, k = 3, to d = 1; jeśli n = 9, k = 3, to d = 2; jeśli n = 27, k = 3, to d = 3.

jeśli n = 4, k = 4, to d = 1; jeśli n = 16, k = 4, to d = 2; jeśli n = 64, k = 4, to d = 3. Wymiar przestrzeni wyraża się w liczbach całkowitych: d = 1, 2, 3; dla n = 64 wartość d wynosi

Pokazano pięć etapów budowy polilinii Kocha: odcinek o długości jednostkowej (a), podzielony na trzy części (k = 3), z czterech części (n = 4) - linia przerywana (b); każdy odcinek prosty dzieli się na trzy części (k2 = 9) i z 16 części (n2 = 16) - linię przerywaną (c); czynność powtarza się dla k3 = 27 i n3 = 64 – linia przerywana (g); dla k5 = 243 i n5 = 1024 – linia przerywana (d).

Wymiar

Jest to wymiar ułamkowy lub fraktalny.

Polilinia Kocha, zaproponowana przez Helga von Kocha w 1904 roku, działa jak fraktal odpowiedni do modelowania nierówności linii brzegowej. Mandelbrot wprowadził do algorytmu konstrukcji linii brzegowej element losowości, co jednak nie wpłynęło na główny wniosek dotyczący długości linii brzegowej. Ponieważ granica

Długość linii brzegowej zmierza do nieskończoności ze względu na nieskończoną nierówność wybrzeża.

Procedura wygładzania linii brzegowej przy przejściu ze skali bardziej szczegółowej na mniej szczegółową, tj.

Płatek śniegu Kocha (fraktal Kocha)

Jako podstawę konstrukcji można przyjąć nie odcinki o długości jednostkowej, ale trójkąt równoboczny, na którego bok można rozszerzyć procedurę mnożenia nieregularności. W tym przypadku otrzymujemy płatek śniegu Kocha (ryc.) i trzy typy: nowo utworzone trójkąty są skierowane tylko na zewnątrz od poprzedniego trójkąta (a) i (b); tylko wewnątrz (w); losowo albo na zewnątrz, albo do wewnątrz (d) i (e). Jak ustawić procedurę konstruowania fraktala Kocha.

Ryż. Płatek śniegu Kocha

Na ryc. pokazane są dwa diagramy wektorowe; Liczby nad strzałkami prawdopodobnie nasuwają pytanie: co one oznaczają? Wektor 0 pokrywa się z dodatnim kierunkiem osi odciętej, ponieważ jego współczynnik fazowy exp (i2πl/6) przy l = 0 zachowuje swój kierunek. Wektor 1 jest obracany względem wektora 0 o kąt 2π/6, gdy l= 1. Wektor 5 ma współczynnik fazy exp (i2π5/6), l = 5. Ostatni wektor ma taki sam współczynnik fazy jak pierwszy ( l = 0). Liczby całkowite l charakteryzują kąt współczynnika fazowego wektora jednostkowego.

Pierwszy krok (rys.) określa procedurę rekurencyjną dla wszystkich kolejnych kroków, a w szczególności dla drugiego kroku (rys.). Jak przejść ze zbioru liczb φ1 = (0 1 5 0) do φ2 = (0 1 5 0 1 2 0 1 5 0 4 5 0 1 5 0)? Odpowiedź: poprzez bezpośrednie mnożenie macierzy, gdy każdy element jednej macierzy jest mnożony przez pierwotną macierz. Ponieważ w tym przypadku mamy do czynienia z tablicą jednowymiarową, tj. Ponieważ macierze są wektorami, każdy element jednego wektora macierzowego jest mnożony przez wszystkie elementy innego wektora macierzowego. Ponadto elementy wektora macierzy φ1 składają się z funkcje wykładnicze exp (i2πl/6), zatem 10 przy mnożeniu liczby h należy dodać zgodnie z mod (6), a nie mnożyć.

Zima w Bostonie była wyjątkowo ciepła, ale wciąż czekaliśmy na pierwsze opady śniegu. Patrząc na padający za oknem śnieg, myślałam o płatkach śniegu i o tym, że ich budowa wcale nie jest łatwa do opisania matematycznego. Istnieje jednak jeden szczególny rodzaj płatka śniegu, znany jako płatek śniegu Kocha, który można opisać stosunkowo prosto. Dzisiaj przyjrzymy się, jak można zbudować jego kształt za pomocą narzędzia COMSOL Multiphysics Application Builder.

Tworzenie płatka śniegu Kocha

Jak już wspomnieliśmy na naszym blogu, fraktale można wykorzystać w . Płatek śniegu Kocha jest fraktalem, co jest godne uwagi, ponieważ istnieje bardzo prosty iteracyjny proces jego skonstruowania:

  1. Zacznijmy od trójkąta równobocznego, który w rzeczywistości jest zerową iteracją płatka śniegu Kocha.
  2. Znajdźmy punkt środkowy na każdej krawędzi bieżącego płatka śniegu.
  3. Na środku każdej krawędzi dodaj wystający na zewnątrz trójkąt równoboczny o boku równym 1/3 długości bieżącej krawędzi.
  4. Zdefiniujmy następną iterację płatka śniegu Kocha tak, aby znajdowała się na zewnątrz poprzedniego płatka śniegu i wszystkich dodanych trójkątów.
  5. Powtórz kroki 2-4 tyle razy, ile to konieczne.

Procedurę tę przedstawiono na poniższym rysunku dla pierwszych czterech iteracji rysowania płatka śniegu.

Pierwsze cztery iteracje płatka śniegu Kocha. Zdjęcie: Wxs - Praca własna. Licencja CC BY-SA 3.0, za pośrednictwem Wikimedia Commons.

Konstrukcja geometrii płatka śniegu Kocha

Skoro już wiemy, jakiego algorytmu użyć, przyjrzyjmy się, jak utworzyć taką strukturę za pomocą narzędzia COMSOL Multiphysics Application Builder. Otworzymy nowy plik i utworzymy obiekt 2D część geometryczna w węźle Definicje globalne. Dla tego obiektu ustawimy pięć parametrów wejściowych: długość boku trójkąta równobocznego; X- I y– współrzędne środka podstawy; oraz składowe wektora normalnego skierowane od środka podstawy do przeciwnego wierzchołka, jak pokazano na rysunkach poniżej.


Pięć parametrów używanych do ustawiania rozmiaru, położenia i orientacji trójkąta równobocznego.


Ustawianie parametrów wejściowych części geometrycznej.
Do skonstruowania trójkąta równobocznego używany jest prymityw wielokątny.


Obiekt może obracać się wokół środka dolnej krawędzi.


Obiekt można przesuwać względem początku.

Teraz, gdy zdefiniowaliśmy część geometryczną, użyjemy jej raz w przekroju Geometria. Ten pojedynczy trójkąt jest odpowiednikiem zerowej iteracji płatka śniegu Kocha. Użyjmy teraz Konstruktora aplikacji, aby utworzyć bardziej złożone płatki śniegu.

Oznaczenia interfejsu użytkownika aplikacji w Konstruktorze aplikacji

Aplikacja posiada bardzo prosty interfejs użytkownika. Zawiera tylko dwa komponenty, z którymi użytkownik może wchodzić w interakcję: Suwak (suwak)(oznaczone jako 1 na poniższym rysunku), za pomocą którego można ustawić liczbę iteracji potrzebnych do utworzenia płatka śniegu oraz Przycisk(etykieta 2), po kliknięciu którego zostanie utworzona i wyświetlona wynikowa geometria. Istnieje również Napis tekstowy(etykieta 3) i Wyświetlanie (wyświetlanie) danych(etykieta 4), które pokazują liczbę określonych iteracji, a także okno Wykresy(etykieta 5), ​​która wyświetla ostateczną geometrię.


Aplikacja składa się z jednego formularza z pięcioma komponentami.

Aplikacja ma dwa Definicje, z których jedna definiuje wartość całkowitą zwaną Iteracjami, która domyślnie wynosi zero, ale użytkownik może ją zmienić. Zdefiniowana jest również tablica 1D dubletów zwana Centrum. Pojedynczy element tablicy ma wartość 0,5, która służy do znalezienia środka każdej krawędzi. Ta wartość nigdy się nie zmienia.


Ustawienia dla dwóch definicji.

Komponent Slider w interfejsie użytkownika kontroluje wartość liczby całkowitej, parametru Iteracje. Poniższy zrzut ekranu przedstawia ustawienia dla „Slidera” oraz wartości, które są ustawione jako liczby całkowite z zakresu od 0 do 5. To samo źródło (jak dla suwaka) jest również wybrane dla komponentu Wyświetlanie danych aby wyświetlić liczbę określonych iteracji na ekranie aplikacji. Ograniczamy potencjalnego użytkownika do pięciu iteracji, ponieważ zastosowany algorytm jest nieoptymalny i niezbyt wydajny, ale jest wystarczająco prosty do wdrożenia i zademonstrowania.


Ustawienia komponentu „Slider”.

Następnie przyjrzyjmy się ustawieniom naszego przycisku, pokazanym na zrzucie ekranu poniżej. Po naciśnięciu przycisku wykonywane są dwa polecenia. Najpierw wywoływana jest metoda CreateSnowFlake. Powstała geometria jest następnie wyświetlana w oknie graficznym.


Ustawienia przycisków.

Przyjrzeliśmy się teraz interfejsowi użytkownika naszej aplikacji i widzimy, że utworzenie dowolnej geometrii płatka śniegu musi odbywać się za pomocą metody zwanej. Przyjrzyjmy się kodowi tej metody, z dodaną numeracją linii po lewej stronie i stałymi łańcuchowymi podświetlonymi na czerwono:

1 model.geom("geom1" ).feature().clear(); 2 model.geom("geom1" ).create("pi1" , "Instancja Części" ); 3 model.geom("geom1" ).run("płetwa" ); 4 for (int iter = 1; iter "geom1" ).getNEdges()+1; 6 UnionList = „pi” + iter; 7 for (int Edge = 1; Edge "geom1" ).getNEdges(); Edge++) ( 8 String newPartInstance = "pi" + iter + krawędź; 9 model.geom("geom1" ).create(newPartInstance, "PartInstance" ).set("część" , "część1" ); 10 with(model. geom("geom1" ).feature(newPartInstance)); 11 setEntry("inputexpr" , "Length" , toString(Math.pow(1.0/3.0, iter))); 12 setEntry("inputexpr" , "px" , model.geom("geom1" ).edgeX(krawędź, środek)); 13 setEntry("inputexpr" , "py" , model.geom("geom1" ).edgeX(krawędź, środek)); 14 setEntry("inputexpr" " , "nx" , model.geom("geom1" ).edgeNormal(krawędź, środek)); 15 setEntry("inputexpr" , "ny" , model.geom("geom1" ).edgeNormal(krawędź, środek)) ; 16 endwith(); 17 UnionList = newPartInstance; 18 ) 19 model.geom("geom1" ).create("pi" +(iter+1), "Union" ).selection("input" ).set(UnionList ); 20 model.geom("geom1" ).feature("pi" +(iter+1)).set("intbnd" , "off" ); 21 model.geom("geom1" ).run("płetwa" ); 22)

Przejrzyjmy kod linia po linii, aby zrozumieć, jaką funkcję pełni każda linia:

  1. Usunięcie wszystkich istniejących ciągów geometrycznych, abyśmy mogli zacząć od zera.
  2. Tworzymy jedną instancję obiektu - nasz „trójkąt”, korzystając z domyślnego rozmiaru, orientacji i położenia. To jest nasz płatek śniegu zerowego rzędu z etykietą identyfikacyjną pi1.
  3. Sfinalizujmy geometrię. Ta operacja jest wymagana do aktualizacji wszystkich indeksów geometrii.
  4. Rozpocznijmy proces iteracji przez wszystkie podane iteracje płatka śniegu, używając definicji Iteracji jako warunku zatrzymania.
  5. Definiujemy pustą tablicę ciągów znaków UnionList. Każdy element tablicy zawiera identyfikator różnych obiektów geometrycznych. Długość tej tablicy jest równa liczbie krawędzi w ostatniej iteracji plus jeden.
  6. Definiujemy pierwszy element w tablicy UnionList. Jest to identyfikator wyniku poprzedniej iteracji. Należy pamiętać, że iteracja zerowa została już utworzona w liniach 1-3. Wartość całkowita iter jest automatycznie konwertowana na ciąg znaków i dodawana na końcu ciągu znaków „pi”.
  7. Przechodzimy przez liczbę krawędzi w wcześniej wygenerowanym płatku śniegu.
  8. Ustawiamy etykietę identyfikacyjną dla nowej instancji obiektu uzyskującego dostęp z instancji części „trójkątnej”, która jest utworzona na tej krawędzi. Należy pamiętać, że wartości całkowite iter i Edge są kolejno dodawane na końcu łańcucha pi, etykiety identyfikacyjnej instancji obiektu.
  9. Tworzymy instancję obiektu „trójkąt” i przypisujemy jej właśnie określoną etykietę identyfikacyjną.
  10. Wskazujemy, że linie 11-15 odnoszą się do bieżącej instancji obiektu (instancji części) za pomocą instrukcji with()/endwith().
  11. Wyznacz długość boku trójkąta. Rząd zerowy ma bok o długości jeden, zatem n-ta iteracja ma bok o długości (1/3)n. Funkcja toString() jest wymagana do rzutowania (konwertowania) typów danych – liczby zmiennoprzecinkowej na ciąg znaków.
  12. Ustawiamy X-współrzędna nowego trójkąta, jako środka boku ostatniej iteracji. Metoda EdgeX jest udokumentowana w . Przypomnijmy, że Center jest ustawione na 0,5.
  13. Ustawiamy y-koordynować.
  14. Ustawiamy X-składnik wektora normalnego trójkąta. Metoda EdgeNormal jest również udokumentowana w Podręcznik referencyjny programowania COMSOL.
  15. Ustawiamy y-składnik wektora normalnego.
  16. Zamykamy instrukcję with()/endwith().
  17. Dodaj identyfikator etykiety bieżącego trójkąta do listy wszystkich obiektów.
  18. Zamykamy wyszukiwanie wszystkich krawędzi.
  19. Tworzymy Unię Boolowską (unię logiczną) wszystkich obiektów w ciąg geometryczny. Do etykiety przypisujemy nową wartość pi N, gdzie N jest liczbą Następny iteracje. Nawiasy są wymagane wokół (iter+1), aby zwiększona wartość iteru została przekonwertowana na ciąg znaków.
  20. Wskazujemy, że wewnętrzne granice finalnego obiektu nie są zachowane.
  21. Sfinalizujmy geometrię. Ostatnia operacja aktualizuje wszystkie wskaźniki geometrii dla następnej iteracji płatka śniegu.
  22. Zamykamy cykl iteracji tworzenia płatka śniegu.

W ten sposób omówiliśmy wszystkie aspekty i elementy naszej aplikacji. Spójrzmy na wyniki!


Nasza prosta aplikacja do konstruowania płatka śniegu Kocha.

Moglibyśmy rozszerzyć naszą aplikację o zapis geometrii do pliku, a nawet bezpośrednie wykonywanie dodatkowych analiz. Na przykład moglibyśmy zaprojektować antenę fraktalną. Jeśli interesuje Cię projekt anteny, sprawdź nasz przykład, a nawet wykonaj jej układ od podstaw.

Spróbuj sam

Jeśli chcesz samodzielnie zbudować tę aplikację, ale nie ukończyłeś jeszcze Konstruktora aplikacji, pomocne mogą okazać się następujące zasoby:

  • Pobierz przewodnik Wprowadzenie do środowiska tworzenia aplikacji w języku angielskim
  • Obejrzyj te filmy i dowiedz się, jak z nich korzystać
  • Przeczytaj te tematy, aby zapoznać się ze sposobem wykorzystania aplikacji symulacyjnych

Po zapoznaniu się z tym materiałem zobaczysz, jak można rozszerzyć funkcjonalność aplikacji, aby zmienić rozmiar płatka śniegu, wyeksportować utworzoną geometrię, oszacować powierzchnię i obwód i wiele więcej.

Jaką aplikację chciałbyś stworzyć w COMSOL Multiphysics? o pomoc.

Liczba ta jest jednym z pierwszych fraktali zbadanych przez naukowców. Pochodzi z trzech egzemplarzy Krzywa Kocha, które po raz pierwszy pojawiło się w artykule szwedzkiego matematyka Helge von Kocha w 1904 roku. Krzywa ta została wymyślona jako przykład linii ciągłej, która nie może być styczna do żadnego punktu. Linie posiadające tę właściwość były znane już wcześniej (swój przykład zbudował Karl Weierstrass już w 1872 r.), jednak krzywa Kocha wyróżnia się prostotą konstrukcji. Nieprzypadkowo jego artykuł nosi tytuł „O ciągłej krzywej bez stycznych, która wynika z elementarnej geometrii”.

Jednym ze sposobów wygenerowania diagramu fraktalnego na ekranie jest napisanie funkcji, która wywołuje samą siebie rekurencyjnie. A co by było, gdybyś chciał, aby wiersze w powyższym Cantorze były ustawione jako osobne obiekty, które można było przesuwać niezależnie? Funkcja rekursywna jest prosta i elegancka, ale nie pozwala na nic więcej poza zwykłym utworzeniem samego szablonu.

Oto zasady. Krzywą Kocha i inne wzory fraktalne nazywane są często „potworami matematycznymi”. Wynika to z dziwnego paradoksu, który pojawia się, gdy zastosujesz definicję rekurencyjną nieskończenie wiele razy. Jeśli długość pierwotnej linii początkowej wynosi jeden, pierwsza iteracja krzywej Kocha da długość linii wynoszącą cztery trzecie. Zrób to jeszcze raz, a dostaniesz szesnaście dziewięć. W miarę iteracji w nieskończoność długość krzywej Kocha zbliża się do nieskończoności. Jednak mieści się w maleńkiej, skończonej przestrzeni, jaką zapewniamy tutaj, na tym papierze!

Pierwsze etapy konstrukcji krzywej Kocha

Rysunek i animacja doskonale pokazują krok po kroku budowę krzywej Kocha. Pierwsza iteracja to po prostu segment początkowy. Następnie dzieli się go na trzy równe części, środkową uzupełnia się, tworząc regularny trójkąt, a następnie wyrzuca. Rezultatem jest druga iteracja - linia przerywana składająca się z czterech segmentów. Do każdego z nich stosuje się tę samą operację i uzyskuje się czwarty etap konstrukcji. Kontynuując w tym samym duchu, możesz uzyskać coraz więcej nowych linii (wszystkie będą liniami przerywanymi). A to, co dzieje się w granicy (będzie to już wyimaginowany obiekt), nazywa się krzywą Kocha.

Ponieważ pracujemy na Ziemi w zakresie przetwarzania skończonych pikseli, ten teoretyczny paradoks nie będzie dla nas czynnikiem. Moglibyśmy postępować w taki sam sposób, jak w przypadku zbioru Cantora i napisać funkcję rekurencyjną, która iteracyjnie zastosuje reguły Kocha w kółko. Jednak rozwiążemy ten problem inaczej, traktując każdy odcinek krzywej Kocha jako osobny obiekt. Otworzy to pewne możliwości projektowania. Na przykład, jeśli każdy segment jest obiektem, możemy pozwolić każdemu segmentowi poruszać się niezależnie od jego pierwotnej lokalizacji i wziąć udział w symulacji fizycznej.

Podstawowe własności krzywej Kocha

1. Jest ciągła, ale nigdzie nie jest różniczkowalna. Z grubsza rzecz biorąc, właśnie po to został wymyślony - jako przykład tego rodzaju matematycznych „dziwaków”.

2. Ma nieskończoną długość. Niech długość pierwotnego odcinka będzie równa 1. Na każdym etapie konstrukcji każdy z odcinków tworzących linię zastępujemy linią łamaną, która jest 4/3 razy dłuższa. Oznacza to, że długość całej linii łamanej mnoży się w każdym kroku przez 4/3: długość linii z liczbą N jest równe (4/3) n–1 . Dlatego linia graniczna nie ma innego wyjścia, jak tylko być nieskończenie długa.

Dodatkowo możemy użyć losowego koloru, grubości linii itp. Aby wyświetlić każdy segment inaczej. Aby wykonać zadanie polegające na traktowaniu każdego segmentu jako osobnego obiektu, musimy najpierw zdecydować, co obiekt powinien robić. Jakie cechy powinien posiadać?

Spójrzmy na to, co mamy. Mając powyższe elementy, jak i gdzie stosujemy reguły Kocha i zasady rekurencji? W tej symulacji zawsze podążaliśmy za dwoma pokoleniami: obecnym i następnym. Kiedy zakończyliśmy obliczanie następnej generacji, stało się to istotne i przeszliśmy do obliczania nowej następnej generacji.

3. Płatek śniegu Kocha ogranicza skończony obszar. I to pomimo faktu, że jego obwód jest nieskończony. Ta właściwość może wydawać się paradoksalna, ale jest oczywista - płatek śniegu wpasowuje się całkowicie w okrąg, więc jego powierzchnia jest oczywiście ograniczona. Pole można obliczyć i nie potrzeba do tego nawet specjalnej wiedzy - w szkole uczy się wzorów na pole trójkąta i sumę postępu geometrycznego. Dla zainteresowanych obliczenia są wymienione poniżej drobnym drukiem.

Tutaj użyjemy podobnej techniki. Tak wygląda kod. Oczywiście powyższe wyklucza faktyczną „pracę”, która definiuje te zasady. Jak podzielić jeden odcinek linii na cztery zgodnie z regułami? Konstrukcja fraktala opiera się na pojęciu nieskończoności. Krok 2: Podzielimy ten odcinek na trzy równe części i wzniesiemy trójkąt równoboczny w części środkowej. Krok 3: Na czterech nowych segmentach wykonamy ten krok.

Przetnij narzędzie pomiędzy dwoma obiektami, kliknij okrąg. Płatek śniegu Kocha to specjalna krzywa fraktalna skonstruowana przez matematyka Kocha, zaczynając od koronki Kocha. Jest to krzywa narysowana wzdłuż boków trójkąta równobocznego. Sznurówki Kocha są zbudowane po obu stronach trójkąta.

Niech bok pierwotnego regularnego trójkąta będzie równy A. Następnie jego obszar. Najpierw bok wynosi 1, a pole wynosi: . Co się stanie wraz ze wzrostem iteracji? Możemy założyć, że małe trójkąty równoboczne są dołączone do istniejącego wielokąta. Za pierwszym razem jest ich tylko 3, a za każdym razem jest ich 4 razy więcej niż poprzednio. To znaczy na N W szóstym kroku zostanie uzupełnionych T n = 3 · 4 n–1 trójkątów. Długość boku każdego z nich wynosi jedną trzecią boku trójkąta wykonanego w poprzednim kroku. Oznacza to, że jest równe (1/3) n. Pola są proporcjonalne do kwadratów boków, więc pole każdego trójkąta wynosi . Dla dużych wartości N Swoją drogą to bardzo mało. Całkowity udział tych trójkątów w powierzchni płatka śniegu wynosi T n · S n = 3/4 · (4/9) n · S 0 . Dlatego po N krok, obszar figury będzie równy sumie S 0 + T 1 · S 1 + T 2 · S 2 + ... +T n · S n = . Płatek śniegu otrzymuje się po nieskończonej liczbie kroków, co odpowiada n → ∞. Wynik jest sumą nieskończoną, ale jest to suma malejącego postępu geometrycznego; istnieje na to wzór: . Powierzchnia płatka śniegu jest równa.

Poniższa tabela przedstawia pierwsze kroki w konstruowaniu krzywej. Aby utworzyć fraktal, wystarczy wstawić trzy kopie krzywej wzdłuż boków trójkąta. Zwróć uwagę, że druga cyfra to Gwiazda Dawida. Efektem końcowym jest zamknięta krzywa zbudowana na trójkącie równobocznym. Można zauważyć, że fryta zawiera sześcioramienną gwiazdę. Projekt jest bardzo podobny do fraktalnego pięciokąta.

Istnieje inny sposób budowania płatków śniegu. Opisaną powyżej konstrukcję można określić jako konstrukcję przez dodanie, ponieważ figura początkowa, trójkąt, dodaje inne elementy. Istnieje podkonstrukcja, która usuwa elementy zamiast pierwotnego kształtu.

4. Wymiar fraktalny to log4/log3 = log 3 4 ≈ 1,261859... . Dokładne obliczenia będą wymagały sporo wysiłku i szczegółowych wyjaśnień, dlatego tutaj jest raczej ilustracja definicji wymiaru fraktalnego. Ze wzoru na potęgę N(δ) ~ (1/δ)D, gdzie N- liczba przecinających się kwadratów, δ - ich wielkość, D- wymiar, otrzymujemy, że D = log 1/δ N. Równość ta jest prawdziwa aż do dodania stałej (tej samej dla wszystkich δ ). Rysunki przedstawiają piątą iterację konstruowania krzywej Kocha; przecinające się z nią kwadraty siatki są zacieniowane na zielono. Długość pierwotnego odcinka wynosi 1, więc na lewym rysunku długość boku kwadratów wynosi 1/9. Zacieniowano 12 kwadratów, log 9 12 ≈ 1,130929... . Jeszcze nie bardzo podobny do 1.261859... . Spójrzmy dalej. Na środkowym zdjęciu kwadraty są o połowę mniejsze, ich wielkość to 1/18, zacieniowana 30. log 18 30 ≈ 1,176733... . Już lepiej. Po prawej stronie kwadraty są jeszcze o połowę mniejsze, 72 elementy zostały już zamalowane. log 72 30 ≈ 1,193426... . Jeszcze bliżej. Następnie należy zwiększyć liczbę iteracji i jednocześnie zmniejszyć kwadraty, wówczas „empiryczna” wartość wymiaru krzywej Kocha będzie stale zbliżać się do log 3 4, a w granicy całkowicie się zbiegnie.

Opcje

Płatek śniegu Kocha „na odwrót” otrzymane, jeśli skonstruujemy krzywe Kocha wewnątrz pierwotnego trójkąta równobocznego.

Linie Cesaro. Zamiast trójkąty równoboczne Stosowane są równoramienne o kącie podstawy od 60° do 90°. Na rysunku kąt wynosi 88°.

Opcja kwadratowa. Tutaj kwadraty są gotowe.

Trójwymiarowe analogi. przestrzeń Kocha.