Вы находитесь на странице: 1из 4

Método de aproximacion de raices

de Newton para el cálculo de los


ceros de la función Bessel
Se tiene la ecuación de Bessel:
.. 
x2 y(x) + x y (x) + x2 - ν 2  y(x) = 0,
Cuya primera solución, es la función función Bessel definida como:
(-1)p x ν+2 p
Jν (x) = ∑∞
p=0 p! Γ(ν+p+1)  2  ,

la cual cumple que:


(-1)p x -ν+2 p
J-ν (x) = ∑∞
p=0 p! Γ(-ν+p+1)  2  ;

donde Γ, es la función Gamma definida como



Γ(ν) = ∫0 xν-1 e-x ⅆx , ν > 0.

La segunda solución a la ecuación de Bessel, cuando ν es entero, la función Neumann, se define


como:
cos(νπ) Jν (x)-J-ν
Nn (x) = sin(νπ)
.

Entonces, se dice que la solución general a la ecuación de Bessel, es:


yν (x) = AJν (x) + BNν (x), con ν real.
Por relaciones de recuerrencia, se tiene:
ⅆ 1
ⅆx
Jn = 2
(Jn-1 - Jn+1 ).

El método que se usará para encontrar las raíces de las funciones Jν y Nν , es el método de Newton, el
cual se expresa de la forma:
f(xi )
xi+1 = xi - f' (xi )
.

Aproximación para función Bessel


Para la implementación del método de Newton, primero se identifica el dominio en donde pueda existir un
cero, esto es, se evalúa cuando la funcíon de Bessel tiene un cambio en su signo. Luego de identificar estos
puntos, en donde se presenta cambio de signo, éstos son elegidos como primer punto a evaluar para la
implementación del método. En “rangeOnX”, se establece el dominio de la función, que va desde cero hasta
el valor determinado. Entre mas grande sea este dominio, mayor cantidad de ceros serán calculados. Tam-
bién se puede determinar la cantidad de decimales que se desean obtener en la precisión de los ceros
2 besselNumerical.nb

encontrados de la función Bessel modificando el valor de la variable “prec”. El número de iteraciones en el


método de Newton, puede ser modificado en la variable “Num”.
besselNumerical.nb 3

In[667]:= Clear[order, fn, rangeOnX, g, x0val, xval];


borra
order = 0; (*order of the function*)
rangeOnX = 33; (*range on x, starts from zero to the defined number*)
g = 1; (*counter of change of sign*)
Num = 5; (*Iteration number*)
prec = 5; (*number of decimals after dot*)
Plot[BesselJ[0, x], {x, 0, rangeOnX}]
repr⋯ J de Bessel

Array[xval, order];
arreglo
Array[x0val, order]
arreglo
For[ii = 1, ii ≤ rangeOnX, ii ++,
para cada
xval[ii] = If[BesselJ[order, ii] < 0, " Negative", " Possitive"];
si J de Bessel negativo
]
For[ii = 1, ii ≤ rangeOnX, ii ++,
para cada
If[xval[ii] ⩵ xval[ii + 1], "no change", x0val[g] = ii; g ++; ];
si
]
Print["Possible cuantity of zeros on the selected range = ", g - 1];
escribe
Forii = 1, ii ≤ g - 1, ii ++,
para cada
x0 = x0val[ii];
fn[x_] := BesselJ[order, x];
J de Bessel
dfn[x_] := 1  2 BesselJ[order - 1, x] - BesselJ[order + 1, x];
J de Bessel J de Bessel
fn[x]
Iteracion[x_, fn_] := x - ;
dfn[x]

zero = N[NestList[Iteracion[#, fn] &, x0, Num], prec];


⋯ lista de resultados anidados
Print["Zero", " ", ii, " = ", zero ]
escribe

For[ii = 1, ii ≤ g - 1, ii ++,
para cada
Print["Calculated", " ", ii, " ",
escribe
"zero with BesselJZero function = ", N[BesselJZero[order, ii]]]
cero de J de Bessel ⋯ cero de J de Bessel
]
4 besselNumerical.nb

1.0

0.8

0.6

0.4
Out[669]=
0.2

5 10 15 20 25 30

-0.2

-0.4

Out[671]= {}

Possible cuantity of zeros on the selected range = 10

Zero 1 = {2.0000, 2.3882, 2.4048, 2.4048, 2.4048, 2.4048}

Zero 2 = {5.0000, 5.5421, 5.5200, 5.5201, 5.5201, 5.5201}

Zero 3 = {8.0000, 8.7316, 8.6532, 8.6537, 8.6537, 8.6537}

Zero 4 = {11.000, 11.968, 11.788, 11.792, 11.792, 11.792}

Zero 5 = {14.000, 15.283, 14.911, 14.931, 14.931, 14.931}

Zero 6 = {18.000, 18.071, 18.071, 18.071, 18.071, 18.071}

Zero 7 = {21.000, 21.214, 21.212, 21.212, 21.212, 21.212}

Zero 8 = {24.000, 24.365, 24.352, 24.352, 24.352, 24.352}

Zero 9 = {27.000, 27.533, 27.493, 27.493, 27.493, 27.493}

Zero 10 = {30.000, 30.727, 30.634, 30.635, 30.635, 30.635}

Calculated 1 zero with BesselJZero function = 2.40483

Calculated 2 zero with BesselJZero function = 5.52008

Calculated 3 zero with BesselJZero function = 8.65373

Calculated 4 zero with BesselJZero function = 11.7915

Calculated 5 zero with BesselJZero function = 14.9309

Calculated 6 zero with BesselJZero function = 18.0711

Calculated 7 zero with BesselJZero function = 21.2116

Calculated 8 zero with BesselJZero function = 24.3525

Calculated 9 zero with BesselJZero function = 27.4935

Calculated 10 zero with BesselJZero function = 30.6346

Вам также может понравиться