Фрактальные города

Фрактал - это кривая или геометрическая фигура, которая самоподобна, или, иначе говоря, каждая часть имеет тот же статистический характер, что и целое. Фракталы полезны при моделировании структур (таких как размытые береговые линии или снежинки), в которых похожие модели повторяются в постепенно уменьшающихся масштабах, а также при описании частично случайных или хаотических явлений, таких как рост кристаллов, турбулентность жидкости и образование галактик. По этой причине фракталы особенно полезны при моделировании и обычно используются в киностудиях.

Возможность использовать простую формулу для создания чего-то, что имитирует это естественное разнообразие в мире, экономит время вычислений. Если вас особенно интересует фрактальный рендеринг, ознакомьтесь с этим приложением, в котором вы можете создавать свои собственные сложные изображения городов.



Фракталы

В большинстве программ моделирования мы привыкли работать с евклидовой геометрией. Евклидова геометрия - это, вероятно, геометрия, с которой вы знакомы из курса геометрии в средней школе. Это позволяет нам делать такие вещи, как измерять расстояние s квадрата или площадь сферы. Мы можем создавать формулы, описывающие общий размер и характер идеальной формы. Например, A = πr² описывает идеальный круг, но вряд ли описывает округлые формы, с которыми мы сталкиваемся в реальном мире.

Медузы, озера, деревья и берега имеют более сложные формы. Если мы посмотрим на них, они несовершенны, с выступами, неровностями и вариациями в каждом масштабе. Фракталы помогают нам описать сложность более естественной геометрии. Математик Бенуа Мандельброт в своей работе «Фрактальная геометрия природы» описал фрактал как «грубую или фрагментированную геометрическую форму, которую можно разделить на части, каждая из которых (по крайней мере приблизительно) является копией уменьшенного размера все."

Мандельброт особенно интересовался масштабом и сложностью его описания. В масштабе береговой линии определить ее длину парадоксальным образом сложно. Допустим, вы должны были измерить линию пальто Калифорнии в футах. В первый раз, когда вы измеряете берег, вы используете линейку, охватывающую примерно милю - это не уловит всех сложностей скальных образований, которые выступают вдоль береговой линии. Во второй раз вы используете стандартную линейку в 1 фут. Теперь ваше измерение побережья Калифорнии намного больше. Но это могло продолжаться еще дольше. Представьте, что вы можете измерить каждый камень в отдельности. Таким образом, измеренная длина береговой линии зависит от метода ее измерения и степени картографического обобщения.

Рекурсия

Рекурсия: многократное применение правила к последовательным результатам. Рекурсивная функция - это функция, определенная в терминах самой себя с помощью самореференциальных выражений. Это означает, что функция будет продолжать вызывать себя и повторять свое поведение до тех пор, пока не будет выполнено какое-либо условие для возврата результата.

n! = n x (n−1) x (n−2) x (n−3) ⋅⋅⋅⋅ x 3 x 2 x 1
n! = n x (n−1)!

Если n равно 6, мы получим 6 x 5 x 4 x 3 x 2 x 1.

n! = n x (n−1)! 
n! = n x (n−1) x (n−2)!
n! = n x (n−1) x (n−2) x (n−3)!
⋅
⋅
n! = n x (n−1) x (n−2) x (n−3) ⋅⋅⋅⋅ x 3!
n! = n x (n−1) x (n−2) x (n−3) ⋅⋅⋅⋅ x 3 x 2!
n! = n x (n−1) x (n−2) x (n−3) ⋅⋅⋅⋅ x 3 x 2 x 1!

Применение рекурсии с геометрией

В математике системы повторяющихся функций (IFS) - это метод построения фракталов; получающиеся фракталы часто самоподобны и были введены в 1981 году.

Прокладка Серпинского

log 3 / log 2 = скорость копирования / скорость уменьшения
т.е. в каждом поколении будет сделано 3 копии, и каждая копия в поколении будет иметь длину, равную 1/2 размера исходной длины.

Давайте попробуем наши собственные! Не могли бы вы:

  • Сменить цвет?
  • Изменить форму?
  • Изменить глобальную геометрию?
  • Изменить цвет?
  • Использовать изображение?
size(1000, 1000)
background(0)
def circleDraw(x,y,radius):
    stroke(255,0,0)
    fill(0)
    ellipse(x, y, radius, radius)
    if radius > 2:
        circleDraw(x + radius/2, y, radius/2)
        circleDraw(x - radius/2, y, radius/2)
        circleDraw(x, y + radius/2, radius/2)
