import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider

# Paramètres
lam = 1.0
L = 6.0
c = 1.0

x = np.linspace(0, L, 400)

def y(x, t, r):
    return (np.cos(2*np.pi*(c*t - x)/lam)
            + r*np.cos(2*np.pi*(c*t - 2*L + x)/lam))

# Figure
fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.35)

ax.set_xlim(0, L)
ax.set_ylim(-2, 2)
ax.set_xlabel("x")
ax.set_ylabel("y(x,t)")

# Ligne vide au départ
line, = ax.plot([], [], lw=2)

# Slider pour r
ax_r = plt.axes([0.2, 0.20, 0.6, 0.03])
slider_r = Slider(
    ax=ax_r,
    label='r',
    valmin=-1.0,
    valmax=1.0,
    valinit=0.0,
    valstep=0.01
)

# Slider pour t
ax_t = plt.axes([0.2, 0.12, 0.6, 0.03])
slider_t = Slider(
    ax=ax_t,
    label='t',
    valmin=0.0,
    valmax=2 * lam / c,
    valinit=0.0,
    valstep=0.01
)

# Mise à jour commune
def update(val):
    r = slider_r.val
    t = slider_t.val
    line.set_data(x, y(x, t, r))
    fig.canvas.draw_idle()

slider_r.on_changed(update)
slider_t.on_changed(update)

plt.show()
