2017-10-27 4 views
0

Ich möchte ein Diagramm für Parameter a. Für jeden Wert von a möchte ich die Flugbahn der Karte nach dem ersten Übergang zeigen und sie auf der y-Achse darstellen. Im Beispiel unten nehme ich 200 Punkte in einem (Parameter, der von 1 bis 4 reicht), führe 1000 Schritt-Iterationen für jedes a aus und zeichne x nach dem Überspringen von 100 Schritten auf. Um dies zu implementieren ich zwei Funktionen (iterate und Logistik):Diagramm Chaos-Funktion mit Python

def logistic(x, a): 
    return(a*x*(1 - x)) 
def iterate(f, x0, a, steps=1000): 
    """x0: initial value 
     a: parameter to f(x,a)""" 
    x = np.zeros(steps+1) 
    x[0] = x0 
    for k in range(steps): 
     x[k+1] = f(x[k], a) 
    return(x) 
n = 200 # points in a 
a = np.arange(1,4,3/n) 
s = 1000 # steps for each a 
x = iterate(logistic, 100, a, 1000) 
plt(x) 

Aber ich erhalte den folgenden Fehler: Valueerror: ein Array-Element mit einer Sequenz festlegen. Könnte jemand helfen?

EDIT

Dieses das Diagramm I

enter image description here

Antwort

0

Gut erhalten wollen, ist a ein Array von 200 Werten. Es sollte Sie also nicht überraschen, dass die Multiplikation mit Skalaren zu einem Ergebnis mit 200 Werten führt, was zu Schwierigkeiten beim Versuch führt, die Zuweisung vorzunehmen.

+0

Also, was ich versuche, ist ein Diagramm der Trajektorien zu plotten. Für jeden der 200 Werte des Parameters 'a' möchte ich 1000 mal x entsprechend der logistischen Funktion durchlaufen. Extrahiere dann die letzten 900 Werte des iterierten x und zeichne es gegen den Parameter a. Dies sollte für jeden von 1 bis 4 wiederholt werden (200 von ihnen insgesamt). – StudentOIST

+0

Ich aktualisierte meine Frage mit einem Bild des Diagramms, das ich versuchen möchte, um dies klarer zu machen – StudentOIST

Verwandte Themen