<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Ceros de las funciones de Bessel de orden entero $J_\nu(\alpha_{\nu,n})=0$
Step1:  Podemos graficar estas raíces, de la forma siguiente
Step2:  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
Step3:  Vemos sin embargo que la diferencia $\alpha_{\nu,n+1}-\alpha_{\nu,n}$ tiende a $\pi$ para valores grandes de $n$.
Ceros de la derivada de las funciones de Bessel de orden entero $J'\nu(\alpha{\nu,n})=0$
Step4:  En este caso, el gráfico de las diferencias es también similar al caso anterior
<ASSISTANT_TASK:>
Python Code:
for nu in range(5):
    print('nu = '+str(nu)+': '+str(jn_zeros(nu,5)))
Explanation: Ceros de las funciones de Bessel de orden entero $J_\nu(\alpha_{\nu,n})=0$:
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$.
End of explanation
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')
Explanation: Podemos graficar estas raíces, de la forma siguiente:
End of explanation
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')
Explanation: 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:
End of explanation
for nu in range(5):
    print('nu = '+str(nu)+': '+str(jnp_zeros(nu,5)))
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()
Explanation: Vemos sin embargo que la diferencia $\alpha_{\nu,n+1}-\alpha_{\nu,n}$ tiende a $\pi$ para valores grandes de $n$.
Ceros de la derivada de las funciones de Bessel de orden entero $J'\nu(\alpha{\nu,n})=0$:
Análogamente, las raíces de las derivadas $J'_\nu$ son calculadas por la función jnp_zeros de scipy.special:
End of explanation
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()
Explanation: En este caso, el gráfico de las diferencias es también similar al caso anterior:
End of explanation
<END_TASK>