Onde stazionarie

Per rappresentare le onde stazionarie bisogna tener conto che esse debbono essere visualizzate come oscillazione al variare dello spazio in un dato istante e poi agli istanti successivi per un certo intervallo di tempo.

Conviene allora rifarsi alla rappresentazione matematica completa dell'onda:

y:=A*sin(2*Pi*(f*t+z/lo));

dove y è la grandezza che oscilla, A la sua ampiezza, f la sua frequenza, t il tempo che scorre, z è la variabile spaziale, lo la lunghezza d'onda.

Un'altra oscillazione

y1:=A1*sin(2*Pi*(f1*t-z/lo1));

potrà essere sommata alla prima per ottenere l' onda stazionaria se:

f=f1;         A= A1

Da notare il segno meno prima di  z per indicare il verso opposto di percorrenza.

Inizialmente si fissa il tempo t e si rappresenta la somma di y e y1 al variare di z. Si incrementa il valore di t e si rappresenta di nuovo y+y1 al variare di z. In sostanza stiamo descrivendo due cicli repeat ... until detti "annidati" il più esterno al variare del tempo e il più interno al variare dello spazio z.

     t:=-20;
     repeat
          z:=-80;
          repeat
              y:=A*sin(2*Pi*(f*t*(1e-3)+z/lo));
              y1:=A1*sin(2*Pi*(f1*t*(1e-3)-z/lo1));
              disegnaPunto(z,y+y1,clblue);
              z:=z+0.2
          until z>=+80;
          t:=t+0.1
    until t>=20;

Nel primo ciclo repeat ... until il tempo t varia da -20 a +20 con passo 0.1, nel secondo lo spazio z varia da -80 a +80 con passo 0.2. L'espressione 1e-3 indica soltanto 1/1000 in notazione esponenziale.

Dopo aver inserito due finestre di edit per variare i valori delle due lunghezze d'onda, in fase di esecuzione, si possono visualizzare le onde stazionarie con le due lunghezze d'onda uguali o diverse.


Volendo rendere più verisimile la rappresentazione si può fare in modo che l'onda ad un dato istante sia cancellata prima di passare alla rappresentazione dopo un piccolo intervallino di tempo. Per fare questo basta ripetere il disegno dell'onda assegnando come valore quello dello sfondo; questo equivale a "cancellare" l'onda precedente:

t:=-20;
     repeat
          z:=-80;
          repeat
             y:=A*sin(2*Pi*(f*t*(1e-3)+z/lo));
             y1:=A1*sin(2*Pi*(f1*t*(1e-3)-z/lo1));
             disegnaPunto(z,y+y1,clblue);
             z:=z+0.2
          until z>=+80;

          z:=-80;
          repeat
             y:=A*sin(2*Pi*(f*t*(1e-3)+z/lo));
             y1:=A1*sin(2*Pi*(f1*t*(1e-3)-z/lo1));
             disegnaPunto(z,y+y1,clwhite);
             z:=z+0.2
          until z>=+80;
          t:=t+0.1
    until t>=20;

Da notare come il primo disegnaPunto prevede il colore blue (clblue), il secondo disegnaPunto prevede il colore white (clwhite), il colore dello sfondo.