Está en la página 1de 8

Funciones de Bessel de primera especie

Representamos J0(x), J1(x), J2(x) y J3(x) llamando a la función besselj(n,x) de


MATLAB, dando valores a su primer parámetro n=0,1,2,3,

hold on
for n=0:3
f=@(x) besselj(n,x);
fplot(f,[0,20], 'displayName',num2str(n));
end
legend('-DynamicLegend','location','Best')
xlabel('x')
ylabel('J(x)')
title('Funciones J_n(x) de Bessel')
grid on
hold off

En la siguiente tabla, se proporcionan los primeros ceros de las funciones de


Bessel J0(x), J1(x) y J2(x).

function r = raices(f, x)
y=f(x);
indices=find(y(1:end-1).*y(2:end)<0);
r=zeros(1,length(indices));
for k=1:length(indices)
r(k)=fzero(f, [x(indices(k)), x(indices(k)+1)]);
end
end
x=linspace(0,40,40);
f=@(x) besselj(0,x);
k=raices(f,x);
disp('J_0(x)')
disp(k)

f=@(x) besselj(1,x);
k=raices(f,x);
disp('J_1(x)')
disp(k)

f=@(x) besselj(2,x);
k=raices(f,x);
disp('J_2(x)')
disp(k)

J0(x) J1(x) J2(x)

2.4048 3.8317 5.1356

5.5201 7.0156 8.4172

8.6537 10.1735 11.6198

11.7915 13.3237 14.7960

14.9309 16.4706 17.9598

18.0711 19.6159 21.1170

21.2116 22.7601 24.2701

24.3525 25.9037 27.4206

27.4935 29.0468 30.5692

30.6346 32.1897 33.7165

Aproximaciones
Cuando x se hace grande la función Jn(x), tiende hacia

J0(x)≅√ 2πx cos(x−π4)Jn(x)≅√ 2πx cos(x−nπ2−π4)J0(x)≅2πxcos(x−π4)


Jn(x)≅2πxcos(x−nπ2−π4)

Representamos la función Jn(x) y su aproximación asintótica

