Extrapolación de Richardson

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Un ejemplo del método de extrapolación Richardson en dos dimensiones.

En el análisis numérico, Richardson extrapolación es un método de aceleración de secuencia utilizado para mejorar la tasa de convergencia de una secuencia de estimaciones de algún valor . En esencia, dado el valor para varios valores Podemos estimar extrapolando las estimaciones . Se llama después de Lewis Fry Richardson, quien introdujo la técnica a principios del siglo XX, aunque la idea ya era conocida por Christiaan Huygens en su cálculo de π. En palabras de Birkhoff y Rota, "su utilidad para computaciones prácticas apenas puede ser sobreestimada".

Las aplicaciones prácticas de la extrapolación de Richardson incluyen la integración de Romberg, que aplica la extrapolación de Richardson a la regla del trapecio, y el algoritmo de Bulirsch-Stoer para resolver ecuaciones diferenciales ordinarias.

Fórmula general

Notación

Vamos. ser una aproximación (valor real) que depende de un tamaño de paso positivo h con una fórmula de error del formulario

Tenga en cuenta que al simplificar con la notación O grande, las siguientes fórmulas son equivalentes:

Propósito

La extrapolación Richardson es un proceso que encuentra una mejor aproximación de cambiando la fórmula del error a Por consiguiente, sustituyendo con el error de truncación se ha reducido a para el mismo tamaño del paso . El patrón general ocurre en el cual es una estimación más precisa que cuando . Con este proceso hemos logrado una mejor aproximación de restando el término más grande del error que fue . Este proceso se puede repetir para eliminar más términos de error para obtener incluso mejores aproximaciones.

Proceso

Usando los tamaños del paso y para algunos constantes , las dos fórmulas son:

()1)

()2)

Para mejorar nuestra aproximación desde a eliminando el primer término de error, multiplicamos ecuación 2 por y subtract ecuación 1 para darnos

Relación de recurrencia

Se puede definir una relación de recurrencia general para las aproximaciones mediante

Propiedades

La extrapolación de Richardson se puede considerar como una transformación de secuencia lineal.

Además, la fórmula general se puede utilizar para estimar (comportamiento de tamaño de orden líder del error de Truncation) cuando ni su valor ni es conocido a priori. Tal técnica puede ser útil para cuantificar una tasa desconocida de convergencia. Dadas aproximaciones de tres tamaños de paso distintos , , y , la relación exacta

O

As , si y es elegido para que , esta relación aproximada reduce a una ecuación cuadrática en , que se resuelve fácilmente en términos de y .

Ejemplo de extrapolación de Richardson

Supongamos que deseamos aproximarnos y tenemos un método que depende de un pequeño parámetro de tal manera que

Definamos una nueva función

Entonces

Ah

Muy a menudo, es mucho más fácil obtener una precisión dada usando R(h) en lugar de A(h ′) con una h′ mucho más pequeña. Donde A(h′) puede causar problemas debido a una precisión limitada (errores de redondeo) y/o debido al creciente número de cálculos necesarios (ver ejemplos a continuación).

Pseudocódigo de ejemplo para la extrapolación de Richardson

El siguiente pseudocódigo en el estilo MATLAB demuestra la extrapolación de Richardson para ayudar a resolver el ODE , con el método Trapezoidal. En este ejemplo, amalgamos el tamaño del paso cada iteración y así en la discusión arriba tendríamos que . El error del método Trapezoidal se puede expresar en términos de poderes impares para que el error sobre múltiples pasos se pueda expresar en incluso poderes; esto nos lleva a elevar al segundo poder y tomar poderes en el pseudocódigo. Queremos encontrar el valor de , que tiene la solución exacta ya que la solución exacta del ODE es . Este pseudocódigo supone que una función llamada Trapezoidal(f, tStart, tEnd, h, y0) existe que intenta calcular y(tEnd) realizando el método trapezoidal en la función f, con punto de partida y0 y tStart y tamaño del paso h.

