next up previous contents
Next: Esercizio 6 Up: Un po' di esercizi Previous: Esercizio 4   Indice

Esercizio 5

A volte potremmo avere bisogno anche di calcolare un integrale di una funzione. Per cui ricordandoci che l'integrale è il limite di una somma, potremmo calcolarlo nel seguante modo

\begin{eqnarray*}
\int_{a}^{b}f(x)dx\sim \sum_{i=1}^N f(a+\frac{h}{2} \cdot i)*h
\end{eqnarray*}



dove abbiamo scelto il passo di integrazione $h = (b-a)/N$. In questo caso approssimiamo l'area della curva sottostante la funzione $f(x)$ nell'intervallo [$a,b$] con la somma di $N$ rettangoli di base $h$ ed altezza calcolata nel punto centrale $f(x+h/2)$.

Esercizio: scrivere un programma che data una funzione calcoli nel modo sopra descritto ilvalore dell'integrale nell'intervallo. Calcolare quindi $\int_0^{\pi/2}cos(x)dx = sin(\pi/2)- sin(0)$ e valutare l'effetto dello step di integrazione $h$.

Un esempio di soluzione può essere

def integ(f,a,b,h=0.1):
    ''' integral of f(x) assuming a < b'''
    x=a
    sum=0.0
    while x <=b:
        sum = sum + f(x+h/2.0)*h
        x = x + h
    return sum

if __name__ == '__main__':
   import math
   a,b=(0.0,math.pi/2.0)
   f=math.cos
   intf=math.sin
   print "h =",0.5
   print a,b,"intfunc",intf(b)-intf(a),"intNum",integ(f,a,b,0.5) 
   print "h =",0.01
   print a,b,"intfunc",intf(b)-intf(a),"intNum",integ(f,a,b,0.01)
   print "h =",0.00001
   print a,b,"intfunc",intf(b)-intf(a),"intNum",integ(f,a,b,0.00001)



2004-11-02