El método
Como en el método de bisección, se parte de un intervalo inicial [a0,b0] con f(a0) y f(b0) de signos opuestos, lo que garantiza que en su interior hay al menos una raíz (véase Teorema de Bolzano). El algoritmo va obteniendo sucesivamente en cada paso un intervalo más pequeño [ak, bk] que sigue incluyendo una raíz de la función f.A partir de un intervalo [ak, bk] se calcula un punto interior ck:
Se evalúa entonces f(ck). Si es suficientemente pequeño, ck es la raíz buscada. Si no, el próximo intervalo [ak+1, bk+1] será:
- [ak, ck] si f(ak) y f(ck) tienen signos opuestos;
- [ck, bk] en caso contrario.
Análisis del método
Se puede demostrar que bajo ciertas condiciones el método de la falsa posición tiene orden de convergencia lineal, por lo que suele converger más lentamente a la solución de la ecuación que el método de la secante, aunque a diferencia de en el método de la secante el método de la falsa posición siempre converge a una solución de la ecuación.El algoritmo tiene el inconveniente de que si la función es convexa o cóncava cerca de la solución, el extremo del intervalo más alejado de la solución queda fijo variando únicamente el más cercano, convergiendo muy lentamente.
Un ejemplo de este fenómeno se da en la función:
La situación en que el método falla es fácil de detectar (el mismo extremo del intervalo se elige dos veces seguidas) y fácil de corregir eligiendo un ck diferente, como:
El factor 2 usado arriba, garantiza una convergencia superlineal (asintóticamente, el algoritmo ejecuta dos pasos normales por cada paso modificado). Hay otras formas que dan incluso mejores tasas de convergencia. El ajuste mencionado arriba, y otras modificaciones similares se conocen como Algoritmo Illinois. Ford resume y analiza las variantes superlineales del método regula falsi modificado. A juzgar por la bibliografía, estos métodos eran bien conocidos en los años 1970 pero han sido olvidados en los textos actuales.
Algoritmo
JAVA
/** * * @author fredy mosquera lemus */ public class ReglaFlasa { /** * Este metodo crea un funcion a la cual se le aplicara el método de * regla falsa teniendo como parametro de entrada un double x, el cual * sirve para la construccion de la funcion dentro del metodo * @param x * @return */ private double funcion(double x){ return (x*x) - 3; } /** * Metodo de regla falsa * @param a * @param b * @param error * @return */ public double metodoDeReglaFalsa(double a, double b, double error){ double fa, fb,fc; double c = 0; if((funcion(a) * funcion(b) > 0)){ System.out.println("Error en el intervalo inicial, para este intervalo" + " no existen raices. "); }else{ fa = funcion(a); fb = funcion(b); c = b - ((fb * (b -a ))/(fb - fa)); fc = funcion(c); do{ if((fa * fc) > 0){ a = c; fa = funcion(a); fb = funcion(b); c = b - ((fb * (b -a ))/(fb - fa)); fc = funcion(c); }else if((fb * fc) > 0 ){ b = c; fa = funcion(a); fb = funcion(b); c = b - ((fb * (b -a ))/(fb - fa)); fc = funcion(c); } }while(Math.abs(fc) > error); } return c; } }
guia
http://es.scribd.com/doc/5707211/Falsa-Posicion
excelente imformacion del Método de la falsa posición muy completa
ResponderEliminarexcelente método pero tiene dificultades a la hora de acercarse porque tiende a alejarse del mundo de llegada...
ResponderEliminar