Bessel’s differential equation is given by:

It is a 2-dimensional wave equation, having many applications in physics including the notable examples:

  • describing electromagnetic waves in a cylindrical wave-guide
  • solving the radial Schrodinger Equation for a free particle
  • modes of vibration on a circular drum.

For integer it has the series solution:

as

We can use python to approximate using increasingly large .

The function could look something like this;

def bessj(n, x, N):
    partial_sum = 0
    
    from math import factorial 
    for l in range(N+1):
        partial_sum += (-1)**l/(2**(2*l+n)*factorial(l)*factorial(n+l))*x**(2*l+n)
    
    return partial_sum

We could then plot the bessel function approximation for larger values of . We’ll also plot .

import numpy as np
import matplotlib.pyplot as plt

def bessel_plotter(N):
    plt.xlabel("x")
    plt.ylabel("J_n(x)")
    plt.title(f"Bessel Function Types (Order {N})")
    x_domain = np.linspace(0, 15, 1000)
    
    for kind in [1, 2, 3, 4, 5, 6]:
        plt.plot(x_domain, bessj(kind, x_domain, N), label = f'n = {kind}')

    return plt.legend()

With abit of matplotlib magic we can animate this process:

Beautiful!