Ir para conteúdo
Fórum Script Brasil

zondak

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Posts postados por zondak

  1. 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...