master > master: Repo

master
RD 2 years ago
commit 5ead061d2b
  1. 60
      .gitignore
  2. 144
      README.md
  3. 0
      code/R/main.r
  4. 0
      code/python/__init__.py
  5. 0
      code/python/main.py
  6. 188
      contacts/main.py
  7. BIN
      docs/loesungen.pdf
  8. 3411
      docs/loesungen.tex
  9. 51
      notes/berechnungen_wk3.md
  10. 240
      notes/berechnungen_wk4.md
  11. 40
      uebung/README.md
  12. 53
      uebung/woche3/README.md
  13. 43
      uebung/woche4/README.md
  14. 10
      uebung/woche5/README.md
  15. 10
      uebung/woche6/README.md

60
.gitignore vendored

@ -0,0 +1,60 @@
*
!/.gitignore
################################################################################################################################
# Hauptordner
################################################################################################################################
!/README.md
################################################################################################################################
# Projekt
################################################################################################################################
!/docs
/docs/*.md
/docs/*.tex
/docs/*.pdf
!/docs/loesungen.tex
!/docs/loesungen.pdf
!/code
!/code/geogebra
!/code/geogebra/*.ggb
!/code/python
!/code/python/*.py
!/code/R
!/code/R/*.r
!/notes
!/notes/**/*.tex
!/notes/**/*.md
!/notes/**/*.rtf
!/notes/**/*.pdf
!/uebung
!/uebung/woche1
!/uebung/woche2
!/uebung/woche3
!/uebung/woche4
!/uebung/woche5
!/uebung/woche6
!/uebung/woche7
!/uebung/woche8
!/uebung/woche9
!/uebung/woche10
!/uebung/woche11
!/uebung/woche12
!/uebung/woche13
!/uebung/**/*.md
!/uebung/**/*.txt
!/uebung/**/*.rtf
!/uebung/**/*.tex
!/contacts
!/contacts/*.py
################################################################################################################################
# Artefakte
################################################################################################################################
/**/*.spec
/**/__pycache__
################################################################################################################################
# gitkeep: präserviert alle Ordner mit einer .gitkeep Datei drin (damit auch leere Ordner synchronisiert werden).
################################################################################################################################
!/**/.gitkeep

@ -0,0 +1,144 @@
# 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 [/uebung](./uebung).
## 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)
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.

