Ir para conteúdo
Fórum Script Brasil

zondak

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Sobre zondak

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

zondak's Achievements

0

Reputação

  1. zondak

    Metodo da Secante

    def pi_secante (f, x0, x1, epsilon, iterMax=50): if abs(f(x0)) <= epsilon: return(False, x0) print("k\t x.\t\t f(x)\t\t") for k in range (1,iterMax+1): x1 = x0-f(x0)/flin(x0) print("%d\t%f\t%f"%(k,x1,f(x1))) if abs(f(x1)) <= epsilon: return(False, x1) x0 = x1 print ("O numero Máx de interações foi atingido") return(True,x1) Eu sei que esse método é bem parecido com o do newton mas eu não encontro nenhum exemplo na internet da forma que eu quero, so resta alterar esse corpo do jeito certo para o método da secante. Se alguém poder me ajudar ficarei muito grato.
  2. Obrigado pela resposta. eu dei uma ajeitada no codigo ele roda mas fica com alguns erros ainda: 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 x**3-9*x+3 a = 0 b = 1 epsilon = 10**-8 maxIter = 20 print("Método da Bisseção") (houveErro, raiz) = l_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) diz que os erros são na linha 56 e 24 File "teste.py", line 56, in <module> (houveErro, raiz) = l_bissecao(f1,a,b,epsilon,maxIter) File "teste.py", line 24, in l_bissecao while k <= maxIter: UnboundLocalError: local variable 'k' referenced before assignment
  3. 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.
×
×
  • Criar Novo...