[python]-- Cacular el valor aproximado de pi por la serie de Leibniz--[RESULETO]

Iniciado por jhonnymn3, 20 Noviembre 2014, 12:56 PM

0 Miembros y 1 Visitante están viendo este tema.

jhonnymn3

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:

daryo

#1
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
buenas

jhonnymn3

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.

daryo

#3
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
buenas

jhonnymn3


daryo

buenas


daryo

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?
buenas

jhonnymn3


daryo

#9
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
buenas