harmonic0.c (versione C) o harmonic0.f (versione Fortran 77) risolve l'equazione di Schrödinger per l'oscillatore armonico quantistico, integrando mediante l'algoritmo di Numerov descritto sopra, e ricercando gli autovalori mediante il metodo di "shooting".
Si tratta di una procedura del tutto analoga a quella della
ricerca dello zero di una funzione mediante il metodo di
bisezione (descritto in B.1).
Il programma va alla ricerca della soluzione con un numero di
nodi assegnato
, e considera inizialmente l'energia
corrispondente
al punto medio dell'intervallo
(che siamo certi contenere l'autovalore desiderato
).
La funzione d'onda viene integrata partendo da
e muovendosi
verso gli
positivi, e allo stesso tempo viene contato il
numero di nodi, ossia di cambiamenti di segno della funzione.
Se tale numero risulta essere superiore a
, significa che
è troppo alta; se invece il numero di nodi è minore
o uguale a
, significa che
è troppo bassa.
Viene allora scelto il semiintervallo opportuno--rispettivamente
quello inferiore
o quello superiore
--e la procedura iterata
sul semiintervallo.
Si considera di essere arrivati a convergenza quando l'ampiezza
dell'intervallo di energia è scesa al di sotto di una soglia
prefissata.
Per negativi la funzione viene costruita per simmetria,
essendo
. Questo è ovviamente
possibile in quanto
, altrimenti sarebbe stato
necessario integrare su tutto l'intervallo.
Il programma chiede, nell'ordine, il valore massimo a cui
estendere l'integrazione (un valore tipico può essere 10),
il numero
di punti sulla griglia (da cui
), il nome del file di output e
il numero di nodi richiesto.
Ad un'ultima domanda sull'energia da provare si risponderà in
generale con 0 per avviare il meccanismo di ricerca dell'autovalore
descritto sopra; è tuttavia possibile anche inserire una
specifica energia, in generale non corrispondente ad un autovalore,
per forzare il programma ad effettuare una singola integrazione
su quell'energia ed esaminare la funzione d'onda risultante.
Questo permette di effettuare dei test per capire meglio il
funzionamento del metodo di ricerca dell'autovalore.
Il file di output contiene la soluzione finale ed
è organizzato su cinque colonne contenenti
rispettivamente ,
,
,
e
.
è la densità di probabilità dell'oscillatore
armonico classico data dalla (2.30) (normalizzata a 1).
Oltre a questo file, il programma emette sullo standard output
ad ogni iterazione il numero dell'iterazione, il numero di nodi
trovati (sul solo semiasse degli
positivi) e la stima corrente
dell'autovalore dell'energia.
Come si vedrà, è impossibile evitare che la soluzione diverga
al di sopra di un certo . Questo è il risultato dell'inevitabile
presenza di una componente
che, anche
se piccola, porta ad una divergenza quando
sufficientemente grande.
Tale divergenza comporta anche una difficoltà nel normalizzare
la
. A causa di questa difficoltà, questo programma
deve chiaramente essere migliorato.