Implementación en MATLAB:
Matlab
function [x, iteraciones] = metodo_steffensen(g, x0, tolerancia,
max_iteraciones)
% Inicialización
x = x0;
iteraciones = 0;
% Bucle de iteración
while abs(x - g(x)) > tolerancia && iteraciones < max_iteraciones
% Cálculo de valores intermedios
x_medio = g(x);
x_siguiente = g(x_medio);
% Cálculo del siguiente valor de x utilizando la fórmula de
Steffensen
x = x - (x_medio - x)^2 / (x_siguiente - 2*x_medio + x);
% Actualización del valor de x
x = x_siguiente;
% Incrementar el contador de iteraciones
iteraciones = iteraciones + 1;
end
% Mensaje de salida
if abs(x - g(x)) > tolerancia
disp('No se alcanzó la convergencia en el número máximo de
iteraciones.');
end
end
Explicación del código:
La función metodo_steffensen recibe como argumentos la función g(x), un valor
inicial x0, una tolerancia de error tolerancia y un número máximo de iteraciones
max_iteraciones.
Se inicializan las variables x con el valor inicial y iteraciones en 0.
El bucle while itera mientras la diferencia entre x y g(x) sea mayor a la tolerancia
y el número de iteraciones sea menor al máximo permitido.
Dentro del bucle, se calculan valores intermedios x_medio y x_siguiente
aplicando la función g(x) a x y x_medio respectivamente.
La fórmula de Steffensen se utiliza para calcular el siguiente valor de x basado en la
diferencia entre los valores intermedios.
El valor de x se actualiza con x_siguiente para la siguiente iteración.
El contador de iteraciones iteraciones se incrementa.
Fuera del bucle, se muestra un mensaje de advertencia si no se alcanza la
convergencia.