# x‘= σ(y – x)
# y‘ = x(ρ – z) – y
# z‘ = xy – βz


import numpy
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt


def lorenz(t, xyz):
    x, y, z = xyz
    s, r, b = 10, 28, 8 / 3.0  # parameters Lorentz used
    return [s * (y - x), x * (r - z) - y, x * y - b * z]


a, b = 0, 40
t = numpy.linspace(a, b, 4000)

sol1 = solve_ivp(lorenz, [a, b], [1, 1, 1], t_eval=t)
sol2 = solve_ivp(lorenz, [a, b], [1, 1, 1.00001], t_eval=t)

plt.plot(sol1.y[0], sol1.y[2])
plt.xlabel("$x$")
plt.ylabel("$z$")
plt.savefig("lorenz_xz.png")
plt.show()
plt.close()


plt.subplot(211)
plt.plot(sol1.t, sol1.y[0])
plt.xlabel("$t$")
plt.ylabel("$x_1(t)$")
plt.subplot(212)
plt.plot(sol1.t, sol1.y[0] - sol2.y[0])
plt.ylabel("$x_1(t) - x_2(t)$")
plt.xlabel("$t$")
plt.savefig("lorenz_x.png")
plt.show()
