Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
talit:python_advanced_problems [2025-10-17 19:51] – [Newton Fraktale] scatalit:python_advanced_problems [2026-03-16 12:50] (aktuell) – [Solving Advanced Problems with Python] sca
Zeile 5: Zeile 5:
    * Verschiedene anspruchsvolle Probleme aus dem **mathematisch-naturwissenschaftlichen Bereich** mit Python lösen.    * Verschiedene anspruchsvolle Probleme aus dem **mathematisch-naturwissenschaftlichen Bereich** mit Python lösen.
    * Mit **Jupyter-Notebooks** arbeiten    * Mit **Jupyter-Notebooks** arbeiten
 +
 +<nodisp 2>
 +
 +++++Änderungsvorschläge 2027|
 +
 +Anfang mit DGL ist etw. harzig und unsexy. Nach hinten verschieben. Auch Problem: Wenn schon im FS 2M macht, haben noch nicht alle DGL behandelt. Doppelpendel würde
 +
 +Alternativ könnt mit Game of Life anfangen. Oder iterativer Integrator. Nachher macht auch Odeint mehr Sinn.
 +
 +Weitere Themen:
 +
 +   * Iteratives Integrierer:
 +     * Riemann Summe, Fläche von versch. Objekten berechnen. z.B. Unter Funktion, Fläche Kreis usw.
 +     * Physikalische Systeme simulieren. Z.B. Collisions, Gravity Sim, ...
 +     * bessere und schlechtere Algorithmen, siehe Zusatzauftrag zu Mathe Calculus Integral in meinem GF Mathe
 +
 +
 +++++
 +
 +</nodisp>
  
 ===== Nützliche Links ===== ===== Nützliche Links =====
Zeile 226: Zeile 246:
 Zum Beispiel hängt der Luftwiderstand von der Geschwindigkeit ab: Je höher die Geschwindigkeit, desto grösser der Luftwiderstand. Wir führen deshalb einen Reibungsterm ein, der *linear* ist in der Geschwindigkeit: Zum Beispiel hängt der Luftwiderstand von der Geschwindigkeit ab: Je höher die Geschwindigkeit, desto grösser der Luftwiderstand. Wir führen deshalb einen Reibungsterm ein, der *linear* ist in der Geschwindigkeit:
 $$F = - k x - c v$$ $$F = - k x - c v$$
 +$$mx'' = - k x - c x'$$
 +$$x'' = - \frac{k}{m} x - \frac{c}{m} x'$$
 Dabei ist $c$ eine Konstante, die uns angibt, wie stark der Luftwiderstand ist. Dabei ist $c$ eine Konstante, die uns angibt, wie stark der Luftwiderstand ist.
  
Zeile 470: Zeile 492:
  
 Im Bild oben sind alle *schwarzen Punkte* diejenigen, die zur Mandelbrot-Menge gehören. Die farbigen gehören nicht dazu. Im Bild oben sind alle *schwarzen Punkte* diejenigen, die zur Mandelbrot-Menge gehören. Die farbigen gehören nicht dazu.
 +
 +**Umgang mit AI:**
 +
 +   * Der **Weg ist das Ziel**!
 +   * Es geht darum, dass du Fraktale wirklich verstehst ...
 +   * ... und diese Programmieren kannst.
 +   * Challenge:
 +     * Verwende keine AI.
 +     * Schalter WLAN aus, verwende nur um Module zu installieren.
  
 **Vorgehen:** **Vorgehen:**
Zeile 478: Zeile 509:
    1. Punkte, die den Schwellenwert nicht erreichen, gelten als Teil der Mandelbrot-Menge (meist schwarz).    1. Punkte, die den Schwellenwert nicht erreichen, gelten als Teil der Mandelbrot-Menge (meist schwarz).
    1. Speichere in einem **Array für jeden Pixelpunkt** also die Anzahl Schritte bis der Schwellenwert erreicht wird resp. $0$ falls der Punkt zur Mandelbrotmenge gehört.    1. Speichere in einem **Array für jeden Pixelpunkt** also die Anzahl Schritte bis der Schwellenwert erreicht wird resp. $0$ falls der Punkt zur Mandelbrotmenge gehört.
-   1. **Visualisiere** die Mandelbrot-Menge mit einer Colormap: Verschiedene Werte im Array werden durch verschiedene Zahlen dargestellt. Tipp: Wenn man die Werte verändert, indem man z.B. das ganze Array mit eine Zahl multipliziert oder eine Funktion auf dieses anwendet, so kann man die Darstellung verändern.+   1. **Visualisiere** die Mandelbrot-Menge mit einer Colormap: Verschiedene Werte im Array werden durch verschiedene Zahlen dargestellt. Tipp: Wenn man die Werte verändert, indem man z.B. das ganze Array mit eine Zahl multipliziert oder eine Funktion auf dieses anwendet, so kann man die Darstellung verändern. Siehe unten für ein Code-Beispiel.
    1. Da diese Berechnung für eine vernünftige Auflösung ziemlich lange geht, sollten die Berechnungen **parallelisiert** werden. Verwende dazu z.B. [[python_advanced#numba]]    1. Da diese Berechnung für eine vernünftige Auflösung ziemlich lange geht, sollten die Berechnungen **parallelisiert** werden. Verwende dazu z.B. [[python_advanced#numba]]
 +   1. (Optional) **Zoom:** Schreibe eine Animation, die immer weiter ins Fraktal hinein zoomt.
 +
 +**Beispiel: Code für Visualisierung**
 +
 +<code python>
 +import numpy as np
 +from PIL import Image
 +import matplotlib.pyplot as plt
 +
 +array_pixels = ... # ist numpy array, Wert für jedes Pixel
 +
 +img_fn = Image.fromarray(array_pixels)
 +
 +cm = "magma" # colormap
 +
 +plt.figure(figsize=(10,10))
 +plt.imshow(img_fn, cmap=cm) 
 +plt.axis("off")
 +plt.show()
 +
 +cmap_hot = plt.get_cmap(cm)
 +norm = plt.Normalize(vmin=array_pixels.min(), vmax=array_pixels.max())
 +rgba = (cmap_hot(norm(array_pixels)) * 255).astype(np.uint8)  # shape (H,W,4)
 +img = Image.fromarray(rgba, mode="RGBA")
 +img.save("file_name.png", format="PNG", compress_level=6)
 +</code>
  
 ==== Newton Fraktale ==== ==== Newton Fraktale ====
  • talit/python_advanced_problems.1760730692.txt.gz
  • Zuletzt geändert: 2025-10-17 19:51
  • von sca