English: ```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
def rossler_system(t, xyz, a, b, c):
x, y, z = xyz
dx_dt = -y - z
dy_dt = x + a * y
dz_dt = b + z * (x - c)
return [dx_dt, dy_dt, dz_dt]
- Rossler system parameters
a = 0.2
b = 0.2
c = 5.7
- Initial conditions
xyz0 = [1.0, 1.0, 1.0]
tmin, tmax = 0, 10000
t_span = [tmin, tmax]
t_resolution = 100
t_eval = np.linspace(t_span[0], t_span[1], (tmax-tmin) * t_resolution)
solution = solve_ivp(rossler_system, t_span, xyz0, args=(a, b, c), t_eval=t_eval)
x, y, z = solution.y
%%capture
import os
xmin, xmax = min(x) + (min(x) - max(x))*0.03, max(x) + (max(x) - min(x))*0.03
for i, delay in enumerate(range(1, 601, 5)):
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111)
ax.plot(x[:-(delay)], x[(delay):], color='k', linewidth=0.04, alpha=0.8)
ax.axis("off")
ax.set_xlim(xmin, xmax)
ax.set_ylim(xmin, xmax)
title = ax.set_title(f"Rössler attractor reconstructed with delay t={delay/t_resolution:0.2f}", fontsize=20)
title.set_position((0.1,0))
title.set_ha('left')
title.set_va('bottom')
dir_path = f"./rossler"
if not os.path.exists(dir_path):
os.makedirs(dir_path)
fig.savefig(f"{dir_path}/{i}.png")
plt.close()
import imageio.v3 as iio
import os
from natsort import natsorted
import moviepy.editor as mp
for dir_path in ["./rossler"]:
file_names = natsorted((fn for fn in os.listdir(dir_path) if fn.endswith('.png')))
# Create a list of image files and set the frame rate
images = []
fps = 12
# Iterate over the file names and append the images to the list
for file_name in file_names:
file_path = os.path.join(dir_path, file_name)
images.append(iio.imread(file_path))
filename = dir_path[2:]
iio.imwrite(f"{filename}.gif", images, duration=1000/fps, rewind=True)
clip = mp.ImageSequenceClip(images, fps=fps)
clip.write_videofile(f"{filename}.mp4")
```