Calcolo numerico – La deivata prima
Alleghiamo una dispensa in pdf su come sia possibile approssimare il calcolo della derivata prima con un metodo detto “Approssimazione per differenza”.
In questo esempio in php valutiamo un’espressione numerica, una funzione e la sua derivata prima:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<?php include('evalmath.class.php'); //richiamo la libreria contenente le funzioni necessarie per valutare le espressioni matematiche //valutazione di un'espressione aritmetica $oggm=new EvalMath; //creo un oggetto oggm della classe EvalMath (un oggetto ha delle proprietà e dei metodi) $result=$oggm->evaluate('-2+5/2'); //richiamo il metodo evalutate (funzione che valuta il risultato numerico) e lo salvo nella variabile result echo 'Risultato1: ' . $result . '<br />'; //visualizzo a video $espr='-sqrt(8/2)*5/2^2'; //salvo nella variabile espr una espressione numerica che si vuole valutare $result=$oggm->evaluate($espr); //come sopra echo 'Risultato2: ' . $result . '<br />'; //visualizzo //valutazione di una funzione a una variabile indipendente e della sua derivata prima $pi=3.14; //dichiaro la costante pigreco $x0=$pi/2; //x0 è il punto in cui voglio valutare la funzione echo "Gradi: " . round(rad2deg($x0), 0) . '<br />'; //da rad a grad arrotondando a due decimali echo "Radianti: " . $x0 . '<br />'; //rad $dx=0.01; //intervallino necessario per calcolare la derivata $y='sin(x)'; //assegno a y l'equazione che voglio valutare echo 'y(x) = ' . $y . '<br />'; //$y='log(x)'; //$y='pow(x, 2)'; $m=new EvalMath; //creo un oggetto m $fx="y(x) = $y"; if($m->evaluate($fx)){ //se c'è qualcosa da valutare $my=round($m->e("y($x0)"), 2); //valuto la funzione nel punto x0 salvo in my //determino la derivata con il metodo approssimativo //y'(x)=(y(x+dx)-y(x-dx))/(2*dx) $mdy=round($m->e("y($x0+$dx)") - $m->e("y($x0-$dx)"), 2)/(2*$dx); //derivata per approx echo 'x0 = ' . $x0 . '<br />'; //visualizzo echo 'y(x0) = ' . $my . '<br />'; //visualizzo echo 'y\'(x0) = ' . $mdy . '<br />'; //visualizzo } else{ echo '<p>Could not evaluate function: ' . $m->last_error . '</p>'; } ?> |