1 / 16

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

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.

abby
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. FILES DA COPIARE: Calcola.java Calcolai.java Sommameta.java MotoParabolico.java MotoParabolico2.java PuntoMateriale.java Vettore.java E POI USEREMO: gnuplot BlueJ

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

  4. Ma pochi moti avvengono in una dimensione... Generalizziamo almeno al caso bidimensionale, ricordando la scomposizione di un vettore v nelle 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)

  5. In tal caso e’ immediato calcolare e per un qualunque , date e , come e’ fatto in MotoParabolico.java , dove e’ descritto appunto il moto 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:

  6. t, x e y possono essere scritti su un file (vedi moto.dat): 0.0 0.0 0.0 0.2 0.36 3.4038 0.4 0.648 5.73444 0.6000000000000001 0.8784000000000001 7.206552 ... ... ... Per i grafici possiamo usare gnuplot: $ 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:2 gnuplot>

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

  8. Evoluzione nel tempo - II Ma si puo’ anche costruire “a pezzetti” l’evoluzione temporale, 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’ :

  9. Solita equazione del moto uniformemente accelerato, ma riferita all’intervallino di tempo , che va ripetutamente applicata da un intervallo a quello successivo (iterazione). Questo e’ l’algoritmo di EULERO iterare

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

  11. ... e il programma MotoParabolico2.javautilizza la classe PuntoMateriale e quindi getPosEulero per e e velocita’, con l’opportuna precisazione delle condizioni iniziali: ... PuntoMateriale(x0,y0,vx0,vy0,t0,massa) Si ritrova l’esempio iniziale (moto uniformemente accelerato di un grave) definendo correttamente la forza in PuntoMateriale.java: public Vettore forza(Vettore p){ f.x = 0; f.y = - massa * g; return f; }

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

  13. x(3)v(3) x(2)v(2) a partire da: x(1)v(1) ...... “alla fratelli Lumiere”...

  14. 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.0 public Vettore forza(Vettore p, Vettore v){ f.x = - gamma * v.x; f.y = - massa * g - gamma * v.y; return }

  15. risultati ??? mentre con “carta e penna” questo problema e’ MOLTO piu’ difficile da risolvere, con il computer no! ......

  16. i grafici (con gnuplot) di x e y in funzione del tempo: e quello della traiettoria :

More Related