Problemi di Fisica con l'uso del PC

IV Lezione
La Grafica

4.1 Grafica in due dimensioni

4.1.1  Grafici semplici

Plot[f,{x,xmin,xmax},opts] disegna f come funzione di x da xmin a xmax. Se opts viene omesso Mathematica usa le opzioni default.

Esempio 4.1
L'autofunzione normalizzata del primo stato eccitato di un oscillatore armonico unidimensionale è data da
						(Subscript[u, 1])(x) = ((((4/π)))^(1/4)) 
          x (e^(-(x^2)/2))
dove x è in unità di (((h/2 π m ω))^(1/2)). Disegnare (Subscript[u, 1])(x) per x da  - 4 a 4.

Plot[((((4/π)))^(1/4)) 
            x (E^(-(x^2)/2)), {x,  -4,  4}]

▲▲▲

Evaluate[f] calcola prima una funzione complessa e rende più veloce la grafica.

Esempio 4.2 
Disegnare la densità di probabilità radiale P(r)=(r^2) ((Subscript[R, nl])^2) per lo stato 1s dell'atomo di idrogeno.

f[n_,  l_,  
        x_]  :=  (E^(-x/2)) (x^l) (l + 
              n)! LaguerreL[-1 - l + n, 1 + 2 l, x]
radialFunction[n_,  l_,  
        r_]  := (a^(-3/
              2)) (2/(n^2)) (Sqrt[(((-1 - l + n)!)/(((l + n)!)^3))]) f[n,  l,  ((2  r)/(n a))]

Timing[
      Plot[Evaluate[(((r radialFunction[1,  0,  r]))^2) /. 
            a  ->  1],  {r,  0,  6}]]

▲▲▲

4.1.2 Options

Options[Plot] mostra le opzioni default..

Options[Plot]

Esempio 4.3
Disegnare il potenziale di Lennard-Jones
					u(r) = 4 ϵ [((((σ/r)))^12)- ((((σ/r)))^6)]
dove r è la distanza tra gli atomi mentre σ e ϵ sono parametri empirici.

Plot[(1/(r^12)) - (1/(r^6)) ,  {r,  0.001,  3.0}];

Plot[(1/(r^12)) - (1/(r^6)),  {r,  0.001,  3.0}, 
        PlotRange  ->  {-0.3,  0.6}];

▲▲▲

Esempio 4.4
Due onde di frequenza leggermente diversa viaggiano su una linea nella stessa direzione.  In un punto dello spazio le loro ampiezze in funzione del tempo sono
						(Subscript[y, 1])= A Cos(20 t)
						(Subscript[y, 2])= A Cos(24 t)
Disegnare l'ampiezza risultante in tale punto in funzione del tempo.

Clear[y]
y[t_] = Cos[20  t]  +  Cos[24  t]
Plot[y[t] ,  {t,  π,  3  π}];

Plot[y[t], {t, π,  3  π},  
        PlotPoints  ->  70];

Alcune opzioni consentono di rifinire il grafico.

Show[%,  
        AxesLabel  ->  {" t (s)",  " y (A)"}];

\(\(Show[%, \ 
        Axes\  -> \ 
          False, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotLabel\  -> \ "The Beat Phenomenon", 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Frame\  -> \ True, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ FrameLabel\  -> \ {"t", \ "y"}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ FrameTicks\  -> \ None
\ \ \ \ \ \ \ \ \ ];\)\)

4.1.3 Grafici multipli

Plot[{f1,f2,....},{x,xmin,xmax},opts] disegna le funzioni  f1,f2,.... in un unico grafico.

Esempio 4.5
Disegnare le densità di probabilità radiale P(r)=(r^2) ((Subscript[R, nl])^2) per gli stati 1s, 2s, 3s dell'atomo di idrogeno.

\(\(Plot[
        Evaluate[
          Table[\((r\ radialFunction[i, \ 0, \ r])\)\^2, {i, \ 3}]\  /. \ 
            a\  -> \ 1], 
\ \ {r, \ 0, \ 25}, \ 
        PlotRange\  -> \ {0, \ 0.55}, 
        AxesLabel\  -> \ {" r (a)", \ " P(r) (1/a)"}];\)\)

▲▲▲

\(\(Plot[
        Evaluate[
          Table[\((r\ radialFunction[i, \ 0, \ r])\)^2, \ \ {i, \ 3}]\  /. \ 
            a\  -> \ 1], 
\ \ \ \ \ {r, \ 0, \ 25}, \ 
        PlotRange\  -> \ {0, \ 0.55}, 
        AxesLabel\  -> \ {" r (a)", \ " P(r) (1/a)"}, 
\ \ \ \ \ \ \ \ \ \ PlotStyle\  -> \ {{Thickness[
                0.006]}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {Thickness[0.0075], \ 
              Dashing[{0.01, \ 
                  0.02}]}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {GrayLevel[0.5], \ Thickness[0.009], \ 
              Dashing[{0.02}]}}
\ ];\)\)

