next up previous contents
Next: Esercizio 5 Up: Un po' di esercizi Previous: Esercizio 3   Indice

Esercizio 4

Se abbiamo a che fare con funzioni molto complesse (anche se continue) possiamo avere bisogno di calcolare numericamente la derivata di una funzione. In questo caso potremmo fare uso della definizione stessa e approssimare il valore della funzione derivata con quello della differenza tra valori vicini. Più formalmente per calcolare la derivata nel punto $x$ di una funzione $f(x)$, possiamo prendere (per $h$ piccolo)

\begin{eqnarray*}
\frac{df(x)}{dx}\sim \frac{f(x+h)-f(x)}{h}=\frac{f(x+h/2)-f(x-h/2)}{h}
\end{eqnarray*}



Esercizio: scrivere un programma che calcoli numericamente la derivata della funzione $sin(x)$ ( $\frac{sin(x)}{dx}=sin(x)'=cos(x)$) e valutare l'effetto di $h$.

Un esempio di soluzione può essere

def deriv(f,x,h=0.01):
    '''  derivative of function f(x)'''
    return ( f(x+h/2.0) - f(x-h/2.0) )/h

if __name__ == '__main__':
   import math
   m,M=(0.0,math.pi)
   N=20 # 20 examples
   step=(M-m)/N
   f=math.sin
   df=math.cos
   x=m
   while x <=M:
       print x,df(x),deriv(f,x)
       x = x + step



2004-11-02