map214a.py

""" Programa para ilustrar o metodo da dicotomia para zeros de funcoes
     Material do curso Map0214 calculo numerico com apliacaoes em fisica """
from math import *

def bissec(f, a, b, n):
    """ Calcula n iteracoes do biseccao """
    x0,x1=a,b
    count=n
    while count > 0:
         
        raiz = 0.5*(x0+x1)
        print "%12.8f | %12.8f | %10.5f | %3i "  %(x0,x1,f(x0)*f(raiz),count)
        if f(x0)*f(raiz) < 0 :
             x1=raiz
        elif f(x0)*f(raiz)>0:
             x0=raiz
        else : break    
        count=count-1     
     
    return raiz

f= lambda x: x**6 -x -1 
a,b=1.,2.
n=100
if f(a)*f(b)<0:
    raiz=bissec(f,a,b,n)
    print " A raiz de f(x) eh ", raiz
else:
    print "Nao da pra usar o metodo"
    
    
        
Última atualização: segunda, 1 março 2010, 21:26