-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbisseccao1.py
35 lines (25 loc) · 903 Bytes
/
bisseccao1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# -*- coding: utf-8 -*-
"""Bisseccao1
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1jm6LRouqRinCvGE8zBSjnUfIUdMzrNe9
"""
def bissecao(f,a,b,prec):
""" Método da bisseção para uma função f no intervalo [a,b]. """
m = (a+b)/2
# Se já há precisão suficiente, retornamos o ponto médio do intervalo
if abs(b - a) < prec: return m
# Se f(m) == 0, achamos uma raiz exata!
if f(m) == 0: return m
# Senão, vamos por recorrência
if f(m)*f(a) < 0: return bissecao(f,a,m,prec)
else: return bissecao(f,m,b,prec)
"""Um exemplo de teste: o cosseno tem uma raiz, π/2 , no intervalo [0,3]."""
from math import cos
bissecao(cos,0,3, 1e-6)
from math import pi
pi/2 - _
"""Teste com outras funções de x, no caso 2^x-x^2"""
def estranha(x):
return 2**x - x**2
bissecao(estranha, -1, 0, 1e-6)