Jump to content

Dúvida - Type Error


dedzworld
 Share

Recommended Posts

Boa noite,

no desenrolar de uma actividade prática, eu tinha de escrever um programa que usando o método iterativo simples calculasse um valor aproximado da raiz de F(x) = 0 que pertencesse a um determinado intervalo antes calculado, com erro absoluto inferior a um dado valor e que calculasse juntamente o número de iterações necessário para esse calculo.

Desta forma, escrevi este programa :

import math

def raiz(fx,x0,e):
   x1 = fx(x0)
   erro = abs( x1 - x0 )
   i = 1
   while erro > e :
       x0 = x1
       x1 = fx(x0)
       erro = abs( x1 - x0 )
       i = i + 1
   return(x1,i)

onde x1 corresponde ao valor aproximado e i ao número de iterações.

No entanto, ao fazer o print final print(raiz((math.sqrt(math.exp(1)/3)),0,5*10**-7)) dá-me este erro :

Traceback (most recent call last):

File "C:\Users\andre\Documents\EDA\exercicio2.py", line 15, in <module>

print(raiz((math.sqrt(math.exp(1)/3)),0,5*10**-7))

File "C:\Users\andre\Documents\EDA\exercicio2.py", line 4, in raiz

x1 = fx(x0)

TypeError: 'float' object is not callable

Já pesquisei sobre o erro em questão e não consigo perceber, assim gostaria de saber se alguém me poderia explicar a base do erro para tentar arranjar forma de o resolver.

Obrigado desde já pela compreensão, cumprimentos dedzworld.

Link to comment
Share on other sites

isso o que estás a fazer a nível de matemática para mim é chinês 😄 , mas a nível de programação o erro parece que está nesta linha:

x1 = fx(x0)

Se meteres assim

x1 = fx*(x0)

Já funciona, mas não sei se é esse o resultado pretendido 😛

Edited by Devexz

Contador de calorias: caloriaspordia.com

Link to comment
Share on other sites

O resultado pretendido não é esse mas já consegui resolver o problema através de recursividade.

import math

def funcao(x):
z = math.exp(x) / 3
y = math.sqrt(z)
return y

def raiz(x0,e):
x1 = funcao(x0)
erro = abs( x1 - x0 )
i = 1
while erro > e :
x0 = x1
x1 = funcao(x0)
erro = abs( x1 - x0 )
i = i + 1
return(x1,i)

De qualquer forma obrigado pela disponibilidade e contributo, cumprimentos dedzworld.

Edited by thoga31
Tags code + GeSHi
Link to comment
Share on other sites

A questão era mesmo por causa da recursividade, tu estavas a tentar usar recursividade no primeiro post mas com o nome de uma variável "fx" que não era uma funcão.

Já que descobriste o erro, agora podes marcar o tópico como resolvido 🙂

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.