Tenga en cuenta que comenzar con un tamaño de paso inicial demasiado pequeño puede introducir errores en la solución final. Aunque existen métodos diseñados para ayudar a elegir el mejor tamaño de paso inicial, una opción es comenzar con un tamaño de paso grande y luego permitir que la extrapolación de Richardson reduzca el tamaño de paso en cada iteración hasta que el error alcance la tolerancia deseada.

TStart = 0 % Hora de iniciot Final = 5 % Tiempo de finalizaciónf = -Sí.^2 % El derivado de y, así que y' = f(t, y(t)) = -y^2 % La solución a este ODE es y = 1/(1 + t)Y0 = 1 % La posición inicial (es decir, y0 = y(tStart) = y(0) = 1)tolerancia = 10^-11 % 10 dígitos de precisión se desea% No permitas que la iteración continúe indefinidamentemaxRows = 20% Escoge un tamaño inicial del pasoinicial H = TStart - t Final% ¿Hemos podido encontrar la solución dentro de la tolerancia deseada? Aún no.WeFoundSolution = falsoh = inicial H% Crear una matriz 2D de tamaño maxRows por maxRows para mantener los extrapolados de Richardson% Tenga en cuenta que esta será una matriz triangular inferior y que en la mayoría de las dos filas son en realidad% necesario en cualquier momento en el cálculo.A = ceroMatrix()maxRows, maxRows)% Computar el elemento superior izquierdo de la matriz.% Ahora se ha llenado la primera fila de esta matriz (triangular inferior).A()1, 1) = Trapezoidal()f, TStart, t Final, h, Y0)% Cada fila de la matriz requiere una llamada a Trapezoidal% Este bucle comienza llenando la segunda fila de la matriz,% desde la primera fila se computó arribapara i = 1 : maxRows - 1 % Empezando desde i = 1, iterate at most maxRows - 1 times % Halve el valor anterior de h ya que este es el comienzo de una nueva fila. h = h/2 % Iniciando fila de llenado i+1 desde la izquierda llamando % de la función Trapezoidal con este nuevo tamaño de paso más pequeño A()i + 1, 1) = Trapezoidal()f, TStart, t Final, h, Y0) % Ir a través de esta corriente (i+1)-a fila hasta que se alcanza la diagonal para j = 1 : i % Para computar A(i + 1, j + 1), que es el próximo extrapolado de Richardson,  % use the most recently computed value (i.e. A(i + 1, j)) % y el valor de la fila sobre él (es decir, A(i, j)). A()i + 1, j + 1) = (()4^j). *A()i + 1, j) - A()i, j)/()4^j - 1); final  % Después de dejar el bucle interior anterior, el elemento diagonal de fila i + 1 ha sido calculado % Este elemento diagonal es el último extrapolado de Richardson para ser calculado. % La diferencia entre este extrapolato y el último extrapolato de fila es una buena % de indicación del error. si ()absoluto Valor()A()i + 1, i + 1) - A()i, i) c) tolerancia) % Si el resultado es de tolerancia % Mostrar el resultado de la extrapolación de Richardson impresión()"y", A()i + 1, i + 1) WeFoundSolution = verdadero % Hecho, así que deja el bucle descanso finalfinal% Si no pudiéramos encontrar una solución dentro de la tolerancia deseadasi ()no WeFoundSolution) impresión()"Advertencia: No puede encontrar solución dentro de la tolerancia deseada de ", tolerancia); impresión()"El último extrapolado computado fue ", A()maxRows, maxRows)final

Contenido relacionado

Conjunto vacío

En matemáticas, el conjunto vacío es el conjunto único que no tiene elementos; su tamaño o cardinalidad es cero. Algunas teorías axiomáticas de...

Historia de la lógica

La historia de la lógica se ocupa del estudio del desarrollo de la ciencia de la inferencia válida tal como se encuentran en el Organon, encontraron una...

Menor que <

El signo menor que es un símbolo matemático que denota una desigualdad entre dos valores. La forma ampliamente adoptada de dos trazos de igual longitud que...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save