Ein Repository für den Kurs Lineare Algebra 1, WiSe 2020–21.
Go to file
2020-12-17 11:06:36 +01:00
code master > master: python 2020-12-01 21:40:57 +01:00
contacts master > master: minor 2020-11-20 21:49:28 +01:00
docs master > master: RSFehler 2020-12-16 10:22:41 +01:00
notes master > master: Woche 8 + Krizelei 2020-12-17 11:06:36 +01:00
protocol master > master: Woche 8 + Krizelei 2020-12-17 11:06:36 +01:00
.gitignore master > master: umstrukturierung 2020-11-21 23:16:41 +01:00
README.md master > master: Protokoll W7 2020-12-09 14:44:46 +01:00

Repository für Lineare Algebra / Übungsgruppe

In diesem Repository werden Ressourcen hochgeladen, zum Beispiel Skripte oder Dokumente für mathematische Argumente. Gründe hierfür:

  • um den Umstand zu vermeiden, per Email, Moodle, BBB, usw. Dateien zu schicken.
  • technische Kritzelei irgendwo festzuhalten.

Dieses Repo enthält

  1. Code/Codeschnippsel: siehe /code.
  2. Dokument inklusive meiner Lösungen zu den Übungsblättern (die nach dem Abgabetermin hochgeladen werden): siehe /docs und /docs/loesungen.pdf.
  3. Notizen/Kritzelei für mathematische Argumente, Berechnungen, usw.: siehe /notes.
  4. Protokolle von den Übungsgruppen: siehe /protocol.

Mathematisches Denken

Mathematik ist eine präzise aber abstrakte Kunst. Pflegen muss man zwei den Umgang mit zwei Aspekten:

  • Anschauung,
  • Formalismen.

Es gibt ein Zwischenspiel zwischen beiden dieser Aspekte.

Anschauung

Stichwörte: Konzepte (en: notion), Vorstellung, Visualisierung, Intuition, ...

Mit Anschauung meine ich nicht bloß Visualisierung, sondern vielmehr das intuitive Begreifen von Mathematik. Mit Intuition nun meine ich aber nicht »common sense«, sondern eine Fähigkeit, die man antrainieren muss, um abstrakte Sachverhalte zu visualisieren, internalisieren, und um sich mit den mathematischen »Gegenständen« vertraut zu machen.

Formalismen

Stichwörte: Symbole, Notation, Axiome, Rahmen, Aussagen, Beweise, Argumentation, ...

Der Begriff Formalismen geht eigentlich auf die Grundlagen der Mathematik ab der Mitte des 19. Jh zurück. Ab dieser Zeit fingen Mathematiker an, nicht mehr lose zu berechnen, sondern Erkenntnisse in formalen Systemen aufzuschreiben. Im Grunde (und im Falle von Church, Turing, Kleene, usw. buchstäblich) legten sie die Bausteine für das moderne Konzept von Berechenbarkeit, Algorithmen, und Rechnern. Es stellt sich heraus (siehe insbesondere das Löwenheim-Skolem-Tarski Paradoxon), dass mathematische Aussagen komplett unabhängig von Anschauungen ausgelegt und bewiesen werden können. Mit anderen Worten, man kann einen seelenlosen Rechner mit mathematischen Aufgaben beauftragen, und dieser ohne jegliche Vorstellungskraft wäre in der Lage richtige Berechnungen durchzuführen und Schlüsse zu ziehen.

Kurz gesagt, die formalen Aspekte bestehen aus technischen Symbolen, mithilfe derer wir Aussagen schreiben, und der Struktur von Argumenten.

Die Rolle von beiden Aspekten

Einerseits sind formale Mitteln notwendig, um Aussagen klar und eindeutig zu formulieren, und notwendig und hinreichend, um diese zu beweisen. Andererseits benötigen wir als denkende Menschen aber auch Anschauungen,

  1. um formale Aussagen deuten zu können und deren Informationsgehalt zu begreifen,
  2. damit einem Ideen und Ansätze einfallen, um Behauptungen zu beweisen.

Wir brauchen also die formale Seite, um präzis zu kommunizieren und richtig zu argumentieren, und die anschauliche Seite, um uns überhaupt orientieren zu können.

Wie trainiere ich das?

Es gibt einige Möglichkeiten für verschiedene Lerntypen:

  • Selbstlernen: sich alleine mit dem Skript auseinandersetzen. Am besten ein paar Stunden in einem ruhigen Ort wie einem Café, der Bibliothek, zu Hause. Gründlich die Definitionen und Resultate durchgehen.
  • Durch Gruppenarbeit.
  • Austausch von konkreten Fragen in eurer Chat-Gruppe oder in online Foren wie stackexchange, math.hashcode, usw..
  • In der Übungsgruppe. Bei wichtigen Fragen, die wir gemeinsam bearbeiten, werde ich versuchen, diese in dem Repository festzuhalten.