@ -0,0 +1,188 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# IMPORTS
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import os;
import sys;
import re;
import numpy as np;
from numpy import int32;
import numpy.linalg as npLA;
import pandas as pd;
from typing import Dict;
# erzwing wd:
SOURCEDIRECTORY = os.path.dirname(os.path.realpath(__file__));
os.chdir(SOURCEDIRECTORY);
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GLOBAL VARIABLES
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
INPUT_CONTACTS = 'kontakte.csv';
OUTPUT_GROUPS = 'teilnehmer.csv';
OUTPUT_EMAILS = 'EMAILS';
AUFGABEN: Dict[int, str] = dict();
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# HAUPTVORGANG
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def main():
contacts = get_contacts();
write_emails(contacts);
contacts = assign_groups(contacts);
contacts = assign_exercises(contacts);
contacts = censor_data(contacts);
write_groups(contacts);
print_groups(contacts);
return;
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# SEKUNDÄRVORGÄNGE
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def get_contacts() -> pd.DataFrame:
contacts = {};
lines = [];
with open(INPUT_CONTACTS, 'r') as fp:
lines = fp.readlines();
data = [];
for line in lines:
line = line.strip();
if line == '':
continue;
parts = line.split(r',');
for i, part in enumerate(parts):
parts[i] = part.strip();
for i in [0, 1]:
parts[i] = re.sub(r'_', r' ', parts[i]);
data.append(dict(
key=(parts[1] + ' ' + parts[0]).lower(),
surname=parts[0],
name=parts[1],
email=parts[2],
group=parts[3] if len(parts) >= 4 else None,
exercise=0
));
contacts = pd.DataFrame(
data=data,
index=None,
columns=('key', 'surname', 'name', 'email', 'group', 'exercise')
);
contacts.group = pd.to_numeric(contacts.group, errors='coerce');
contacts = contacts.astype(dict(
key='string',
surname='string',
name='string',
email='string',
group='Int32',
exercise='string',
));
del lines;
del data;
return contacts;
def assign_groups(contacts: pd.DataFrame) -> pd.DataFrame:
index = 0;
lines = [];
with open('GROUPS', 'r') as fp:
lines = fp.readlines();
for line in lines:
line = line.strip();
if line == '':
continue;
index += 1;
pattern = [];
for word in line.split(r','):
key = word.strip().lower();
if key == '':
continue;
pattern.append(key);
pattern = re.compile('|'.join(pattern));
contacts.loc[contacts.key.str.contains(pattern), 'group'] = index;
return contacts;
def assign_exercises(contacts: pd.DataFrame) -> pd.DataFrame:
global AUFGABEN;
lines = [];
with open('EXERCISES', 'r') as fp:
lines = fp.readlines();
for _, line in enumerate(lines):
g = _ + 1;
line = line.strip();
if line == '':
continue;
ex = line;
AUFGABEN[g] = ex;
contacts.exercise = contacts.group.apply(lambda g: AUFGABEN[g] if g in AUFGABEN else pd.NA);
return contacts;
def censor_data(contacts: pd.DataFrame) -> pd.DataFrame:
contacts.email = contacts.email.apply(lambda i: re.sub(r'^(.*)(@.*)$', r'____\2', i));
return contacts;
def write_emails(contacts: pd.DataFrame):
with open(OUTPUT_EMAILS, 'w') as fp:
line = ', '.join(list(contacts.email));
fp.write(line + ',\n');
return;
def write_groups(contacts: pd.DataFrame):
contacts = contacts \
.sort_values(
by=['group', 'surname', 'name'],
ascending=[True, True, True],
na_position='last'
) \
.reset_index(drop=True);
with open(OUTPUT_GROUPS, 'w') as fp:
fp.write('GRUPPE, AUFGABE, NACHNAME, VORNAME\n');
for _, entry in contacts.iterrows():
fp.write('{group}, {ex}, {surname}, {name}\n'.format(
surname=entry.surname.upper(),
name=entry['name'], # nötig, weil 'name' auch der Index ist
email=entry.email,
group=entry.group,
# group='' if pd.isnull(contacts.group[i]) else contacts.group[i],
ex=entry.exercise
));
return;
def print_groups(contacts: pd.DataFrame):
contacts = contacts \
.sort_values(
by=['group', 'name', 'surname'],
ascending=[True, True, True],
na_position='last'
) \
.reset_index(drop=True);
n_groups = max([0] + [_ for _ in contacts.group if isinstance(_, int32)]);
for g in list(range(1, n_groups + 1)) + [0]:
if g == 0:
group = contacts[pd.isnull(contacts.group)].reset_index(drop=True);
print('- _keiner Gruppe zugeordnet!_', end='');
else:
group = contacts[contacts.group == g].reset_index(drop=True);
ex = AUFGABEN[g] if g in AUFGABEN else '???';
print('- **Gruppe {}** | {} |'.format(g, ex), end='');
Ng = len(group);
for _, entry in group.iterrows():
endchar = ',';
if _ == Ng - 1:
endchar = '\n';
print(' {name}.{surname}'.format(
surname=entry['surname'][0].upper(),
name=entry['name'][:3].upper(),
), end=endchar);
return;
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# SEKUNDÄRVORGÄNGE
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if __name__ == '__main__':
main();

Binary file not shown.

File diff suppressed because it is too large Load Diff

