main > main: README aktualisiert
This commit is contained in:
parent
baef622fc5
commit
75931f67e2
191
README.md
191
README.md
@ -9,10 +9,10 @@ Gründe hierfür:
|
|||||||
|
|
||||||
Dieses Repo enthält
|
Dieses Repo enthält
|
||||||
|
|
||||||
1. Code/Codeschnippsel: siehe [/code](./code).
|
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).
|
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).
|
3. Notizen/Kritzelei für mathematische Argumente, Berechnungen, usw.: siehe [notes](./notes).
|
||||||
4. Protokolle von den Übungsgruppen: siehe [/protocol](./protocol).
|
4. Protokolle von den Übungsgruppen: siehe [protocol](./protocol).
|
||||||
|
|
||||||
Im Rest dieses Dokuments werden _Einzelheiten zum Kurs_, das Thema _mathematisches Denken_, und Software-Tipps diskutiert.
|
Im Rest dieses Dokuments werden _Einzelheiten zum Kurs_, das Thema _mathematisches Denken_, und Software-Tipps diskutiert.
|
||||||
|
|
||||||
@ -50,25 +50,15 @@ Klausurzulassung, wenn
|
|||||||
|
|
||||||
### Klausur ###
|
### Klausur ###
|
||||||
|
|
||||||
Allgemeine Infos:
|
Siehe bitte zuerst das **Hinweise**-Blatt auf dem Kurs-Moodle im Beitrag über die Klausurvorbereitung.
|
||||||
|
Dies enthält Hinweise über relevante Inhalte sowie nützliche Aufgaben zur Wiederholung.
|
||||||
|
|
||||||
- am **12.02.2021** zw. **12:00–14:00**.
|
**ANMERKUNG:** Folgende Punkte sind _nur_ als weitere Hinweise zu verstehen.
|
||||||
- Geplante Schreibdauer: **90 min** (30min Pufferzeit eingebaut, damit man Dateien herunter und hochladen kann).
|
|
||||||
- 6 Aufgaben
|
|
||||||
|
|
||||||
Im folgenden Abschnitt werden empfohlenes Material zur Vorbereitung stichpunktartig aufgelist.
|
|
||||||
|
|
||||||
**ANMERKUNG 1:** Siehe bitte zuerst das **Hinweise** Blatt auf dem Kurs-Moodle im Beitrag von Professor Sinn über die Klausurvorbereitung.
|
|
||||||
Das enthält Hinweise über relevanten Inhalt sowie nützliche Aufgaben zur Wiederholung.
|
|
||||||
|
|
||||||
**ANMERKUNG 2:** Dies ist als Hinweis zu verstehen.
|
|
||||||
Generell für eine Klausur muss man den ganzen in der VL behandelten Stoff gemeistert haben.
|
Generell für eine Klausur muss man den ganzen in der VL behandelten Stoff gemeistert haben.
|
||||||
Diese sind als minimalistische Listen von Aspekten gedacht,
|
Folgendes listet nur minimalistisch Aspekte auf,
|
||||||
die auf jeden Fall für die Klausur wichtig sind.
|
die auf jeden Fall für die Klausur wichtig sind.
|
||||||
Sie sind nicht unbedingt vollständig.
|
Sie sind nicht unbedingt vollständig.
|
||||||
|
|
||||||
#### Themen / VL-Materialien ####
|
|
||||||
|
|
||||||
- Kapitel 1: Müsst ihr allgemein kennen.
|
- Kapitel 1: Müsst ihr allgemein kennen.
|
||||||
- Konkrete Dinge wie Strecken, Ebenen, usw. kommen eher in Geometrie und hier nicht vor.
|
- Konkrete Dinge wie Strecken, Ebenen, usw. kommen eher in Geometrie und hier nicht vor.
|
||||||
- Eliminationsverfahren und Lösbarkeit von LGS:
|
- Eliminationsverfahren und Lösbarkeit von LGS:
|
||||||
@ -145,13 +135,6 @@ Sie sind nicht unbedingt vollständig.
|
|||||||
- Kapitel 6 | 6.5+: nicht behandelt.
|
- Kapitel 6 | 6.5+: nicht behandelt.
|
||||||
- Kapitel 7: nicht behandelt
|
- Kapitel 7: nicht behandelt
|
||||||
|
|
||||||
#### Was _anscheindend_ nicht in der Klausur vorkommt ####
|
|
||||||
|
|
||||||
- _Räume_ von linearen Operatoren, also die Vektorräume der Form L(V, W). (Aber ihr müsst natürlich mit linearen Operatoren umgehen können!)
|
|
||||||
- Basiswechseln
|
|
||||||
- Koordinatenwecheln
|
|
||||||
- Inverse von Matrizen explizit berechnen.
|
|
||||||
|
|
||||||
## §2. Mathematisches Denken ##
|
## §2. Mathematisches Denken ##
|
||||||
|
|
||||||
Mathematik ist eine präzise aber abstrakte Kunst.
|
Mathematik ist eine präzise aber abstrakte Kunst.
|
||||||
@ -216,23 +199,104 @@ Gründlich die Definitionen und Resultate durchgehen.
|
|||||||
|
|
||||||
Unter Mathematikern, Wissenschaftlern, (womöglich auch Ingenieuren), und Informatikern sind folgende Optionen sehr beliebt:
|
Unter Mathematikern, Wissenschaftlern, (womöglich auch Ingenieuren), und Informatikern sind folgende Optionen sehr beliebt:
|
||||||
|
|
||||||
|
- Markdown (+ rendering software od. Extensions auf Editoren wie VSCode)
|
||||||
|
- sehr einfachen "plain" Texteditoren
|
||||||
- LaTeX
|
- LaTeX
|
||||||
- Markdown, sowie die verschiedenen Kombinationen mit anderer Software:
|
- Zeichenapps wie GoodNotes
|
||||||
- Pandocs (kombiniert so ziemlich alles!)
|
- die guten alten Stift + Zettel/Heft ... Vorteil: man muss nicht aufladen ; )
|
||||||
- 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.
|
Es lohnt sich, einen guten Allzweck-Editor wie [VSCode](https://code.visualstudio.com/download)
|
||||||
Wenn ich wirklich schnell schreiben will, und mir die Formattierung egal ist,
|
zu installieren.
|
||||||
benutze ich sogar Notepad / TextEditor / rtf.
|
Mit so etwas kann man etliche gratis Extensions finden,
|
||||||
Freunde benutzen Apps, in denen man zeichnen kann. Das ist auch sehr nützlich.
|
die bspw. Syntax-Highlighting, Rendering, Code-Schnippsel für LaTeX, md, usw. bieten.
|
||||||
|
|
||||||
## Software zwecks Berechnungen und Anschauungen ##
|
## Software zwecks Berechnungen und Anschauungen ##
|
||||||
|
|
||||||
Es gibt einige Hilfsmittel, derer man sich bedienen kann, um entweder Konzepte zu visualisieren oder zu berechnen.
|
Es gibt einige Hilfsmittel, derer man sich bedienen kann, um entweder Konzepte zu visualisieren oder zu berechnen.
|
||||||
**Diese Möglichkeiten sind keineswegs verpflichtend!**
|
**Diese Möglichkeiten sind keineswegs verpflichtend!**
|
||||||
|
|
||||||
|
### Python ###
|
||||||
|
|
||||||
|
[Hier](https://www.python.org/downloads) kann man den Compiler herunterladen.
|
||||||
|
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.
|
||||||
|
|
||||||
|
**Anmerkung:** Um mit komplexen Zahlen in Python umzugehen, muss man `j` statt `i` für die imaginäre Zahl verwenden.
|
||||||
|
Diese muss stets mit einem Koeffizienten versehen werden,
|
||||||
|
d. h.
|
||||||
|
|
||||||
|
```py
|
||||||
|
x = 5 + 8j;
|
||||||
|
x = 5 + 8*1j;
|
||||||
|
x = 5 + 1j;
|
||||||
|
x = 5 - 1j;
|
||||||
|
x = 5 + 0j;
|
||||||
|
x = 5;
|
||||||
|
```
|
||||||
|
|
||||||
|
usw. sind erlaubt, aber
|
||||||
|
|
||||||
|
```py
|
||||||
|
x = 5 + 8*j;
|
||||||
|
x = 5 + j;
|
||||||
|
x = 5 - j;
|
||||||
|
```
|
||||||
|
|
||||||
|
usw. nicht, weil hier logischerweise `j` als Variable interpretiert wird.
|
||||||
|
|
||||||
|
So kann man mit Matrizen umgehen (am besten hierfür ein Skript anlegen und dieses über eine Terminal ausführen):
|
||||||
|
|
||||||
|
```py
|
||||||
|
import math
|
||||||
|
import numpy as np
|
||||||
|
import numpy.linalg as la
|
||||||
|
|
||||||
|
A = np.asarray([
|
||||||
|
[1, 2, 3, 7],
|
||||||
|
[0.5, 0, 0, 2 + 1j]
|
||||||
|
[0, 0, 0, math.sqrt(2)]
|
||||||
|
])
|
||||||
|
|
||||||
|
x = np.asarray([10, 100, 0, -1])
|
||||||
|
|
||||||
|
print(A)
|
||||||
|
print(A.T)
|
||||||
|
print(A @ x) # Matrixmultiplikation
|
||||||
|
print(la.det(A)) # Determinante
|
||||||
|
|
||||||
|
B = A @ A.T # eine quadratische (sogar positive!) Matrix
|
||||||
|
values, vectors = la.eig(B)
|
||||||
|
|
||||||
|
print(values) # da B "positiv" ist, sind diese Werte alle reellwertig und ≥ 0
|
||||||
|
print(vector) # eine Matrix, deren Spalten Eigenvektoren von B sind (entsprechend den Eigenwerten)
|
||||||
|
|
||||||
|
Z = np.zeros((4, 2)) # eine 4 x 2 Matrix
|
||||||
|
|
||||||
|
print(Z)
|
||||||
|
```
|
||||||
|
|
||||||
|
Es gibt _etliches_, was man mit den `numpy` (und `scipy`) Bibliothek und Vektoren/Matrizen/Tensoren machen kann.
|
||||||
|
Lass dir niemanden sagen, dass man "besser mit MatLab" (oder `R`) mit Matrizen umgehen kann.
|
||||||
|
Da _gerade_ diese Sprache für KI optimiert wird, kann man sicher davon ausgehen,
|
||||||
|
dass die zugrunde liegenden Bibliotheken mit `C` o. Ä. geschrieben und schnell sind.
|
||||||
|
|
||||||
|
Natürlich kann und m. E. sollte man kompilierende Sprachen lernen wie `C++` od. `golang`/`Rustlang`/`vlang`, usw.
|
||||||
|
Aber für Prototypen von komplexen Problemen, mit vielen Möglichkeiten für sauberes Programmieren
|
||||||
|
bleibt Python unschlagbar.
|
||||||
|
|
||||||
### Geogebra ###
|
### 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.
|
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.
|
||||||
@ -254,7 +318,7 @@ Hier ein paar Beispiele in der Sprache:
|
|||||||
|
|
||||||
Eingabe von Matrizen und Vektoren:
|
Eingabe von Matrizen und Vektoren:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
octave:1> A = [1 4; -7.1 3 + i; 0 8];
|
octave:1> A = [1 4; -7.1 3 + i; 0 8];
|
||||||
octave:2> disp(A);
|
octave:2> disp(A);
|
||||||
1 4
|
1 4
|
||||||
@ -273,7 +337,7 @@ octave:6> disp(x);
|
|||||||
|
|
||||||
Zeilenoperationen:
|
Zeilenoperationen:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
octave:5> disp(A(2,:));
|
octave:5> disp(A(2,:));
|
||||||
4 3 + 1i 8
|
4 3 + 1i 8
|
||||||
octave:6> A(2,:) = A(2,:) - 4*A(1,:);
|
octave:6> A(2,:) = A(2,:) - 4*A(1,:);
|
||||||
@ -284,7 +348,7 @@ octave:7> disp(A);
|
|||||||
|
|
||||||
Matrixmultiplikation:
|
Matrixmultiplikation:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
octave:1> A = [1 4 8; 3 6 -9]; x = [1 1 1].';
|
octave:1> A = [1 4 8; 3 6 -9]; x = [1 1 1].';
|
||||||
octave:2> b = A*x;
|
octave:2> b = A*x;
|
||||||
octave:3> disp(b);
|
octave:3> disp(b);
|
||||||
@ -300,6 +364,13 @@ octave:6> disp(A*x_); % wird bis auf machine-Fehler gleich b sein
|
|||||||
1.5543e-15
|
1.5543e-15
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Nachteile:**
|
||||||
|
Octave/MatLab fördern einen äußerst schlechten Programmierstil.
|
||||||
|
Gut für kurze Berechnungen aber bis heute gibt es Unternehmen,
|
||||||
|
die diese Sprache/n für größere Projekte benutzen, was einfach fatal ist.
|
||||||
|
Octave/MatLab bieten keinen sauberen Umgang mit Typen od. Modulen an.
|
||||||
|
MatLab ist außerdem sehr teuer und **nicht open source**.
|
||||||
|
|
||||||
### R ###
|
### R ###
|
||||||
|
|
||||||
Für **R** braucht man
|
Für **R** braucht man
|
||||||
@ -321,52 +392,6 @@ Für die Logiker und Informatiker unter euch, wird es bspw. nerven, dass in **R*
|
|||||||
Für Programmierer, wird stören, dass **R** keine saubere Implementierung von Klassen, (lokalen) Imports, usw. anbietet
|
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).
|
(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.
|
|
||||||
|
|
||||||
**Anmerkung:** Um mit komplexen Zahlen in Python umzugehen, muss man `j` statt `i` für die imaginäre Zahl verwenden.
|
|
||||||
Diese muss stets mit einem Koeffizienten versehen werden,
|
|
||||||
d. h.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
x = 5 + 8j;
|
|
||||||
x = 5 + 8*1j;
|
|
||||||
x = 5 + 1j;
|
|
||||||
x = 5 - 1j;
|
|
||||||
x = 5 + 0j;
|
|
||||||
x = 5;
|
|
||||||
```
|
|
||||||
|
|
||||||
usw. sind erlaubt, aber
|
|
||||||
|
|
||||||
``` python
|
|
||||||
x = 5 + 8*j;
|
|
||||||
x = 5 + j;
|
|
||||||
x = 5 - j;
|
|
||||||
```
|
|
||||||
|
|
||||||
usw. nicht, weil hier logischerweise `j` als Variable interpretiert wird.
|
|
||||||
|
|
||||||
### Julia ###
|
### Julia ###
|
||||||
|
|
||||||
Die **Julia**-Programmiersprache soll auch sehr gut sein und kann auf <https://julialang.org> gefunden werden.
|
Die **Julia**-Programmiersprache soll auch sehr gut sein und kann auf <https://julialang.org> gefunden werden.
|
||||||
|
Loading…
Reference in New Issue
Block a user