La Técnica de Richardson, o extrapolación de Richardson, fue desarrollada por el matemático británico Lewis Fry Richardson a principios del siglo XX. Inicialmente se utilizó en la resolución de problemas de diferencias finitas en ecuaciones diferenciales, pero luego se extendió a mejorar la precisión de cualquier proceso numérico aproximado, como la integración o derivación numérica, usando varias aproximaciones con diferentes tamaños de paso para eliminar términos de error.
Se basa en calcular una aproximación numérica con dos valores de paso distintos y combinarlas para eliminar el término dominante del error.
Si tenemos dos aproximaciones:
Mejorar la precisión de integrales y derivadas numéricas.
Refinar resultados en métodos de diferencias finitas para ecuaciones diferenciales.
Optimizar el cálculo de límites y soluciones iterativas.
Reducir errores de truncamiento en cualquier método numérico aproximado.
Aumentar precisión sin necesidad de multiplicar la cantidad de puntos o pasos.
.
function richardson_trapecio(f, a, b, n)
% f: función a integrar
% a, b: límites de integración
% n: número inicial de subintervalos (se duplica después)
h = (b - a) / n;
I1 = (h/2) * (f(a) + 2*sum(arrayfun(f, a+h:h:b-h)) + f(b));
h2 = h/2;
I2 = (h2/2) * (f(a) + 2*sum(arrayfun(f, a+h2:h2:b-h2)) + f(b));
% Orden del método del trapecio es p=2
p = 2;
I_richardson = (2^p * I2 - I1) / (2^p - 1);
fprintf('Trapecio con n=%d: %.10f\n', n, I1)
fprintf('Trapecio con n=%d: %.10f\n', 2*n, I2)
fprintf('Mejora de Richardson: %.10f\n', I_richardson)
end