Clear[f,  radialFunction]

4.1.4 FindRoot

NSolve spesso non è sufficiente in quanto trova le radici solo di equazioni polinomiali. 
FindRoot[lhs==rhs,{x, (Subscript[x, 0])},opts] cerca le soluzioni numeriche di una qualsiasi equazione lhs == rhs, vicine al punto x=(Subscript[x, 0]). Se opts viene omesso Mathematica usa le opzioni default.

Esempio 4.6
Trovare le radici di sin(x) = (x^2).

NSolve[Sin[x]  ==  (x^2),  x]

▲▲▲

Esempio 4.7
Trovare le radici di sin(x) = (x^2). Usare il comando Get Graphics Coordinates dal menù Input per dare il punto di partenza a FindRoot.

Plot[{Sin[x],  (x^2)},  {x,  -0.5,  1.5}];

FindRoot[Sin[x]  ==  (x^2),  {x, 0.873944}]

▲▲▲

4.1.5 Disegnare punti

ListPlot[{{x1,y1},{x2,y2},....},opts] disegna una lista di punti con coordinate specificate x e y.

Esempio 4.9
Considerare l'esempio della Volkswagen visto nella sezione 2.9
(a) Disegnare i dati.
(b) Disegnare la curva dei minimi quadrati.
(c) Sovrapporre i due grafici.

\(\(vwdata\  = \ {{0, \ 0}, \ {1, \ 1.5}, \ {2, \ 6.0}, \ {3, \ 
            13.5}, {4, \ 24.0}, 
		\ \ \ \ {5, \ 37.5}, \ {6, \ 
            54.0}, {7, \ 73.5}, \ {8, \ 96.0}, \ {9, \ 121.5}};\)\)
 ListPlot[vwdata,  
        PlotStyle  ->  
          PointSize[
            0.025],                   AxesLabel  ->  {" \
t (s)", " d (m)"}];

\(\(Plot[1.5\ t^2, {t, \ 0, \ 10}, \ 
        PlotRange\  -> \ {0, \ 
            120}, 
\ \ \ \ \ \ \ \ \ \ \ \ AxesLabel\  -> \ {" t (s)", " d (m)"}];\)\)

Show[%,  %%];

▲▲▲

Esempio 4.10
Considerare ancora lo stesso esempio. Questa volta mostrare solo l'ultimo disegno.

\(\(ListPlot[vwdata, \ 
        PlotStyle\  -> \ 
          PointSize[
            0.025], 
	\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ DisplayFunction\  -> \ Identity];\)\)

\(\(Plot[1.5\ t^2, {t, \ 0, \ 10}, \ 
        PlotRange\  -> \ {0, \ 
            120}, 
\ \ \ \ \ \ \ \ \ \ \ \ DisplayFunction\  -> \ 
          Identity];\)\)

\(\(Show[%, \ %%, \ 
        AxesLabel\  -> \ {" t (s)", " d (m)"}, 
\ \ \ \ \ \ \ \ \ \ \ \ DisplayFunction\  -> \ $DisplayFunction];\)\)

Clear[vwdata]

▲▲▲

4.1.6 Parametric Plots

ParametricPlot[{fx, fy},{t,tmin,tmax},opts] disegna un grafico parametrico in cui le coordinate x e y sono funzioni di un parametro t.

Esempio 4.11
Gli elettroni in un oscilloscopio sono deflessi da due campi elettrici perpendicolari tra loro in modo che ad ogni istante t la deflessione è data da
					x = (Subscript[A, x]) cos((Subscript[ω, x]) t +  (Subscript[ϕ, x]))
					y = (Subscript[A, y]) cos((Subscript[ω, y]) t +  (Subscript[ϕ, y]))
