fare scienza con il computer - appunti ii incontro - 19 gennaio 2007
DESCRIPTION
Fare scienza con il computer - appunti II incontro - 19 gennaio 2007. M. Peressi. FILES DA COPIARE: Calcola.java Calcolai.java Sommameta.java MotoParabolico.java MotoParabolico2.java PuntoMateriale.java Vettore.java E POI USEREMO: gnuplot BlueJ. Evoluzione nel tempo - I. - PowerPoint PPT PresentationTRANSCRIPT
Fare scienza con il computer
- appunti II incontro -19 gennaio 2007
M. Peressi
FILES DA COPIARE:Calcola.javaCalcolai.javaSommameta.javaMotoParabolico.javaMotoParabolico2.javaPuntoMateriale.javaVettore.java
E POI USEREMO:gnuplotBlueJ
Evoluzione nel tempo - I
A volte (poche!) conosciamo esplicitamente la legge oraria del moto, ad esempio:
moto uniforme (=con velocita’ costante)
moto uniformemente accelerato (=con accelerazione costante):
Ma pochi moti avvengono in una dimensione...Generalizziamo almeno al caso bidimensionale,ricordando la scomposizione di un vettore vnelle sue componenti vx , vy nel piano cartesiano:
(vale per vettore posizione, velocita’, accelerazione, forza...)
Utile nel caso di un corpo soggetto alla gravita’ sulla superficie terrestre: con la scelta dell’asse y verticale e’
Fx = 0, Fy = -mg (costante)e quindi :
ax = 0, ay = -g (costante)
In tal caso e’ immediato calcolare e per un qualunque , date e , come e’ fatto in MotoParabolico.java , dove e’ descritto appunto ilmoto uniforme in e uniformemente accelerato in di un corpo soggetto a gravita’:
...t = i*dt;x = x0 + vx0*t ;y = y0 + vy0*t - 0.5*g*t*t;...
e un ciclo su t (cioe’ su i) permette di calcolare l’evoluzione:
Per i grafici possiamo usare gnuplot:
0.0 0.0 0.00.2 0.36 3.40380.4 0.648 5.734440.6000000000000001 0.8784000000000001 7.206552... ... ...
t, x e y possono essere scritti su un file (vedi moto.dat):
$ gnuplot
G N U P L O T Version 3.7 patchlevel 3 last modified Thu Dec 12 13:00:00 GMT 2002 ..... .....
Terminal type set to 'x11'gnuplot> p 'moto.dat' u 1:2gnuplot>
i grafici (con gnuplot) di x e y in funzione del tempo:
e quello della traiettoria (per ogni istante di tempo, rappresento il punto (x,y) e cosi’ ottengo y in funzione di x):
Evoluzione nel tempo - IIMa si puo’ anche costruire “a pezzetti”
l’evoluzionetemporale, calcolando a partire da ;da notare pero’ che la velocita’ da usare non e’ quella iniziale, ma quella in quell’istante di tempo, cioe’ .
Se e’ presente un’accelerazione, in generale si avra’ :
Questo e’ l’algoritmo di EULERO
Solita equazione del moto uniformemente accelerato, ma riferita all’intervallino di tempo , cheva ripetutamente applicata da un intervallo a quello successivo (iterazione).
iterare
Cosi’ e’ implementato in modo del tutto generale in PuntoMateriale.java per e e relative velocita’, e dove, sempre per massima generalita’, l’accelerazione e’ dedotta dalla forza (ricordiamo F=ma):
public Vettore getPosEulero(......ax = forza(pos).x/massa;ay = forza(pos).y/massa;pos.x = pos.x + vel.x * dt + 0.5 * ax * dt * dt ;pos.y = pos.y + vel.y * dt + 0.5 * ay * dt * dt ;vel.x = vel.x + ax * dt;vel.y = vel.y + ay * dt;...
(pos.x, pos.y : componenti x e y del vettore pos ;analogamente per vel.x, vel.y, f.x, f.y, ...)
... e il programma MotoParabolico2.java utilizza la classe PuntoMateriale e quindi getPosEulero per e e velocita’, con l’opportuna precisazione delle condizioni iniziali:...PuntoMateriale(x0,y0,vx0,vy0,t0,massa)
public Vettore forza(Vettore p){f.x = 0;f.y = - massa * g;return f;}
Si ritrova l’esempio iniziale (moto uniformemente accelerato di un grave) definendo correttamente la forza in PuntoMateriale.java:
Strada piu’ complicata... pero’ piu’ generale, possibile seguirla anche al caso non banale in cui la forza NON sia costante nel tempo, e/o dipenda dalla posizione (vedremo gravitazione universale [Keplero]!) o dalla velocita’.
Qualunque moto puo’ essere “spezzettato” in intervallini di tempo piccoli in cui possa essere considerato uniformemente accelerato:
e i risultati sono gli stessi di prima...
x(2) v(2) x(3) v(3)x(1) v(1) ... ...
a partire da:
“alla fratelli Lumiere”...
Strada piu’ complicata... pero’ piu’ generale, possibile seguirla anche al caso non banale in cui la forza NON sia costante nel tempo, e/o dipenda dalla posizione (vedremo gravitazione universale [Keplero]!) o dalla velocita’. Ad esempio aggiungiamo un attrito dipendente dalla velocita’: .In PuntoMateriale.java :final private double gamma = 1.0public Vettore forza(Vettore p, Vettore v){f.x = - gamma * v.x;f.y = - massa * g - gamma * v.y;return }
risultati ???mentre con “carta e penna”
questo problema e’ MOLTO piu’ difficile da risolvere, con il
computer no!......
i grafici (con gnuplot) di x e y in funzione del tempo:
e quello della traiettoria :