Exemple #1
0
def rk_explicit_w_energy(acc, x0, v0, tmax, h):
    N = len(x0)
    result = rk_explicit(rk_klassisch, f, concatenate((x0, v0)), tmax, h)
    tns = result[:,0]
    xns = result[:,1:N+1]
    vns = result[:,N+1:2*N+1]

    ens = [ tot_en(xn, vn) for xn, vn in zip(xns, vns) ]
    return tns, xns, ens
Exemple #2
0
# Ausgabe
#############################################

figure = pyplot.figure(figsize=(8,6))
figure.subplots_adjust(left=0.15, right=0.95, top=0.95, wspace=0.3)

x = linspace(-L/2.0, L/2.0, N+2)

# links: homogen, ein Teilchen
#############################################

# Am Anfang ein Teilchen in der Mitte
p0 = zeros(N)
p0[N/2] = 1.0/h

tnpns = rk_explicit(rk_klassisch, fhomogen, p0, tmax, dt)
ts, ps, mass = unpack(tnpns)

# oben: Verlauf
#############################################
graph = figure.add_subplot(221)

for step, style in ((int(5.0/dt), "r-"), (int(20.0/dt), "g--"), (int(tmax/dt), "b:")):
    graph.plot(x, [0] + list(ps[step]) + [0], style, linewidth=2, label=("t=%0.1f" % ts[step]))

graph.axis((-L/2.0,L/2.0,0,0.2))
graph.xaxis.set_label_text("$x$")
graph.yaxis.set_label_text("$p(x,t)$")


# unten, Masse
Exemple #3
0
from rk import rk_explicit, euler, rk_klassisch

y0 = array((100,1))

# Ausgabe
#############################################

figure = pyplot.figure(figsize=(8,4))
figure.subplots_adjust(left=0.15, right=0.95,wspace=0.3)

# links oben, Expliziter Euler
#############################################
graph = figure.add_subplot(221)

tnyns_ee = rk_explicit(euler, f, y0, 50, 1./365)

t, beute, raeuber = zip(*tnyns_ee)

graph.plot(t, beute, "b:", linewidth=2)
graph.plot(t, raeuber, "r--", linewidth=2)
graph.axis((0,10,0,300))
graph.yaxis.set_label_text("Populationen")

# links unten, RK
#############################################
graph = figure.add_subplot(223)

tnyns_rk = rk_explicit(rk_klassisch, f, y0, 50, 1./365)

t, beute, raeuber = zip(*tnyns_rk)