from sympy import *
from spb import *
import panel as pn
x, y, f1, f2, d, n = symbols("x, y, f_1, f_2, d, n")
plot(
    (cos(f1 * x) * exp(-d * x), "oscillator 1"),
    (cos(f2 * x) * exp(-d * x), "oscillator 2"),
    (exp(-d * x), "upper limit", {"linestyle": ":"}),
    (-exp(-d * x), "lower limit", {"linestyle": ":"}),
    prange(x, 0, n * pi),
    params={
        (f1, f2): pn.widgets.RangeSlider(value=(1, 2), start=0, end=10, step=0.1),     # frequency
        d: (0.25, 0, 1),   # damping
        n: (2, 0, 4)       # multiple of pi
    },
    ylim=(-1.25, 1.25),
    title=("$f_1$ = {:.2f} Hz", f1),
)