n=3;
f=@(x) sqrt(2./(pi*x)).*cos(x-n*pi/2-pi/4);
k=0:4;
hold on
fplot(@(x) besselj(n,x),[1,20])
fplot(f,[1,20])
r=(2*k+1)*pi/2+n*pi/2+pi/4; %ceros coseno
plot(r,0,'o','markersize',3,'markeredgecolor','r','markerfacecolor','
r')
hold off
legend('J_n(x)','cos(x)')
xlabel('x')
ylabel('J_n(x)')
title('Funciones J_n(x) de Bessel')
grid on
hold off

En la figura, se ha representado los ceros de la función cos(x-nπ/2-π/4), que


como vemos son próximos a los ceros de la función Jn(x). Este hecho nos
permite calcular los ceros de la función de Bessel mediante el comando fzero de
MATLAB. Recuérdese que los ceros de la función coseno son
(2k+π)/2, k=0,1,2,3...

n=3;
for k=0:5
r=(2*k+1)*pi/2+n*pi/2+pi/4; %ceros coseno
x1=fzero(@(x) besselj(n,x), r);
disp(x1)
end
6.3802
9.7610
13.0152
16.2235
19.4094
22.5827

Relaciones de ortogonalidad
Comprobamos que la integral

1∫0xJ0(kmx)J0(knx)dx=0m≠n∫01xJ0(kmx)J0(knx)dx=0 m≠n

donde km y kn son raíces distintas de J0(k)=0


x=linspace(0,40,40);
f=@(x) besselj(0,x);
k=raices(f,x);

f=@(x) x.*(besselj(0,k(1)*x).*besselj(0,k(2)*x));
integral(f,0,1)
ans = 8.9311e-18
Cuando m=n

1∫0xJ20(kx)dx=12(J20(k)+J21(k))∫01xJ02(kx)dx=12(J02(k)+J12(k
))

>> syms x k;
>> int('x*besselj(0,k*x)^2',x,0,1)
ans= besselj(0, k)^2/2 + besselj(1, k)^2/2

Otras relaciones
1∫0xJ0(kx)dx=1kJ1(k)∫01xJ0(kx)dx=1kJ1(k)

>> syms k x;
>> int('x*besselj(0,k*x)',x,0,1)
ans =besselj(1, k)/k

Derivadas
dJn(x)dx=nJn(x)x−Jn+1(x)dJn(x)dx=nJn(x)x−Jn+1(x)

>> syms x n;
>> diff(besselj(n,x))
ans =(n*besselj(n, x))/x - besselj(n + 1, x)

Desarrollo en serie Fourier-Bessel


En este apartado explicamos el caso más simple, el de una función f(r) tal
que f(R)=0 entonces se puede expresar en términos de un desarrollo en serie
de Fourier-Bessel

f(r)=∞∑n=1anJ0(knrR)f(r)=∑n=1∞anJ0(knrR)

donde kn son los ceros de la función J0(x) o las raíces de la ecuación


transcendente J0(k)=0

Para determinar los coeficientes an se utiliza las relaciones de ortogonalidad.


Multiplicamos ambos miembros por J0(knr/R) e integramos entre 0 y R

R∫0r⋅f(r)J0(kmrR)dr=∞∑n=1anR∫0r⋅J0(kmrR)J0(knrR)dr∫0Rr·f(r)J0(kmr
R)dr=∑n=1∞an∫0Rr·J0(kmrR)J0(knrR)dr

Cuando m≠n la integral se hace cero, resultando


R∫0r⋅f(r)J0(kmrR)dr=amR∫0r⋅J20(kmrR)dram=2R2J21(km)R∫0r⋅f(r)J0(kmrR)

dr∫0Rr·f(r)J0(kmrR)dr=am∫0Rr·J02(kmrR)dram=2R2J12(km)∫0
Rr·f(r)J0(kmrR)dr

Ejemplo 1

Consideremos la función de la figura, f(r)=1-|r-1| 0≤r≤R=2

Calculamos los coeficientes an

an=2R2J21(kn)R∫0r(1−|r−1|)J0(knrR)dran=2R2J12(kn)∫0Rr(1−|r−1
|)J0(knrR)dr

Integramos numéricamente mediante la función integral de MATLAB

x=linspace(0,40,40);
f=@(x) besselj(0,x);
k=raices(f,x);

R=2;
a=zeros(1,length(k));
for i=1:length(k)
f=@(r) (r.*(1-abs(r-1))).*besselj(0,k(i)*r/R);
a(i)=2*integral(f,0,R)/(R*besselj(1,k(i)))^2;
end
r=linspace(0,R,200);
y=zeros(1,length(r));
for i=1:10
y=y+a(i)*besselj(0,k(i)*r/R);
end
hold on
fplot('1-abs(r-1)',[0,R]);
plot(r,y);
hold off
grid on
xlabel('r')
ylabel('f(r)')
title('Serie Fourier-Bessel')
Nos aproximamos con los 10 primeros términos del desarrollo en serie a la
función f(r). Los valores de los primeros cinco coeficientes son los siguientes:

>> a(1:5)
ans = 1.0149 -0.6448 -0.3029 0.0365 0.0865

Ejemplo 2
Consideremos la función

f(r)={10≤r<b0b≤r≤Rf(r)={1 0≤r<b0 b≤r≤R

Los coeficientes se calculan del siguiente modo

an=2R2J21(kn)R∫0r⋅f(r)J0(knrR)dr=2R2J21(kn)b∫0r⋅J0(knrR)dran=2R2
J12(kn)∫0Rr·f(r)J0(knrR)dr=2R2J12(kn)∫0br·J0(knrR)dr

x=linspace(0,40,40);
f=@(x) besselj(0,x);
k=raices(f,x);

R=2;
b=1;
a=zeros(1,length(k));
for i=1:length(k)
f=@(r) r.*besselj(0,k(i)*r/R);
a(i)=2*integral(f,0,b)/(R*besselj(1,k(i)))^2;
end
r=linspace(0,R,200);
y=zeros(1,length(r));
for i=1:10
y=y+a(i)*besselj(0,k(i)*r/R);
end
yy=r<=b;
hold on
plot(r,yy);
plot(r,y);
hold off
grid on
xlabel('r')
ylabel('f(r)')
title('Serie Fourier-Bessel')

Como podemos apreciar, son necesarios bastantes términos del desarrollo en


serie para aproximarnos a la función f(r). Los valores de los primeros cinco
coeficientes an son los siguientes

>> a(1:5)
ans = 0.7698 0.6615 -0.2830 -0.4643 0.1987
FUENTE: http://www.sc.ehu.es/sbweb/fisica3/especial/bessel/bessel.html

También podría gustarte