Problemi di Fisica con l'uso del PC

VII Lezione

Scivolamento di una catena appoggiata su un tavolo con attrito

Una catena di massa m e lunghezza a è appogiata in parte su un tavolo orizzontale ed in parte pende verticalmete. Esaminare il moto nel campo della gravità
        a) senza attrito
        b) con attrito

Soluzione
Asse x verticale orientato verso il basso con origine al livello del tavolo.
x 		= tratto di cui pende la catena
a - x 	= tratto appoggiato sul tavolo

Forze agenti senza attrito
	F = mgx/a 	(0 ≤ x ≤ a)
		mg		(x > a)

Clear["Global`*"];
f[x_]  =  
      Which[x < a, g x/a, x ≥ a, g]
tmax  =  4
{g, a, x0, v0} = {9.8, 10, 2, 0};
{x[t_], 
        v[t_]} = {x[t], 
          v[t]} /. NDSolve[{x'[t]  ==  v[t], v'[t] == 
                f[x[t]], x[0] == x0, v[0]  ==  v0}, {x[t], 
              v[t]}, {t, 0, tmax}][[1]]
Plot[x[t], {t, 0, tmax}, PlotRange -> {0, 40}, 
      AxesLabel -> {"t (s)", "x (m)"}, 
      PlotLabel -> "Grafico spazio-tempo"]
Plot[v[t], {t, 0, tmax}, PlotRange -> {0, 30}, 
      AxesLabel -> {"t (s)", "v (m/s)"}, 
      PlotLabel -> "Grafico velocità-tempo"]