circleDraw(400,400,1000)

Чуть более сложная версия от Дэниела Шиффмана:

"""
Recursive Tree
by Daniel Shiffman.
Renders a simple tree-like structure via recursion. 
The branching angle is calculated as a function of 
the horizontal mouse location. Move the mouse left
and right to change the angle.
"""
def setup():
    size(640, 360)
def draw():
    background(0)
    frameRate(30)
    stroke(255)

    a = (mouseX / float(width)) * 90
    # Convert it to radians
    # Start the tree from the bottom of the screen
    translate(width / 2, height)
    # Draw a line 120 pixels
    line(0, 0, 0, -120)
    # Move to the end of that line
    translate(0, -120)
    # Start the recursive branching!
    branch(120, radians(a))
def branch(h, theta):
    # Each branch will be 2/3rds the size of the previous one
    h *= 0.66
    # All recursive functions must have an exit condition!!!!
    # Here, ours is when the length of the branch is 2 pixels or less
    if h > 2:
        # Save the current state of transformation 
        pushMatrix()
        rotate(theta)  # Rotate by theta
        line(0, 0, 0, -h)  # Draw the branch
        translate(0, -h)  # Move to the end of the branch
        branch(h, theta)  # call myself to draw two branches
        # "pop" in order to restore the previous
        # matrix state
        popMatrix()
        # Repeat the same thing, only branch off to the "left" 
        with pushMatrix():
            rotate(-theta)
            line(0, 0, 0, -h)
            translate(0, -h)
            branch(h, theta)

Множество Мандельброта

Один из самых захватывающих аспектов фракталов заключается в том, что с помощью очень простого набора правил вы начинаете замечать эмерджентное поведение. Новые шаблоны и разнообразие возникают из простых рекурсивных правил. Некоторые из самых сложных симуляций могут возникнуть из простейшего набора правил.

Клеточные автоматы и игра в жизнь

Скачайте здесь скетчи Python для Cellular Automata и Game of Life Processing.

Фрактальные города

Http://chrisbence.com/geometrics/fractal_city/

Какие еще примеры фракталов вы видите в городах или в природе? Какие наборы правил создают это? Почему у городов разные наборы правил и почему они повторяются в разных масштабах?

Фотограф Майкл Вульф



Рекурсия в видео и других местах

Фракталы обычно относятся к геометрическим и математическим описаниям самоподобия или рекурсии. Однако примеры рекурсии можно увидеть и во многих других примерах. «Эффект Дросте» относится к повторяющемуся изображению внутри себя, исходящему от компании под названием Droste, которая разместила изображение коробки на своей коробке.

Вы также, вероятно, знакомы с рекурсией, когда присоединяетесь к видеовстрече и наводите камеру на прямую трансляцию на камеру во время видеовстречи. Эффект представляет собой бесконечную картинку, которая становится все меньше и меньше.

По экономике

«В экономике предполагается, что макроскопическое поведение экономики является результатом совокупного воздействия производителей, пытающихся максимизировать свою прибыль, и потребителей, пытающихся максимизировать свою полезность». Это означает, что акции могут в совокупности отражать поведение рынка, но это основано на множестве примеров индивидуальных покупок и поведения. Таким образом, поведенческая экономика направлена ​​на изучение и моделирование индивидуального поведения, чтобы понять, как оно может повлиять на рынок в совокупности.

«Детерминированные и самоорганизующиеся модели предполагают, что лежащие в основе подсистемы« фиксированы »по своей природе, в то время как эволюционная модель пытается иметь дело с возможными изменениями на этом уровне».

совместная эволюция системы и окружающей среды - параметры окружающей среды будут влиять на адаптацию к поведению системы

Наука и сложность

Уоррен Уивер
Клод Шеннон

  • Самоорганизация - в сложных моделях самоорганизация возникает благодаря локальным правилам, применяемым во многих случаях. В результате возникает новый порядок системы, исходящий из местного уровня, но появляющийся на системном уровне. Это новое поведение называется эмерджентным поведением.
  • проблема простоты
  • проблемы неорганизованной сложности - законы температуры и давления миллионов неорганизованных молекул воздуха
  • проблемы организованной сложности - неорганизованные агенты создают сложное органическое целое

Микро и макро состояния

для игрового автомата:
микро - {вишня, лимон, яблоко} или {вишня, вишня, вишня}
макрос - {проигрыш} или {выигрыш}
состояние макроса - это набор микрогосударства