Método de Whittaker

Método de Whittaker
Información sobre la plantilla
Matemática4.jpg
Concepto:Es un método de la matemática numérica (por tanto interativo), utilizado para la solución numérica de ecuaciones lineales.

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.

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))

Desventaja

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

  1. Entrar X0
  2. Entrar TE
  3. xanterior = x
  4. repeat
  5. x = xanterior – f(xanterior) / f’(xanterior)
  6. Error = | x - xanterior |
  7. xanterior = x
  8. until Error < TE
  9. La raíz buscada es x y su error absoluto máximo es Error
  10. Terminar

Implementación en C++

<span class="co1">//devuelve el valor de la función evaluada en la variable x</span> <span class="kw4">double</span> funcion<span class="br0">(</span><span class="kw4">double</span> x<span class="br0">)</span><span class="br0{</span> <span class="kw4">double</span> res <span class="sy1">=</span> ... <span class="co1">// ecuación que se desea solucionar evaluada en x;</span> <span class="kw1">return</span> res<span class="sy4">;</span> <span class="br0">}</span>   <span class="co1">// devuelve el valor de la derivada de la función evaluada en la variable x</span> <span class="kw4">double</span> derivada<span class="br0(</span><span class="kw4">double</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw4">double</span> res <span class="sy1">=</span> <span class="co1">// derivada de la ecuación que se desea solucionar evaluada en x;</span> <span class="kw1">return</span> res<span class="sy4">;</span> <span class="br0">}</span>   <span class="co1">// devuelve el resultado de la ecuación mediante el método de Whittaker.</span> <span class="co1">// recibe una aproximación arbitraria a la solución y el error máximo permitido.</span> <span class="co1">// puede ser necesario devolver el ERROR. </span> <span class="co1">// Considérese el uso de una estructura que contenga el valor de x y el ERROR.</span> <span class="co1">// en este ejemplo solo se devuelve el valor de x.</span> <span class="kw4">double</span> whittaker<span class="br0">(</span><span class="kw4">double</span> x0, <span class="kw4">double</span> eMaximo<span class="br0">)</span><span class="br0">{</span> <span class="kw4">double</span> ERROR <span class="sy1">=</span> <span class="nu0">1000000000</span><span class="sy4">;</span> <span class="co1">// valor muy grande.</span> <span class="kw4">double</span> xAnterior <span class="sy1">=</span> x0<span class="sy4">;</span> <span class="kw4">double</span> m <span class="sy1">=</span> derivada<span class="br0">(</span>x0<span class="br0">)</span><span class="sy4">;</span> <span class="kw4">double</span> x<span class="sy4">;</span>   <span class="kw1">while</span><span class="br0">(</span>ERROR <span class="sy1">></span> eMaximo<span class="br0">)</span><span class="br0">{</span> x <span class="sy1">=</span> xAnterior – f<span class="br0">(</span>xAnterior<span class="br0">)</span> <span class="sy2">/</span> m<span class="sy4">;</span> Error <span class="sy1">=</span> <span class="sy3">|</span> x <span class="sy2">-</span> xAnterior <span class="sy3">|</span><span class="sy4">;</span> xAnterior <span class="sy1">=</span> x<span class="sy4">;</span> <span class="br0">}</span>   <span class="kw1">return</span> x<span class="sy4">;</span> <span class="br0">}</span>   <span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span><span class="br0">{</span> <span class="kw4">double</span> x0, eMaximo<span class="sy4">;</span> <span class="kw3">cin</span> <span class="sy1">>></span> x0 <span class="sy1">>></span> eMaximo<span class="sy4">;</span> <span class="kw3">cout</span> <span class="sy1"><<</span> whittaker<span class="br0">(</span>x0, eMaximo<span class="br0">)</span><span class="sy4">;</span> <span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span> <span class="br0">}</span>

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.