Software für Text/Notizen

Unter Mathematikern, Wissenschaftlern, (womöglich auch Ingenieuren), und Informatikern sind folgende Optionen sehr beliebt:

  • LaTeX
  • Markdown, sowie die verschiedenen Kombinationen mit anderer Software:
    • Pandocs (kombiniert so ziemlich alles!)
    • Rmd (R Markdown)
    • pynb/JyPyter (Python notebooks)
    • online Editors (siehe z. B. stackedit).

Am Rechner schreibe ich alles meistens in Markdown oder LaTeX-Dateien. Wenn ich wirklich schnell schreiben will, und mir die Formattierung egal ist, benutze ich sogar Notepad / TextEditor / rtf. Freunde benutzen Apps, in denen man zeichnen kann. Das ist auch sehr nützlich.

Software für Berechnungen und Anschauungen

Es gibt einige Hilfsmittel, derer man sich bedienen kann, um entweder Konzepte zu visualisieren oder zu berechnen. Diese Möglichkeiten sind keineswegs verpflichtend!

Geogebra

Diese App ist ein lustiges aber sehr nützliches Programm, um schnell im 2-d Raum (\mathbb{R}^{2}) oder 3-d Raum (\mathbb{R}^{3}) geometrische Objekte und Konzepte zu realisieren. Man kann GeoGebra hier herunterladen.

Vorteile: man braucht hier null Programmierkenntnisse. Mit der App kann man ohne Weiteres direkt loslegen.

Nachteile: Man sollte es aber nicht zu weit betreiben, denn diese App wird schnell überfordert. Es scheint, dass man nicht mehr Dateien lokal speichern kann (?!). Anscheinend wollen die „klugen“ Betreiber dieser App einen rein online Gebrauch erzwingen 🤦.

R

Für R braucht man

  • Den R Compiler (siehe z. B. hier)
  • (optional) einen Editor wie RStudio (siehe hier).

Man kann auch ohne Installation R-Skripte ausführen: einfach nach »R compiler online« googeln (oder z. B. https://repl.it -> <>Start coding —> Sprache auswählen).

Vorteile: man braucht hier nur sehr minimale Programmierkenntnisse. Diese Sprache wurde für Naturwissenschaftler und Statistiker entwickelt, und Menschen rund um den Globus entwickeln immer neue Packages für alles Mögliche in dieser Sprache. Es gibt eine große Community und damit kann man für alle Probleme Hilfe finden. Visualisierung mag zwar umständlicher als mit Geogebra sein, aber ist nicht so schwer.

Nachteile: Man sollte im Laufe seines Studiums R nicht ausschließlich bedienen, denn diese Sprache fördert einen richtig schlechten Programmierstil. Für die Logiker und Informatiker unter euch, wird es bspw. nerven, dass in R-Arrays (sog. lists/vectors) Indexes mit 1 anfangen. Für Programmierer, wird stören, dass R keine saubere Implementierung von Klassen, (lokalen) Imports, usw. anbietet (diese Dinge existieren, aber sind sehr umständlich).

Python

„Pfft! Python ist nichts anderes als glorifiziertes Bash!“ — ein ehem. Arbeitskollege

Von diesem Zitat abgesehen ich persönlich liebe diese Sprache. Man kann den Python-Compiler hier herunterladen. (ACHTUNG! Version 3.9.0 scheint mit C-libraries Probleme zu haben. Ich persönlich hatte Schwierigkeiten gewisse mathe-Module dafür zu installieren. Ich würde deshalb erstmals v3.8.xx empfehlen.)

Man kann auch ohne Installation python Skripte ausführen: einfach nach »python compiler online« googeln (oder z. B. https://repl.it -> <>Start coding —> Sprache auswählen).

Vorteile: Da man kein Memory-Allocation o. Ä., oder Typisierung pflegen muss, kann man mit grundlegenden Programmierkenntnissen sehr leicht in Python einsteigen. Es gibt eine immense Community für Python und man kann sehr schnell online durch Foren u. Ä. Hilfe holen. Die Python-Dokumentation ist sehr ausführlich und alles ist gut versioniert. Möglicherweise werden einige von euch etwas im Bereich Data Science machen. Dafür ist python (aktuell) mit das gängigste Tool. Generell (nicht nur wegen DS) lohnt es sich, Python (samt Modulen wie numpy/numpy.linalg, pandas, usw.) zu können.

Nachteile: Python ist nicht sonderlich schnell, aber bzgl. Geschwindigkeit definitiv besser als Geogebra. Für Programmierer gibts an Python viel Grund zu meckern (z. B. keine echten privat/public/protected access modifiers, unsauberer Umgang mit Typing.).

Für Visualisierungen von Vektoren wäre Python nicht die beste Option. Für unseren Kurs würde ich dies nur für die Ausführung von Algorithmen Empfehlen.