Крива́ Ко́ха — фрактальна крива, описана 1904 року шведським математиком Хельге фон Кохом.
Крива Коха | |
Названо на честь | Гельґе фон Кох |
---|---|
Першовідкривач або винахідник | Гельґе фон Кох |
Дата відкриття (винаходу) | 1904 |
Підтримується Вікіпроєктом | |
Крива Коха у Вікісховищі |
Крива Коха цікава тим, що ніде не має дотичних, тобто ніде не диференційовна, хоча всюди неперервна.
Три копії кривої Коха, побудовані (вістрями назовні) на сторонах правильного трикутника, утворюють замкнену криву, так звану сніжинку Коха. Крива Коха задається такою системою ітераційних функцій:
Побудова
Цей розділ не містить . (травень 2020) |
Крива Коха є типовим геометричним фракталом. Процес її побудови виглядає так: беремо одиничний відрізок, поділяємо на три рівні частини і замінюємо середній інтервал рівностороннім трикутником без цього сегмента. У результаті утворюється ламана, що складається з чотирьох ланок з довжиною 1/3 довжини початкового відрізка. На наступному кроці повторюємо операцію для кожного з чотирьох отриманих ланок і так далі. Гранична крива і є кривою Коха.
<?php set_time_limit(3); $x = 600;// Довжина малюнку $y = 200;// Висота малюнку $r = 10;// Рамка $i = 4;// Кількість ітерацій define("PI", 3.14159265358979323846); $img = imagecreate($x, $y); $black = imagecolorallocate($img, 0, 0, 0); imagefill($img, 1, 1, $black); $color = imagecolorallocate($img, 255, 255, 255); recursion($i, $r, $y - $r, $x - $r, $y - $r); function recursion($i, $x1, $y1, $x2, $y2) { global $img, $color; if($i == 0) imageline($img, $x1, $y1, $x2, $y2, $color); else { $alpha = atan2($y2 - $y1, $x2 - $x1); $r = sqrt(($x2 - $x1) * ($x2 - $x1) + ($y2 - $y1) * ($y2 - $y1)); $xa = $x1 + $r * cos($alpha) / 3; $ya = $y1 + $r * sin($alpha) / 3; $xc = $xa + $r * cos($alpha - PI / 3) / 3; $yc = $ya + $r * sin($alpha - PI / 3) / 3; $xb = $x1 + 2 * $r * cos($alpha) / 3; $yb = $y1 + 2 * $r * sin($alpha) / 3; recursion($i - 1, $x1, $y1, $xa, $ya); recursion($i - 1, $xa, $ya, $xc, $yc); recursion($i - 1, $xc, $yc, $xb, $yb); recursion($i - 1, $xb, $yb, $x2, $y2); } } header("Content-type: image/png"); imagepng($img); imagedestroy($img); ?>
int i = 0; // Кількість ітерацій void setup() { size(600, 250); // Розміри вікна } void draw() { // замалювати все в чорний корлі background(0); // відобразити білим кольором номер ітерації в лівому верхньому куті stroke(255); text(i, 10, 20); // намалювати Криву Коха за допомогою рекурсивних викликів recursion(i, 0, 200, 600, 200 ); } void recursion(int i, float x1, float y1, float x2, float y2) { // кінець рекурсивним викликам функції if (i == 0) { // намалювати білу лінію від точки (x1, y1) до (x2, y2) stroke(255); line(x1, y1, x2, y2); return; } float alpha = atan2(y2 - y1, x2 - x1);// кут повороту float r = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));// відстань між точками // обраховує 3 точки на прямій // C // / \ // ----A B---- // ліва точка (ліва вершина трикутника) float xa = x1 + r * cos(alpha) / 3; float ya = y1 + r * sin(alpha) / 3; // центральна точка (верхня вершина трикутника) float xc = xa + r * cos(alpha - PI / 3) / 3; float yc = ya + r * sin(alpha - PI / 3) / 3; // права точка (права вершина трикутника) float xb = x1 + 2 * r * cos(alpha) / 3; float yb = y1 + 2 * r * sin(alpha) / 3; // рекурсивні виклики функції для 4 отриманих ліній recursion(i - 1, x1, y1, xa, ya); recursion(i - 1, xa, ya, xc, yc); recursion(i - 1, xc, yc, xb, yb); recursion(i - 1, xb, yb, x2, y2); } // перехід на наступну ітерації із нажиманням клавіші мишки void mousePressed() { ++i; }
// клас є одніє лінією, яка вміє генерувати на собі Криву Коха class Segment { // поля PVector start; // початок лінії PVector end; // кінець лінії // конструктор Segment(PVector start, PVector end) { this.start = start.copy(); this.end = end.copy(); } // методи // генеруємо Криву Коха на прямій Segment[] generate() { // з одної прямою утворюється 4 Segment[] children = new Segment[4]; // 1/3 прямої PVector v = PVector.sub(end, start); v.div(3); // ліва вершина трикутника PVector ls = PVector.add(start, v); children[0] = new Segment(start, ls); // права вершина трикутника PVector rs = PVector.sub(end, v); children[3] = new Segment(rs, end); // верхня вершина трикутника v.rotate(-PI/3); PVector m = PVector.add(ls, v); children[1] = new Segment(ls, m); children[2] = new Segment(m, rs); // повертаємо Криву Коха для цієї лінії return children; } // відображаємо лінію void show() { stroke(255); line(start.x, start.y, end.x, end.y); } } // динамічний масив кривих, які будуть відображатись ArrayList<Segment> segments; int i;// номер ітерації void setup() { size(600, 600);// розмір вікна // ініціалізація полів segments = new ArrayList<Segment> (); i = 0; // встановлюємо 3 точки, вершини трикутника PVector leftPoint = new PVector(100, 200); PVector rightPoint = new PVector(500, 200); PVector bottomPoint = new PVector(300, 500); // зєднюємо ці точки прямими Segment s1 = new Segment(bottomPoint, leftPoint); Segment s2 = new Segment(leftPoint, rightPoint); Segment s3 = new Segment(rightPoint, bottomPoint); // додаємо ці прямі до масиву segments.add(s1); segments.add(s2); segments.add(s3); } void draw() { // замалювати все в чорний колір background(0); // відобразити білим кольором номер ітерації в лівому верхньому куті fill(255); text(i, 10, 20); // відобразити усі прямі for (Segment segment : segments) { segment.show(); } } // з нажиманням клавіші миші, обраховуємо прямі в наступній ітерації void mousePressed() { // тимчасовий динамічний масив для нових прямих ArrayList<Segment> nextGeneration = new ArrayList<Segment>(segments.size() * 4); // для кожної прямої із минулої ітерації... for (Segment segment: segments) { // ... обраховуємо Криву Коха Segment[] child = segment.generate(); // усі прямі Кривої Коха запам'ятовуємо в тимчасовий масив for (Segment c : child) nextGeneration.add(c); } // тимчасовий масив стає постійним, про масив на минулій ітерації забуваємо segments = nextGeneration; // збільшуємо номер ітерації ++i; }
Властивості
- Крива Коха ніде не диференційована і не спрямна.
- Крива Коха не має самоперетинів.
- Крива Коха має проміжну (тобто не цілу) розмірність Хаусдорфа, яка дорівнює , оскільки вона складається з чотирьох рівних частин, кожна з яких подібна всій кривій з коефіцієнтом подібності 1/3.
- Довжина кривої Коха описується виразом
- де — кількість ітерацій, — довжина початкового відрізка.
Узагальнення
Можливі узагальнення кривої Коха, також використовують при побудові підстановки ламаної з чотирьох рівних відрізків, але вони мають іншу геометрію. Вони мають Розмірність Хаусдорфа від 1 до 2. Зокрема, якщо замість поділу відрізка 1:1:1 використовувати золотий перетин (φ: 1: φ), то отримаємо криву, що має відношення до мозаїк Пенроуза.
Також можна побудувати криву «Хрест Коха» на сторонах квадрата, при цьому проводячи побудову «в середину» квадрата.
Також можна побудувати «Сніжинку Коха» на сторонах рівностороннього трикутника.
Див. також
Примітки
- Слюсар В. И. Фрактальные антенны [ 19 лютого 2018 у Wayback Machine.].// Радиоаматор. — 2002. — № 9. — С. 54 -56., Конструктор. — 2002. — № 8. — С. 6 — 8.
- Вишневский В. М., Ляхов А. И., Портной С. Л., Шахнович И. В. Широкополосные беспроводные сети передачи информации. — М.: Техносфера. — 2005.- C. 498—569
- Слюсар, В. (2007). (PDF). Электроника: наука, технология, бизнес. — 2007. — № 5. с. С. 78—83. Архів оригіналу (PDF) за 28 березня 2018. Процитовано 6 травня 2020.
{{}}
:|pages=
має зайвий текст ()
Джерела
- Вишневский В. М., Ляхов А. И., Портной С. Л., Шахнович И. В. Широкополосные беспроводные сети передачи информации. — М.: Техносфера. — 2005.- C. 498—569.
Посилання
- Сніжинка Коха на вебсайті «Wolfram Mathworld» [ 7 серпня 2020 у Wayback Machine.]
Вікісховище має мультимедійні дані за темою: Koch snowflake |
Це незавершена стаття з математики. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Kriva Ko ha fraktalna kriva opisana 1904 roku shvedskim matematikom Helge fon Kohom Kriva KohaZbilshennya snizhinki KohaKriva KohaNazvano na chestGelge fon KohPershovidkrivach abo vinahidnikGelge fon KohData vidkrittya vinahodu 1904Pidtrimuyetsya VikiproyektomVikipediya Proyekt Matematika Kriva Koha u Vikishovishi Kriva Koha cikava tim sho nide ne maye dotichnih tobto nide ne diferencijovna hocha vsyudi neperervna Tri kopiyi krivoyi Koha pobudovani vistryami nazovni na storonah pravilnogo trikutnika utvoryuyut zamknenu krivu tak zvanu snizhinku Koha Kriva Koha zadayetsya takoyu sistemoyu iteracijnih funkcij f1 z 1 3 z displaystyle f1 z 1 3 z f2 z 1 3 z 2 3 displaystyle f2 z 1 3 z 2 3 f3 z 1 3 z cos pi 3 i sin pi 3 1 3 displaystyle f3 z 1 3 z cos pi 3 i sin pi 3 1 3 PobudovaCej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno traven 2020 Kriva Koha ye tipovim geometrichnim fraktalom Proces yiyi pobudovi viglyadaye tak beremo odinichnij vidrizok podilyayemo na tri rivni chastini i zaminyuyemo serednij interval rivnostoronnim trikutnikom bez cogo segmenta U rezultati utvoryuyetsya lamana sho skladayetsya z chotiroh lanok z dovzhinoyu 1 3 dovzhini pochatkovogo vidrizka Na nastupnomu kroci povtoryuyemo operaciyu dlya kozhnogo z chotiroh otrimanih lanok i tak dali Granichna kriva i ye krivoyu Koha Priklad skriptu PHP lt php set time limit 3 x 600 Dovzhina malyunku y 200 Visota malyunku r 10 Ramka i 4 Kilkist iteracij define PI 3 14159265358979323846 img imagecreate x y black imagecolorallocate img 0 0 0 imagefill img 1 1 black color imagecolorallocate img 255 255 255 recursion i r y r x r y r function recursion i x1 y1 x2 y2 global img color if i 0 imageline img x1 y1 x2 y2 color else alpha atan2 y2 y1 x2 x1 r sqrt x2 x1 x2 x1 y2 y1 y2 y1 xa x1 r cos alpha 3 ya y1 r sin alpha 3 xc xa r cos alpha PI 3 3 yc ya r sin alpha PI 3 3 xb x1 2 r cos alpha 3 yb y1 2 r sin alpha 3 recursion i 1 x1 y1 xa ya recursion i 1 xa ya xc yc recursion i 1 xc yc xb yb recursion i 1 xb yb x2 y2 header Content type image png imagepng img imagedestroy img gt Kriva Koha za dopomogoyu rekursiyi Priklad kodu na Processing int i 0 Kilkist iteracij void setup size 600 250 Rozmiri vikna void draw zamalyuvati vse v chornij korli background 0 vidobraziti bilim kolorom nomer iteraciyi v livomu verhnomu kuti stroke 255 text i 10 20 namalyuvati Krivu Koha za dopomogoyu rekursivnih viklikiv recursion i 0 200 600 200 void recursion int i float x1 float y1 float x2 float y2 kinec rekursivnim viklikam funkciyi if i 0 namalyuvati bilu liniyu vid tochki x1 y1 do x2 y2 stroke 255 line x1 y1 x2 y2 return float alpha atan2 y2 y1 x2 x1 kut povorotu float r sqrt x2 x1 x2 x1 y2 y1 y2 y1 vidstan mizh tochkami obrahovuye 3 tochki na pryamij C A B liva tochka liva vershina trikutnika float xa x1 r cos alpha 3 float ya y1 r sin alpha 3 centralna tochka verhnya vershina trikutnika float xc xa r cos alpha PI 3 3 float yc ya r sin alpha PI 3 3 prava tochka prava vershina trikutnika float xb x1 2 r cos alpha 3 float yb y1 2 r sin alpha 3 rekursivni vikliki funkciyi dlya 4 otrimanih linij recursion i 1 x1 y1 xa ya recursion i 1 xa ya xc yc recursion i 1 xc yc xb yb recursion i 1 xb yb x2 y2 perehid na nastupnu iteraciyi iz nazhimannyam klavishi mishki void mousePressed i Snizhinka Koha Priklad kodu na Processing klas ye odniye liniyeyu yaka vmiye generuvati na sobi Krivu Koha class Segment polya PVector start pochatok liniyi PVector end kinec liniyi konstruktor Segment PVector start PVector end this start start copy this end end copy metodi generuyemo Krivu Koha na pryamij Segment generate z odnoyi pryamoyu utvoryuyetsya 4 Segment children new Segment 4 1 3 pryamoyi PVector v PVector sub end start v div 3 liva vershina trikutnika PVector ls PVector add start v children 0 new Segment start ls prava vershina trikutnika PVector rs PVector sub end v children 3 new Segment rs end verhnya vershina trikutnika v rotate PI 3 PVector m PVector add ls v children 1 new Segment ls m children 2 new Segment m rs povertayemo Krivu Koha dlya ciyeyi liniyi return children vidobrazhayemo liniyu void show stroke 255 line start x start y end x end y dinamichnij masiv krivih yaki budut vidobrazhatis ArrayList lt Segment gt segments int i nomer iteraciyi void setup size 600 600 rozmir vikna inicializaciya poliv segments new ArrayList lt Segment gt i 0 vstanovlyuyemo 3 tochki vershini trikutnika PVector leftPoint new PVector 100 200 PVector rightPoint new PVector 500 200 PVector bottomPoint new PVector 300 500 zyednyuyemo ci tochki pryamimi Segment s1 new Segment bottomPoint leftPoint Segment s2 new Segment leftPoint rightPoint Segment s3 new Segment rightPoint bottomPoint dodayemo ci pryami do masivu segments add s1 segments add s2 segments add s3 void draw zamalyuvati vse v chornij kolir background 0 vidobraziti bilim kolorom nomer iteraciyi v livomu verhnomu kuti fill 255 text i 10 20 vidobraziti usi pryami for Segment segment segments segment show z nazhimannyam klavishi mishi obrahovuyemo pryami v nastupnij iteraciyi void mousePressed timchasovij dinamichnij masiv dlya novih pryamih ArrayList lt Segment gt nextGeneration new ArrayList lt Segment gt segments size 4 dlya kozhnoyi pryamoyi iz minuloyi iteraciyi for Segment segment segments obrahovuyemo Krivu Koha Segment child segment generate usi pryami Krivoyi Koha zapam yatovuyemo v timchasovij masiv for Segment c child nextGeneration add c timchasovij masiv staye postijnim pro masiv na minulij iteraciyi zabuvayemo segments nextGeneration zbilshuyemo nomer iteraciyi i VlastivostiKriva Koha nide ne diferencijovana i ne spryamna Kriva Koha ne maye samoperetiniv Kriva Koha maye promizhnu tobto ne cilu rozmirnist Hausdorfa yaka dorivnyuye ln 4 ln 3 1 26 displaystyle ln 4 ln 3 approx 1 26 oskilki vona skladayetsya z chotiroh rivnih chastin kozhna z yakih podibna vsij krivij z koeficiyentom podibnosti 1 3 Dovzhina krivoyi Koha opisuyetsya virazomPn s 43 n displaystyle P n s cdot left frac 4 3 right n de n displaystyle n kilkist iteracij s displaystyle s dovzhina pochatkovogo vidrizka UzagalnennyaPershi sim iteracij pobudovi snizhinki Koha Mozhlivi uzagalnennya krivoyi Koha takozh vikoristovuyut pri pobudovi pidstanovki lamanoyi z chotiroh rivnih vidrizkiv ale voni mayut inshu geometriyu Voni mayut Rozmirnist Hausdorfa vid 1 do 2 Zokrema yaksho zamist podilu vidrizka 1 1 1 vikoristovuvati zolotij peretin f 1 f to otrimayemo krivu sho maye vidnoshennya do mozayik Penrouza Takozh mozhna pobuduvati krivu Hrest Koha na storonah kvadrata pri comu provodyachi pobudovu v seredinu kvadrata Takozh mozhna pobuduvati Snizhinku Koha na storonah rivnostoronnogo trikutnika Div takozhKriva Gilberta Kriva Mura Kriva MinkovskogoPrimitkiSlyusar V I Fraktalnye antenny 19 lyutogo 2018 u Wayback Machine Radioamator 2002 9 S 54 56 Konstruktor 2002 8 S 6 8 Vishnevskij V M Lyahov A I Portnoj S L Shahnovich I V Shirokopolosnye besprovodnye seti peredachi informacii M Tehnosfera 2005 C 498 569 Slyusar V 2007 PDF Elektronika nauka tehnologiya biznes 2007 5 s S 78 83 Arhiv originalu PDF za 28 bereznya 2018 Procitovano 6 travnya 2020 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a pages maye zajvij tekst dovidka DzherelaVishnevskij V M Lyahov A I Portnoj S L Shahnovich I V Shirokopolosnye besprovodnye seti peredachi informacii M Tehnosfera 2005 C 498 569 PosilannyaSnizhinka Koha na vebsajti Wolfram Mathworld 7 serpnya 2020 u Wayback Machine Vikishovishe maye multimedijni dani za temoyu Koch snowflakeCe nezavershena stattya z matematiki Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi