Seite 1 von 1

Plot einer Funktion mit for-Schleife

Verfasst: Freitag 6. April 2018, 12:17
von Frithnandir
Hallo ihr Lieben,

in statistischer Physik soll ich für unterschiedliche N diese Funktion über die Zeit plotten.

Code: Alles auswählen

def M(t,N):
    m=0
    v = [[Z0] for y in range(N)] 
    for i in range(t):
        for j in range(N):
            R=random.uniform(0,1)
            if R<p:
                v[j]=Z1
            if R>p:
                v[j]=Z0
    for h in range(N):
        if v[h]==Z1:
            m=m+1  
        if v[h]==Z0:
            m=m-1
    return(m/N);
Die Funktion gibt für einzelne Werte alles richtig aus, aber wenn ich jetzt mit

Code: Alles auswählen

t1 =  np.linspace(0, 60, 61, endpoint=True)
F=M(t1,100)
plt.plot(t1,F)
startx, endx = -10.1, 10.1
starty, endy = -10.1, 10.1
plt.axis([startx, endx, starty, endy])
plt.show()
etwas plotten will, dann sagt es mir nur, dass t1 kein integer für die for Schleife ist- was ja Sinn macht. Ich weiß jetzt leider nicht wie ich das gut plotten kann.

danke für die Hilfe

Re: Plot einer Funktion mit for-Schleife

Verfasst: Freitag 6. April 2018, 12:52
von Sirius3
@Frithnandir: M erwartet die Anzahl der Zeitschritte, wobei ich jetzt nicht verstehe, warum, weil Du in jedem Zeitschritt alles wieder mit Zufallszahlen belegst. `Z0`, `Z1` und `p` kommen aus dem Nichts, das sollte nicht sein. Du erstellst eine Liste von Listen, um danach die inneren Listen durch Zahlen zu ersetzen. Sowas macht man nicht. Insgesamt läßt sich das meiste, weil unnütz, wegwerfen und erhält die äquivalente Funktion:

Code: Alles auswählen

def M(t,N):
    c = (np.random.uniform(0, 1, N) < p).sum()
    return (2 * c - N) / N
Diese Funktion kannst Du dann aber nicht plotten.

Re: Plot einer Funktion mit for-Schleife

Verfasst: Freitag 6. April 2018, 13:09
von Frithnandir
Z0, Z1 sind Zustände die ich jetzt mal als Vektoren definiert hab (1,0) und (0,1)
Tut mir leid dass ich die nicht mit reinkopiert hab das Programm umfasst mehrere Funktionen- p ist gegeben.

Ich versuchs mal mit deiner Funktion und schau ob sich das plotten lässt :))

Danke!

Re: Plot einer Funktion mit for-Schleife

Verfasst: Freitag 6. April 2018, 16:38
von Frithnandir
Hmm, also am liebsten wärs mir ich würd die Funktion für eine Liste von Zeitpunkten ausweren- bekomm dann eine Liste an Funktionswerten und Plot die dann als Punkte?

Lg
FF

Re: Plot einer Funktion mit for-Schleife

Verfasst: Samstag 7. April 2018, 15:12
von Sirius3
Wie schon geschrieben, die Funktion macht für mich nicht wirklich Sinn, von daher, was willst Du eigentlich ausrechnen?