Università di Bologna - Facoltà di
Ingegneria II - Sede di Forlì
|
|
Fisica Generale Interattiva
prof. Domenico Galli
|
|
Oscillatore armonico
Punto materiale soggetto soltanto a una forza
elastica
Soluzione mediante il metodo di Runge-Kutta del II
ordine
Parametri e condizioni iniziali suggeriti per iniziare:
- Massa = 1 kg, Costante elastica = 1 N/m, Spostamento iniziale = 1
m, Velocità iniziale = 0 m/s, Intervallo di tempo = 12 s,
Intervallo di scansione = 0.1 s.
- Massa = 1 kg, Costante elastica = 1 N/m, Spostamento iniziale = 1
m, Velocità iniziale = 0 m/s, Intervallo di tempo = 12 s,
Intervallo di scansione = 0.5 s. Aumentando l'intervallo si scansione
peggiora la precisione dei risultati.
- Massa = 1 kg, Costante elastica = 1 N/m, Spostamento iniziale = 1
m, Velocità iniziale = 0 m/s, Intervallo di tempo = 12 s,
Intervallo di scansione = 0.01 s.
Diminuendo l'intervallo si scansione migliora la precisione dei
risultati.
Per avviare l'Applet "cliccare" il bottone qui sotto.
Algoritmo di Runge-Kutta del II
ordine per l'oscillatore armonico:
for(i=0;t<tMax;)
{
// algoritmo di Runge-Kutta II ordine
k1=v*deltaT;
j1=a*deltaT;
vf=v+j1;
af=-k*(x+k1)/m;
k2=vf*deltaT;
j2=af*deltaT;
x=x+(k1+k2)/2;
v=v+(j1+j2)/2;
a=-k*x/m;
// fine algoritmo di Runge-Kutta II ordine
t=t+deltaT;
i++;
if(t>tMax)break;
// se ci sono > 10000 punti, memorizza 1 punto ogni storePeriod punti
if(i%storePeriod==0)
{
lxt.add(new Point2D.Float((float)t,(float)x));
lvt.add(new Point2D.Float((float)t,(float)v));
lat.add(new Point2D.Float((float)t,(float)a));
lvx.add(new Point2D.Float((float)x,(float)v));
}
}
Indice Fisica Interattiva
February 21, 2004, Domenico
Galli