Articulo de referencia

Proceso delta-cuadrado de Aitken

En el análisis numérico , el proceso delta-cuadrado de Aitken o extrapolación de Aitken es un método de aceleración en serie utilizado para acelerar la tasa de convergencia de u...

En el análisis numérico , el proceso delta-cuadrado de Aitken o extrapolación de Aitken es un método de aceleración en serie utilizado para acelerar la tasa de convergencia de una secuencia. Recibe su nombre en honor a Alexander Aitken , quien introdujo este método en 1926. [1] Es más útil para acelerar la convergencia de una secuencia que converge linealmente. Seki Kōwa (1642-1708) conocía una forma precursora y la aplicó a la rectificación del círculo, es decir, al cálculo de π.

Definición

Dada una secuencia con el proceso delta-cuadrado de Aitken, se asocia a esta secuencia la nueva secuencia incógnita = ( incógnita norte ) {\displaystyle X={(x_{n})}} norte = 0 , 1 , 2 , 3 , , {\displaystyle n=0,1,2,3,\lpuntos ,}

A [ incógnita ] = ( a norte ) = ( incógnita norte incógnita norte + 2 incógnita norte + 1 2 incógnita norte + incógnita norte + 2 2 incógnita norte + 1 ) , {\displaystyle A[X]=(a_{n})={\left({\frac {x_{n}\,x_{n+2}-x_{n+1}^{2}}{x_{n}+x_{n+2}-2\,x_{n+1}}}\right)},}

que también se puede escribir como

A [ incógnita ] = ( incógnita norte ( Δ incógnita norte ) 2 Δ 2 incógnita norte ) , {\displaystyle A[X]=\left(x_{n}-{\frac {(\Delta x_{n})^{2}}{\Delta ^{2}x_{n}}}\right),}

con y Ambos son la misma secuencia algebraicamente pero el último ha mejorado la estabilidad numérica en la implementación computacional. Δ incógnita norte = incógnita norte + 1 incógnita norte {\textstyle \Delta x_{n}=x_{n+1}-x_{n}} Δ 2 incógnita norte = incógnita norte 2 incógnita norte + 1 + incógnita norte + 2 = Δ incógnita norte + 1 Δ incógnita norte . {\textstyle \Delta ^{2}x_{n}=x_{n}-2x_{n+1}+x_{n+2}=\Delta x_{n+1}-\Delta x_{n}.}

A [ incógnita ] {\textstyle A[X]} está mal definida si la secuencia contiene un elemento cero, lo que ocurre si la secuencia de diferencias hacia adelante tiene algún término repetido. Desde un punto de vista teórico, si eso ocurre solo para un número finito de índices, se podría aplicar el proceso de Aitken solo a la parte de la secuencia con índices tales que sea el último índice para el cual la secuencia se repite. En la práctica, los primeros términos de la secuencia generalmente proporcionan la precisión deseada; además, al calcular numéricamente la secuencia, uno debe tener cuidado de detener el cálculo antes de que los errores de redondeo en el denominador se vuelvan demasiado grandes, ya que la transformación de la secuencia puede cancelar dígitos significativos . Δ 2 [ incógnita ] = ( Δ 2 incógnita norte ) {\textstyle \Delta ^{2}[X]=(\Delta ^{2}x_ {n})} Δ [ incógnita ] = ( Δ incógnita norte ) , {\textstyle \Delta [X]=(\Delta x_ {n}),} incógnita {\estilo de visualización X} norte > norte 0 estilo de visualización n>n_{0} norte 0 {\estilo de visualización n_{0}} Δ [ incógnita ] {\textstyle \Delta [X]} Δ 2 {\textstyle \Delta ^{2}}

Propiedades

El proceso delta-cuadrado de Aitken es un método de aceleración de convergencia y un caso particular de una transformación de secuencia no lineal .

Se dice que una secuencia que converge a un valor límite converge linealmente , o más técnicamente Q-linealmente, si hay algún número para el cual incógnita = ( incógnita norte ) {\textstyle X=(x_{n})} {\textstyle \ell } micras ( 0 , 1 ) {\textstyle \mu \in (0,1)}

límite norte | incógnita norte + 1 | | incógnita norte | = micras . {\displaystyle \lim _{n\to \infty }{\frac {|x_{n+1}-\ell |}{|x_{n}-\ell |}}=\mu .}

Esto significa que, asintóticamente, la distancia entre la secuencia y su límite se reduce casi en la misma proporción, en cada paso y la razón de reducción se acerca cada vez más a esa proporción. Esto también se denomina a veces "convergencia geométrica", ya que es una propiedad característica de las series geométricas , o "convergencia exponencial", ya que es convergencia como micras , {\estilo de visualización \mu ,} micras norte = exp ( norte En micras ) . {\displaystyle \mu ^{n}=\exp(n\ln \mu ).}

El método de Aitken acelerará la convergencia de una secuencia si, con los términos definidos anteriormente, satisface incógnita {\estilo de visualización X} A [ incógnita ] = ( a norte ) , {\displaystyle A[X]=(a_{n}),} límite norte a norte incógnita norte = 0. {\textstyle \lim _{n\to \infty }{\frac {a_{n}-\ell }{x_{n}-\ell }}=0.}

