146 lines
8.1 KiB
Markdown
146 lines
8.1 KiB
Markdown
# 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](./code).
|
|
2. Dokument inklusive meiner Lösungen zu den Übungsblättern (die nach dem Abgabetermin hochgeladen werden): siehe [/docs](./docs) und [/docs/loesungen.pdf](./docs/loesungen.pdf).
|
|
3. Notizen/Kritzelei für mathematische Argumente, Berechnungen, usw.: siehe [/notes](./notes).
|
|
4. Protokolle von den Übungsgruppen: siehe [/protocol](./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](https://stackedit.io/editor)).
|
|
|
|
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](https://www.geogebra.org/download?lang=de) 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](https://cran.rstudio.com))
|
|
- (optional) einen Editor wie **RStudio** (siehe [hier](https://rstudio.com/products/rstudio/download/#download)).
|
|
|
|
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](https://www.python.org/downloads/) 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.
|