Test Foro de elhacker.net SMF 2.1

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 (python) [Seleccionar]

impot math
def termino(i):
    i=0
    total=0
    limite=math.pi/4
    if total == limite:
         q=4*( (-1)**i / ((2*i)+1) )
         i=i+1
         total=total + 1
     return total
a=int(input("ingresar valor: \n"))
res=termino(a)
print(res)


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 (python) [Seleccionar]
import math
def parametro(i):
 a=0

 for x in range(0,i):

   a += (-1)**x / (2*x+1)

 return a

b=int(input("ingrese valor : \n"))
res=parametro(b)
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 (python) [Seleccionar]
total=0
limite=math.pi/4
if total == limite:
              .....
return total

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 (python) [Seleccionar]
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 (python) [Seleccionar]
def termino(i):
if i==1:
return 1
den=1
for a in range (2,(i+1)):
den=den+2
x=1.0/(den)
if( (a%2)==0):
x=x*-1
return x
x=input()
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
Cita de: jhonnymn3 en 20 Noviembre 2014, 14:46 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
Cita de: jhonnymn3 en 20 Noviembre 2014, 14:56 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
Cita de: jhonnymn3 en 20 Noviembre 2014, 14:59 PM
me da error Can't convert 'int' object to str implicitly :o
seguramente es porque usas python 3 xD

Código (python) [Seleccionar]
def termino(i):
if i==1:
return 1
den=1
for a in range (2,(i+1)):
den=den+2
x=1.0/(den)
if( (a%2)==0):
x=x*-1
return x
x=eval(input())
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 (python) [Seleccionar]
x=eval(input())

por
Código (python) [Seleccionar]
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.