Ejemplo n.º 1
0
def main():
    """Hauptprogramm."""
    global x, ew, ef, p0, V, hquer, zeiten, delta_x_gauss, ax, fak

    p0 = 0                                  # Impuls des WP
    A = 0.04                                # Potentialparameter
    L = 2.0                                 # x-Bereich ist [-L,L]
    N = 500                                 # Zahl der Gitterpkte
    hquer = 0.05                            # effektives hquer
    delta_x_gauss = 0.1                     # Breite Gauss
    zeiten = linspace(0.0, 4, 200)          # Zeiten f. Zeitentw.
    fak = 0.01                              # Plot-Skalierungsfak.
    Emax = 0.1                              # Maximalenergie fuer Darstellung

    x = qm.diskretisierung(-L, L, N)
    V = potential(x, A)

    ew, ef = qm.diagonalisierung(hquer, x, V)
    print "Energiedifferenz E_1 - E_0:", ew[1] - ew[0]

    ax = plt.subplot(111, autoscale_on=False)
    qm.plot_eigenfunktionen(ax, ew, ef, x, V, Emax=Emax,
                            fak=fak, betragsquadrat=True)
    plt.setp(ax, title="Zeitentwicklung im asymm. Doppelmuldenpotential")

    print __doc__
    print "Linksklick startet neues Wellenpaket."

    plt.connect('button_press_event', wp_neu)

    plt.show()
Ejemplo n.º 2
0
def koeff(V, A, hbar, N, xmin, xmax, wellenpaket, x0, dx, p0):

    x_i = diskretisierung(xmin, xmax, N)
    phi_0 = wellenpaket(x_i, x0, dx, hbar, p0)

    ew, ef = diagonalisierung(hbar, x_i, V(x_i, A))
    c = np.abs(x_i[0] - x_i[1]) * np.dot(np.conjugate(np.transpose(ef)), phi_0)

    phi_tilde = np.dot(ef, c)
    #dp = (np.abs(x_i[0]-x_i[1])*np.sum(np.abs(phi0-phi_tilde)**2))**0.5
    return ew, ef, c, phi_tilde, x_i
Ejemplo n.º 3
0
def main():
    """Hauptprogramm"""
    print(__doc__)
    #Paramter für quantenmechanik.py
    L = 1.5  #Intervallgrenzen
    N = 300  #Matrixgröße
    h_eff = 0.07  #effektives Plack.-
    #Wirkungsquantum
    p_0 = 0.0  #Anfangsmpuls
    A = 0.06  #gegebener Paramter
    #im Doppelmuldenpot.
    D_x = 0.1  #Breite des Wellenpaket

    t_max = 100  #maximale Zeit für Zeitarray
    T = np.linspace(0, t_max, 100)  #Zeitenarray

    skalierung = 0.01  #Skalierung zur besseren
    #Darstellung
    #Berechnugn der diskreten Ortswerte und des Ortsgitterabstand mithilfe
    #quantenmechanik.py
    x, delta_x = qm.diskretisierung(-L, L, N, True)
    #Definition des Doppelmuldenpotentials
    V = functools.partial(potential_DM, A=A)
    #Berechnung des Eigenwerte und -funktionen mithilfe quantenmechanik.py
    EW, EV = qm.diagonalisierung(h_eff, x, V)
    #Erstellung des Plotfensters
    fig = plt.figure(figsize=(10, 8))
    ax = plt.subplot(111)
    #Plot der Eigenfunktionen durch quantenmechanik.py
    qm.plot_eigenfunktionen(ax,
                            EW,
                            EV,
                            x,
                            V,
                            betragsquadrat=True,
                            fak=skalierung)
    #Übergabe der Parameter an wenn_maus_geklickt
    klick_funktion = functools.partial(wenn_maus_geklickt,
                                       ax=ax,
                                       x=x,
                                       D_x=D_x,
                                       h_eff=h_eff,
                                       p_0=p_0,
                                       delta_x=delta_x,
                                       EW=EW,
                                       EV=EV,
                                       skalierung=skalierung,
                                       T=T)
    fig.canvas.mpl_connect("button_press_event", klick_funktion)
    plt.show()
