Plot Mandelbrot mit Matplotlib / Pyplot / Numpy / Python

8

Ich bin neu bei Python und lerne, indem ich Pythons "Scientific lecture notes Release 2013.1" Tutorial folge. Bitte helfen Sie mir, dieses Mandelbrot-Problem im folgenden Screenshot zu lösen (S. 71). Bitte geben Sie Schritt-für-Schritt-Befehle mit Erklärungen an, wenn möglich, weil Programmierkonzepte für mich neu sind.

Ссылка

Ich habe versucht, dies wie folgt zu lösen:

%Vor%

Ich habe den folgenden Fehler festgestellt: "TypeError: Bilddaten können nicht in Float konvertiert werden"

Was genau bedeutet dieser Fehler und wie kann er korrigiert werden? Ich finde es schwierig, die Funktion imshow () zu verstehen. Was bedeuten die einzelnen Begriffe innerhalb von imshow ()?

Danke.

    
nilesh 22.02.2013, 12:40
quelle

4 Antworten

5

Der Mandelbrot-Satz ist nicht die Werte von z , die Sie zu zeichnen versuchen, die Ihnen Probleme bereiten, weil sie komplexe Zahlen sind. Die Mandelbrotmenge setzt sich aus den Punkten p der komplexen Ebene zusammen, für die die Rekursionsbeziehung z_n = z_n-1**2 + p begrenzt bleibt. Dies wird auf praktische Weise überprüft, indem das Ergebnis nach einigen Iterationen mit einem bestimmten Schwellenwert verglichen wird. In Ihrem Fall, wenn Sie nach Ihrer for -Schleife die folgenden Zeilen hinzufügen:

%Vor%

und dann plot mask Sie sollten das Set Plot auf dem Bildschirm sehen.

Um die allgemeinen Funktionsweise der Argumente von imshow zu verstehen, lesen Sie am besten die Dokumentation , als hier zu fragen.

    
Jaime 22.02.2013, 13:32
quelle
5

Danke an @Jan und @Jaime. Ich habe es funktioniert wie folgt, dauert aber zu viel Zeit zu berechnen:

%Vor%

    
nilesh 23.02.2013 07:08
quelle
2

Sie erhalten diesen Fehler, weil plt.imshow keine Arrays mit komplexen Zahlen akzeptiert. Sie können den Real- oder Imaginärteil eines Arrays Z als Z.real oder Z.imag adressieren. Also wenn du das reale Teil plotten willst

%Vor%

würde den Job machen.

Die Argumente in 'imshow' definieren die folgenden Dinge.

Wenn z eine N-mal-M-Matrix ist, wird sie als Punktwert in einem regelmäßigen Raster interpretiert. Nach extent geben Sie an, wie sich dieses Gitter im Raum erstreckt ...

    
Jan 22.02.2013 13:09
quelle
2

Sie versuchen, einen komplexen Wert mit imshow zu plotten, weshalb Sie diesen Fehler erhalten, können einen Schwellenwert verwenden, wie andere vorgeschlagen haben, aber Sie könnten auch in Betracht ziehen, np.angle oder np.abs ebenfalls zu verwenden. Sie können die Berechnung von z auch vereinfachen, indem Sie die integrierte reduce -Methode von Python verwenden.

Hatte etwas Spaß mit diesem, aber das zeigt die allgemeine Idee:

%Vor%     
Anthony E 18.04.2015 04:13
quelle