Grafik-Upgrade Stufe 1: elf neue Diagramme
Grafik_Upgrade.md verlangt "37 didaktisch wertvolle Visualisierungen". Es sind
19: Die Abschnitte "Modul 1-4" wiederholen die Grafiken 1-18 unter den Nummern
19-36, nur Grafik 37 ist zusaetzlich. Belegt an den Skriptnamen - 38
Nennungen, 19 verschiedene Dateien, erzeuge_kombinatorik_wand.py steht dreimal
darin. Von den 19 betreffen neun bereits vorhandene Diagramme.
Umgesetzt sind die zehn wirklich neuen plus eine elfte, die aus einem
Sachfehler des Auftrags entstand: Grafik 14 sollte in Abschnitt 12.3 stehen,
nannte aber Zahlen aus Kapitel 17. Beide Stellen haben jetzt ihre eigene
Grafik mit ihren eigenen Zahlen.
Vier Vorgaben des Auftrags wurden bewusst nicht befolgt: PNG bei 300 dpi (das
Buch kennt nur SVG - die 33 verwaisten PNGs waren gerade erst geloescht
worden), Matplotlib-Standardfarben (die Buchpalette steht in 33 Diagrammen),
harte Kapitelnummern im Fliesstext ({ref:sec:...} stattdessen) und die
fehlende Byte-Reproduzierbarkeit.
Der eigentliche Ertrag waren die Selbsttests. Jeder Generator prueft seine
Zahlen gegen das, was im Kapitel steht, und bricht bei Abweichung ab. Vier
haben angeschlagen:
* Kombinatorik-Wand: 25! ergibt 491,5 Mio. Jahre, die Tabelle nennt 490 Mio. -
Rundung auf zwei signifikante Stellen, nicht Fehler des Buchs.
* Laufzeit-Diagramm: Die abgedruckte Prozentspalte laesst sich aus den
abgedruckten Zeiten nicht exakt nachrechnen (0,001/0,008 ergibt 12 %,
gedruckt sind 14 %) - die Zeiten sind gerundet, die Prozente nicht.
* Predict-then-Optimize: geratene Datenaufteilung ergab 197,35 statt 200,95
MSE. Mit TRAINING aus dem Buchprogramm stimmen alle vier Kostenwerte.
* Almgren-Chriss: ein echter Fehler im Buchprogramm.
DER FUND: analytische_loesung() minimiert die eigene Kostenfunktion nicht. Ihr
Pfad kostet 10.860,40 EUR, der DP-Pfad 10.266,24 EUR - ein Gitterverfahren
kann das kontinuierliche Optimum aber nicht unterbieten. periodenkosten()
rechnet das Risiko mit lambda/2, die geschlossene Formel setzt
kappa~^2 = lambda*sigma^2*P0^2/eta ohne dieses Halbe. Mit lambda/2 liefert die
Formel 10.264,85 EUR und denselben Pfad wie die DP, knapp UNTER der
Gitterloesung. Die Grafik zeigt bis zur Entscheidung darueber den DP-Pfad; er
ist der, den das Kapitel abdruckt.
Nachweise: Alle elf Diagramme sind ueber zwei Laeufe byte-identisch. Kein
vorhandenes Diagramm wurde veraendert. Die Lastabwurf-Grafik reproduziert die
Befundtabelle exakt (874.870/2.504.154/28 von 40 gegen 351.356/415.924/0).
Zwei Abbildungen landeten beim automatischen Einfuegen im Codeblock (ihre
Anker standen in abgedruckten Ausgaben) und wurden dahinter verschoben; eine
Pruefung ueber alle elf zeigt null Fehlplatzierungen.
Neu: bilder_04/stil_04.py buendelt Palette, rcParams und speichere().
networkx wurde entgegen der Planung nicht gebraucht - pyproject.toml bleibt
unveraendert. PDF von 781 auf 788 Seiten, 44 Diagramme, 27 Generatoren.
Veroeffentlicht: 25 Dateien.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
509ce021da
commit
0f9c815b86
64 changed files with 52288 additions and 25 deletions
52
PROGRESS.md
52
PROGRESS.md
|
|
@ -2487,6 +2487,58 @@ Gegengeprüft mit einem simulierten Klon: Das Kritik-Verzeichnis fehlt dort voll
|
|||
Historie. Wer einen alten Commit auscheckt, bekommt sie weiterhin. Sie wirklich zu tilgen,
|
||||
verlangte `git filter-repo` und einen erzwungenen Push — dafür ist der Anlass zu gering.
|
||||
|
||||
### ✅ Grafik-Upgrade, Stufe 1: elf neue Diagramme
|
||||
|
||||
`Grafik_Upgrade.md` verlangt „37 didaktisch wertvolle Visualisierungen". **Es sind 19.** Die
|
||||
Abschnitte „Modul 1–4" wiederholen die Grafiken 1–18 unter den Nummern 19–36; nur Grafik 37
|
||||
ist zusätzlich. Belegt an den Skriptnamen: 38 Nennungen, 19 verschiedene Dateien —
|
||||
`erzeuge_kombinatorik_wand.py` steht dreimal darin. Von den 19 betreffen neun bereits
|
||||
vorhandene Diagramme; Grafik 37 (OR-Architektur) existiert sogar zweimal.
|
||||
|
||||
Umgesetzt sind die **zehn wirklich neuen** plus eine elfte, die aus einem Sachfehler des
|
||||
Auftrags entstand: Grafik 14 sollte in Abschnitt 12.3 stehen, nannte aber Zahlen aus
|
||||
Kapitel 17. Beide Stellen haben nun ihre eigene Grafik mit ihren eigenen Zahlen.
|
||||
|
||||
**Vier Vorgaben des Auftrags wurden bewusst nicht befolgt:** PNG bei 300 dpi (das Buch kennt
|
||||
nur SVG — die 33 verwaisten PNGs waren gerade erst gelöscht worden), Matplotlib-Standardfarben
|
||||
(die Buchpalette steht in 33 Diagrammen), harte Kapitelnummern im Fließtext (`{ref:sec:…}`
|
||||
statt dessen) und die fehlende Byte-Reproduzierbarkeit.
|
||||
|
||||
**Der eigentliche Ertrag waren die Selbsttests.** Jeder Generator prüft seine Zahlen gegen
|
||||
das, was im Kapitel steht, und bricht bei Abweichung ab. Vier davon haben angeschlagen:
|
||||
|
||||
* **Kombinatorik-Wand:** 25! ergibt 491,5 Millionen Jahre; die Tabelle nennt 490 Millionen.
|
||||
Kein Fehler des Buchs, sondern Rundung auf zwei signifikante Stellen — mein Formatierer
|
||||
rundete auf volle Millionen.
|
||||
* **Laufzeit-Diagramm:** Die abgedruckte Prozentspalte lässt sich aus den abgedruckten Zeiten
|
||||
*nicht* exakt nachrechnen (0,001 s / 0,008 s ergibt 12 %, gedruckt sind 14 %). Die Zeiten
|
||||
sind auf drei Stellen gerundet, die Prozente stammen aus den ungerundeten Werten. Das Bild
|
||||
zeigt jetzt die gedruckten Prozente.
|
||||
* **Predict-then-Optimize:** Meine geratene Datenaufteilung ergab 197,35 statt 200,95 MSE.
|
||||
Mit `TRAINING` aus dem Buchprogramm stimmen alle vier Kostenwerte auf den Cent.
|
||||
* **Almgren-Chriss — ein echter Fehler im Buchprogramm**, siehe unten.
|
||||
|
||||
**Der Fund: `analytische_loesung()` minimiert die eigene Kostenfunktion nicht.** Ihr Pfad
|
||||
kostet 10 860,40 €, der DP-Pfad 10 266,24 € — und ein Gitterverfahren kann das kontinuierliche
|
||||
Optimum nicht unterbieten. Ursache: `periodenkosten()` rechnet das Risiko mit **λ/2**, die
|
||||
geschlossene Formel setzt $\tilde\kappa^2 = \lambda\sigma^2 P_0^2/\eta$ **ohne** dieses
|
||||
Halbe. Mit λ/2 liefert die Formel 10 264,85 € und praktisch denselben Pfad wie die DP — knapp
|
||||
*unter* der Gitterlösung, wie es sein muss. Die Grafik zeigt bis zur Entscheidung darüber den
|
||||
DP-Pfad; er ist der, den das Kapitel abdruckt.
|
||||
|
||||
**Nachweise:** Alle elf Diagramme sind über zwei Läufe byte-identisch. Kein vorhandenes
|
||||
Diagramm wurde verändert. Die Zahlen decken sich mit dem Buch, teils bis auf den Cent — die
|
||||
Lastabwurf-Grafik reproduziert die Befundtabelle exakt (874 870 € / 2 504 154 € / 28 von 40
|
||||
gegen 351 356 € / 415 924 € / 0 von 40).
|
||||
|
||||
**Zwei Abbildungen landeten beim automatischen Einfügen im Codeblock** (ihre Anker standen in
|
||||
abgedruckten Ausgaben) und wurden dahinter verschoben. Eine Prüfung über alle elf zeigt jetzt
|
||||
null Fehlplatzierungen.
|
||||
|
||||
Neu: `bilder_04/stil_04.py` bündelt Palette, `rcParams` und `speichere()`. `networkx` wurde
|
||||
entgegen der Planung **nicht** gebraucht — `pyproject.toml` bleibt unverändert.
|
||||
PDF von 781 auf **788 Seiten**, 44 Diagramme, 27 Generatoren.
|
||||
|
||||
---
|
||||
|
||||
## 8. Commit-Historie des V04-Strangs
|
||||
|
|
|
|||
Loading…
Reference in a new issue