Integrazione numerica – Pi greco – Parabole

Esame di Stato 2003 PNI – Quesito 7


Verificare l’uguaglianza \displaystyle \pi=4\int_{0}^1 \frac{1}{1+x^2}\ dx e utilizzarla per calcolare un’approssimazione di pi greco, applicando un metodo di integrazione numerica.

Esame di Stato 2006 – Quesito 10


Tenuto conto che \displaystyle \frac{\pi}{4}=\int_{0}^1 \frac{dx}{1+x^2} calcola un’approssimazione di pi greco utilizzando uno dei metodi di integrazione numerica studiati.

Vedi la discussione

Si calcola in modo approssimato, con il metodo delle parabole, il valore dell’integrale definito \displaystyle S=\int_{0}^1 \frac{1}{1+x^2}\ dx
Si utilizza il risultato per approssimare il valore di pi greco.

Soluzione 1

def f(x): return 1/(1+x**2)
 
a=0
b=1
n=10

h    =(b-a)/n
somma=0

x=a
for i in range(n+1):  
    y = f(x)                              # Base i-esima

    if(i == 0) or (i == n): somma += y    # Prima e ultima altezza: peso 1
    elif(i%2 == 1):         somma += 4*y  # Indici dispari        : peso 4
    else:                   somma += 2*y  # Indici pari           : peso 2

    x += h
  
int_def  = h/3*somma;
pi_greco = 4*int_def;
 
print("Integrale definito =", int_def )
print("Pi greco           =", pi_greco)

Risultato

Integrale definito = 0.7853981534848038
Pi greco           = 3.141592613939215

Soluzione 2

Elimino la scelta multipla nel for

def f(x): return 1/(1+x**2)

a=0
b=1
n=10

h     = (b-a)/n
H     = 2*h                       # Passo doppio per le x
somma = 0

somma += f(a)                     # i=0, x=a

x=a+h                             # x=a+h,a+3h,a+5h,...
for i in range(1,n,2):            # i=1  ,3   ,5   ,...
    somma += 4*f(x)               # Coefficiente=4
    x     += H

x=a+H                             # x=a+2h,a+4h,a+6h,...
for i in range(2,n,2):            # i=2   ,4   ,6   ,...
    somma += 2*f(x)               # Coefficiente=2
    x     += H

somma += f(b)                     # i=n, x=b 

int_def  = h/3*somma
pi_greco = 4*int_def

print("Integrale definito =", int_def )
print("Pi greco           =", pi_greco)