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

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

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

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

Собственными словами

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

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

Мне этого было достаточно, чтобы понять, что происходит: числа, которые я набрал в компьютере, были не совсем оригинальными. Это были округлые версии, которые я сначала отдал в типографию. Причиной были первоначальные ошибки, вызванные округлением значений: они постоянно росли, пока не контролировали решение. Сейчас мы бы назвали это хаосом».

Чтобы продемонстрировать это, давайте численно решим уравнения Лоренца, используя метод Эйлера на Python для различных начальных условий.

import numpy as np
import matplotlib.pyplot as plt

'''The lorenz equations'''
def dx_dt(x,y,z):
    return 10*(y-x)

def dy_dt(x,y,z):
    return x*(28-z)-y

def dz_dt(x,y,z):
    return x*y-8*z/3

'''solving for the initial conditions x=x0,y=y0 and z=z0'''

def euler(x0,y0,z0,h,n):
    x=np.zeros(n)
    y=np.zeros(n)
    z=np.zeros(n)
    t=np.zeros(n)
    x[0]=x0
    y[0]=y0
    z[0]=z0
    t[0]=0
    for i in range(n-1):
        x[i+1]=x[i]+h*(dx_dt(x[i],y[i],z[i]))
        y[i+1]=y[i]+h*(dy_dt(x[i],y[i],z[i]))
        z[i+1]=z[i]+h*(dz_dt(x[i],y[i],z[i]))
        t[i+1]=t[i]+h

    return t,x,y,z

'''Taking 20 random numbers bw 0 and 1 for initial x,y and z'''
from mpl_toolkits import mplot3d
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
for i in range(15):
    t,x,y,z=euler(np.random.rand(),np.random.rand(),np.random.rand(),0.01,1000)
    ax.plot3D(x, y, z)

Как мы видим, даже небольшое изменение начального условия (все начальные условия лежат в пределах 0 и 1) может привести к тому, что система поведет себя совершенно по-другому. Таким образом, этот эффект ограничивает прогнозирование будущего даже детерминированных систем, поскольку решения со временем становятся хаотическими.

Спасибо за чтение !!