@ -0,0 +1,51 @@
# Kritzelei aus Woche 3 #
## Übungsblatt 1 ##
Für volle Lösungen siehe Datei [/docs/loesungen.pdf](../docs/loesungen.pdf).
### Anmerkung zu Aufgabe 2 ###
Seien **A** eine m x n Matrix über IR, und **b** in IR^m.
_Lösungsmenge vor Transformation:_
Sei L_1 := { x ∈ IR^n | Ax = b }
_Lösungsmenge nach Transformation:_
Sei L_2 := { x ∈ IR^n | A'x = b' },
wobei (A'|b') das Resultat einer Transformation (Art I, II, III) ist.
**BEHAUPTUNG.** Es gilt L_1 = L_2.
**BEWEIS.**
- **Zu zeigen 1:** L_1 ⊆ L_2
- Sei x aus L_1 beliebig. D. h. **x** ist eine Lösung zu (A|b)
- **Zu zeigen:** x in L_2, d. h. dass x eine Lösung zu (A'|b') ist.
- Fall 1. Transformation vom Typ I:
- ...
- Fall 2. Transformation vom Typ II:
- ...
- Fall 3. Transformation vom Typ III:
- ...
- **Zu zeigen 2:** L_2 ⊆ L_1
- Sei x aus L_2 beliebig. D. h. **x** ist eine Lösung zu (A'|b')
- **Zu zeigen:** x in L_1, d. h. dass x eine Lösung zu (A|b) ist.
- _Unvollständige Argumentation:_ Die Transformationen sind umkehrbar. Also ist x eine Lösung von (A|b) auch.
- !! **Fehlt:** Warum bedeutet diese Umkehrbarkeit, dass x noch eine Lösung von (A|b) ist? !!
- Richtiger Ansatz 1:
- Gegeben ist, dass A'x = b' gilt.
- Nun gilt: A' = E·A, b' = E·b, wobei E die Zeilenumformung ist.
- **Umkehrbarkeit der Transformation bedeutet:** E ist umkehrbar.
- Also, aus A'x = b' (d. h. E·A·x = E·b) folgt Ax = b.
- Richtiger Ansatz 2:
- (A'|b') entsteht durch Anwendung von I, II, od. III. aus (A|b)
- **die Umkehrung (von (A'|b') ---> nach (A|b)) ist selbst eine Transformation vom Typ I, II, od. III.**
- Also (A|b) ist eine Transformation von (A'|b')
- Der erste Teil des Beweis hat gezeigt, dass
- **x** Lösung von (A'|b') ==> **x** Lösung von Transformation von (A'|b')
- d. h. **x** Lösung von (A'|b') ==> **x** Lösung von Transformation von (A|b).
**QED**

