Прикладные дифференциальные уравнения

Занятие 8

Илья Щуров

Факультет компьютерных наук, Прикладная математики и информатика, 2021-22 учебный год

Страница курса

Система Лоренца

$$ \begin{align} \frac{\mathrm{d}x}{\mathrm{d}t} &= \sigma (y - x), \\[6pt] \frac{\mathrm{d}y}{\mathrm{d}t} &= x (\rho - z) - y, \\[6pt] \frac{\mathrm{d}z}{\mathrm{d}t} &= x y - \beta z. \end{align} $$
In [2]:
import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import odeint

%matplotlib inline
In [3]:
def lorentz(X, t, sigma, rho, beta):
    x, y, z = X
    return np.array([sigma * (y - x), x * (rho - z) - y, x * y - beta * z])
In [4]:
trajectory1 = odeint(
    lorentz, np.array([1, 2, 3]), np.linspace(0, 30, 3000), args=(10, 28, 8.1 / 3)
)
trajectory2 = odeint(
    lorentz, np.array([10, 2, 3]), np.linspace(0, 30, 3000), args=(10, 28, 8.1 / 3)
)
In [8]:
plt.plot(trajectory1[:, 0], trajectory1[:, 1])
plt.plot(trajectory2[:, 0], trajectory2[:, 1])
Out[8]:
[<matplotlib.lines.Line2D at 0x7f8f10cea6a0>]
In [9]:
import plotly.graph_objects as go
In [10]:
go.Figure(
    [
        go.Scatter3d(
            x=trajectory1[:, 0], y=trajectory1[:, 1], z=trajectory1[:, 2], mode="lines"
        ),
        go.Scatter3d(
            x=trajectory2[:, 0], y=trajectory2[:, 1], z=trajectory2[:, 2], mode="lines"
        ),
    ]
)