domingo, 15 de abril de 2012

Falsa Posición

El método de Bisección es válido para encontrar la raíz de ecuación pero al dividir siempre el segmento por la mitad puede tardar mucho si la raíz esta cerca de uno los extremos del segmento.
El método de Falsa Posición trata de solucionar estos problemas dividiendo el segmento en partes desiguales, usando la siguiente formula:
$$R=x_{1}-\frac{f(x_{1})*(x_{0}-x_{1})}{f(x_{0})-f(x_{1})}$$
A continuación el código en Python para este método.
##Entradas
ec = raw_input("Ecuacion: ")
x0 = float(raw_input("x0: "))
x1 = float(raw_input("x1: "))

##Metodo
f0 = eval(ec, {'x' : x0})
f1 = eval(ec, {'x' : x1})
tol = 0.00001

if f0 * f1 < 0.0:
    while abs((x1 - x0) / x1) > tol:
        R = x1 - (f1 * (x0 - x1)) / (f0 - f1)
        fR = eval(ec, {'x' : R})
        if f0 * fR < 0.0:
            x1 = R
            f1 = fR
        if fR * f1 < 0.0:
            x0 = R
            f0 = fR

##Salidas
if f0 * f1 < 0.0:
    print "La raiz es:", R
else:
    print "Valores iniciales malos"

No hay comentarios:

Publicar un comentario