[ Foro de Python ]

Ayuda urgente con un ejercicio

12-Dec-2022 15:58
Invitado (Mochuelo)
1 Respuestas

Hola! Necesito ayuda con un ejercicio. Soy principiante en python y no se si lo he hecho bien.

El ejercicio dice así:

Construir una función que aproxime pi mediante la integral siguiente:

1. Definir función 1/(1+x**2)
2. Definir una función que calcule la integral, entrada, N (nº de intervalos), salida la aproximación pi
3. if _name == "_main_"
4. input (error)
5. erro_aprox=1
6. loop while error_approx > error
7. calculo aproximado de pi (N)
8. error_approx = abs (aprox_pi-pi)
9. incrementar N

Dado un error de entrada, buscar el número de intervalos de integracion necesario (usas while).

Yo he hecho esto, pero no sé si está bien:

from mylib import fun
from math import pi
def fun(x):
   res = 1.0/(1+x**2)
   return res
if __name__ == "__main__":
   n=int(input("Introducir N:"))
   h = 1.0/float(n)
   sum = (fun(0.0)+fun(1.0))/2
   for i in range (1,n+1,1):
       x = i*h
       sum = sum+fun(x)
   intpi = 4*sum*h
   print("Aproximar pi=", intpi, "pi=", pi, "error=", 100*abs(pi-intpi)/pi, "%")
import sys
def fun (x):
   if (n<0):
       print ("Error. N debe ser > 0")
       sys.exit ()
   for i in range (1, n, 1):
       fact=fact*i
   return fact
def wfact (n):
   if (n<0):
       print ("Error. N debe ser > 0")
       sys.exit()
   fact = n
   i = n
   while (i-1>0):
       i=i-1
       fact = fact*i
   return fact
if __name__== "__main__":
   from math import factorial
   n=int (input("Introducir N:"))
   print ("Factorial de N=", myfact(n), "from math library", factorial (float(n)))
   print ("factorial con while", wfact(n))
 
Por fa, lo necesito con urgencia para hoy, si me podéis ayudar, os lo agradecería. Disculpad las molestias.


23-Dec-2022 21:01
Invitado (juan)

hola mochuelo

no sabia bien que querias y no se si he acertado, hay muchas formas de calcular pi, y la que tu propones parece la de euler

tu código parece un copia pega de varios códigos

te paso lo que he hecho, no se si es lo que buscas:
https://www.online-ide.com/lbzqciRWCE

suerte ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)