Grüß Gott zusammen. Ich will nochmal an dem Beispiel des QR-Verfahrens ein bisschen was erläutern,
was wir für angemessene Programmiertechniken halten und das sollten Sie sich auch zu Herzen nehmen,
wenn Sie wollen, dass wir das, was Sie also in den Testaten abliefern, dann auch für sinnvoll erachten.
Man kann sich ja fragen, warum überhaupt Matlab? Matlab war damals in guten alten Zeiten,
wo es noch kein Matlab gab, hat man an einer ordentlichen Programmiersprache programmiert.
Also ich habe angefangen mit Algold 60, dann habe ich 68 gelernt, Simula, Fortran, Lisp,
was auch immer, so 10, 15 Sprachen vielleicht im Laufe der Zeit. Wenn man mal eine kann,
kann man die anderen auch relativ schnell lernen. All diese Sprachen haben eben,
sind eben sozusagen auf einem reellen Datentyp passiert und erwarten, dass man selbst ein
Datenmanagement vornimmt. Das ist heutzutage immer noch so in C oder C++ und da bietet
eben Matlab viele Möglichkeiten, die einen den Einstieg da erleichtert. Wenn man das aber sozusagen
blind anwendet, das haben wir auch schon gesehen, kann man durchaus auch ineffiziente Codes erhalten.
Das heißt also, Herr Frank hat Ihnen beigebracht, dass Sie Ihre Felder belegen sollten,
am Anfang, damit im Rahmen des Interpretervorgangs wirklich da nicht Speicherplatz nachgeladen
werden muss. Und ähnlich ist die Situation auch mit dem Nutzen der Vektorfunktion oder
der Vektorfähigkeit von Matlab. Natürlich könnten wir sagen, alles was wir hier machen,
ist doch für die Cuts. Wir machen A-Begslesh-B und damit ist die Sache erledigt. Was vom Standpunkt
einer blinden Anwendung durchaus auch sinnvoll ist und Matlab ist natürlich auch ein sehr,
sehr gutes Tool. Wir haben aber andererseits auch gesehen, dass man auch dieses wunderbare Tool
natürlich auch mit schwierigen Problemen an die Wand fahren kann. Das spricht nicht gegen Matlab,
das zeigt eben nur, dass man ein bisschen vorsichtig sein sollte, für Software-Tools einfach so anzuwenden.
Was wir also jetzt hier machen, ist, indem wir so numerik einüben, indem wir Algorithmen
programmieren, wir machen so einen Zwischenweg. Wir programmieren Matlab letztlich wie eine
höhere Programmiersprache und nutzen ein Stück weit so, wo das sinnvoll ist und gegeben ist,
die Vektorfunktionen von Matlab aus. Das sollte der Mittelweg sein, an dem Sie sich orientieren.
Das eine Extrem ist eben, man vergisst die gesamten Vektorfunktionen und man schreibt
nur reelle Operationen, das ist im Prinzip nicht falsch, nutzt aber die Matlab-Funktionen
nicht aus. A-Begslesh-B wäre eben nicht der richtige Zugang und man darf es auch nicht
übertreiben. Und zwar übertreiben in dem Sinne, dass man versucht einen möglichst
übersichtlichen Code zu bekommen unter zulasten der Effizienz. Jetzt was heißt das konkret
für die QR-Zerlegung oder vielleicht auch schon für die LR-Zerlegung? Wir haben ja
gesehen, QR-Zerlegung heißt einfach nur, oder so wie wir es besprochen haben, in Form
des Haushalterverfahrens heißt nur, mit Spiegelungsmatrizen zu multiplizieren, mit Haushaltermatrizen
zu multiplizieren. Warum bauen wir diese Haushaltermatrizen als Identität minus zweimal
dyadisches Produkt des betreffenden Vektors auf? Und dann multiplizieren wir einfach mit
dieser Matrix durch. Das kann man machen, ist ein extrem übersichtlicher Code, wird
aber für marginale Dimensionen schon sehr ineffizient. Können Sie mal ausprobieren.
Das gilt generell jetzt für alles weitere. Wir machen ja auch keine LR-Zerlegung dadurch,
dass wir explizit mit den Frobenius-Matrizen multiplizieren. Das ist eben ein theoretischer
Hilfsmittel, die wir aber dann effizient umsetzen müssen.
Wir haben jetzt hier nochmal sozusagen nochmal in Vorbereitung der neuen Programmieraufgabe,
wo es jetzt wirklich dann etwas gezielter ums QR-Verfahren geht, auch in einer anderen
Variante, wo dann die Haushaltertransformationen, die Spiegelungen durch Drehungen, durch Givens-Rotationen
ausgetauscht werden, haben wir nochmal eine Variante aufgeschrieben. Ist nicht absolut
perfekt, aber es ist schon ein bisschen übersichtlicher als die, die ich Ihnen das letzte Mal gezeigt
habe, in dem da, wo es sind, das ist sozusagen der alte Code, den wir uns das letzte Mal
angeschaut haben, nur jetzt etwas mit Ausnutzung von Vektorfunktionen geschrieben. Ansonsten
ist die Struktur völlig identisch geblieben. Und es ist jetzt sozusagen die Grundform
des QR-Verfahrens in dem Sinne, dass jetzt nicht die QR-Zerlegung aufgebaut wird, sondern
sozusagen ein gegebenes Gleichungssystem AX gleich B mit dem QR-Verfahren gelöst wird.
Presenters
Zugänglich über
Offener Zugang
Dauer
01:30:00 Min
Aufnahmedatum
2012-11-14
Hochgeladen am
2013-08-08 01:00:12
Sprache
de-DE