A {\estilo de visualización A} no es un operador lineal en secuencias, pero es lineal con respecto a la adición de secuencias constantes: si es cualquier secuencia constante , constante para todos Esto queda claro a partir de la expresión de en términos del operador de diferencia finita A [ incógnita do ] = A [ incógnita ] do , {\textstyle A[XC]=A[X]-C,} do {\estilo de visualización C} do = ( do ) {\displaystyle C=(c)} norte . {\displaystyle n.} A [ incógnita ] {\estilo de visualización A[X]} Δ . {\displaystyle \Delta .}

El nuevo proceso en general no converge cuadráticamente, pero para una secuencia de funciones iteradas que satisface para alguna función que converge a un punto fijo , la convergencia de la secuencia acelerada es cuadrática. En este caso, la técnica se conoce como método de Steffensen . incógnita norte + 1 = F ( incógnita norte ) {\displaystyle x_{n+1}=f(x_{n})} F {\estilo de visualización f}

Empíricamente, la operación A elimina el "término de error más importante". Esto se puede comprobar considerando una secuencia de la forma , donde : La secuencia irá entonces al límite como tiende a cero. incógnita norte = + a norte + b norte {\displaystyle x_{n}=\ell+a^{n}+b^{n}} 0 < b < a < 1 {\displaystyle 0<b<a<1} A [ incógnita ] {\estilo de visualización A[X]} {\textstyle \ell } b norte Estilo de visualización b^{n}}

Geométricamente, la gráfica de una función exponencial que satisface , y tiene una asíntota horizontal en (si ). F ( a ) {\displaystyle f(t)} F ( norte ) = incógnita norte {\displaystyle f(n)=x_{n}} F ( norte + 1 ) = incógnita norte + 1 {\displaystyle f(n+1)=x_{n+1}} F ( norte + 2 ) = incógnita norte + 2 {\displaystyle f(n+2)=x_{n+2}} x n x n + 2 x n + 1 2 x n 2 x n + 1 + x n + 2 {\displaystyle {\frac {x_{n}x_{n+2}-x_{n+1}^{2}}{x_{n}-2x_{n+1}+x_{n+2}}}} x n 2 x n + 1 + x n + 2 0 {\displaystyle x_{n}-2x_{n+1}+x_{n+2}\neq 0}

También se puede demostrar que si una secuencia converge a su límite a una tasa estrictamente mayor que 1, no tiene una mejor tasa de convergencia. (En la práctica, rara vez se tiene, por ejemplo, convergencia cuadrática, lo que significaría más de 30 (respectivamente 100) decimales correctas después de 5 (respectivamente 7) iteraciones (comenzando con 1 dígito correcto); por lo general, no se necesita aceleración en ese caso). X {\displaystyle X} {\displaystyle \ell } A [ X ] {\displaystyle A[X]}

En la práctica, a menudo converge mucho más rápido al límite que lo hace, como lo demuestran los cálculos de ejemplo a continuación. Por lo general, es mucho más barato calcular (lo que implica solo el cálculo de diferencias, una multiplicación y una división) que calcular muchos más términos de la secuencia . Sin embargo, se debe tener cuidado para evitar introducir errores debido a una precisión insuficiente al calcular las diferencias en el numerador y el denominador de la expresión. A [ X ] {\displaystyle A[X]} X {\displaystyle X} A [ X ] {\displaystyle A[X]} X {\displaystyle X}

Ejemplos de cálculos

Ejemplo 1 : El valor de se puede aproximar asumiendo un valor inicial para e iterando la siguiente secuencia, llamada método de Heron : Comenzando con 2 1.4142136 {\displaystyle {\sqrt {2}}\approx 1.4142136} x 0 {\displaystyle x_{0}} x n + 1 = x n + 2 x n 2 . {\displaystyle x_{n+1}={\frac {x_{n}+{\frac {2}{x_{n}}}}{2}}.} x 0 = 1 : {\displaystyle x_{0}=1:}

Cabe señalar aquí que el método de Aitken no ahorra el costo de calcular dos iteraciones; el cálculo de los primeros tres valores requirió los primeros cinco valores. Además, el segundo valor es menos preciso que el cuarto valor, lo que no es sorprendente debido al hecho de que el proceso de Aitken es más adecuado para secuencias que convergen linealmente, en lugar de cuadráticamente, y el método de Heron para calcular raíces cuadradas converge cuadráticamente. [ cita requerida ] A [ X ] {\textstyle A[X]} X {\textstyle X} A [ X ] {\textstyle A[X]} X {\textstyle X}

Ejemplo 2 : El valor de puede calcularse como una suma infinita mediante la fórmula de Leibniz para π : π 4 {\displaystyle {\frac {\pi }{4}}}

π 4 = n = 0 ( 1 ) n 2 n + 1 0.785398 {\displaystyle {\frac {\pi }{4}}=\sum _{n=0}^{\infty }{\frac {(-1)^{n}}{2n+1}}\approx 0.785398}

