Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Partícula en una caixa

Continguts

  1. Caixa unidimensional
  2. Caixa bidimensional
  3. Sel·lecció automàtica

Caixa unidimensional

En aquest capítol aprendrem a graficar la forma més bàsica de la funció d’ona d’una partícula en una caixa unidimensonal:

\[\psi_n(x)=\sqrt{\frac{2}{L}}\sin{\left(\frac{n\pi}{L}x\right)}\]

Primer necessitem importar les llibreries per aquest exercici en concret:

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np

Un cop tenim importades les llibreries, ja podem començar a escriure el codi que ens permeterà observar aquesta expressió en funció de n, és a dir, del nombre quàntic principal.

Primer caldrà determinal la llargada de la caixa unidimensional (L).

L = 1         # Llargada de la caixa
x_list = np.linspace(0,L,100)       # Aquest són els valors que necessitem per a poder fer les gràfiques

Ara caldrà definir les funcions que volem graficar. Com que volem veure la pròpia funció i el seu quadrat (funció probabilitat), caldrà definir-les per separat.

def psi(n,L,x):
    return np.sqrt(2/L)*np.sin(n*np.pi*x/L)
def psi_2(n,L,x):
    return np.square(psi(n,L,x))

I ara ja sí, fem les gràfiques.

No entrarem en detall en el codi de les gràfiques perquè ja està tot explicat en el document de gràfiques.

plt.figure(figsize=(15,10))

plt.suptitle("Funcions d'ona", fontsize=18)

for n in range(1,4):

    psi_2_list = []
    psi_list = []
    
    for x in x_list:
        psi_2_list.append(psi_2(n,L,x))
        psi_list.append(psi(n,L,x))
    plt.subplot(3,2,2*n-1)
    plt.plot(x_list, psi_list)
    plt.xlabel("L", fontsize=13)
    plt.ylabel("$\psi$", fontsize=13)
    plt.xticks(np.arange(0, L, step=0.5))
    plt.title("n="+str(n), fontsize=16)
    plt.grid()
    plt.subplot(3,2,2*n)
    plt.plot(x_list, psi_2_list)
    plt.xlabel("L", fontsize=13)
    plt.ylabel("$\psi^2$", fontsize=13)
    plt.xticks(np.arange(0, L, step=0.5))
    plt.title("n="+str(n), fontsize=16)
    plt.grid()

plt.tight_layout(rect=[0, 0.03, 1, 0.95])
plt.show()

01

D’aquesta manera, podem observar on trobarem un node d’aquesta funció i on està la major probabilitat de trobar la partícula en aquesta caixa unidimensional.

Caixa bidimensional

També es pot fer el mateix per una caixa bidimensional.

Evidentment, l’equació a utilitzar canviarà:

\[\psi_n(x,y)=\sqrt{\frac{2}{L_x}}\sqrt{\frac{2}{L_y}}\sin{\left(\frac{n\pi}{L_x}x\right)\sin{\left(\frac{n\pi}{L_y}y\right)}}\]

Igual que amb l’exemple anterior, primer definirem algunes de les variables com \(n\), \(L_x\) i \(L_y\).

n = 1

Lx = 1**-10
Ly = 1**-10

x,y = np.linspace(0, Lx, 200), np.linspace(0, Ly, 200)

Ara definim la funció:

def psi_3d(a,b):
  return np.sqrt(2/Lx)*np.sqrt(2/Ly)*np.sin(n*np.pi*a/Lx)*np.sin(n*np.pi*b/Ly)
def psi2_3d(a,b):
  return np.square(psi_3d(a,b))

I tornem a fer les gràfiques. Aquestes les podem fer per separat:

X,Y = np.meshgrid(x,y)
psi = np.array([psi_3d(x,y) for x,y in zip(np.ravel(X),np.ravel(Y))])
PSI = psi.reshape(X.shape)

fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(111, projection = '3d')

