Ir para conteúdo
Fórum Script Brasil
  • 0

problema com declaração de variavel


Isadora

Pergunta

Pessoal comecei a pouco tempo no python e fiz um código que invalida o tipo de variavel declarada, não acho o erro

from scipy.integrate import quad
from sympy.mpmath import *
def i_2(x, k):
i_2 = cos(2*pi*k/sqrt(1-(1-k**2)*cos(x)**2))-1
for i in range(1,3):
k=float(i)/10
result = quad(i_2, 0, pi, args = k)
print(result)
alguém me ajuda?
Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0

Aconselho a fragmentar esta linha

i_2 = cos(2*pi*k/sqrt(1-(1-k**2)*cos(x)**2))-1

Acho que o erro deve estar aqui no meio, e poderia ver a mensagem de erro, fica mais facil saber onde esta

-----

Falha minha consegui instalar o mpmath, e fiz a linha que citei sendo k = 4 e y = 6, e a linha funcionou

Estou tentando instalar o scipy, mas esta dando erro aqui, mais pistas devem estar na mensagem de erro

Editado por ArteEN
Link para o comentário
Compartilhar em outros sites

  • 0

Ola Isadora

Na documentação

https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.integrate.quad.html#scipy.integrate.quad

Mostra que args é uma tupla opcional. Na interação você passa um inteiro e não uma tupla

Fica mais ou menos assim

quad(i_2, 0, pi, args = (1, 2))

# ou

quad(i_2, 0, pi, args = (i, )) # isso se vc quiser manter a interação
Link para o comentário
Compartilhar em outros sites

  • 0

Esse erro diz que você esta passando um inteiro quando devia passar um objecto que tenha __len__

Tupla e listas são objetos que tem o atributo __len__

Só por tira duvida você pode mostrar como esta o codigo neste momento?

Link para o comentário
Compartilhar em outros sites

  • 0

O unico problema que vejo é a função quad que não esta como a documentação

quad(func, a, b, args=())

-----

A sim e mais um provavel problema.

def i_2(x, k) esta sem retorno

Editado por ArteEN
Link para o comentário
Compartilhar em outros sites

  • 0

Recomendo ver passagem de argumento, vai ter ajudar.

Aqui a função completa na documentação.

quad(func, a, b, args=(), full_output=0, epsabs=1.49e-08, epsrel=1.49e-08, limit=50, points=None, weight=None, wvar=None, wopts=None, maxp1=50, limlst=50)

Aqui ela limpa, como o que aparenta ser a sua intenção de uso.

quad(func, a, b, args=())

Aqui como você deve usar a função

quad(Sua_função, argumento_a, argumento_b, args=(argumentos_opcionais_1, ))

Link para o comentário
Compartilhar em outros sites

  • 0

quad(func, a, b, args=())

func ---- sua função

a e b ---- floats para a integração

args = () ---- tupla com argumentos opcionais para a função

result = quad(i_2, 0, pi, args = (k, ))

Espero que funcione assim, o ruim é que eu não consigo baixa o scipy

Editado por ArteEN
Link para o comentário
Compartilhar em outros sites

  • 0

Certo terminei de baixa, passei um tempo vasculhando atrás do problema.

O erro esta na importação.

from scipy.integrate import quad 
from sympy.mpmath import *

você importou o quad do scipy, tudo certo

E aqui esta o problema, você importou tudo do sympy, o que acontece é que dentro do sympy tem um metodo quad, então este segundo passa a ter a referencia para quad

Então da um erro pois os argumentos não batem, pois claro é um função totalmente diferente

Tem 3 soluções

from scipy import integrate # usar integrate.quad
from sympy.mpmath import *
from scipy.integrate import quad as outroQuad # dar um novo nome 
from sympy.mpmath import *

Ou a solução mais engraçada

from sympy.mpmath import *
from scipy.integrate import quad 

Inverter a ordem de import faz com que o quad vindo do scipy tenha a referencia

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...