Ejemplo n.º 4
0
def main():
    print
    # Einige Globale Variablen (noetig da event verwendet)
    global L, N, x, V, h_eff, Emax, fak, p0, dx_paket, zeiten, ew, ev, ax

    L = 1.5  # Betrachtetes x-Intervall [-L, L]
    N = 1000  # Anzahl der Ortspunkte
    x = diskretisierung(-L, L, N)  # ...Ortspunkte

    V = potential(x)  # Zu betrachtendes Potential

    h_eff = 0.05  # Effektives h-quer
    Emax = 0.1  # Maximal betrachtete Eigenenergie
    fak = 0.01  # Plot-Skalierungsfaktor

    p0 = 0  # Impuls des Pakets
    dx_paket = 0.1  # Breite des Pakets

    zeiten = np.linspace(0, 10, 500)  # Zeiten fuer Zeitentwicklung

    ew, ev = diagonalisierung(h_eff, x, V)

    # Plotbereich erstellen
    ax = plt.subplot(111, autoscale_on=False)
    # Eigenfunktionen plotten und Diagramm benennen
    plot_eigenfunktionen(ax,
                         ew,
                         ev,
                         x,
                         V,
                         Emax=Emax,
                         fak=fak,
                         betragsquadrat=True)
    plt.setp(ax,
             title="Asymmetrisches Doppelmuldenpotential mit Eigenfunktionen")

    # Benutzerfuehrung
    print(__doc__)

    # Bereitstellung des Mausklicks und Ausgabe der Zeitentwicklung
    plt.connect('button_press_event', neues_wellenpaket)
    plt.show()
Ejemplo n.º 5
0
            ydata=(abs(phi_t**2)*scale) + energy)
            plt.draw()
                
# Parameterdeklarationen
A = 0.04                  # 'Schiefheitsparameter' des Potentials
p0 = 0.0                  # Impuls des Wellenpakets
heff = 0.05               # effektives hquer
dx = 0.1                  # Ortsgenauigkeit des Wellenpakets 
L = 1.3                   # Intervall der x-Werte [-L, L]
N = 100                   # Anzahl der x-Werte
t_end = 15                # letzter Zeitpunkt der Zeitentwicklung
t_steps = 75              # Anzahl der Zeitschritte fuer die Darstellung
scale = 0.01              # Skalierungsfaktor der dyn. Wellenfkt.
Emax = 0.25                # Energie, bis zu der Eigenwerte berechnet werden

x_disk = qm.diskretisierung(-L, L, N)         # Ortsdiskretisierung
V = potential(x_disk, A)                      # Potential
ew, ev = qm.diagonalisierung(heff, x_disk, V) # Loesung des Eigenwertproblems

# Ploteinstellungen
plt.figure(figsize=(10, 8))
ax = plt.subplot(111)

# Eigenfunktionen und bei Mausklick Zeitentw. plotten
qm.plot_eigenfunktionen(ax, ew, ev, x_disk, V,\
    betragsquadrat=True, Emax=Emax)
plt.connect('button_press_event', OnClick)

# Benutzerinformation
print __doc__
Ejemplo n.º 6
0
L = 1.2                 # Intervall der x-Werte [-L, L]
N = 200                 # Anzahl der x-Werte
skal = 0.01             # Skalierung der Eigenvektor-Plots

delta_x = 0.1           # Ortsunschaerfe des gaussschen Wellenpaketes
p0 = 0.0                # Impuls des Wellenpaketes

t_max = 10              # Maximaler Zeitpunkt
t_schritte = t_max * 15 # Anzahl der Zeitschritte

# -- Hauptprogramm --

print __doc__

# Ortsraumdiskretisierung
x_arr = diskretisierung(-L, L, N)
# Berechnung von Eigenwerten /-funktionen des Potentials
ew, ev = diagonalisierung(heff, x_arr, potential(x_arr, A))

# Plotbereich erstellen + vorbereiten
fig = plt.figure(figsize=(9, 9))
ax = plt.subplot(111)
plt.connect('button_press_event', maus_klick)
graph, = plt.plot([],[])

# Eigenfunktionen und Potential grafisch darstellen
plot_eigenfunktionen(ax, ew, ev, x_arr, potential(x_arr, A), \
    betragsquadrat=True, Emax=Emaximal)

plt.show()      # Plotfenster anzeigen