Problema. Un poliziotto deve raggiungere un motociclista che viagga a 80 Km/h partendo da fermo, con una accelerazione costante di 5 m/. Dopo quanto tempo avviene l'intercettazione?
Questo semplice esempio di cinematica è utile per introdurre la tecnica di definizione ricorsiva di una successione e alcuni comandi elementari di Mathematica:
DSolve, ListPlot, Plot, Show, Timing, Table
Procediamo nella risoluzione del problema come se dovessimo
svolgere i conti a mano.
![[Graphics:../Images/index_gr_1.gif]](../Images/index_gr_1.gif)
![[Graphics:../Images/index_gr_2.gif]](../Images/index_gr_2.gif)
Poiché il poliziotto intercetta il motociclista quando gli spazi percorsi
sono uguali ...
![[Graphics:../Images/index_gr_4.gif]](../Images/index_gr_4.gif)
![[Graphics:../Images/index_gr_7.gif]](../Images/index_gr_7.gif)
Osserviamo ora il metodo di sostituzione tramite l'operatore /.
![[Graphics:../Images/index_gr_9.gif]](../Images/index_gr_9.gif)
Nel passaggio precedente ci siamo dimenticati delle unità di misura...; Mathematica ci aiuta, a patto di introdurre i fattori di conversione, ad eseguire le conversioni
![[Graphics:../Images/index_gr_11.gif]](../Images/index_gr_11.gif)
![[Graphics:../Images/index_gr_13.gif]](../Images/index_gr_13.gif)
(* distanza alla quale avviene il contatto*)
![[Graphics:../Images/index_gr_15.gif]](../Images/index_gr_15.gif)
![[Graphics:../Images/index_gr_17.gif]](../Images/index_gr_17.gif)
![[Graphics:../Images/index_gr_20.gif]](../Images/index_gr_20.gif)
Per introdurre la tecnica di definizione ricorsiva di una successione, riprendiamo ora il concetto di velocità ed accelerazione che, per valori di h sufficientemente piccolo
possiamo scrivere:
v(t+h) ≃ v(t) + a(t) h
x(t+h) ≃ x(t) + v(t) h
Sostituiamo ora la misura esplicita del tempo t con l'indice n; ciascun indice n corrsiponde ad un intervallo di tempo di ampiezza h,
per cui t = nh; poniamo quindi
![[Graphics:../Images/index_gr_21.gif]](../Images/index_gr_21.gif)
Per innescare queste relazioni è necessario conoscere,
oltre ad a e h, v[0] e x[0]; nel nostro caso valgono
![[Graphics:../Images/index_gr_22.gif]](../Images/index_gr_22.gif)
Per calcolare ora quanto valgono x[n] e v[n], ad esempio, per n= 100, consideriamo che Mathematica calcola
in ordine
v[1] = v[0] + a h e x[1] = x[0] +v[1] h
v[2] = v[1] + a h e x[2] = x[1] +v[2] h.
...
Ad esempio, per n=100,
![[Graphics:../Images/index_gr_23.gif]](../Images/index_gr_23.gif)
Oppure, per n=253
![[Graphics:../Images/index_gr_26.gif]](../Images/index_gr_26.gif)
40163.8
632.5
Ma, per n=256, ...
![[Graphics:../Images/index_gr_29.gif]](../Images/index_gr_29.gif)
Cosa significa questo messaggio?
(Nota: una parte dell'ouput, essendo lungo, è stato soppresso)
Guardando l' Help si capisce che il metodo ricorsivo, se non specificato, ammette "solo" 256 passi. È sufficiente quindi porre
![[Graphics:../Images/index_gr_38.gif]](../Images/index_gr_38.gif)
300
![[Graphics:../Images/index_gr_40.gif]](../Images/index_gr_40.gif)
Ora disegnamo l'andamento di v[n] e x[n], per n=50 ( ≡ t, 25 s);
valutiamo anche i tempi di esecuzione
![[Graphics:../Images/index_gr_43.gif]](../Images/index_gr_43.gif)
Con il procedimento che segue è possibile ridurre i tempi di esecuzione.
![[Graphics:../Images/index_gr_48.gif]](../Images/index_gr_48.gif)
![[Graphics:../Images/index_gr_49.gif]](../Images/index_gr_49.gif)
![[Graphics:../Images/index_gr_50.gif]](../Images/index_gr_50.gif)
![[Graphics:../Images/index_gr_52.gif]](../Images/index_gr_52.gif)
![[Graphics:../Images/index_gr_55.gif]](../Images/index_gr_55.gif)
Il miglioramento, in particolare per gx1, è dovuto all' utilizzazione della tecnica ricorsiva, dicendo cioè a Mathematica di "ricordare" i valori che ha già calcolato.
![[Graphics:../Images/index_gr_58.gif]](../Images/index_gr_58.gif)
![[Graphics:../Images/index_gr_61.gif]](../Images/index_gr_61.gif)
![[Graphics:../Images/index_gr_64.gif]](../Images/index_gr_64.gif)
![[Graphics:../Images/index_gr_65.gif]](../Images/index_gr_65.gif)
![[Graphics:../Images/index_gr_68.gif]](../Images/index_gr_68.gif)
![[Graphics:../Images/index_gr_71.gif]](../Images/index_gr_71.gif)
Come si vede se il primo metodo si avvicina alla curva per eccesso mentre il secondo metodo approssima per difetto. Per una migliore valutazione definiamo la seguente funzione f[t].
![[Graphics:../Images/index_gr_74.gif]](../Images/index_gr_74.gif)
![[Graphics:../Images/index_gr_75.gif]](../Images/index_gr_75.gif)
![[Graphics:../Images/index_gr_76.gif]](../Images/index_gr_76.gif)
![[Graphics:../Images/index_gr_79.gif]](../Images/index_gr_79.gif)
![[Graphics:../Images/index_gr_82.gif]](../Images/index_gr_82.gif)