En este ejemplo, el método de Aitken se aplica a una serie que converge sublinealmente y acelera considerablemente la convergencia. La convergencia sigue siendo sublineal, pero mucho más rápida que la convergencia original: el primer valor, cuyo cálculo requirió los tres primeros valores, está más cerca del límite que el octavo valor. A [ X ] {\textstyle A[X]} X {\textstyle X} X {\textstyle X}

Ejemplo de pseudocódigo para la extrapolación de Aitken

El siguiente es un ejemplo de uso de la extrapolación de Aitken para ayudar a encontrar el límite de la secuencia cuando se da un valor inicial donde se supone que el límite de esta secuencia es un punto fijo (por ejemplo, ). Por ejemplo, si la secuencia está dada por con un punto de partida , entonces la función será que tiene como punto fijo (ver Métodos para calcular raíces cuadradas ); es este punto fijo cuyo valor se aproximará. x n + 1 = f ( x n ) {\displaystyle x_{n+1}=f(x_{n})} x 0 , {\displaystyle x_{0},} f {\displaystyle f} α = f ( α ) {\displaystyle \alpha =f(\alpha )} x n + 1 = 1 2 ( x n + 2 x n ) {\textstyle x_{n+1}={\frac {1}{2}}\left(x_{n}+{\frac {2}{x_{n}}}\right)} x 0 = 1 , {\displaystyle x_{0}=1,} f ( x ) := 1 2 ( x + 2 x ) , {\textstyle f(x):={\frac {1}{2}}\left(x+{\frac {2}{x}}\right),} α := 2 {\displaystyle \alpha :={\sqrt {2}}}

Este pseudocódigo también calcula la aproximación de Aitken a . Las extrapolaciones de Aitken se denotarán por . Durante el cálculo de la extrapolación, es importante verificar si el denominador se vuelve demasiado pequeño, lo que podría suceder si ya tenemos una gran cantidad de precisión; sin esta verificación, la división podría introducir una gran cantidad de error. Este pequeño número se denotará por . Debido a que la representación binaria del punto fijo podría ser infinita (o al menos demasiado grande para caber en la memoria disponible), el cálculo se detendrá una vez que la aproximación esté dentro del valor verdadero. f ( α ) {\displaystyle f^{\prime }(\alpha )} aitkenXepsilontolerance

%Estas opciones dependen del problema a resolver 
x0 = 1 %El valor inicial f ( x ) = ( 1 / 2 ) * ( x + 2 / x ) %La función que encuentra el siguiente elemento en la secuencia tolerancia = 10 ^ - 10 %Se desea una precisión de 10 dígitos epsilon = 10 ^ - 16 %No divida por un número menor que este                        
          
            
              

maxIterations = 20 % No permitir que las iteraciones continúen indefinidamente haveWeFoundSolution = false % ¿Pudimos encontrar la solución dentro de la tolerancia deseada? todavía no            
   

para i = 1 : máxIteraciones x1 = f ( x0 ) x2 = f ( x1 )      
      
      

    if ( x1 ~= x0 ) lambda = absoluteValue (( x2 - x1 ) / ( x1 - x0 )) %OPCIONAL: Calcula una aproximación de |f'(fixedPoint)|, que se denota por lambda end   
                
    

    denominador = ( x2 - x1 ) - ( x1 - x0 );        

    if ( absoluteValue ( denominador ) < epsilon ) % Para evitar un gran aumento del error, no divida por un número demasiado pequeño print ( 'ADVERTENCIA: el denominador es demasiado pequeño' ) break % Salga del bucle end           
        
                                                
    

    aitkenX = x2 - ( ( x2 - x1 ) ^ 2 ) / denominador if ( absoluteValue ( aitkenX - x2 ) < tolerancia ) % Si el valor está dentro de la tolerancia print ( "El punto fijo es " , aitkenX )) % Mostrar el resultado de la extrapolación de Aitken haveWeFoundSolution = true break % Listo, entonces sal del bucle end        
    
              
                
          
                                                
    

    x0 = aitkenX %Actualizar x0 para comenzar de nuevo                   fin                                       


if ( haveWeFoundSolution == false ) %Si no pudimos encontrar una solución dentro de la tolerancia deseada print ( "Advertencia: No se pudo encontrar una solución dentro de la tolerancia deseada de " , tolerancia ) print ( "La última extrapolación calculada fue " , aitkenX ) end      
     
     

Véase también

Notas

  1. ^ Aitken, Alexander (1926). "Sobre la solución numérica de Bernoulli de ecuaciones algebraicas". Actas de la Royal Society de Edimburgo . 46 : 289–305. doi :10.1017/S0370164600022070.

Referencias

  • William H. Press, et al. , Numerical Recipes in C , (1987) Cambridge University Press, ISBN 0-521-43108-5 (Ver sección 5.1) 
  • Abramowitz y Stegun, Manual de funciones matemáticas , sección 3.9.7
  • Kendall E. Atkinson, Introducción al análisis numérico , (1989) John Wiley & Sons, Inc, ISBN 0-471-62489-6 
Retrieved from "https://en.wikipedia.org/w/index.php?title=Aitken%27s_delta-squared_process&oldid=1247496877"