\(Plot[\(v'\)[t], {t, 0, tmax}, PlotRange -> {{0, tmax}, {0, 15}}, 
      AxesLabel -> {"t (s)", \*""a (m/\!\(s\^2\))""}, 
      PlotLabel -> "Grafico accelerazione-tempo"]\)

\(Forze\ agenti\ \ con\ attrito


      	F\  = \ 
        0\ 						\((0\  ≤ \ 
              x\  < \ μa/\((1 + μ)\))\)

      	F\  = \ 
        mgx/a\ \  - \ μmg \((x - a)\)/
              a\ \ \ \ \ \ \ \ \ \ \ \((μa/\((1 + μ)\)\  ≤ \ x\  ≤ \ a)\)

      	\ \ \ \(\(=\)\(mg						\((x\  > \ a)\)\)\)\)

Clear["Global`*"];
f[x_]  = (g/a) Which[x < μ a/(1 + μ), 0, x < a, 
          x  -  μ (x - a), x > a, a]
{g, a, μ, x0, v0} = {9.8, 10, 0.2, 2, 
          0};
tmax = 4
{x[t_], 
        v[t_]} = {x[t], 
          v[t]} /. NDSolve[{x'[t]  ==  v[t], v'[t] == 
                f[x[t]], x[0] == x0, v[0]  ==  v0}, {x[t], 
              v[t]}, {t, 0, tmax}][[1]]
Plot[x[t], {t, 0, tmax}, PlotRange -> {0, 50}, 
      AxesLabel -> {"t (s)", "x (m)"}, 
      PlotLabel -> "Grafico spazio-tempo"]
Plot[v[t], {t, 0, tmax}, PlotRange -> {0, 30}, 
      AxesLabel -> {"t (s)", "v (m/s)"}, 
      PlotLabel -> "Grafico velocità-tempo"]
\(Plot[\(v'\)[t], {t, 0, tmax}, PlotRange -> {{0, tmax}, {0, 15}}, 
      AxesLabel -> {"t (s)", \*""a (m/\!\(s\^2\))""}, 
      PlotLabel -> "Grafico accelerazione-tempo"]\)

Moto verticale di un razzo

Impostazione del problema

mx''[t] = -mg + m'[t] vrel
x''[t] = -g + vrel m'[t]/m[t]
deve essere specificata la funzione m[t]

Unità di misura
x in km
m in ton
g = 0.0098 km/(s^2)
mr = 6 ton (massa del razzo)
mc = 15 ton (massa del carburante)
rc = 0.19 ton/s (carburante bruciato al secondo)
vrel = 2.8 km/s (velocità di espulsione del carburante relativa al razzo)

Soluzione analitica (gravità costante)

Clear["Global`*"];
m[t_] = m0  -  r*t;
sol = 
      DSolve[x''[t]  ==  - g  +  vrel m'[t]/m[t], 
          x[t], t] // FullSimplify

Soluzione numerica (gravità costante)

Clear["Global`*"];
km = 1;
ton  = 1;
s  =  1;
m  = (10^(-3)) km;
kg  =  (10^(-3)) ton;
g = 9.8 m/(s^2);
vrel  = -2800 m/s;
mr  =  6 ton;
mc  =  15 ton;
rc  =  190 kg/s;
tc  =  mc/rc;
tmin  =  0  s;
tmax = 150 s;
scal  =  (10^(-3));
massa[t_] = 
        If[t  <  tc, mr + mc  -  rc*t, mr];
Plot[massa[t], {t, 0, tmax}, PlotRange -> {0, mc + mr}, 
        AxesLabel -> {"t (s)", "massa (ton)"}, 
        PlotLabel -> "Massa razzo+carburante"];
a[t_] = -g  +  
          vrel massa'[t]/massa[t];
\(Plot[a[t], {t, tmin, tmax}, 
      AxesLabel -> {"t (s)", \*""a (km/\!\(s\^2\))""}, 
      PlotLabel -> "accelerazione"]\)

Clear[sol, x]
tmax = 900 s;
sol = 
        NDSolve[{x''[t]  ==  - g  +  
                vrel massa'[t]/massa[t], 
            x[0] == 0, x'[0]  ==  0}, 
          x[t], {t, 0, tmax}];
x[t_] = x[t] /. sol[[1]]
Plot[x[t], {t, 0, tmax}, 
        AxesLabel -> {"t (s)", "x (km)"}, 
        PlotLabel -> "Grafico spazio-tempo"];
Plot[x'[t], {t, 0, tmax}, 
        AxesLabel -> {"t (s)", "v (km/s)"}, 
        PlotLabel -> "Grafico velocità-tempo"];

Soluzione numerica (gravità variabile)

Clear["Global`*"];
km = 1;
ton  = 1;
s  =  1;
m  = (10^(-3)) km;
kg  =  (10^(-3)) ton;
g = 9.8 m/(s^2);
vrel  = -2800 m/s;
mr  =  6 ton;
mc  =  15 ton;
rc  =  190 kg/s;
tc  =  mc/rc;
tmax = 500 s;
massa[t_] = 
        If[t  <  tc, mr + mc  -  rc*t, mr];
RT = 6400 km;
grav[x_] = 
        If[x > 0, g/(((1 + x/RT))^2), g];
sol = 
        NDSolve[{x''[t]  ==  - grav[x[t]]  +  
                vrel massa'[t]/massa[t], 
            x[0] == 0, x'[0]  == 0}, 
          x[t], {t, 0, tmax}];
x[t_] = x[t] /. sol[[1]];
Plot[x[t], {t, 0, tmax}, 
        AxesLabel -> {"t (s)", "x (km)"}, 
        PlotLabel -> "Grafico spazio-tempo"];
Plot[x'[t], {t, 0, tmax}, 
        AxesLabel -> {"t (s)", "v (km/s)"}, 
        PlotLabel -> "Grafico velocità-tempo"];
fact = (10^3)/(3600^2);
a[t_] = 
        fact*(-grav[x[t]] + 
              vrel massa'[t]/massa[t]);
\(\(Plot[a[t], {t, 0, tmax}, 
        AxesLabel -> {"t (s)", \*""a (km/\!\(s\^2\))""}, 
        PlotLabel -> "Grafico accelerazione-tempo"];\)\)
vfuga = (Sqrt[2 grav[x[tc]] (RT + x[tc])])