Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: jhonnymn3 en 20 Noviembre 2014, 12:56 pm



Título: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz--[RESULETO]
Publicado por: jhonnymn3 en 20 Noviembre 2014, 12:56 pm
hola lo que pasa es que me pusieron este problema en la Universidad pero no logro que me funcione la primera parte.
a)-Implemente en Python una función de nombre termino(i) tal que, dado el parámetro i, devuelva el término i-ésimo de la serie de Leibniz.

termino(1) devuelve  1
termino(2) devuelve  -0.33333

yo he investigo sobre el tema y se que la serie de Leibriz es esta:
 
1/1 -1/3 +1/5 -1/7......=pi/4

también encontré esta sumatoria sobre la serie.
4*( (-1)^i / (2i+1) )
donde esta formula tiene un limite en pi/4 por lo que en la formula general se la multiplica por 4.
Con lo que investigue me puse a programar y obtuve el siguiente codigo:
Código
  1. impot math
  2. def termino(i):
  3.     i=0
  4.     total=0
  5.     limite=math.pi/4
  6.     if total == limite:
  7.          q=4*( (-1)**i / ((2*i)+1) )
  8.          i=i+1
  9.          total=total + 1
  10.      return total
  11. a=int(input("ingresar valor: \n"))
  12. res=termino(a)
  13. print(res)
  14.  

En esta primera parte no consigo que me devuelva la función 1 o si le doy 0 no me retorna -0.3333
Gracias por el leer mi consulta ;-)

Bueno he realizo otro código y este si me devuelve 1 pero no -0.3333

Código
  1. import math
  2. def parametro(i):
  3.  a=0
  4.  
  5.  for x in range(0,i):
  6.  
  7.    a += (-1)**x / (2*x+1)
  8.  
  9.  return a
  10.  
  11. b=int(input("ingrese valor : \n"))
  12. res=parametro(b)
  13. print(res)
:laugh:


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: daryo en 20 Noviembre 2014, 14:01 pm
Código
  1. total=0
  2. limite=math.pi/4
  3. if total == limite:
  4.               .....
  5. return total
  6.  
nunca va a entrar al if y siempre va devolver lo que hay en total que es cero , es mas i siempre va a ser cero quita
Código
  1. i=0
ya lo tienes en termino(i)

podrias poner la ecuacion? eso facilitaria las cosas


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: jhonnymn3 en 20 Noviembre 2014, 14:05 pm
Esto dice el problema:
me dan esto:
1/1 - 1/3 +1/5 - 1/7 + 1/9 - ...+ ....=pi/4

a)   Implemente en Python una función de nombre termino(i) tal que, dado el parámetro i, devuelva el término i-ésimo de la serie de Leibniz.

termino(1) devuelve  1
termino(2) devuelve  -0.33333


b)   Defina la función suma(n) tal que, dado el parámetro n, devuelva la suma de los n primeros términos de la serie de Leibniz.

suma(4)  corresponde al resultado de calcular:  

c)   Usando lo anterior y el hecho que la suma corresponde teóricamente al valor  , defina la función leibniz(n) tal que, dado el parámetro n, devuelva la aproximación de pi con los primeros n términos de la serie de Leibniz.


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: daryo en 20 Noviembre 2014, 14:32 pm
perdon ese tenia un error este si sirve
Código
  1. def termino(i):
  2. if i==1:
  3. return 1
  4. den=1
  5. for a in range (2,(i+1)):
  6. den=den+2
  7. x=1.0/(den)
  8. if( (a%2)==0):
  9. x=x*-1
  10. return x
  11. x=input()
  12. print termino(x)

