Revista Informática

El método de las aproximaciones sucesivas e implementación en Python

Publicado el 10 marzo 2023 por Daniel Rodríguez @analyticslane
El método de las aproximaciones sucesivas e implementación en Python

Entre los métodos numéricos para obtener la raíz de una función más sencillos de implementar se encuentran el método de las aproximaciones sucesivas. El cual se basa en el uso de una función que aproxima la solución para obtener esta de una forma iterativa. Siendo una alternativa a otros métodos numéricos como pueden ser los métodos de la bisección, la secante o el de Newton.

El método de las aproximaciones sucesivas

El método de las aproximaciones sucesivas es un método iterativo para obtener la raíz de una ecuación en el que se reemplazar el problema buscar un valor de x que verifique la expresión f(x)=0 por otro tal que x=g(x). Lo que permite construir, a partir de un valor inicial x_0, una sucesión de aproximaciones que finalmente convergen a la solución buscada.

Así, solamente se tiene que repetir la evaluación de la expresión

hasta que se alcance una aproximación suficientemente precisa de la solución buscada.

Obtención de la función g(x)

El principal problema de este método es encontrar la función que aproxima la solución. La forma más común para obtener g(x) es mediante una reorganización algebraica de f(x) para expresar x en términos de otras variables. Por ejemplo, si se tiene la función

Se puede despejar x de la siguiente manera

Así la función g(x) resulta ser

g(x) = \frac{8 -x^2}{2}

Implementación en Python

Una implementación básica de este método en Python se puede conseguir con el siguiente código.

def successive_approximations(fun, x_n, epsilon=1e-6, max_iter=50):
    x_p = x_n
    x_n = fun(x_n)
    n_iter = 1

    while abs(x_p - x_n) > epsilon and n_iter <= max_iter:
        x_p = x_n
        x_n = fun(x_n)
        n_iter += 1

    if n_iter > max_iter:
        raise ValueError("No se ha alcanzado la convergencia después del número máximo de iteraciones permitidas.")

    return x_n

successive_approximations(g, 0)

En el que simplemente se evalúa la función g(x) hasta que se llega a la convergencia o se alcanza el límite de iteraciones.

Validación de la implementación

Para validar la implementación se puede usar la función basada en un polinomio con la que se evaluó el método de la secante y el de Newton.

f = lambda x: x**2 + 2*x - 8
g = lambda x: (8 - x**2)/2

successive_approximations(g, 0) # -4

Pudiendo comprobar que devuelve una de las soluciones de este polinomio.

En este caso no se ha obtenido la misma solución que cuando se empleó el método de Newton, de hecho, en este caso las soluciones cerca de 2 divergen. Por lo que es necesario conocer y disponer de implementaciones de diferentes métodos para tener opciones de obtener la solución a un problema.

Conclusiones

En esta entrada se ha visto uno de los métodos numéricos más sencillos de implementar para obtener las raíces de una ecuación: el método de las aproximaciones sucesivas. Un método cuya implementación no es complicada, pero si lo puede ser encontrar la función aproximada.

Imagen de Pfüderi en Pixabay


Volver a la Portada de Logo Paperblog