Exemple #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()
Exemple #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
Exemple #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()
Exemple #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()
Exemple #5
0
# Parameter initialisieren:
N = 100
Heff = 0.05
L = 1.2
A = 0.04
sigmaX = 0.1
x0 = 0.1
tmax = 25

# Plot initialisieren
plt.figure(1)
ax = plt.subplot(111)
plt.connect("button_press_event", OnClick)

ew, ef, x, dx, V = diagonalisierung(Heff, L, N, A=A)
plot_eigenfunktionen(ax, ew, ef, x, V, betragsquadrat=True)

plt.show()

""" Beobachtungen:
Bewegungen:
Start bei einem der beiden Minima: Gausspaket schwingt innerhalb der Mulde des
Minimums etwas hin und her, behaelt aber seine Form. Das laesst sich mit der
Oszillatiornaeherung der Mulde erklaeren, die vorhersagt, dass ein Gausspaket
seine Form behaelt.
Die Energieerwartungswerte liegen leicht ueber den Eigenenergien. Das liegt
daran dass die beiden Komponenten ef[0] und ef[1] den groessen Beitrag liefern
(Cn[0] und Cn[1] gross) und der Rest der Entwicklung vernachlaessigbar ist.
Daraus folgt eine Frequenz von (ew[0]-ew[1])/(Heff*2*pi)
Exemple #6
0
                
# 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__

plt.show()
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

# Auftretende Bewegungen:
#   -   Bei einem Start im Minimum befinden sich Beitraege zur Wellenfunktion