Courbes paramétrées - Lissajous

Une courbe de Lissajous est une courbe paramétrée $\gamma$ de la forme $$ \gamma(t)=(\cos(at),\sin(bt)), $$ où $a$ et $b$ sont des entiers relatifs non nuls. La courbe de Lissajous la plus simple est bien-sûr le cercle unité. Quelques exemples plus intéressants sont obtenus en prenant $a\neq1$ ou $b\neq1$:

In [19]:
t=var('t')

def lissajous(a,b):
    return (cos(a*t),sin(b*t))

def plot_lissajous(a,b):
    return parametric_plot(lissajous(a,b), (t,0,2*pi), ticks=[1,1])

a=[[plot_lissajous(i,j) for j in range(1,5)] for i in range(1,4)]
graphics_array(a)
Out[19]:

(un bug dans sage ne tient pas compte de l'option ticks pour toutes les graphiques dans la commande parametric_plot mais seulement pour la dernière.) Il est plus parlant de tracer ces lissajous de manière simultanée:

In [26]:
s=var('s')

def plot_lissajous_arc(a,b,s):
    plt=parametric_plot(lissajous(a,b),(t,-0.01,s))
    plt.set_axes_range(-1,1,-1,1)
    return plt

def plot_lissajous_array(m,n,s):
    return graphics_array([[plot_lissajous_arc(i,j,s) for j in range(1,n)] for i in range(1,m)])

q=[plot_lissajous_array(4,5,s) for s in sxrange(0,2*pi,2*pi/100,include_endpoint=True)]
q.extend(50*q[-1:])
a = animate(q)
a.show(delay=10)