ax.plot_surface(X,Y,PSI, cmap = 'binary')

plt.xlabel('Coordenades X')
plt.ylabel('Coordenades Y')
ax.set_zlabel("Funció d'ona")
plt.title('$\psi$ per n=%s' %n)

plt.show()

02

X,Y = np.meshgrid(x,y)
psi2 = np.array([psi2_3d(x,y) for x,y in zip(np.ravel(X),np.ravel(Y))])
PSI2 = psi2.reshape(X.shape)


fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(111, projection = '3d')

ax.plot_surface(X,Y,PSI2, cmap = 'binary')

plt.xlabel('Coordenades X')
plt.ylabel('Coordenades Y')
ax.set_zlabel("Funció d'ona")
plt.title('$\psi^2$ per n=%s' %n)

plt.show()

03

O bé o podem fer de manera conjunta:

X,Y = np.meshgrid(x,y)

psi = np.array([psi_3d(x,y) for x,y in zip(np.ravel(X),np.ravel(Y))])
PSI = psi.reshape(X.shape)
psi2 = np.array([psi2_3d(x,y) for x,y in zip(np.ravel(X),np.ravel(Y))])
PSI2 = psi2.reshape(X.shape)

fig = plt.figure(figsize=(15,6))
ax1 = fig.add_subplot(121, projection = '3d')
ax2 = fig.add_subplot(122, projection = '3d')

ax1.plot_surface(X,Y,PSI, cmap = 'binary')
ax1.set_xlabel('Coordenades X')
ax1.set_ylabel('Coordenades Y')
ax1.set_zlabel("Funció d'ona")
ax1.set_title('$\psi$ per n=%s' %n)


ax2.plot_surface(X,Y,PSI2, cmap = 'binary')
ax2.set_xlabel('Coordenades X')
ax2.set_ylabel('Coordenades Y')
ax2.set_zlabel("Funció d'ona")
ax2.set_title('$\psi^2$ per n=%s' %n)

plt.show()

04

Sel·lecció automàtica

També es pot fer com una “mostra automàtica” de la funció d’ona i la seva funció de densitat de probabilitat.

Primer cal importar les llibreries necessàries i definir la funció de la partícula en una caixa vist anteriorment:

import matplotlib.pyplot as plt
import numpy as np

def psi(x,n,L): return np.sqrt(2.0/L)*np.sin(float(n)*np.pi*x/L)

Ara cal saber per a quines característiques es vol graficar la funció. Això ho indicarà l’alumne:

n = int(input("Digues el valor del nombre quàntic principal: n = "))
L = float(input("Digues la llargada de la caixa en Angstroms: L = "))

Amb les informacions que hem donat nosaltres de la funció i les caràcterístiques que volem que tingui aquesta funció, ja es poden fer les gràfiques. Per aquest exemple, farem que n=2 i L=10.

print('Caracerísitiques de la funció: n=%s; L=%s' %(n,L))

# Funció de ona
plt.rcParams.update({'font.size': 18, 'font.family': 'STIXGeneral', 'mathtext.fontset': 'stix'})
x = np.linspace(0, L, 900)
fig, ax = plt.subplots()
ax.plot(x, psi(x,n,L), linestyle='--', color="orange", linewidth=2.8)
ax.hlines(0.0, 0.0, L, linewidth=1.8, linestyle='--', color="black")
ax.set_xlabel(r'$L$')
ax.set_ylabel(r'$\psi_n(x)$')
plt.title("Funció d'ona")

# Funció densitat de probabilitat
fig, ax = plt.subplots()
ax.axis([0.0,L,0.0,lim1*lim1*1.1])
ax.plot(x, psi(x,n,L)*psi(x,n,L), linewidth=2.8)
ax.set_xlabel(r'$L$')
ax.set_ylabel(r'$|\psi_n|^2(x)$')
plt.title("Funció densitat de probabilitat")

plt.show()

05 06