In [1]:
%matplotlib notebook
from matplotlib.pyplot import *
from numpy import *
from scipy.special import *
style.use('classic')
En el módulo scipy.special
las raíces de las funciones de Bessel están implementadas en la función jn_zeros
. En particular jn_zeros(nu,N)
entrega un arreglo con las primeras $N$ raíces de la función $J_\nu$.
In [2]:
for nu in range(5):
print('nu = '+str(nu)+': '+str(jn_zeros(nu,5)))
Podemos graficar estas raíces, de la forma siguiente:
In [8]:
figure()
nmax = 20
numax = 10
for nu in range(numax):
scatter(nu*ones(nmax),jn_zeros(nu,nmax))
ylim(0,50)
xlim(-1,numax)
xlabel('$\\nu$', fontsize=15)
ylabel(r'$\alpha_{\nu,n}$', fontsize=15)
xticks(range(numax))
grid()
savefig('../figs/fig-Bessel-ceros-01.pdf')
Note que estas raíces no están igualmente espaciadas, lo que se aprecia mejor al graficar la diferencia entre una raiz y la siguiente:
In [9]:
figure()
nmax = 20
numax = 10
for nu in range(numax):
plot(range(nmax-1),diff(jn_zeros(nu,nmax)), marker='o', markersize=5, lw=1, label='$\\nu = %d$'%nu)
xlim(-1,nmax-1)
ylim(3,)
xlabel('$n$', fontsize=15)
ylabel('$\\alpha_{\\nu,n+1}-\\alpha_{\\nu,n}$', fontsize=15)
xticks(range(nmax))
legend()
grid()
savefig('../figs/fig-Bessel-ceros-02.pdf')
Vemos sin embargo que la diferencia $\alpha_{\nu,n+1}-\alpha_{\nu,n}$ tiende a $\pi$ para valores grandes de $n$.
Análogamente, las raíces de las derivadas $J'_\nu$ son calculadas por la función jnp_zeros
de scipy.special
:
In [5]:
for nu in range(5):
print('nu = '+str(nu)+': '+str(jnp_zeros(nu,5)))
In [6]:
figure()
nmax = 20
numax = 10
for nu in range(numax):
scatter(nu*ones(nmax),jnp_zeros(nu,nmax))
ylim(0,50)
xlim(-1,numax)
xlabel('$\\nu$', fontsize=15)
ylabel('$\\beta_{\\nu,n}$', fontsize=15)
xticks(range(numax))
grid()
En este caso, el gráfico de las diferencias es también similar al caso anterior:
In [7]:
figure()
nmax = 20
numax = 10
for nu in range(numax):
plot(range(nmax-1),diff(jnp_zeros(nu,nmax)), marker='o', markersize=5, lw=1, label='$\\nu = %d$'%nu)
xlim(-1,nmax-1)
ylim(3,)
xlabel('$n$', fontsize=15)
ylabel('$\\beta_{\\nu,n+1}-\\beta_{\\nu,n}$', fontsize=15)
xticks(range(nmax))
legend()
grid()