![](https://habrastorage.org/getpro/habr/post_images/23e/0e9/886/23e0e98867b0d1ff5185bd4d960db746.png)
Я обнаружил этот фрактал, когда разглядывал интерференцию волн на поверхности речки. Волна движется к берегу, отражается и накладывается сама на себя. Есть ли порядок в тех узорах, которые создаются волнами? Попробуем найти его. Рассмотрим не всю волну, а только вектор ее движения. «Берега» сделаем гладкими, для простоты эксперимента.
Эксперимент можно провести на обычном листке в клеточку из школьной тетради.
Или используя JavaScript реализацию алгоритма.
Английская версия: New kind of fractals — Fractals in relatively prime integers (coprime integers)
Возьмем прямоугольник со сторонами q и p. Отправим луч (вектор) из угла в угол. Луч двигается к одной из сторон прямоугольника, отражается и продолжает движение к следующей стороне. Это продолжается до тех пор, пока луч не попадет в один из оставшихся углов. Если размер стороны q и p — взаимно просты числа, то получается узор (как мы увидим позже — фрактал).
На картинке мы ясно видим, как работает этот алгоритм.
![](https://habrastorage.org/getpro/habr/post_images/5e3/813/f4d/5e3813f4d513062d1f67f81765fca3fd.jpg)
Gif-анимация:
![](https://habrastorage.org/getpro/habr/post_images/087/182/4b3/0871824b30bef6856de89f43af017c43.gif)
![](https://habrastorage.org/getpro/habr/post_images/ee6/980/a8b/ee6980a8b56fd8aa1d2a976808d090c5.png)
Самое удивительное то, что с разными сторонами прямоугольника — получаем разные узоры.
![](https://habrastorage.org/getpro/habr/post_images/b56/00c/72c/b5600c72c32eadc4ea8285ed5efcacc5.png)
![](https://habrastorage.org/getpro/habr/post_images/b71/d5a/684/b71d5a684ab6d6578e3ce3c3da3253ff.png)
![](https://habrastorage.org/getpro/habr/post_images/557/478/e21/557478e21f0ad44df48571f135e59b6a.png)
![](https://habrastorage.org/getpro/habr/post_images/e5c/c53/6ca/e5cc536cab44bc8db0e5d2d574a434a2.png)
![](https://habrastorage.org/getpro/habr/post_images/25d/8e7/ed3/25d8e7ed34bf622cae2dda24c807a65f.png)
![](https://habrastorage.org/getpro/habr/post_images/947/b39/605/947b39605eafdc0733a2659691b7b4cb.png)
![](https://habrastorage.org/getpro/habr/post_images/bd6/dea/ae8/bd6deaae8e6236f2516105de0f66bc67.png)
![](https://habrastorage.org/getpro/habr/post_images/0b0/6b2/cd0/0b06b2cd0cb439c0af30e2f98eb6c94b.png)
![](https://habrastorage.org/getpro/habr/post_images/c1c/e95/5ce/c1ce955ceca048388a9742793112fdfe.png)
![](https://habrastorage.org/getpro/habr/post_images/a64/d73/94e/a64d7394e158776bd36d674c139c5390.png)
![](https://habrastorage.org/getpro/habr/post_images/073/886/948/0738869482f688bc198747e142549d12.png)
![](https://habrastorage.org/getpro/habr/post_images/0e5/e8e/1aa/0e5e8e1aa23aadfc24e5c6cfc092a193.png)
Почему я называю эти узоры фракталами? Как известно, «фрактал» — это геометрическая фигура, обладающая свойствами самоподобия. Часть картинки повторяет всю картинку в целом. Если значительно увеличить размеры сторон Q и P — ясно, что эти узоры обладают свойствами самоподобия.
Попробуем увеличить. Увеличивать будем хитрым способом. Возьмем, например, узор 17x29. Следующие узоры будут: 29x(17+29=46), 46x(29+46=75)…
Одна сторона: F(n);
Вторая сторона: F(n+1)=F(n)+F(n-1);
17, 29, 46, 75, 121, 196, 317, 513, 830, 1343
Как числа Фибоначчи, только с другими первым и вторым членом последовательности: F(0)=17, F(1)=29.
![](https://habrastorage.org/getpro/habr/post_images/2e0/709/638/2e0709638a777e47a63fc1c3a4817cb2.png)
![](https://habrastorage.org/getpro/habr/post_images/4fa/30a/c66/4fa30ac66dfcd85c56100ce314c6dd84.png)
![](https://habrastorage.org/getpro/habr/post_images/dee/e00/840/deee00840e5934762fdda604a76cd7c5.png)
![](https://habrastorage.org/getpro/habr/post_images/a04/629/f88/a04629f883060773c181076d89f6f087.png)
![](https://habrastorage.org/getpro/habr/post_images/e0d/eca/d01/e0decad016bfe8099bad65202a0eecc9.png)
![](https://habrastorage.org/getpro/habr/post_images/318/d8d/b1e/318d8db1e22dc9d96d47b4c752812f0c.png)
![](https://habrastorage.org/getpro/habr/post_images/af2/1ff/4a4/af21ff4a4425dd683aded44fe491de82.png)
![](https://habrastorage.org/getpro/habr/post_images/a40/1a0/c92/a401a0c9283449416d9bb400065efaaf.png)
![](https://habrastorage.org/getpro/habr/post_images/c8d/aa0/c03/c8daa0c03c01c1f4d6bcc1212e1f6aa1.png)
Дальше фракталы циклически повторяются.
Если большая сторона четная, получается такой узор:
![](https://habrastorage.org/getpro/habr/post_images/4fa/30a/c66/4fa30ac66dfcd85c56100ce314c6dd84.png)
Если меньшая сторона четная:
![](https://habrastorage.org/getpro/habr/post_images/dee/e00/840/deee00840e5934762fdda604a76cd7c5.png)
Если обе стороны нечетные — получаем симметрический узор:
![](https://habrastorage.org/getpro/habr/post_images/a04/629/f88/a04629f883060773c181076d89f6f087.png)
![](https://habrastorage.org/getpro/habr/post_images/af2/1ff/4a4/af21ff4a4425dd683aded44fe491de82.png)
В зависимости от того, как начинается луч:
![](https://habrastorage.org/getpro/habr/post_images/609/79f/185/60979f185497b5d3615826b6cd430c60.png)
или
![](https://habrastorage.org/getpro/habr/post_images/f0d/bc6/fc3/f0dbc6fc37f30dd55e9b8e26d84acf0a.png)
Попробую объяснить, что происходит в этих прямоугольниках.
Отделим от прямоугольника квадрат, и посмотрим, что происходит на границе.
![](https://habrastorage.org/getpro/habr/post_images/e93/a90/164/e93a9016491bc97f71718e68895e6dc8.png)
Луч выходит в той-же точке, откуда зашел.
![](https://habrastorage.org/getpro/habr/post_images/211/753/c8b/211753c8bb3490af5d7c7c19652a9654.png)
При этом, количество квадратиков, которые проходит луч — всегда четное число.
Поэтому, если отрезать от прямоугольника квадрат — останется не измененная часть фрактала.
Если отделять от фрактала квадраты столько раз, сколько это возможно — можно добраться до «начала» фрактала.
![](https://habrastorage.org/getpro/habr/post_images/779/730/2f6/7797302f6c9e4865caf21dcd63d1a34f.png)
Похоже на спираль Фибоначчи?
![](https://habrastorage.org/getpro/habr/post_images/a02/5cc/979/a025cc979886c4d6b011ec6eb6cfd21d.png)
Из чисел Фибоначчи тоже можно получить фракталы.
В математике числами Фибоначчи (ряд Фибоначчи, последовательность Фибоначчи) называют числа:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597…
По определению, первые две цифры в последовательности Фибоначчи 0 и 1, а каждое последующее число равно сумме двух предыдущих.
F(n)=F(n-1)+F(n-2)
F(0)=0, F(1)=1
![](https://habrastorage.org/getpro/habr/post_images/b95/193/59a/b9519359ad8266bd9c46b7558563c0cc.png)
Поехали:
![](https://habrastorage.org/getpro/habr/post_images/293/46a/1a0/29346a1a06ecc5fb2755ef703da5669c.png)
![](https://habrastorage.org/getpro/habr/post_images/a85/486/d3d/a85486d3d79c26b3cc212cb86907935f.png)
![](https://habrastorage.org/getpro/habr/post_images/438/d81/f8e/438d81f8ea90d055047465b493bcd3db.png)
![](https://habrastorage.org/getpro/habr/post_images/b00/ec1/cab/b00ec1cabaf0b35020792eff6f70fc14.png)
![](https://habrastorage.org/getpro/habr/post_images/e34/33c/a3b/e3433ca3b4e22adc686a8639df103393.png)
![](https://habrastorage.org/getpro/habr/post_images/060/bb7/3f1/060bb73f128ceba19bfd65e2318e5a1a.png)
![](https://habrastorage.org/getpro/habr/post_images/a11/fd1/93a/a11fd193af1918bf2af380e13019972a.png)
![](https://habrastorage.org/getpro/habr/post_images/258/cb5/81d/258cb581de83e25a9be1408f133caf2f.png)
![](https://habrastorage.org/getpro/habr/post_images/a03/cf3/2be/a03cf32bed533e9b24230c5f57350305.png)
![](https://habrastorage.org/getpro/habr/post_images/622/954/5f1/6229545f1516f2ade6adfc0a04c84a6c.png)
![](https://habrastorage.org/getpro/habr/post_images/bf7/5c4/383/bf75c4383c2a67f453119a58fa1f1a77.png)
![](https://habrastorage.org/getpro/habr/post_images/981/9de/e43/9819dee43b5809c42a5ca4bfb00ab723.png)
Как мы видим, чем ближе отношение сторон приближается к золотому сечению — тем больше детализация фрактала.
![](https://habrastorage.org/getpro/habr/post_images/fe9/98b/4c3/fe998b4c33121c21362103a69dbb5bf2.png)
При этом фрактал повторяет часть фрактала, увеличенного на
![](https://habrastorage.org/getpro/habr/post_images/f09/390/b12/f09390b12b4fa64e8dd400941217032f.png)
Вместо чисел Фибоначчи можно использовать иррациональные размеры сторон:
![](https://habrastorage.org/getpro/habr/post_images/05b/319/09c/05b31909c7eca36996c31db4fcf6abe3.png)
Получим тот-же фрактал.
Те-же фракталы можно получить и в квадрате, если пускать луч под другим углом:
![](https://habrastorage.org/getpro/habr/post_images/d43/e6b/885/d43e6b885ffaf16f439680d65a15f195.png)
Что можно сказать в заключении?
Хаос — это тоже порядок. Со своими закономерностями. Порядок этот не изученный, но вполне поддающийся изучению. А все стремление науки — обнаружить эти закономерности. И в конечном итоге соединить детали головоломки, чтобы увидеть общую картину.
Давайте посмотрим на поверхность речки. Если бросить в нее камень — пойдут волны. Круги, вполне поддающиеся изучению. Скорость, период, длину волны — все это можно подсчитать. Но до тех пор, пока волна не дойдет до берега, не отразиться и не начнет накладываться на саму себя. Получим хаос (интерференцию), который уже трудно поддается изучению.
Что если двигаться от обратного? Упростить поведение волны на столько, на сколько это возможно. Упростить, найти закономерность и после этого попробовать описать уже полную картину происходящего.
Что можно упростить? Очевидно, что сделать отражающую поверхность прямой, без изгибов. Далее, вместо самой волны, использовать только вектор движения волны. В принципе, этого достаточно, чтобы построить простой алгоритм и смоделировать процесс на компьютере. И даже вполне достаточно, чтобы сделать «модель» поведения волны на обычном листке в клеточку.
Что имеем в результате? В результате видим, что в волновых процессах (та-же рябь на поверхности речки) имеем не хаос, а наложение фракталов (самоподобных структур) друг на друга.
Рассмотрим другой вид волн. Как известно, электромагнитная волна состоит из трех векторов — волновой вектор и вектора напряженности электрического и магнитного поля. Как видим, если «словить» такую волну в замкнутой области – там, где пересекаются эти вектора, получаем вполне четкие замкнутые структуры. Быть может, элементарные частицы – это такие-же фракталы?
![](https://habrastorage.org/getpro/habr/post_images/85a/2b3/9ae/85a2b39aeb316d27e2ef53699a2d42c8.jpg)
Все фрактальчики в прямоугольниках от 1 до 80 (6723х6723 px):
![](https://habrastorage.org/getpro/habr/post_images/be5/c57/d04/be5c57d048ac72fe225a25a0fddba3ac.png)
Замкнутые области во фракталах (6723х6723 px):
![](https://habrastorage.org/getpro/habr/post_images/4ac/271/c1e/4ac271c1ed91863dd1da058e1498cecd.png)
![](https://habrastorage.org/storage3/9fb/238/809/9fb238809d9434a432789669cac9a1e6.png)
Просто красивый фрактал (4078x2518 px):
![](https://habrastorage.org/getpro/habr/post_images/cc3/ce6/061/cc3ce6061cce219ac06635e2926453ef.png)
Если у вас хватило терпения дочитать до конца, еще раз JavaScript реализация алгоритма :)
Продолжение:
Фракталы в иррациональных числах
Фракталы в иррациональных числах. Часть 2