@ -0,0 +1,240 @@
# Kritzelei aus Woche 4 #
## SKA 3 ##
- **1.** Unterschied zw. ℕ, ℕ₀ beachten.
- **2.** „minimales Beispiel“: A = {🍎}, B = Ø, C = Ø.
- **3.** x ∈ linker Seite ⟺ x ∈ rechter Seite; Dualität zw. Mengen und logischen Operationen.
- **4.** ja —> Aussagenlogischer Ansatz vs. „visueller“ Ansatz vs. „algebraischer“ Ansatz (DeM).
- **5.** =
- **6.** 3·4, ja
- **7.** erst Z in R „definieren“, dann ZxZ in RxR definieren, analog mit NxN ⊆ ZxZ
- **8.** Diagramm
- **9.** ja
- **10.** ∈: nein, ⊆: ja 
- **11.** Formale Semantik / algebraische Oeprationen
- **12.** nein, sondern sind klassische Komplemente
- **13.** Mengentheoretisch: Ja, weil Gph(ƒ) = Gph(g). Kategorientheoretisch: „Nein“.
- **14.** Fasern/Bildmengen für ƒ : X ⟶ Y
ƒ Injektiv ⟺ alle Fasern von ƒ enthalten ≤ 1 Element
ƒ Surjektiv ⟺ alle Faster von ƒ sind nicht leer ⟺ ƒ(X) = Y
- **15.** ƒ¯¹{y} ist die Schnittmenge aus Gph(ƒ) und dem Geraden {(x,y) | x ∈ ℝ}
Injektiv ⟺ jede Schnittmenge von Gph(ƒ) mit vertikalen Geraden hat höchstens 1 Pkt
Surjektiv ⟺ jede Schnittmenge von Gph(ƒ) mit vertikalen Geraden hat mindestens 1 Pkt
- **16.** dom(log) = (0,∞), ran(log) = ℝ
## SKA 4 ##
- **1.** Lösungsskizze:
R := Gph(ƒ). Etwas ausführlicher:
ƒ : X ⟶ Y sei eine Funktion
R := {(x,y) ∈ X x Y | ƒ(x) = y} = Gph(ƒ)
Dann ist R eine binäre Relation mit R ⊆ X x Y
- **2.** Lösungsskizze
Sei ƒ : M ⟶ N definiert durch
ƒ(m) = das n, so dass (m,n) ∈ R
für alle m ∈ M.
(i) ⟺ ƒ überall definiert;
(ii) ⟺ ƒ wohldefiniert
- **3.** Beachte, dass die Relation auf P(X) ist und _nicht_ auf X!
Formales Argument
~~~~~~~~~~~~~~~~~
Wir prüfen die Axiome einer OR:
Refl. Zz: Sei A ∈ P(X). Dann A ≤ A.
Offensichtlich gilt X \ A ⊆ X \ A.
Per Konstruktion gilt also A ≤ A.
Antisymm. Zz: Seien A, B ∈ P(X). Dann A ≤ B und B ≤ A ⟹ A=B.
Es gilt
A ≤ B und B ≤ A.
⟹ X \ A ⊆ X \ B und X \ B ⊆ X \ A
per Konstruktion
⟹ X \ A = X \ B
per Definition von Mengengleichheit
⟹ X \ (X \ A) = X \ (X \ B)
⟹ A = B
da A, B Teilmengen von X sind
Trans. Zz: Seien A, B, C ∈ P(X). Dann A ≤ B und B ≤ C ⟹ A ≤ C.
Es gilt
A ≤ B und B ≤ C.
⟹ X \ A ⊆ X \ B und X \ B ⊆ X \ C
per Konstruktion
⟹ X \ A ⊆ X \ C
da Mengeninklusion transitiv ist
⟹ A ≤ C
per Konstruktion.
Also genügt (P(X), ≤) den Axiomen einer OR.
- **4.** Beachte: Entfernung von P(C) nicht von C!!
Lösung
~~~~~~~~
Entferne Ø von P(C).
Dann existiert kein „kleinstes Element“ (auch „Minimum“ genannt).
Allerdings existieren genau 3 „minimale Elemente“ in (P(C)\{Ø}, ⊆), viz. {a}, {b}, {c}.
- **5.** Ja in beiden Fällen (im 2. Falle nehmen wir an, dass Alle Wörter mindestens 2 Buchstaben enthalten).
Formales Argument:
~~~~~~~~~~~~~~~~~~
Sei ∑ die Menge von Buchstaben und W die Menge von Wörtern im Wörterbuch.
Dann handelt es sich in beiden Fällen um eine Relation, die durch
~ := {(w1,w2) ∈ W⨉W | ƒ(w1) = ƒ(w2)}
definiert wird, wobei ƒ eine Abbildung von W nach ∑ ist.
(Im 1. Falle gilt ƒ(w) = erster Buchstabe in w;
im 2. Falle gilt ƒ(w) = zweitletzter Buchstabe in w.)
Schnelle Variante:
~~~~~~~~~~~~~~~~~~
(1) Für w1, w2 ∈ W gilt w1 ~ w2 ⟺ ƒ(w1) = ƒ(w2).
D. h. ƒ ist eine „Reduktion“ von der ÄR (W, ~) auf (∑, =).
(2) (∑, =) ist eine ÄR, d.h. Gleichheit ist eine Äquivalenzrelation auf ∑.
(3) Aus (1) + (2) folgt, dass ~ eine ÄR ist.
Ausführliche Variante:
~~~~~~~~~~~~~~~~~~~~~~
Wir prüfen die Axiome einer OR:
Refl. Zz: Sei w ∈ W. Dann w ~ w.
Es gilt ƒ(w) = ƒ(w), da „=“ reflexiv ist.
Per Konstruktion gilt also w ~ w.
Symm. Zz: Seien u, v ∈ W. Dann u ~ v ⟹ v ~ u.
Es gilt
u ~ v
⟹ ƒ(u) = ƒ(v) per Konstruktion
⟹ ƒ(v) = ƒ(u) da „=“ symmetrisch ist
⟹ v ~ u per Konstruktion.
Trans. Zz: Seien u, v, w ∈ W. Dann u ~ v und v ~ w ⟹ u ~ w.
Es gilt
u ~ v und v ~ w
⟹ ƒ(u) = ƒ(v) und ƒ(v) = ƒ(w) per Konstruktion
⟹ ƒ(u) = ƒ(w) da „=“ transitiv ist
⟹ u ~ w per Konstruktion.
Also genügt (W, ~) den Axiomen einer ÄR.
- **6.** -
- **7.** -
- **8.** Schubfachprinzip mit 4 Kategorien und 5 Plätzen:
Schnelles Argument:
~~~~~~~~~~~~~~~~~~~
muss gelten, da sonst jede Farbe höchstens 1 Mal vorkommt,
was höchstens 4 Plätze belegt, aber wir wählen 5 Karten.
- **9.** Schubfachprinzip mit 366 Kategorien und 7000 Plätzen:
Schnelles Argument:
~~~~~~~~~~~~~~~~~~~
Falls für jeden Tag max 17 Studierende diesen Geburtstag haben,
dann würde es maximal
(18-1)·366 = 6222
Studierende geben.
Aber es gibt 7000 (> 6222) Studierende.
Widerspruch!
Darum gibt es einen Tag, an dem (mind.) 18 Studierende den als ihren Geburtstag feiern.
Formales Argument:
~~~~~~~~~~~~~~~~~~
Sei T die Menge von Tagen. Also |T|=366
Sei S die Menge von Studierenden, |S|≥7000.
Sei
ƒ : S ⟶ T
die Funktion, die jedem Studierenden seinen Geburtstag zuordnet.
Setze
G := {ƒ¯¹{d} | d ∈ T} \ {Ø}.
und
geb : G ⟶ T
durch
geb(A) = ƒ(a) für ein a ∈ A
für jedes A ∈ G.
Beobachtung 1:
~~~~~~~~~~~~~~
Die Funktion, geb, ist wohldefiniert:
Sei A ∈ G beliebig.
Dann A = ƒ¯¹{d} für ein d ∈ T und A ≠ Ø
Also gibt es ein a ∈ A
und weiterhin gilt für a1, a2 ∈ A, dass ƒ(a1) = d = ƒ(a2).
Darum ordnet geb der Menge A exakt einen Wert zu.
Beobachtung 2:
~~~~~~~~~~~~~~
Die Funktion, geb, ist injektiv:
Seien A1, A2 ∈ G.
Zz: ƒ(A1) = ƒ(A2) ⟹ A1 = A2.
Per Konstruktion gelten
A1 = ƒ¯¹{d1}, A1 ≠ Ø, und
A2 = ƒ¯¹{d2}, A2 ≠ Ø
für ein d1, d2 ∈ T.
Wie oben gilt ƒ(A1) = d1 und ƒ(A2) = d2.
Darum
ƒ(A1) = ƒ(A2)
⟹ d1 = d2
⟹ ƒ¯¹{d1} = ƒ¯¹{d2}
⟹ A1 = A2.
Beobachtung 3:
~~~~~~~~~~~~~~
Es gilt S = ⋃{A | A ∈ G}.
Warum?
- Per Konstruktion gilt A ⊆ S für alle A ∈ G.
Also gilt ⋃{A | A ∈ G} ⊆ S.
- Sei s ∈ S belibig.
Seien d := ƒ(s) und A₀ := ƒ¯¹{d}.
Dann A₀ ≠ Ø, da s ∈ A₀, da ƒ(s) = d.
Also gilt A₀ ∈ G per Konstruktion von G.
Also s ∈ A₀ ⊆ ⋃{A | A ∈ G}.
Darum gilt S ⊆ ⋃{A | A ∈ G}.
Da die Funktion, geb, injektiv ist (Beobachtung 2),
liefert das SCHUBFACHPRINZIP
|G| ≤ |T| = 366.
Da die Mengen in G offensichtlich paarweise disjunkt sind,
und da S = ⋃{A | A ∈ G} (Beobachtung 3),
gilt
7000 ≤ |S|
= ∑{|A| | A ∈ G}
≤ max{|A| | A ∈ G} · |G|
≤ max{|A| | A ∈ G} · 366.
Also
max{|A| | A ∈ G} ≥ 7000/366 > 19.
Also existiert mindestens ein A₀ ∈ G mit |A₀| > 19 > 18.
Per Konstruktion von G haben nun alle Studierende in A₀ den gleichen Geburtstag.
Darum haben mindestens 18 Studierende denselben Geburtstag.
- **10.**
Induktionsargument:
~~~~~~~~~~~~~~~~~~~
IND-ANFANG:
Für n = 1. Nichts zu zeigen, da ∏{E_i : 1≤i≤1} = E_1.
Für n = 2.
... siehe Argument im Skript
... oder gilt einfach per Definition: siehe jedes Lehrbuch über Mengenlehre.
Sei n > 2.
IND-VORAUSSETZUNG:
Angenommen, |∏{E_i : 1≤i<n}| = {|E_i| : 1i<n}.
IND-SCHRITT:
Es gilt
|∏{E_i : 1≤i≤n}|
= |∏{E_i : 1≤i<n} E_n| wegen bijektiver Äquivalenz
= |∏{E_i : 1≤i≤n}|·|E_n| aus (allgemeinem) Fall n=2
=(∏{|E_i| : 1≤i<n}·|E_n| per Induktionsvoraussetzung
= ∏{|E_i| : 1≤i≤n},
Darum gilt die Aussage per Induktion.
- **11.** Induktionsschritt (n —> n+1) geht nur, wenn n ≥ 2.
Das heißt, der Fall 1 —> 2 wird übersprungen.

@ -0,0 +1,40 @@
# Kurs #
Die URL vom Kurs findet man hier: <http://www.math.uni-leipzig.de/~sinn/lehre/LA1.html>.
## Leistungen ##
Klausurzulassung, wenn
- ≥ 50% der Punkte aus den insgesamt 12 Übungsblättern (je 15 Pkt).
- ~~?/? Quizzes~~ —> keine Voraussetzung mehr. Die Quizzes sind freiwillig!
Klausur:
- voraussichtlich am 16.02.2021
- 90 min Dauer
- ??? Fragen
## Übungsgruppen ###
Die Übungsgruppen sind Pflichtveranstaltungen.
Jede Woche besteht der Ablauf grob aus folgenden Teilen:
- allgemeine Ankündigungen
- Präsentation von SKA von jeder Gruppe (sofern anstehend)
- Besprechung von ÜB aus vorheriger Woche (sofern korrigiert)
- Besprechung vom Stoff aus VL
- Quiz 10min
- Breakout-Rooms für SKA
Je nach Zeit und Nachfrage fallen manche Dinge aus, damit wir uns den wichtigeren Dingen widmen können.
## Notizen aus jeder Woche ##
Jede Woche werden Anmerkungen in Markdown-Dateien hier festgehalten:
- Woche 1: ---
- Woche 2: ---
- Woche 3: [/uebung/woche3/README.md](./woche3).
- Woche 4: [/uebung/woche4/README.md](./woche4).

@ -0,0 +1,53 @@
## Woche 3 (KW 46, 9.–15. November) ##
### Agenda ###
- allgemeine Ankündigungen
- ÜB Abgaben: einscannen -> in DIN A4 o. Ä. konvertieren
- Git Repo
- Bitte um Fragen zur VL im Chat zu posten (für später)
- Präsentation von **SKA 2** von den Gruppen:
- **Gruppe 1** | Aufgabe 1
- **Gruppe 2** | Aufgabe 2
- **Gruppe 3** | Aufgabe 3
- **Gruppe 4** | Aufgabe 6
- **Gruppe 5** | Aufgabe 11
- **Gruppe 6** | Aufgabe 5
- **Gruppe 7** | Aufgabe 4
- Besprechung von ÜB aus vorheriger Woche
- A1:
- Missverständnisse über freie Variablen
- Fallunterscheidung α≠4; (α=4 und β=8); (α=4 und β≠8).
- A2:
- Beweisführung: **Zu zeigen:** _L₁ = L₂_. Teil 1: (⊆) ... Teil 2: (⊇).
- Mechanismus für die Rechtfertigung Rückrichtung fehlte.
- A3:
- Logische Umformungen:
- **Statement**:
[Es gibt (eine Auswahl von) _n+1_ Gleichungen], die ein _unlösbares_ LGS bilden.
[Es gibt x], so dass x Eigenschaft Φ erfüllt
- ⟶ **falsche Verneinung**:
~~[Es gibt (eine Auswahl von) _n+1_ Gleichungen], die ein _lösbares_ LGS bilden.~~
- ⟶ **richtige Verneinung**:
[Für jede Auswahl von _n+1_ Gleichungen], ist das durch sie definierte LGS _lösbar_.
[Für alle x], x erfüllt Eigenschaft Φ nicht
- »Nach Definition ist ein Gleichungssystem unlösbar, wenn eine Gleichung unlösbar ist.«
```
A <==== B
```
- **Anmerkung** Hier schwankte es einige Male zwischen der Ungewissheit, ob sie
- hier nur die Implikation verwenden wollten, (Gleichung unlösbar ⟹ System unlösbar)
- die Definition im Sinne dieses „genau, dann wenn“ Zusammenhangs verstanden hatten.
Für volle Lösungen siehe Datei [/docs/loesungen.pdf](../../docs/loesungen.pdf).
- Besprechung von Materialien / VL
- Geogebra
- Verständnis durch Anschauung vs. formales Vorgehen
- Beweisführung: wie man formale Aussagen formal aufdrosselt und „Ziele“ setzt („zu zeigen ist...“)
- konkrete Fragen von Studierenden behandeln
- Quiz 10min (?)
- fällt evtl. aus
- Breakout-Rooms für SKA (?)
- fällt evtl. aus

@ -0,0 +1,43 @@
## Woche 4 (KW 47, 16.–22. November) ##
### Agenda ###
- (√) allgemeine Ankündigungen
- „Lösungen“ in Git-Repo
- Sortierung: VL, ÜB, SKA, Quiz, interaktive Aufgaben ???
- Umfrage über Rhythmus (--> Diskussion evtl. am Ende verschieben)
- (√) Präsentation von **SKA 3 / ÜB 2** von den Gruppen:
- **Gruppe 1** | SKA 11-12
- **Gruppe 2** | ???
- **Gruppe 3** | ???
- **Gruppe 4** | SKA 11
- **Gruppe 5** | ???
- **Gruppe 6** | ???
- **Gruppe 7** | ???
- (x) SKA 3: Besprechung / Zusammenarbeit / Breakout-Rooms (---> Umfrage!)
siehe [/notes/berechnungen_wk4.md](../../notes/berechnungen_wk4.md) > Abschnitt über SKA 3 für Kritzelei.
- (√) SKA 4: Besprechung / Zusammenarbeit / Breakout-Rooms (---> Umfrage!
siehe [/notes/berechnungen_wk4.md](../../notes/berechnungen_wk4.md) > Abschnitt über SKA 4 für Kritzelei.)
- (x) ÜB2: Besprechung:
- A2-1 und A2-2(a)
- aufdrosseln der Hauptaussage
- A2-2(b): Windschief
- A2-3
- a) Trick mit γ1, γ2 und Differenzen.
Für volle Lösungen siehe Datei [/docs/loesungen.pdf](../../docs/loesungen.pdf).
- (x) VL-Stoff: Fragen / Redebedarf.
## Beschlüsse mit der Gruppe ##
- Besprechung in den Übungsgruppen:
- ÜB:
- „Musterlösungen“ (quasi) sind im Repo bzw. von SHK im Laufe der Woche verfügbar.
Den Studierenden überlassen, ob sie sie anschauen.
- SKA:
- hauptsächlich die SKA aus der aktuellen Woche besprechen.
- Präsentationen: jede Gruppe meldet sich im Moodle-Chat im Laufe der Woche:
- ob die was präsentiert
- was die präsentiert (muss aber SKA aus aktueller oder letzter Woche sein)

@ -0,0 +1,10 @@
## Woche 5 (KW 48, 23.–29. November) ##
## Ablauf ##
- ( ) allgemeine Ankündigungen
- Erinnerung an Beschlüsse aus der letzten Woche
- ( ) Präsentation von **SKA 4 / SKA 5 / ÜB 3** von den Gruppen:
- ( ) SKA 5: / Zusammenarbeit / Breakout-Rooms (---> Umfrage!)
- ( ) ÜB 3
- ( ) VL-Stoff

@ -0,0 +1,10 @@
## Woche 6 (KW 49, 30.11.–6.12.) ##
## Ablauf ##
- ( ) allgemeine Ankündigungen
- Erinnerung an Beschlüsse aus der letzten Woche
- ( ) Präsentation von **SKA 5 / SKA 6 / ÜB 4** von den Gruppen:
- ( ) SKA 6: / Zusammenarbeit / Breakout-Rooms (---> Umfrage!)
- ( ) ÜB 4
- ( ) VL-Stoff
Loading…
Cancel
Save