dove \(TraditionalForm\`\(\(A\_x\)\(,\)\(\ \)\(ω\_x\)\(,\)\(\ \)\)\)e (Subscript[ϕ, x]) sono, rispettivamente, l'ampiezza, la frequenza angolare e la costante di fase per la deflessione orizzontale e (Subscript[A, y]),  (Subscript[ω, y]),  e (Subscript[ϕ, y]) sono quelle per la deflessione verticale. Disegnare le traiettorie degli elettroni per 
(a) (Subscript[A, x])= (Subscript[A, y])=A , (Subscript[ω, x])= (Subscript[ω, y])=ω, (Subscript[ϕ, x])=0 e (Subscript[ϕ, y])=π/2
(b) (Subscript[A, x])= (Subscript[A, y])=A , (Subscript[ω, x])= (Subscript[ω, y])/3=ω, (Subscript[ϕ, x])=0 e (Subscript[ϕ, y])=π/2
(c) (Subscript[A, x])= (Subscript[A, y])=A , (Subscript[ω, x])= (Subscript[ω, y])/3=ω, (Subscript[ϕ, x])=0 e (Subscript[ϕ, y])=-π/4
(d) (Subscript[A, x])= (Subscript[A, y])=A , (Subscript[ω, x])/5= (Subscript[ω, y])/4=ω, (Subscript[ϕ, x])=0 e (Subscript[ϕ, y])=π/2

\(\(ParametricPlot[{Cos[t], \ Cos[t\  + \ Pi/2]}, \ {t, \ 0, \ 
          2  Pi}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AxesLabel\  -> \ {" x (A)", \ " y (A)"}];\)\)

\(\(Show[%, \ 
        AspectRatio\  -> \ 
          Automatic, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AxesLabel\  -> \ {" x (A)", \ " y (A)"}];\)\)

\(\(ParametricPlot[{Cos[t], \ Cos[3  t\  + \ Pi/2]}, \ {t, \ 0, \ 
          2  Pi}, 
		\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AspectRatio\  -> \ 
          Automatic, 
		\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AxesLabel\  -> \ {" x (A)", \ " y (A)"}];\)\)

\(\(ParametricPlot[{Cos[t], \ Cos[3  t\  - \ Pi/4]}, \ {t, \ 0, \ 
          2  Pi}, 
		\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AspectRatio\  -> \ 
          Automatic, 
		\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AxesLabel\  -> \ {" x (A)", \ " y (A)"}];\)\)

\(\(ParametricPlot[{Cos[5  t], \ Cos[4  t\  + \ Pi/2]}, \ {t, \ 0, \ 
          2  Pi}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AspectRatio\  -> \ 
          Automatic, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AxesLabel\  -> \ {" x (A)", \ " y (A)"}];\)\)

▲▲▲

4.2 Grafica in tre dimensioni

4.2.1 Superfici

Plot3D[f,{x, xmin,xmax},{y, ymin,ymax},opts] disegna la superfice f come funzione delle variabili x tra xmin e xmax e y tra ymin e ymax.

Esempio 4.12
Due cariche puntiformi +Q and -Q sono situate in (-b,0) e (b,0) rispettivamente. Per punti nel piano xy il potenziale elettrico è dato da
					V = k Q((1/(Sqrt[(((x + b))^2) +  (y^2)]))- (1/(Sqrt[(((x - b))^2) +  (y^2)])))
dove k è la costante di Coulomb. Disegnare V come funzione di x e y.

\(\(Plot3D[
        1\/\@\(\((x + 1)\)\^2 + y\^2\) - 
          1\/\@\(\((x - 1)\)\^2 + y\^2\), \ {x, \ \(-15\), \ 
          15}, \ {y, \ \(-15\), \ 
          15}, 
	\ \ \ \ \ \ \ \ \ \ \ \ \ Ticks\  -> \ {Automatic, \ 
            Automatic, \ {\(-0.04\), \ 0, \ 
              0.04}}, 
\ \ \ \ \ 	\ \ \ \ \ \ \ \ AxesLabel\  -> \ {"x (b)", \ "y (b)", \ "V (kQ/b)"}
];\)\)

\(\(Plot3D[
        1\/\@\(\((x + 1)\)\^2 + y\^2\) - 
          1\/\@\(\((x - 1)\)\^2 + y\^2\), \ {x, \ \(-15\), \ 
          15}, \ {y, \ \(-15\), \ 
          15}, 
\ \ \ \ \ 	\ PlotRange\  -> \ {\(-0.125\), \ 0.125}, 
        PlotPoints\  -> \ 40, \ 
        BoxRatios\  -> \ {1, \ 1, \ 1}, \ 
\ \ \ \ \ 	\ Boxed\  -> \ 
          False, \ Axes\  -> \ False
\ \ ];\)\)

▲▲▲

4.2.2 Viewpoint

L'opzione ViewPoint->{x,y,z} specifica le coordinate del punto dal quale si guarda l'oggetto grafico. L'origine del sistema di coordinate è al centro della scatola. Gli assi sono paralleli ai lati della scatola e scalati così che il lato più lungo della scatola è uguale a 1. Alcuni valori speciali sono
					{1.3, -2.4, 2)		default
					{0, -2, 0)		direttamente di fronte
					{0, -2, 2)		di front e dall'alto
					{0, 0, 2)		direttamente da sopra

Esempio 4.13
Usare il 3D ViewPoint Selector dal menù Input per specificare due punti di vista per guardare il precedente potenziale di dipolo.

Show[%,  ViewPoint -> {-1.770,  2.838,  0.514}];

Show[%,  ViewPoint -> {0.806,  -3.072,  1.168}];

▲▲▲

4.3 Animazione

Mathematica simula il moto mostrando una sequenza di grafici in successione rapida.

Esempio 4.14
Mostrare il principio di sovrapposizione simulando l'interferenza di due impulsi gaussiani che viaggiano su una retta  in direzioni opposte.
	Siano (Subscript[y, 1])e (Subscript[y, 2])le ampiezze degli impulsi gaussiani
						(Subscript[y, 1])= A \(TraditionalForm\`e\^\(\(-16\) α\ \((x\  - v\ t)\)\^2\)\)
						(Subscript[y, 2])= 1.5A \(TraditionalForm\`e\^\(\(-α\)\ \((x\  + v\ t)\)\^2\)\)
Questi impulsi hanno la stessa velocità v ma diverse ampiezze e larghezze. I numeri 1.5 e 16 sono scelti in modo da rendere gli impulsi distinguibili e la loro interferenza evidente.

(Subscript[y, 1])[x_, t_] := (E^(-16 (((x - t))^2)))
(Subscript[y, 2])[x_, t_] := 1.5  (E^(-(((x + t))^2)))
\(\(Do[
        Plot[{y\_1[x, t] + y\_2[x, t], y\_2[x, t] + 3, 
            y\_1[x, t] + 5}, {x, \ \(-3.0\), \ 3.0}, 
\ 
          PlotStyle\  -> \ {{Thickness[0.008]}, \ {Thickness[
                  0.005]}, {Thickness[0.005]}}, 
\ 
          PlotRange\  -> \ {0, \ 6.25}, \ Axes\  -> \ False, \ 
          Frame\  -> \ True, \ 
          FrameTicks\  -> \ None\ ], 
\ \ \ \ \ {t, \ \(-2.0\), \ 3.5, \ 
          0.5}];\)\)

▲▲▲

Il package Graphics`Shapes` fornisce funzioni per creare le seguenti forme tridimensionali: cilindro, cono, toro, sfera, nstro di Moebius, elica e doppia elica.
   Il package Graphics`Animation` contiene la funzione SpinShow, per ruotare oggetti grafici tridimensionali. 
SpinShow[Shape[],opts] genera una sequenza oggetti grafici tridimensionali di forma Shape per una rotazione animata.

Esempio 4.15
Creare un'elica che ruota.

Needs["Graphics`Shapes`"]
Needs["Graphics`Animation`"]
SpinShow[Graphics3D[Helix[]],  Boxed  ->  False, 
        Frames  ->  16];

▲▲▲

4.4 Esercizi

1. Disegna il paraboloide iperbolico dato dall'equazione

						(((x^2))/((a^2))) - ((y^2)/(b^2)) = 2  c z
    con a=b=1 e c=1/2.

Plot3D[(x^2) - (y^2), {x, -2, 2}, {y, -2, 2}, 
      PlotPoints -> 100]

2. Disegna il paraboloide ellittico dato dall'equazione

						(((x^2))/((a^2))) + ((y^2)/(b^2)) = 2  c z
    con a=b=1 e c=1/2.

Plot3D[(x^2) + (y^2), {x, -2, 2}, {y, -2, 2}, 
      PlotPoints -> 100]

3. Determinare le prime cinque radici positive, con una accuratezza di sei decimali, della funzione di Bessel del primo tipo (Subscript[J, 0])[x] (Cercare le funzioni usando l'Help)

Plot[BesselJ[0, x], {x, 0, 20}];

\(
Clear[xs]\)
xs = {2.4, 5.2, 8.5, 11.9, 15. };
Table[
      FindRoot[BesselJ[0, x], {x, xs[[i]]}, AccuracyGoal -> 6], {i, 
        5}]

<< NumericalMath`BesselZeros`
SetPrecision[BesselJZeros[0, 5], 6]

4. Le autofunzioni normalizzate dell'oscillatore armonico sono
		\(\(u\_n\) \((x)\) := \(1\/\@\(\(2\^n\) \(n!\)\)\) \((\(2  m\ ω\)\/h\()\^\(\(1\/4\)\(\ \)\)\)\) \(H\_n\) \((\@\(\(2  π\ m\ ω\)\/h\)\ x)\) e\^\(\(-\(\(\(π\)\(\ \)\(m\)\(\ \)\(ω\)\(\ \)\)\/h\)\) x\^2\)\)
    dove m, ω, h e (Subscript[H, n]) sono la massa dell' 
        oscillatore, la frequenza dell'oscillatore, la costante di Plank e i polinomi di
    Hermite rispettivamente. Disegna \(TraditionalForm\`u\_0, \ 
      u\_2, \ \(\(u\_4\)\(\ \)\(sullo\)\(\ \)\(stesso\)\(\ \)\(grafico\)\(\ \)\)\)differenziandoli per lo stile della curva.

Clear[u, n, x]
u[n_, x_] := (1/(Sqrt[(2^n) n!])) 
        HermiteH[n, x] (E^(-((x^2)/2)))
\(\(Plot[Evaluate[Table[u[n, x], {n, 0, 4, 2}]\ ], {x, \(-4\), \ 4}, 
        Frame -> 
          True, 
\ \ \ \ \ \ \ \ \ \ FrameLabel\  -> \ {\*""\!\(\@\(\(2  π\\ m\\ ω\)\/h\)\) x"", \ \*""(\!\(\(2  m\\ ω\)\/h\)\!\(\()\^\(\(-\(1\/4\)\)\(\\ \)\)\)\)u""}, 
\ \ \ \ \ \ \ \ \ \ PlotStyle\  -> \ {
\ \ \ \ \ \ \ \ \ \ \ \ \ \ {Thickness[
                0.006]}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ {Thickness[0.0075], \ 
              Dashing[{0.01, \ 
                  0.02}]}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ {GrayLevel[0.5], \ 
              Thickness[0.009], \ 
              Dashing[{0.02}]}
\ \ \ \ \ \ \ \ \ }
\ \ \ \ \ \ \ ];\)\)

5. L'equazione di una ellisse è 
						(((x^2))/((a^2))) + ((y^2)/(b^2)) = 1
    dove a=2 b. Disegna l'ellisse.

Clear[a, b]
b = 1; a = 2  b;
\(\(Plot[{y = b \@\( 1 - x\^2\/a\^2\), 
          y = \(-b\) \@\(1 - x\^2\/a\^2\)}, {x, \(-2\), 2}, 
        AspectRatio -> b\/a, 

        AxesLabel -> {"x (b)", "y (b)"}];\)\)

ParametricPlot[{a Sin[φ], 
        b Cos[φ]}, {φ, 0, 2  π}, 
      AxesLabel -> {" x (b)", "y (b)"}, 
      AspectRatio -> (b/a)]

6. L'equazione di una ellissoide
						(((x^2))/((a^2))) + ((y^2)/(b^2))+ ((z^2)/(c^2)) = 1
    dove a=2 b=2c. Disegna l'ellissoide.

b = 1;
a = 2  b;
c = b;
ParametricPlot3D[{a Cos[θ] Sin[φ], 
        b Cos[θ] Cos[φ], c Sin[θ]}, {θ, 0, 
        2  π}, {φ, 0, 2  π}, 
      AxesLabel -> {" x (b)", "y (b)", "z (b)"}]

7. Nell'esempio 4.14, Mathematica ha mostrato i grafici in colonna. Con l'ausilio della funzione GraphicsArray, mostra i grafici in una matrice rettangolare.

\(Clear[\(ψ\_+\), \(ψ\_-\), g]\)
\(\(ψ\_+\)[x_, 
        t_] := E\^\(\(-16\) \((x - t)\)\^2\)\)
\(\(ψ\_-\)[x_, 
        t_] := \(3\/2\) E\^\(-\((x + t)\)\^2\)\)
\(g[t_] := 

      Plot[{\(ψ\_+\)[x, t]\  + \(ψ\_-\)[x, t], \(ψ\_-\)[x, 
              t]\  + \ 3, \(ψ\_+\)[x, t] + 5}, {x, \(-3.0\), \ 3.0}, 
	
        PlotStyle\  -> \ {Thickness[0.008], Thickness[0.005], 
            Thickness[0.005]}, 
	PlotRange\  -> \ {0, \ 6.25}, \ 
        Axes\  -> \ False, \ Frame\  -> \ True, \ FrameTicks\  -> \ None, 
	
        DisplayFunction -> Identity
]\)

Clear[n, t, arr]
n = 4;
arr =  
        Partition[Table[g[t], {t,  -2.0,  3.5,  0.5}], n];
Show[GraphicsArray[arr], 
        GraphicsSpacing -> { .25,  .25}];