Gekoppeltes Kartengitter in Python

8

Ich versuche das Bifurkationsdiagramm für das folgende eindimensionale räumlich ausgedehnte System mit Randbedingungen zu zeichnen

%Vor%

Ich stehe vor dem Problem, die gewünschte Ausgangszahl zu erhalten, weil ich eine Anzahl von Transienten verwende. Kann mir jemand helfen, indem er meinen Code überprüft? Welche Werte von nTransients sollte ich wählen oder wie viele Transienten sollte ich ignorieren?

Mein Python-Code lautet wie folgt:

%Vor%

Kann jemand mir auch sagen, dass die Figur, die von pylab angezeigt wird, am Ende entweder Punkte oder Linien als Markierung hat, wenn es Linien ist, dann wie man eine Zeichnung mit Punkten erhält.

Dies ist mein Ausgangsbild als Referenz, nachdem Pixel verwendet wurden:

    
ADK 18.11.2016, 05:36
quelle

1 Antwort

6

Es ist immer noch nicht klar, was genau deine gewünschte Ausgabe ist, aber ich vermute, du zielst auf etwas, das wie dieses Bild aussieht von Wikipedia :

Ausgehend von dieser Annahme habe ich mein Bestes gegeben, aber ich vermute, Ihre Gleichungen (mit den Randbedingungen und so weiter) geben Ihnen etwas, das einfach nicht so hübsch aussieht. Hier ist mein Ergebnis:

Diese Handlung an sich mag vielleicht nicht die beste Sache aller Zeiten sein, aber wenn Sie hineinzoomen, können Sie wirklich ein schönes Detail sehen (das ist genau von der Mitte der Handlung, wo die zwei Arme der Gabelung herunterkommen , treffe dich und dann wieder weg):

Beachten Sie, dass ich horizontale Linien verwendet habe, mit Alpha = 0.1 (ursprünglich verwendeten Sie feste, vertikale Linien, weshalb das Ergebnis nicht gut aussah).

Der Code!

Ich habe Ihr Programm ein wenig modifiziert, um es vektorisiert zu machen: Ich habe die for-Schleife über p entfernt, wodurch die ganze Sache fast sofort ausgeführt wurde. Dadurch konnte ich eine viel dichtere Stichprobe für p verwenden und horizontale Linien zeichnen.

%Vor%

Ich möchte nicht versuchen, dir das ganze Programm zu erklären: Ich habe ein paar standardmäßige, numpige Tricks benutzt, einschließlich Broadcasting , aber ansonsten habe ich nicht viel geändert. Ich habe Ihre Funktion LM überhaupt nicht geändert.

Bitte zögern Sie nicht, mich in den Kommentaren zu fragen, wenn Sie irgendwelche Fragen haben! Ich bin glücklich, Details zu erklären, die Sie erklären möchten.

Eine Anmerkung zu Transienten und Iterationen: Hoffentlich können Sie jetzt, da das Programm viel schneller läuft, versuchen, selbst mit diesen Elementen zu spielen. Die Anzahl der Transienten schien mir zu entscheiden, wie lange die Handlung "deterministisch" blieb. Die Anzahl der Iterationen erhöht nur die Dichte der Handlungslinien, so dass es für mich keinen Sinn ergibt, dies über einen Punkt hinaus zu erhöhen.

Ich habe versucht, die Anzahl der Transienten bis auf 10.000 zu erhöhen. Hier ist mein Ergebnis aus diesem Experiment für Ihre Referenz:

    
Praveen 25.11.2016 07:28
quelle