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
|
||||
|
||||
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).
|
||||
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).
|
||||
|
||||
Im Rest dieses Dokuments werden _Einzelheiten zum Kurs_, das Thema _mathematisches Denken_, und Software-Tipps diskutiert.
|
||||
|
||||
@ -50,25 +50,15 @@ Klausurzulassung, wenn
|
||||
|
||||
### 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**.
|
||||
- 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.
|
||||
**ANMERKUNG:** Folgende Punkte sind _nur_ als weitere Hinweise zu verstehen.
|
||||
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.
|
||||
Sie sind nicht unbedingt vollständig.
|
||||
|
||||
#### Themen / VL-Materialien ####
|
||||
|
||||
- Kapitel 1: Müsst ihr allgemein kennen.
|
||||
- Konkrete Dinge wie Strecken, Ebenen, usw. kommen eher in Geometrie und hier nicht vor.
|
||||
- Eliminationsverfahren und Lösbarkeit von LGS:
|
||||
@ -145,13 +135,6 @@ Sie sind nicht unbedingt vollständig.
|
||||
- Kapitel 6 | 6.5+: 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 ##
|
||||
|
||||
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:
|
||||
|
||||
- Markdown (+ rendering software od. Extensions auf Editoren wie VSCode)
|
||||
- sehr einfachen "plain" Texteditoren
|
||||
- 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)).
|
||||
- Zeichenapps wie GoodNotes
|
||||
- die guten alten Stift + Zettel/Heft ... Vorteil: man muss nicht aufladen ; )
|
||||
|
||||
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.
|
||||
Es lohnt sich, einen guten Allzweck-Editor wie [VSCode](https://code.visualstudio.com/download)
|
||||
zu installieren.
|
||||
Mit so etwas kann man etliche gratis Extensions finden,
|
||||
die bspw. Syntax-Highlighting, Rendering, Code-Schnippsel für LaTeX, md, usw. bieten.
|
||||
|
||||
## Software zwecks 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!**
|
||||
|
||||
### 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 ###
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
```bash
|
||||
octave:1> A = [1 4; -7.1 3 + i; 0 8];
|
||||
octave:2> disp(A);
|
||||
1 4
|
||||
@ -273,7 +337,7 @@ octave:6> disp(x);
|
||||
|
||||
Zeilenoperationen:
|
||||
|
||||
```
|
||||
```bash
|
||||
octave:5> disp(A(2,:));
|
||||
4 3 + 1i 8
|
||||
octave:6> A(2,:) = A(2,:) - 4*A(1,:);
|
||||
@ -284,7 +348,7 @@ octave:7> disp(A);
|
||||
|
||||
Matrixmultiplikation:
|
||||
|
||||
```
|
||||
```bash
|
||||
octave:1> A = [1 4 8; 3 6 -9]; x = [1 1 1].';
|
||||
octave:2> b = A*x;
|
||||
octave:3> disp(b);
|
||||
@ -300,6 +364,13 @@ octave:6> disp(A*x_); % wird bis auf machine-Fehler gleich b sein
|
||||
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 ###
|
||||
|
||||
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
|
||||
(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 ###
|
||||
|
||||
Die **Julia**-Programmiersprache soll auch sehr gut sein und kann auf <https://julialang.org> gefunden werden.
|
||||
|
Loading…
Reference in New Issue
Block a user