Método de Whittaker
El método de Whittaker es un método de la matemática numérica (por tanto interativo), utilizado para la solución numérica de ecuaciones lineales. Se dice que es un método quasi-Newton por sus semejanzas con el mismo. El método de Newton-Raphson tiene la ventaja de que su convergencia es cuadrática, por tanto es mucho más “rápida” que la lineal que se obtiene con otros métodos como el de Bisección.
Sumario
Descripción del método
El método de Whittaker resuelve el problema presente en el método de Newton pues solamente se evalúa la derivada de la función para el primer punto y se hace este valor constante para las iteraciones restantes.
x_(n+1)= x_n-(f(x_n))/m
donde:
m = f'(x_0)
mientras que el método de Newton realiza las aproximaciones a la solución de la forma:
x_(n+1)= x_n-(f(x_n))/(f'(x_n))
La desventaja de este método reside en que es necesario evaluar la derivada de la función tantas veces como iteraciones se realicen, lo cual es muy costoso desde el punto de vista computacional, y es posible que la derivada se anule o cambie de signo lo que puede provocar la aparición de una tangente horizontal o una aproximación muy alejada de la raíz donde incluso no podría estar definida la función.
El éxito del método de Whittaker radica en la selección de un buen X0 que no anule a m y garantice una rápida convergencia.
Este método no tiene una convergencia cuadrática como el de Newton pero siempre es más rápida que la convergencia lineal del método de Bisección.
Algoritmo
En pseudocódigo
- Entrar X0
- Entrar TE
- xanterior = x
- repeat
- x = xanterior – f(xanterior) / f’(xanterior)
- Error = | x - xanterior |
- xanterior = x
- until Error < TE
- La raíz buscada es x y su error absoluto máximo es Error
- Terminar
Implementación en C++
// devuelve el valor de la función evaluada en la variable x
double funcion(double x){
double res = ... // ecuación que se desea solucionar evaluada en x;
return res;
}
// devuelve el valor de la derivada de la función evaluada en la variable x
double derivada(double)
{
double res = ... // derivada de la ecuación que se desea solucionar evaluada en x;
return res;
}
// devuelve el resultado de la ecuación mediante el método de Whittaker.
// recibe una aproximación arbitraria a la solución y el error máximo permitido.
// puede ser necesario devolver el ERROR.
// Considérese el uso de una estructura que contenga el valor de x y el ERROR.
// en este ejemplo solo se devuelve el valor de x.
double whittaker(double x0, double eMaximo){
double ERROR = 1000000000; // valor muy grande.
double xAnterior = x0;
double m = derivada(x0);
double x;
while(ERROR > eMaximo){
x = xAnterior – f(xAnterior) / m;
Error = | x - xAnterior |;
xAnterior = x;
}
return x;
}
int main(void){
double x0, eMaximo;
cin >> x0 >> eMaximo;
cout << whittaker(x0, eMaximo);
return 0;
}
Véase también
Bibliografía
- Colectivo de autores. (2004). Matemática numérica, Volumen 1. La Habana: Editorial Félix Varela. ISBN 959-258-713-2.