el denominador se le va sumando dos si la posicion en la secuencia es par entonces es un numero negativo


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: jhonnymn3 en 20 Noviembre 2014, 14:46 pm
Gracias por tu respuesta ya me pongo al asunto ;-)


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: daryo en 20 Noviembre 2014, 14:50 pm
Gracias por tu respuesta ya me pongo al asunto ;-)
ese no servia  :-( ya edite la respuesta


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: jhonnymn3 en 20 Noviembre 2014, 14:56 pm
 :laugh: :laugh:
No sale nada, sale solo el 1  ;D


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: daryo en 20 Noviembre 2014, 14:58 pm
:laugh: :laugh:
No sale nada, sale solo el 1  ;D
enserio?! a mi me funciona sera que lo copie mal .

vuelve a copiarlo a ver xD.Usas python 3?


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: jhonnymn3 en 20 Noviembre 2014, 14:59 pm
me da error Can't convert 'int' object to str implicitly :o


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: daryo en 20 Noviembre 2014, 15:01 pm
me da error Can't convert 'int' object to str implicitly :o
seguramente es porque usas python 3 xD

Código
  1. def termino(i):
  2. if i==1:
  3. return 1
  4. den=1
  5. for a in range (2,(i+1)):
  6. den=den+2
  7. x=1.0/(den)
  8. if( (a%2)==0):
  9. x=x*-1
  10. return x
  11. x=eval(input())
  12. print (termino(x))

edito:
si no entiendes algo dices :P


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: jhonnymn3 en 20 Noviembre 2014, 15:05 pm
'eval' is not defined y si uso ** :o


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: daryo en 20 Noviembre 2014, 15:07 pm
 usas un python online?
cambia
Código
  1. x=eval(input())

por
Código
  1. x=int(input())

bueno ya te ayude suficiente  ;D


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: jhonnymn3 en 20 Noviembre 2014, 15:11 pm
Gracias amigo yo soy novato con el python y no tengo mucha experiencia gracias por brindarme un poco de tu tiempo.
La ultima cosa porque me sale esto local variable 'x' referenced before assignment


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: daryo en 20 Noviembre 2014, 15:14 pm
que linea?


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: jhonnymn3 en 20 Noviembre 2014, 15:17 pm
La ultima http://pythontutor.com/visualize.html#code=def+termino(i)%3A%0D%0A%09if+i%3D%3D1%3A%0D%0A%09%09return+1%0D%0A%09den%3D1%0D%0A%09for+a+in+range+(1%2B1,(i%2B1))%3A%0D%0A%09%09den%3Dden%2B2%0D%0A%09%09x%3D1.0/(den)%0D%0A%09%09if(+(a%252)%3D%3D0)%3A%0D%0A%09%09%09x%3Dx*-1%0D%0A%09return+x%0D%0Ax%3Dint(input())%0D%0Aprint+(termino(x))&mode=display&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&rawInputLstJSON=%5B%220%22%5D&curInstr=10 (http://pythontutor.com/visualize.html#code=def+termino(i)%3A%0D%0A%09if+i%3D%3D1%3A%0D%0A%09%09return+1%0D%0A%09den%3D1%0D%0A%09for+a+in+range+(1%2B1,(i%2B1))%3A%0D%0A%09%09den%3Dden%2B2%0D%0A%09%09x%3D1.0/(den)%0D%0A%09%09if(+(a%252)%3D%3D0)%3A%0D%0A%09%09%09x%3Dx*-1%0D%0A%09return+x%0D%0Ax%3Dint(input())%0D%0Aprint+(termino(x))&mode=display&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&rawInputLstJSON=%5B%220%22%5D&curInstr=10)


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: daryo en 20 Noviembre 2014, 15:27 pm
que raro cuando lo ejecuto yo desde cero funciona perfecto pero bueno ya es cuestion de que hagas los cambios necesarios a mi programa son detalles porque en el python de escritorio funciona perfecto y no da errores

http://pythontutor.com/visualize.html#togetherjs=UpUf8qFoR9


saludos :P


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: jhonnymn3 en 20 Noviembre 2014, 15:30 pm
gracias ;-)


Título: Re: [python]-- Cacular el valor aproximado de pi por la serie de Leibniz
Publicado por: jhonnymn3 en 20 Noviembre 2014, 20:03 pm
Bueno ya termine el código gracias a la ayuda del amigo daryo.