Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

16
Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi

Transcript of Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

Page 1: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

Fare scienza con il computer

- appunti II incontro -19 gennaio 2007

M. Peressi

Page 2: 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

Page 3: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

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):

Page 4: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

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)

Page 5: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

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:

Page 6: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

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>

Page 7: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

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):

Page 8: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

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’ :

Page 9: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

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

Page 10: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

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, ...)

Page 11: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

... 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:

Page 12: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

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...

Page 13: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

x(2) v(2) x(3) v(3)x(1) v(1) ... ...

a partire da:

“alla fratelli Lumiere”...

Page 14: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

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 }

Page 15: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

risultati ???mentre con “carta e penna”

questo problema e’ MOLTO piu’ difficile da risolvere, con il

computer no!......

Page 16: Fare scienza con il computer - appunti II incontro - 19 gennaio 2007 M. Peressi.

i grafici (con gnuplot) di x e y in funzione del tempo:

e quello della traiettoria :