Folien Verbesserungsvorschläge

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Folien Verbesserungsvorschläge
Vielleicht könnte man ja hier Fehler- und Verbesserungsvorschläge für die Vorlesungsfolien sammeln…

Ich fange mal an:
01_pythonintro.pdf:

  • in Folie 35 müsste a [0, 1, 4, 9, 16] sein (9 ist auch in der Liste)
1 „Gefällt mir“

Super Idee! Wir nehmen Verbesserungsvorschläge dankbar entgegen.

Der Fehler in Folie 35 ist bereits behoben.


Und in pythonintro2.pdf auf Seite 35 ein Rechtschreibfehler :wink: :

  • Die init Funktion wir implizit aufgerufen
  • Die init Funktion wird implizit aufgerufen

Ist behoben. Auf Folie 35 liegt anscheinend ein Fluch…


pythonintro2.pdf, Seite 51 sollte glaub ich nicht class random, sonder class Random heißen.


02_direkteverfahren-teil1-v1.pdf:

  • Folie 12, x_n Summenformel. Unter der Summe sollte x_j und nicht c_j stehen.
  • Folie 13, x_1 Summenformel. Unter der Summe sollte x_j und nicht c_j stehen.

Ist beide Male im Code aber richtig :wink:


04_DirekteVerfahren-Teil3 Folie 28 und 29:

kann es sein, dass in den Matrizen die m und ns vertauscht sind?


13_SVD-v1: Hier scheinen auf Folie 40 die Ergebnisse zu fehlen (zumindest in meinem PDF-Viewer steht z.B. rechts von “Singulärwerte:” einfach nichts mehr) :slight_smile:


06_matrizenpraktisches-v1.pdf, Folie 27
Bei a_ij fehlt beim sonst-Fall eine 0.

1 „Gefällt mir“

13_SVD-v1.pdf, Folie 23
LR-Zerlegung mit Pivot, “Eigentlich müsste da die Permutationsmatrix stehen” (aus Video)

13_SVD-v1.pdf, Folie 70
[…] B_0 und sind B_0 B_1 ähnlich!

1 „Gefällt mir“

15_iterativeverfahrenvektor-v3.pdf, Folie 27
[…] für für […]

1 „Gefällt mir“

15_IterativeVerfahrenVektor-v3.pdf, Folie 57
“In Python wird nie implizit kopiert”

Doch, gibt einige Operationen, die nicht in-place geschehen…
Würde eher sagen, dass das numpy-typisches Verhalten ist!
Oder aber ich habe die Aussage nicht richtig verstanden…

>>> list_ = [5, 2, 3, 1, 4]
>>> sorted(list_)
[1, 2, 3, 4, 5]
>>> list_
[5, 2, 3, 1, 4]
>>> str_ = "hello world"
>>> str_
'hello world'
>>> str_.replace('hello', 'bye')
'bye world'
>>> str_
'hello world'

bzw. Beispiel aus den Folien:

>>> A = np.array([2,3,4])
>>> B = A[:]
>>> C = B[1:2]
>>> C[0] = 5
>>> print(A)
 array([2,5,4])

…funktioniert auf Standard-Python-Listen anders:

>>> A = list([2,3,4])
>>> B = A[:]
>>> C = B[1:2]
>>> C[0] = 5
>>> print(A)
[2, 3, 4]

@nakami Ich versuche mal, den Sachverhalt etwas zu erleuchten.

Mit einer impliziten Kopie meine ich Kopien, die die Sprache automatisch erzeugt, z.B. bei Funktionsaufrufen oder Zuweisungen. Python tut so etwas nicht. Wenn ich z.B. in C++ schreibe

MyObj a();
MyObj b = a;

Dann wird der Zuweisungsoperator von MyObj aufgerufen und kopiert den Inhalt von a nach b. b ist aber ein anderes Objekt als a. Wenn ich stattdessen in Python schreibe

a = MyObj()
b = a

Dann wird überhaupt nichts kopiert - a und b zeigen auf das gleiche Objekt. (Mit Gleichheit meine ich immer, dass wenn ich a verändere, dann ändert sich auch b. Programmiert man rein funktional, bemerkt man den Unterschied zwischen Referenzen und Kopien überhaupt nicht).

Nun aber zu deinen (sehr guten) Beispielen:

Die Funktion sorted() zählt zwar zu den „Built-in“ Funktionen von Python, hätte aber genauso gut als Bibliotheksfunktion implementiert werden können. Tatsächlich ist die Implementierung von sorted() sinngemäß (Details siehe CPython/Python/bltinmodule.c) folgendermaßen:

def sorted(iterable, key=None, reverse=False):
    tmp = list(iterable) # Kopie anlegen
    return sort(tmp,key,reverse) # in-place sortieren

Hier wird also eigentlich explizit kopiert.

Nun noch zu Listen vs. NumPy Arrays. Python evaluiert Aufrufe der Form

value = a[key]
b[key] = value

als

value = a.__getitem__(key)
b.__setitem__(key, value)

Was in dem Methoden getitem und setitem passiert ist dem Programmierer der Bibliothek selbst überlassen. Bei Listen wird bei einem Aufruf wie a[:] eine neue Liste erzeugt, bei Arrays wird ein sogenannter „View“ auf existierende Daten zurückgegeben. Grund dafür sind unterschiedliche Tradeoffs — Listen sind typischerweise klein und zahlreich, Arrays sind typischerweise so groß, dass man versucht Kopien zu vermeiden. Das Kopieren von Listen ist (im Sinne der Aussage auf den Folien) aber nicht implizit, da man ja bewusst getitem aufruft.

Ich hoffe ich konnte damit Klarheit schaffen.

1 „Gefällt mir“

Ah ok, danke für die ausführliche Anwort.
Die Aussage war also mehr mit Bedacht auf die Implementierung und nicht die Handhabung von Python abgezielt…


16_nichtlineareoptimierung-v1.pdf, Folie 81
Falls das Verfahren konvergiert dann ist der Grenzwert
(hoffentlich ein) ein lokales Minimum.


Ich wollte mich mal an dieser Stelle über den Foliensatz 16_NichtlineareOptimierung-v1.pdf beschweren. Der ist meiner Meinung nach sowohl von der Formatierung her als auch vom Inhalt äußerst chaotisch. Ich konnte schon in der Vorlesung (die ja im Wesentlichen PowerPoint Karaoke war) nicht folgen und jetzt beim Lernen auch nicht. Der kam ja leider erst nach der Evaluierung raus…

1 „Gefällt mir“

11_interpolation_nd-v1.pdf, Folie 16: es sollte {(x_i, y_j) | 1 <= i <= n - 1, 1 <= j <= m - 1} lauten, sonst stimmen die Polynomgrade nicht mehr, die unten auf der Folie erwähnt sind.


13_svd-v1.pdf, Folie 66: Die Links sind nicht klickbar. (Habe schon woanders nicht klickbaren blau farbigen Text gesehen, ist wohl beim Import in Keynote passiert?)


13_SVD-v1.pdf, Folien 16 und 17: Die “Ergebnisse” der einzelnen Normen fehlen.