if intervX <= epsilon return(False, None) k = k+1 print("O numero maximo de iteracoes foi atingido.") return (True, x)
if __name__ == "__main__":
def f1(x): return 2*x*math.asinh(50/2*x) a = -0,5 b = 0,5 epsilon = 10**-8 maxIter = 20 print("Método da Bisseção") (houveErro, raiz) = bissecao(f1,a,b,epsilon,maxIter) if houveErro: print("O Método da Bisseção retornou um erro.") if raiz is not None: print("Raiz encontrada: %s"%raiz)
se puderem me ajudar a encontrar os erros desse codigo ficaria muito grato.
Pergunta
zondak
Fiz um codigo mas ainda não aprendi a ler e identificar onde estao os erros.
# coding: utf-8
import math
def l_bissecao(f, a, b, epsilon, maxIter=50):
fa=f(a)
fb=f(b)
if fa*fb > 0:
print("Erro! A funçao não muda de sinal.")
return (True, None)
print("k\t a\t\t fa\t\t b\t\t fb\t\t x\t\t fx\t\tintervX")
intervX = abs(b-a)
x = (a+b)/2
fx = f(x)
print("-\t%e\t%e\t%e\t%e\t%e\t%e\t%e"%(a, fa, b, fb, x, fx, intervX))
if intervX <= epsilon:
k = 1
while k <= maxIter:
if fa * fx > 0:
a = x
fa = fx
else:
b = x
fb = fx
intervX = abs(b-a)
x = (a+b)/2
fx = f(x)
print("%d\t%e\t%e\t%e\t%e\t%e\t%e\t%e"%(k,a, fa, b, fb, x, fx, intervX))
if intervX <= epsilon
return(False, None)
k = k+1
print("O numero maximo de iteracoes foi atingido.")
return (True, x)
if __name__ == "__main__":
def f1(x):
return 2*x*math.asinh(50/2*x)
a = -0,5
b = 0,5
epsilon = 10**-8
maxIter = 20
print("Método da Bisseção")
(houveErro, raiz) = bissecao(f1,a,b,epsilon,maxIter)
if houveErro:
print("O Método da Bisseção retornou um erro.")
if raiz is not None:
print("Raiz encontrada: %s"%raiz)
se puderem me ajudar a encontrar os erros desse codigo ficaria muito grato.
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.