Isadora Postado Março 27, 2015 Denunciar Share Postado Março 27, 2015 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Março 28, 2015 Denunciar Share Postado Março 28, 2015 (editado) 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 Março 28, 2015 por ArteEN Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isadora Postado Março 28, 2015 Autor Denunciar Share Postado Março 28, 2015 (editado) ele funciona sem as iterações. O problema tá no k ele fala q precisa ser tipo len ai quando mudo o k pra len ele n calcuca as equações pois as outras variaveis são float ou int Editado Março 28, 2015 por Isadora Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Março 28, 2015 Denunciar Share Postado Março 28, 2015 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isadora Postado Março 28, 2015 Autor Denunciar Share Postado Março 28, 2015 eu estudei por ai para fazer os códigos, quando o K era o limite da integração n tive problema, agora ele sendo parte da função to com problema. eu fiz a alteração que você falou mas deu o mesmo erro "object of type 'int' has no len()" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Março 28, 2015 Denunciar Share Postado Março 28, 2015 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isadora Postado Março 28, 2015 Autor Denunciar Share Postado Março 28, 2015 o que eu tinha alterado já desalterei. 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) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Março 28, 2015 Denunciar Share Postado Março 28, 2015 (editado) 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 Março 28, 2015 por ArteEN Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isadora Postado Março 28, 2015 Autor Denunciar Share Postado Março 28, 2015 k=0.0 i=0.0 def i_2(x, k): return cos(2*pi*k/sqrt(1-(1-k**2)*cos(x)**2))-1 while k<=0.2: k = k + i result = quad(i_2, 0, pi, k, args=()) print(result) print k i=0.1 tá assim agora só que tem o mesmo erro "object of type 'int' has no len()" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Março 28, 2015 Denunciar Share Postado Março 28, 2015 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, )) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isadora Postado Março 28, 2015 Autor Denunciar Share Postado Março 28, 2015 não entendi como implementar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Março 28, 2015 Denunciar Share Postado Março 28, 2015 (editado) 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 Março 28, 2015 por ArteEN Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isadora Postado Março 28, 2015 Autor Denunciar Share Postado Março 28, 2015 vai no http://scipy.org/e se for tiver windows instala o anaconda Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isadora Postado Março 28, 2015 Autor Denunciar Share Postado Março 28, 2015 vai no http://scipy.org/e se for tiver windows instala o anaconda Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isadora Postado Março 28, 2015 Autor Denunciar Share Postado Março 28, 2015 vai no http://scipy.org/e se for tiver windows instala o anaconda Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isadora Postado Março 28, 2015 Autor Denunciar Share Postado Março 28, 2015 vai no http://scipy.org/e se for tiver windows instala o anaconda. Obrigada pela ajuda Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Março 28, 2015 Denunciar Share Postado Março 28, 2015 Minha net é bastante lenta, vai demorar a terminar o download. Avise caso você consiga resolver neste tempo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isadora Postado Março 28, 2015 Autor Denunciar Share Postado Março 28, 2015 to tentando desde de ontem acho meio dificil :(. agradeço muito a sua ajuda Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Março 29, 2015 Denunciar Share Postado Março 29, 2015 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Isadora
Pessoal comecei a pouco tempo no python e fiz um código que invalida o tipo de variavel declarada, não acho o erro
Link para o comentário
Compartilhar em outros sites
18 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.