≡ Menu

Lissajous figures…

Lissajous figures, geometric representations named after French physicist Jules Antoine Lissajous, arise from two perpendicular oscillations, typically in the form of sinusoidal waves. These oscillations are characterized by specific frequencies and phase differences, parameters that can be adjusted to shape the resulting figure. Specifically, Lissajous curves are primarily determined by three parameters: the frequency ratio of the two sinusoidal waves (a, b) and the phase difference (δ) between them. These parameters are embedded within the following parametric equations, which define the Lissajous curve:

x = sin(at + δ)
y = sin(bt)


By varying these parameters, the form of the Lissajous figure can be manipulated to exhibit an array of shapes, ranging from lines to ellipses, circles, and even more intricate forms. The exact shape hinges on the precise relationship between the frequency ratio and the phase difference.

import numpy as np
import matplotlib.pyplot as plt

# Definition of time range
t = np.linspace(0, 2*np.pi, 1000)

# Definition of frequencies and phase differences
frequencies = [1, 2, 3, 4]
phase_differences = [0, np.pi/4, np.pi/2, 3*np.pi/4]


Lissajous curves have extensive practical implications in fields beyond pure mathematics. In the realm of physics and engineering, they are essential tools for analyzing oscillatory movements, especially when it comes to determining the phase and frequency of a wave in comparison to another. Moreover, Lissajous figures are instrumental in oscilloscopes for the visualization and measurement of electrical waves. Their application is not limited to the scientific domain, however, as they also make significant contributions to the arts and design field. They enable the creation of intriguing patterns and symmetries and have been employed in computer graphics, animation, and even light art to generate complex and dynamic forms.

To generate Lissajous curves in Python, the numpy and matplotlib libraries are particularly suited. By first defining a time range from 0 to 2π and setting specific frequencies and phase differences, a series of Lissajous curves can be created and explored.

# Creation of a grid of plots
fig, axs = plt.subplots(len(frequencies), len(phase_differences), figsize=(10, 10))

for i, freq in enumerate(frequencies):
for j, phase in enumerate(phase_differences):
# Generation of Lissajous curves
x = np.sin(freq * t + phase)
y = np.sin(t)

# Plotting of the curves
axs[i, j].plot(x, y)

# Setting of the title
axs[i, j].set_title(f'Frequency: {freq}, Phase: {phase/np.pi}π')

# Adjustment of the space between the plots
plt.tight_layout()
plt.show()


In this Python code, the x and y values of each Lissajous figure are computed for every combination of frequency and phase difference, using the parametric equations of the Lissajous curves. Each curve is then plotted, and the title of each subplot is set to indicate the corresponding frequency and phase difference.

{ 0 comments… add one }