diff --git a/Notes/Semester 1/AN1 - Analysis 1/Ableitungen.md b/Notes/Semester 1/AN1 - Analysis 1/Ableitungen.md new file mode 100644 index 0000000..ec6cbd0 --- /dev/null +++ b/Notes/Semester 1/AN1 - Analysis 1/Ableitungen.md @@ -0,0 +1,209 @@ + + + + +# Ableitungen +Die Ableitung einer Funktion sagt aus, wie sich die Werte der Funktion an einer gegebenen Stelle verändern. + +
+ +Wie zu sehen ist, zeigt $f'(x)$ an Stellen, an denen $f(x)$ eine Steigung hat, einen positiven Wert, an Stellen, an denen $f(x)$ keine Steigung hat, $0$ und an Stellen, an denen $f(x)$ sich senkt, einen negativen Wert. + +Ableitungen werden jeweils als den Funktions-Namen zusammen mit einem Apostroph geschrieben. So heisst also beispielsweise die Ableitung der Funktion $z(x)$ üblicherweise $z'(x)$. + +> **_Note:_** +> Will man die Ableitung eines Terms ausdrücken, so macht man das folgendermassen: +> +> Die Ableitung von $420x - 1337x^2$ ist $(420x - 1337x^2)'$. + +## Inhaltsverzeichnis +- [Ableitungen](#ableitungen) + - [Inhaltsverzeichnis](#inhaltsverzeichnis) + - [Realbeispiel](#realbeispiel) + - [Ableitungen erkennen](#ableitungen-erkennen) + - [Zweite, Dritte, $n$. Ableitung](#zweite-dritte-n-ableitung) + - [Ableitungs-Regeln](#ableitungs-regeln) + - [Allgemeine Regeln](#allgemeine-regeln) + - [Konstante](#konstante) + - [Faktor-Regel](#faktor-regel) + - [Potenz-Regel](#potenz-regel) + - [Summen-Regel](#summen-regel) + - [Produkt-Regel](#produkt-regel) + - [Quotienten-Regel](#quotienten-regel) + - [Ketten-Regel](#ketten-regel) + - [Ableitungen bestimmter Funktionen](#ableitungen-bestimmter-funktionen) + +## Realbeispiel +Die Ableitung kann beispielsweise verwendet werden, um die Geschwindigkeit einer Bewegung abzubilden. + +Folgendes Weg-Zeit-Diagramm soll das verdeutlichen: + +
+ +Nicht nur zeigt hier $t'$ die Ableitung der Funktion $t$ auf, sondern auch jeweils die momentane Geschwindigkeit, die eine Person zum gegebenen Zeitpunkt hat. + +## Ableitungen erkennen +Ableitungen kann man daran erkennen, dass sie jeweils an den Stellen, an denen die abzuleitende Funktion einen Scheitelpunkt erreicht, einen Wert von $0$ haben, da an diesen Stellen weder eine Senkung noch eine Steigung vorherrscht. + +Beispiel: + +
+ +## Zweite, Dritte, $n$. Ableitung +Erstellt man eine Ableitung einer bereits existierenden Ableitung, so nennt sich diese "Zweite Ableitung". Dessen Ableitung wiederum heisst "Dritte Ableitung" etc. + +> **_In Worten:_** +> - $f'$ ist die Ableitung von $f$ +> - $f''$ ist die Ableitung von $f'$ und somit die **Zweite Ableitung** von $f$ +> - $f'''$ ist die Ableitung von $f''$ und somit die **Dritte Ableitung** von $f$ + +## Ableitungs-Regeln +Um von einer Funktion (oder Bruchteilen davon) die Ableitung zu errechnen, können einige allgemeingültige Regeln zugezogen werden, welche im Folgenden erklärt werden. + +Hilfreiche Links für's Nachschlagen der Regeln: + - https://www.mathebibel.de/ableitungsregeln + - https://www.youtube.com/watch?v=GtVWdeevZpw + +### Allgemeine Regeln +#### Konstante +Besteht in der Funktion nur eine Konstante ohne ein $x$, so ist dessen Ableitung immer $0$: + +| Funktion | Ableitung | +| ----------------- | ----------- | +| $f(x) = 1337$ | $f'(x) = 0$ | +| $f(x) = \sqrt{2}$ | $f'(x) = 0$ | + +#### Faktor-Regel +Die Faktor-Regel besagt, dass konstante Zahlen, mit denen $x$ multipliziert werden, auch in dessen Ableitung bestehen bleiben. + +> $$f(x) = c \cdot x \rightarrow f'(x) = c \cdot (x)'$$ + +Das bedeutet folgendes: + +Wenn $f(x)$ folgender Funktion entspricht: + +$f(x) = 2 \cdot g(x)$ und $g(x) = x$ + +So ist die Ableitung davon folgende: +$$f(x) = 2 \cdot g'(x)$$ + +| Funktion | Ableitung | +| ----------- | --------- | +| $f(x) = 7x$ | $7$ | + +#### Potenz-Regel +Die Potenzregel lautet folgendermassen: + +> $$f(x) = x^n \rightarrow f'(x) = n \cdot x^{n - 1}$$ + +Auch hier wieder anhand einiger Beispiele: + +| Funktion | Ableitung | +| ------------- | ----------------------- | +| $f(x) = x$ | $1$ | +| $f(x) = x^7$ | $7 \cdot x^6$ | +| $f(x) = x^6$ | $6 \cdot x^5$ | +| $f(x) = 3x^6$ | $3 \cdot (6 \cdot x^5)$ | + +#### Summen-Regel +Die Ableitung einer Addition ergibt die Summe der Ableitung der einzelnen Summanden der Addition: + +> $$f(x) = g(x) + h(x) \rightarrow f'(x) = g'(x) + h'(x)$$ + +Diese Regel ist auch auf Subtraktionen anwendbar: + +> $$f(x) = g(x) - h(x) \rightarrow f'(x) = g'(x) - h'(x)$$ + +Diese Regel kann für jegliche Funktion, welche eine Addition beinhaltet, angewendet werden: + +$$f(x) = \overbrace{2x}^{g(x) = 2x} + \overbrace{4x^3}^{h(x) = 4x^3}$$ +$$f'(x) = g'(x) + h'(x)$$ +$$f'(x) = \underbrace{2 \cdot 1 \cdot x^0}_{g'(x) = 2 \cdot 1 \cdot x^0} + \underbrace{4 \cdot 3 \cdot x^2}_{h'(x) = 4 \cdot 3 \cdot x^2}$$ + +#### Produkt-Regel +Die Produkt-Regel beschreibt, wie eine Ableitung einer Funktion gemacht werden kann, welche eine Multiplikation beinhaltet. + +> $$f(x) = g(x) \cdot h(x) \rightarrow f'(x) = g'(x) \cdot h(x) + g(x) \cdot h'(x)$$ + +Auch hier wiederum ein Beispiel: +$$f(x) = \overbrace{(3x^3 + x^2)}^{g(x) = 3x^3 + x^2}\overbrace{(4x^2 + 1)}^{h(x) = 4x^2 + 1}$$ +$$f'(x) = g'(x) \cdot h'(x)$$ +$$f'(x) = \underbrace{(3 \cdot 3 x^2 + 1 \cdot x^1)}_{g'(x) = 3 \cdot 3 x^2 + 1 \cdot x^1} \cdot \overbrace{(4x^2 + 1)}^{h(x)} + \overbrace{(3x^3 + x^2)}^{g(x)} \cdot \underbrace{(4 \cdot 2 \cdot x^1 + 0)}_{h'(x) = 4 \cdot 2 \cdot x^1 + 0}$$ + +#### Quotienten-Regel +Von der Produkt-Regel lässt sich auch die Quotienten-Regel ableiten. Diese beschreibt, wie man die Ableitung von Divisionen bilden kann und lautet folgendermassen: + +> $$f(x) = \frac{g(x)}{h(x)} \rightarrow \frac{g'(x) \cdot h(x) - g(x) \cdot h'(x)}{(h(x))^2}$$ + +Wie diese Regel angewendet wird, lässt sich anhand des folgenden Beispiels aufzeigen: + +$$f(x) = \left(\frac{\overbrace{3x^2 - x}^{g(x)}}{\underbrace{2x^3 + 1}_{h(x)}}\right)$$ +$$f'(x) = \frac{g'(x) \cdot h(x) - g(x) \cdot h'(x)}{(h(x))^2}$$ +$$f'(x) = \frac{\overbrace{(3 \cdot 2 \cdot x^1 - 1 \cdot x^0)}^{g'(x)} \cdot \overbrace{(2x^3 + 1)}^{h(x)} - \overbrace{(3x^2 - x)}^{g(x)} \cdot \overbrace{(2 \cdot 3 \cdot x^2 + 0)}^{h'(x)}}{(\underbrace{2x^3 + 1}_{h(x)})^2}$$ + +#### Ketten-Regel +Die Ketten-Regel zeigt auf, wie die Ableitung von verschachtelten Funktionen geformt werden kann. + +Folgende Regel gilt: + +> $$f(x) = g(h(x)) \rightarrow f'(x) = g'(h(x)) \cdot h'(x)$$ + +Aufgezeigt anhand eines Beispiels: + +$$f(x) = \overbrace{(\underbrace{x^3 + 4}_{h(x) = x^3 + 4})^{-2}}^{g(x) = x^{-2}}$$ +$$f'(x) = g'(h(x)) \cdot h'(x)$$ +$$f'(x) = \overbrace{-2 \cdot (\underbrace{x^3 + 4}_{h(x)})^{-3}}^{g'(h(x))} \cdot \overbrace{(3 \cdot x^2 + 0)}^{h'(x)}$$ + +### Ableitungen bestimmter Funktionen +Folgende Auflistung zeigt einige bekannte Funktionen und deren Ableitung auf. + +$a$ steht hierbei für eine Konstante. + +| Ausdruck | Ableitung | +| -------------- | -------------------------- | +| $(\sin(x))'$ | $\cos(x)$ | +| $(\cos(x))'$ | $-\sin(x)$ | +| $(e^x)'$ | $e^x$ | +| $(a^x)'$ | $a^x \cdot \ln(a)$ | +| $(\ln(x))'$ | $\frac{1}{x}$ | +| $(\log_a(x))'$ | $\frac{1}{x \cdot \ln(a)}$ | diff --git a/Notes/Semester 1/AN1 - Analysis 1/Convention.png b/Notes/Semester 1/AN1 - Analysis 1/Convention.png new file mode 100644 index 0000000..c4a6013 Binary files /dev/null and b/Notes/Semester 1/AN1 - Analysis 1/Convention.png differ diff --git a/Notes/Semester 1/AN1 - Analysis 1/Formale Notation.md b/Notes/Semester 1/AN1 - Analysis 1/Formale Notation.md new file mode 100644 index 0000000..16f1e29 --- /dev/null +++ b/Notes/Semester 1/AN1 - Analysis 1/Formale Notation.md @@ -0,0 +1,35 @@ +# Formale Notation +## Mengen +### Reelle Zahlen +$\mathbb{R}$ + +### Ohne +$\mathbb{R} \setminus 1$ + +> ***Note:*** +> Gesprochen: "Alle reellen Zahlen ($\mathbb{R}$) ohne 1." + +$\mathbb{D} = [0, \infty[$ (gesprochen: "Alle Zahlen ab 0 ohne $\infty$) + +### Fakultät +Die Fakultät errechnet sich, indem man die Werte aller Zahlen in einer Zahlenwerte summiert. + +So berechnet sich die Fakultät von $100$ bspw. indem man folgendes rechnet: +$$1 + 2 + 3 + 4 + 5 + 6 +...+100$$ + +Bildet man jedoch die Zahlenreihe zweimal in entgegengesetzter Richtung, wird möglicherweise auffallen, dass sich jeweils Zahlenpaare bilden, die immer die Summe der äussersten Zahlen der Reihe zusammenrechnet: + +$$\underbrace{1}_{100} + \underbrace{2}_{99} + \underbrace{3}_{98} ... + \underbrace{100}_{1}$$ + +Alle Zahlenpaare zusammen ergeben $100 \times 101$. + +Da in dieser Zusammenfassung jedes Zahlenpaar doppelt vorkommt, muss die Lösung dieser Rechnung halbiert werden, um die Lösung der Fakultät zu erhalten: + +$$\sum^{100}_{k=1}k = \frac{100 \times (100 + 1)}{2} = 5050$$ + +Dementsprechend kann auch die Fakultät anderer Zahlen errechnet werden: + +$$\sum^{n}_{k=1}k = \frac{n \times (n + 1)}{2}$$ + +#### Quadrat Gagg +$$\sum^{n}_{k=1}k^2 = \frac{n \cdot (n + 1) \cdot (2n + 1)}{6}$$ diff --git a/Notes/Semester 1/AN1 - Analysis 1/Funktionen.md b/Notes/Semester 1/AN1 - Analysis 1/Funktionen.md new file mode 100644 index 0000000..c9e1275 --- /dev/null +++ b/Notes/Semester 1/AN1 - Analysis 1/Funktionen.md @@ -0,0 +1,18 @@ + + + + +# Funktionen +Funktionen bilden Vorschriften, Vorgänge oder Berechnungen ab, in denen jeweils die Werte eines Definitionsbereichs $\mathbb{D}$ je genau einem Ausgabewert aus dem Wertbereich $\mathbb{W}$ zugeordnet werden. + +Sowohl Definitions- als auch Wertebereich entsprechen, falls nicht angegeben, jeweils den reellen Zahlen $\mathbb{R}$ + +![](Convention.png) + + +$env:Path -split ';' \ No newline at end of file diff --git a/Notes/Semester 1/AN1 - Analysis 1/Polynome.md b/Notes/Semester 1/AN1 - Analysis 1/Polynome.md new file mode 100644 index 0000000..02bc66a --- /dev/null +++ b/Notes/Semester 1/AN1 - Analysis 1/Polynome.md @@ -0,0 +1 @@ +# Polynome diff --git a/Notes/Semester 1/AN1 - Analysis 1/Table of Contents.md b/Notes/Semester 1/AN1 - Analysis 1/Table of Contents.md new file mode 100644 index 0000000..8a061ff --- /dev/null +++ b/Notes/Semester 1/AN1 - Analysis 1/Table of Contents.md @@ -0,0 +1,4 @@ +# Inhaltsverzeichnis + - [Formale Notation](./Formale%20Notation.md) + - [Polynome](./Polynome.md) + - [Ableitungen](./Ableitungen.md) diff --git a/Notes/Semester 1/DB - Datenbanken/Daten-Arten.md b/Notes/Semester 1/DB - Datenbanken/Daten-Arten.md new file mode 100644 index 0000000..49a0541 --- /dev/null +++ b/Notes/Semester 1/DB - Datenbanken/Daten-Arten.md @@ -0,0 +1,20 @@ +# Daten-Arten +Der grundsätzliche Unterschied zwischen Objekt- und Daten-Notationen (wie bspw. `JSON`, `XML`, `CSV` und `XLSX`) und herkömmlichen Datenbanken ist, dass genannte Notationen `Semi-Strukturiert` und die Daten in der Datenbank sind `Vollständig Strukturiert`. + +In den genannten Notationen können falsche Daten angegeben werden können (obwohl sie falsch sind, können sie gespeichert werden, da genannte Dateien üblicherweise als freitext bearbeitbar sind). In strukturierten Datenbanken können nur - gemäss Vorgaben - vollständige Daten abgespeichert werden. + +## Datenverwaltung mittels Dateisystem +Zwar nutzen auch Datenbanken + +```mermaid +graph TD; + app1[Anwendungs-Programm 1]; + appN[Anwendungs-Programm n]; + dbms["Datenbank Management System (DMBS)"]; + base[Datenbank Datenbasis]; + app1 --> dbms; + dbms --> app1; + appN --> dbms; + dbms --> appN; + dbms --> base; +``` diff --git a/Notes/Semester 1/DB - Datenbanken/Korrektes ERD.md b/Notes/Semester 1/DB - Datenbanken/Korrektes ERD.md new file mode 100644 index 0000000..8b1922a --- /dev/null +++ b/Notes/Semester 1/DB - Datenbanken/Korrektes ERD.md @@ -0,0 +1,5 @@ +# Korrektes ERD + 1. ERD mit einem leeren Blatt beginnen + 2. Definiere die unabhängigen Entitäts-Typen (Tabelle, welche keine Fremdschlüssel besitzen) + 3. Definiere die Referenz-Typen + 4. Attribute zu nun vorhandenen Entitäts-Typen hinzufügen diff --git a/Notes/Semester 1/DB - Datenbanken/Relationale Algebra.md b/Notes/Semester 1/DB - Datenbanken/Relationale Algebra.md new file mode 100644 index 0000000..e3cd05a --- /dev/null +++ b/Notes/Semester 1/DB - Datenbanken/Relationale Algebra.md @@ -0,0 +1,94 @@ +# Relationale Algebra +Die Rechen-Operationen, die vom Datenbank-Server ausgeführt werden, um Datensätze abzufragen, heisst Relationale Algebra. +Relationale Algebra ist im Prinzip die Computer-Sprache, zu der SQL-Abfragen vor der Ausführung umgewandelt werden. + +## Operation Vereinigung $\cup$ +Vereinigt zwei Relationen und entfernt alle Duplikate. + +![](https://upload.wikimedia.org/wikipedia/commons/3/30/Venn0111.svg) + +**_Beispiel:_** +**ActionActors:** +| FirstName | LastName | YearOfBirth | +| --------- | -------- | ----------- | +| Jackie | Chan | 1954 | +| Jason | Statham | 1967 | +| Vin | Diesel | 1967 | + +**ComedyActors:** +| FirstName | LastName | YearOfBirth | +| --------- | -------- | ----------- | +| Jackie | Chan | 1954 | +| Ryan | Reynolds | 1976 | +| Jack | Black | 1969 | + +**ActionActors $\cup$ ComedyActors:** +| FirstName | LastName | YearOfBirth | +| --------- | -------- | ----------- | +| Jackie | Chan | 1954 | +| Jason | Statham | 1967 | +| Vin | Diesel | 1967 | +| Ryan | Reynolds | 1976 | +| Jack | Black | 1969 | + +> **_In Worten:_** +> Alle Schauspieler, die in Action- oder in Comedy-Filmen spielen. + + +## Operation Intersection $\cap$ +Alle Elemente, die in beiden Relationen vorkommen. + +![](https://upload.wikimedia.org/wikipedia/commons/9/99/Venn0001.svg) + +**_Beispiel:_** +**ActionActors:** +| FirstName | LastName | YearOfBirth | +| --------- | -------- | ----------- | +| Jackie | Chan | 1954 | +| Jason | Statham | 1967 | +| Vin | Diesel | 1967 | + +**ComedyActors:** +| FirstName | LastName | YearOfBirth | +| --------- | -------- | ----------- | +| Jackie | Chan | 1954 | +| Ryan | Reynolds | 1976 | +| Jack | Black | 1969 | + +**ActionActors $\cap$ ComedyActors:** +| FirstName | LastName | YearOfBirth | +| --------- | -------- | ----------- | +| Jackie | Chan | 1954 | + +> **_In Worten:_** +> Alle Schauspieler, die in Action- und in Comedy-Filmen spielen. + +## Operator Differenz $\setminus$ +Alle Elemente, die in der 1. Relation vorkommen und in der 2. Relation nicht vorkommen. + +![](https://upload.wikimedia.org/wikipedia/commons/e/e6/Venn0100.svg) + +**_Beispiel:_** +**ActionActors:** +| FirstName | LastName | YearOfBirth | +| --------- | -------- | ----------- | +| Jackie | Chan | 1954 | +| Jason | Statham | 1967 | +| Vin | Diesel | 1967 | + +**ComedyActors:** +| FirstName | LastName | YearOfBirth | +| --------- | -------- | ----------- | +| Jackie | Chan | 1954 | +| Ryan | Reynolds | 1976 | +| Jack | Black | 1969 | + +**ActionActors $\setminus$ ComedyActors:** +| FirstName | LastName | YearOfBirth | +| --------- | -------- | ----------- | +| Jason | Statham | 1967 | +| Vin | Diesel | 1967 | + + +> **_In Worten:_** +> Alle Schauspieler, die in Action-Filmen, aber in keinen Comedy-Filmen mitspielen. diff --git a/Notes/Semester 1/DB - Datenbanken/SQL-Abfragen.md b/Notes/Semester 1/DB - Datenbanken/SQL-Abfragen.md new file mode 100644 index 0000000..0b05e41 --- /dev/null +++ b/Notes/Semester 1/DB - Datenbanken/SQL-Abfragen.md @@ -0,0 +1,39 @@ +# SQL-Abfragen +SQL-Sprachen (Server Query Language) sind Sprachen, die für Abfragen verwendet werden. +Die SQL-Sprachen einzelner Datenbank Management Systeme (wie bspw. `MySQL`, `MariaDB`, `Microsoft SQL` (kurz `MSSQL`), `Oracle DB`, `NoSQL` und `MongoDB`) haben jeweils untereinander geringe Unterschiede. + +Einige Grundsätze sind jedoch bei den meisten Abfrage-Sprachen gleich. + +## Abfrage-Sprache +### Einfache Abfragen +Ein Beispiel eines in Abfrage-Sprache geschriebener Befehl ist folgender: + +```sql +SELECT * + FROM Subscriptions + WHERE MonthlyPrice > 10.50 +``` + +oder + +```sql +SELECT FirstName + FROM Member + WHERE [ROLE] IN ('Admin', 'Owner') +``` + +Das erste Beispiel bedeutet folgendes: +> Zeige alle Informationen über Abonnements an, deren monatlicher Preis über `10.50` ist. + +Das zweite Beispiel bedeutet folgendes: +> Zeige den Vornamen aller Mitglieder an, deren Rolle `Administrator` oder `Eigentümer` ist. + +Der erste Teil eines Befehls gibt jeweils an, welche Informationen abgefragt oder berechnet werden sollen. Der zweite Teil gibt an, aus welchen Tabellen die Informationen gezogen werden sollen. Der dritte, optionale Teil gibt an, unter welchen Bedingungen die Informationen ausgegeben werden sollen. + +### Abfrage über mehrere Tabellen + +```sql +SELECT s.Name, COUNT(m.ID) + FROM Subscription s, Member m + WHERE s.MemberID = m.ID +``` diff --git a/Notes/Semester 1/DB - Datenbanken/SQL-Syntax.md b/Notes/Semester 1/DB - Datenbanken/SQL-Syntax.md new file mode 100644 index 0000000..f029dfd --- /dev/null +++ b/Notes/Semester 1/DB - Datenbanken/SQL-Syntax.md @@ -0,0 +1,20 @@ +# SQL Syntax +Generell lassen sich alle SQL-Statements in 3 verschiedene Arten von Abfragen aufteilen. + +## DDL - Data Definition Language +Die `Data Definition Language` sind die Arten von Statements, die nicht den Inhalt der Datenbank, sondern deren Struktur definiert und/oder verändert. + +Wichtige Statements sind hierbei + - `CREATE` zum Erstellen eines Elements + - `ALTER` zum Verändern eines existierenden Elements + - `DROP` zum Löschen eines Elements + +### Elemente in `DDL` +| Bezeichnung | Beschreibung | +| ----------- | --------------------------------------------- | +| `DOMAIN` | Definiert einen benutzerdefinierten Datentyp. | +| `SCHEMA` | Gängig: + +CREATE erstellt ein Element +ALTER ändert ein Element +DROP löscht ein Element diff --git a/Notes/Semester 1/DB - Datenbanken/Table of Contents.md b/Notes/Semester 1/DB - Datenbanken/Table of Contents.md new file mode 100644 index 0000000..36d03d9 --- /dev/null +++ b/Notes/Semester 1/DB - Datenbanken/Table of Contents.md @@ -0,0 +1,5 @@ +# Inhaltsverzeichnis + - [Relationale Algebra](./Relationale%20Algebra.md) + - [SQL-Abfragen](./SQL-Abfragen.md) + - [Daten-Arten](./Daten-Arten.md) + - [Lektionen](./Lessons) diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/01-Gundbegriffe und elementare Logik.md b/Notes/Semester 1/DM - Diskrete Mathematik/01-Gundbegriffe und elementare Logik.md new file mode 100644 index 0000000..623fb35 --- /dev/null +++ b/Notes/Semester 1/DM - Diskrete Mathematik/01-Gundbegriffe und elementare Logik.md @@ -0,0 +1,475 @@ +# Grundbegriffe und elementare Logik +## Aussagen, Prädikate, Junktoren und Quantoren +### Aussage +Eine Aussage beschreibt ein bestimmbares Objekt und deren Eigenschaften - diese lassen sich eindeutig bestätigen oder verneinen. + +> **_Beispiel einer wahren Aussage:_** +> "Die Zahl $3$ ist eine Primzahl" +> +> **_Beispiel einer unwahren Aussage:_** +> "Die Zahl $4$ ist eine Primzahl" + +#### Elementaraussagen und zusammengesetzte Aussagen +Eine spezielle Art von Aussage ist die sogenannte "Elementaraussage". Hierbei handelt es sich um eine Aussage, die nicht weiter aufgeteilt werden kann. + +Alle anderen Aussagen lassen sich weiter aufteilen und sind somit "zusammengesetzte Aussagen". + +> **_Zum Vergleich:_** +> - Elementaraussage: +> "Eine Woche hat 7 Tage" ist eine Elementaraussage +> - Zusammengesetzte Aussage: +> "ein Tag hat 24 Stunden **und** eine Woche hat 7 Tage" eine +> +> Mehr zu zusammengesetzten Aussagen unter [Junktoren](#junktoren) + +### Prädikat +Falls das Objekt, über welches eine Aussage getätigt wird, ohne Einschränkungen frei wählbar ist, handelt es sich nicht um eine Aussage, sondern um ein Prädikat. + +Prädikate, welche von einer Variable abhängen nennen sich "Einstelliges Prädikat". + +> **_Beispiele:_** +> - $A(x)$ = "Die gegebene Zahl $x$ ist eine Primzahl" +> - $A(x) = x < 3$ + +Prädikate, welche von zwei Variablen abhängen nennen sich "Zweiteiliges Prädikat". + +> **_Beispiel:_** +> $$A(x, y) = x < y$$ + +Mit Hilfe von Prädikaten können auch Aussagen erstellt werden: + +> **_Beispiel:_** +> +> **_Prädikat:_** $A(x) = x > 100$ +> **_Aussage:_** $A(10) = 10 > 100$ +> +> Hierbei ist $A$ der Name einer Funktion. + +### Junktoren +#### Zusammengesetzte Aussagen +Zusammengesetzte Aussagen sind Aussagen, die aus Elementaraussagen bestehen, die durch sogenannte [`Junktoren`](#junktoren) verknüpft werden. + +> **_Beispiel:_** +> $$A:=\text{"78 ist keine Primzahl"}$$ +> $$B:=\text{"15 ist keine Primzahl"}$$ +> $$C:=\text{"78 ist keine Primzahl und 15 ist keine Primzahl"}$$ + +$A$ und $B$ sind Elementaraussagen, $C$ ist eine zusammengesetzte Aussage. + +#### 1. Negation +Die Negation wird üblicherweise als "nicht" gesprochen. In Formeln wird die Negation mit dem Symbol $\neg$ geschrieben. + +Als Beispiel - $f$ für "falsch" und $w$ für "wahr": + +| $A$ | $\neg A$ | +| :---: | :------: | +| $f$ | $w$ | +| $w$ | $f$ | + +Bzw. mit $0$ für "falsch" und $1$ für "wahr": + +| $A$ | $\neg A$ | +| :---: | :------: | +| $0$ | $1$ | +| $1$ | $0$ | + +> **_Beispiel:_** +> $$A:=\text{"Hans studiert an der ZHAW"}$$ +> $$\neg A:=(\text{"Hans studiert nicht an der ZHAW"})$$ +> $$\neg A:=\text{"Es trifft nicht zu, dass Hans an der ZHAW studiert"}$$ + +#### 2. Konjunktion +Die Konjunktion wird als "und" gesprochen und mit dem Zeichen $\wedge$ geschrieben. + +> **_Beispiel:_** +> $$A:=\text{"6 ist durch 2 teilbar"}: wahr$$ +> $$B:=\text{"8 ist durch 5 teilbar"}: falsch$$ +> $$A \wedge B :=\text{"6 ist durch 2 teilbar und 8 ist durch 5 teilbar"}: falsch$$ + +| $A$ | $B$ | $A \wedge B$ | +| :---: | :---: | :----------: | +| $0$ | $0$ | $0$ | +| $0$ | $1$ | $0$ | +| $1$ | $0$ | $0$ | +| $1$ | $1$ | $1$ | + +> **_Beispiel:_** +> Falls A und B wahr sind: +> $A$: w +> $B$: w +> +> 1. $A \wedge B$: w +> 2. $\neg A \wedge B$: f +> 3. $A \wedge \neg B$: f +> 4. $\neg A \wedge \neg B$: f + +#### 3. Disjunktion +Die Disjunktion wird als "oder" gesprochen und mit dem Zeichen $\vee$ dargestellt. + +**_Beispiel:_** +> $$A:=\text{"9 ist durch 3 teilbar"}: wahr$$ +> $$B:=\text{"9 ist eine Quadratzahl"}: wahr$$ +> $$A \vee \neg B:=\text{"9 ist durch 3 teilbar oder 9 ist keine Quadratzahl"}: wahr$$ + +Ist eine der Aussagen der Disjunktion wahr, so ist auch die Disjunktion wahr. + +| $A$ | $B$ | $A \vee B$ | +| :---: | :---: | :--------: | +| $0$ | $0$ | $0$ | +| $0$ | $1$ | $1$ | +| $1$ | $0$ | $1$ | +| $1$ | $1$ | $1$ | + +#### 4. Implikation +Die Implikation wird als "wenn $A$, dann $B$" ausgesprochen und in Formeln mit dem Zeichen $\Rightarrow$ geschrieben. + +Sollte $A$ nicht zutreffen, ist das Ergebnis immer wahr ($w$ bzw. $1$). + +> **_Beispiel:_** +> $$A:=\text{"Es regnet"}$$ +> $$B:=\text{"Die Wiese ist nass"}$$ + +| $A$ | $B$ | $A \Rightarrow B$ | +| :---: | :---: | :---------------: | +| $0$ | $0$ | $1$ | +| $0$ | $1$ | $1$ | +| $1$ | $0$ | $0$ | +| $1$ | $1$ | $1$ | + +> ***Merksätze:*** +> - Wenn $A$ wahr ist, muss auch $B$ wahr sein. +> - Wenn $A$ falsch ist, kann $B$ wahr oder falsch sein. + +> **_Beispiel 2:_** +> $$A:=\text{"Es gibt Einhörner"}: falsch$$ +> $$B:=\text{"4 ist eine Primzahl"}: falsch$$ +> +> $$C:=\text{"Wenn es Einhörner gibt, ist 4 eine Primzahl"}: wahr$$ + +> ***Note:*** +> "Falls es Einhörner gibt, ist 4 eine Primzahl." +> Einhörner existieren nicht und 4 ist keine Primzahl - die Aussage ist also richtig... bis zum Fund des ersten Einhorns zumindest. :unicorn: + +> **_Beispiel 3:_** +> $$A:=\text{"Spinat ist grün"}$$ +> $$B:=\text{"2 ist eine Primzahl"}$$ + +> **_Beispiel 4:_** +> $$A:=\text{"Alle Fische leben im Ozean"}$$ +> $$B:=\text{"Forellen leben im Ozean"}$$ +> $$C:=\text{"Haie leben im Ozean"}$$ +> $\underbrace{\text{Alle Fische leben im Ozean}}_{A\text{: falsch}} \Rightarrow \underbrace{\text{Haie leben im Ozean}}_{C\text{: wahr}}$: wahr +> $\underbrace{\text{Alle Fische leben im Ozean}}_{A\text{: falsch}} \Rightarrow \underbrace{\text{Forellen leben im Ozean}}_{\text{B: falsch}}$: wahr + +> **_Note:_** +> _ex falso sequitur quodlibet_ (lateinisch für "aus Falschem folgt Beliebigest"), abgekürzt "e.f.q" oder eindeutiger _contradictione sequitur quodlibet_ (lateinisch für "aus einem Widerspruch folgt Beliebiges), bezeichnet im eigenen Sinn eines der beiden in vielen logischen Systemen gültigen Gesetze: +> 1. Aus einem logisch - nicht bloss faktisch - falschen Satz folgt jede beliebige Aussage. +> 2. Aus zwei widersprüchlichen Sätzen folgt jede beliebige Aussage. + +#### 5. Äquivalenz +Die Äquivalenz wird "ist gleich" ausgesprochen und mit dem Zeichen $\Leftrightarrow$ geschrieben. + +Dieser Junktor beschreibt, dass beide Aussagen äquivalent sind. In diesem Fall gilt: + +$$A \Rightarrow B \wedge B \Rightarrow A$$ + +> **_Merksatz:_** +> "$A$ gilt genau dann, wenn $B$ gilt" + +| $A$ | $B$ | $A \Leftrightarrow B$ | +| :---: | :---: | :-------------------: | +| $0$ | $0$ | $1$ | +| $0$ | $1$ | $0$ | +| $1$ | $0$ | $0$ | +| $1$ | $1$ | $1$ | + +> **_Beispiel:_** +> $A(x):=x^2=4$ und $B(x):=x=2$ +> +> in $\mathbb{Z}$: +> $$B(x) \Rightarrow A(x): wahr$$ +> +> in $\mathbb{N}$: +> $$A(x) \Rightarrow B(x): wahr$$ +> $$B(x) \Rightarrow A(x): wahr$$ +> $$A(x) \Leftrightarrow A(x): wahr$$ + +#### Reihenfolge der Bindungen +Die Reihenfolge der Bindungen beschreibt, welcher Operator die höchste Priorität hat. + + - $\neg$ + - $\wedge$ + - $\vee$ + - $\Rightarrow$ + - $\Leftrightarrow$ + +Wie zu sehen ist, hat $\neg$ die höchste Priorität. Schreibt man also eine Operation wie etwa $\neg A \wedge B$, muss $A$ negiert werden bevor die `AND` ($\wedge$)-operation berechnet wird: $(\neg A) \wedge B$. + +Des weiteren hat `AND` ($\wedge$) eine höhere Priorität als `OR` ($\vee$). So muss also in der Rechnung $A \vee B \wedge C$ der Term $B \wedge C$ als erstes berechnet werden: $A \vee (B \wedge C)$. + +#### Junktorenregeln +Junktorenregeln sind Regeln, wie man Aussagen umformen kann, sodass die Aussage (bzw. deren Bedingungen und Resultat) dieselbe ist. + +##### Regel der doppelten Negation +$\neg\neg A \Leftrightarrow A$ + +##### Kommutativität +$A \wedge B \Leftrightarrow B \wedge A$ und $A \vee B \Leftrightarrow B \vee A$ + +##### Assoziativität +$(A \wedge B) \wedge C \Leftrightarrow A \wedge (B \wedge C)$ +$(A \vee B) \vee C \Leftrightarrow A \vee (B \vee C)$ + +##### Distributivität +$A \wedge (B \vee C) \Leftrightarrow (A \wedge B) \vee (A \wedge C)$ +$A \vee (B \wedge C) \Leftrightarrow (A \vee B) \wedge (A \vee C)$ + +> **_Note:_** +> Es kann helfen, sich beim Umformen der Rechenoperationen die herkömmlichen Operationen $\times$ (Mal) und $+$ (Plus) vorzustellen, um eine Idee davon zu bekommen, wie die Operation vereinfacht werden muss: +> +> $$\underbrace{A}_{x} \underbrace{\wedge}_{\times}(\underbrace{B}_{y} \underbrace{\vee}_{+} \underbrace{C}_{z})\\ +> x \times (y + z) \Leftrightarrow (x \times y) + (x \times z)$$ +> Verglichen mit: +> $$(\overbrace{A}^{x} \overbrace{\wedge}^{\times} \overbrace{B}^{y}) \overbrace{\vee}^{+} (\overbrace{A}^{x} \overbrace{\wedge}^{\times} \overbrace{C}^{z})$$ +> Dieselbe Vorgangsweise lässt sich sowohl für Operationen mit $\wedge$ als auch mit $\vee$ anwenden: +> $$\overbrace{A}^{x} \overbrace{\vee}^{\times}(\overbrace{B}^{y} \overbrace{\wedge}^{+} \overbrace{C}^{z}) \overbrace{\Rightarrow}^{\Rightarrow} +> (\overbrace{A}^{x} \overbrace{\vee}^{\times} \overbrace{B}^{y}) \overbrace{\wedge}^{+} (\overbrace{A}^{x} \overbrace{\vee}^{\times} \overbrace{C}^{z})$$ + +##### Regeln von De Morgan +$\neg (A \wedge B) \Leftrightarrow \neg A \vee \neg B$ +$\neg (A \vee B) \Leftrightarrow \neg A \wedge \neg B$ + +> **_Beispiel:_** +> | Rechnung | Nächster Vorgang | +> | ------------------------------------------------ | ----------------- | +> | $A \Rightarrow B$ | | +> | $\Leftrightarrow \neg A \vee B$ | | +> | $\Leftrightarrow \neg\neg(\neg A \vee B)$ | Doppelte Negation | +> | $\Leftrightarrow \neg(\neg\neg A \wedge \neg B)$ | De Morgan | +> | $\Leftrightarrow \neg(A \wedge \neg B)$ | | +> | $\Leftrightarrow \neg A \vee \neg\neg B$ | De Morgan | +> | $\Leftrightarrow \neg\neg B \vee \neg A$ | Kommutativ | +> | $\Leftrightarrow \neg B \Rightarrow \neg A$ | | + +> **_In Worten:_** +> "Wenn es regnet, ist die Wiese nass" ($A \Rightarrow B$) +> "Wenn die Wiese nicht nass ist, regnet es nicht. ($\neg B \Rightarrow \neg A$) + +> **_Hinweis:_** +> Diese Umformung ($\neg B \Rightarrow \neg A$) ist nicht dasselbe wie $\neg(A \Rightarrow B)$ +> +> Weil: +> $$\neg(A \Rightarrow B)\\ +> \Leftrightarrow \neg(\neg A \vee B)\\ +> \Leftrightarrow \neg\neg A \wedge \neg B\\ +> \Leftrightarrow A \wedge \neg B$$ + +##### Kontraposition +$$A \Rightarrow B \Leftrightarrow \neg B \Rightarrow \neg A$$ + +### Quantoren +Weg um ein Prädikat in eine Aussage umzuformen. + +**_Beispiel:_** +$P(x):=\text{"x ist eine natürliche Zahl"}$: Prädikat +$P(5):=\text{"5 ist eine natürliche Zahl"}$: Aussage + +In dieser Aussage ist die Variable $x$ gebunden ($x = 5$). + +$\text{"Es gibt mindestens ein }x \in \mathbb{Z}\text{, so dass }P(x)\text{ gilt."}$: Aussage +$\text{"Für alle }x \in \mathbb{Z}\text{ gilt }P(x)$.": Aussage + +Quantoren sind Symbole, anhand derer wir aus Prädikaten oder Aussagen gewinnen können. Wir betrachten das Beispiel des Prädikates: + +$$A(x) := \text{"x ist eine Primzahl und x ist ein Teiler von 24"}$$ +$$B:=\text{"es gibt eine Primzahl welche ein Teiler von 24 ist"}$$ + +mit anderen Worten: + +$$B:= \text{"Es existiert ein x mit A(x)".}$$ + +Ein n-stelliges Prädikat wird durch Quantifizierung stets zu einem neuen $n-1$ stelligen Prädikat + +> **_Beispiel:_** +> $$A(x, y):= x < y$$ +> Bei der Funktion $A$ handelt es sich um ein 2-stelliges Prädikat. Die beiden Parameter heissen $x$ und $y$. +> $$B(y):= \forall x \in \mathbb{R} A(x, y)$$ +> Anders als die Funktion $A$ hat die Funktion $B$ nur einen Parameter namens $y$. Das Prädikat $B$ ist somit 1-stellig. + +#### Operatoren +Es gibt zwei verschiedene Quantoren, dessen Eigenschaften im Folgenden kurz aufgezeigt werden. + +| Symbol | Bezeichnung | Beschreibung | Gesprochen | +| --------- | --------------- | ----------------------------- | --------------- | +| $\forall$ | Allquantor | universelle Quantifizierung | "für alle" | +| $\exists$ | Existenzquantor | existenzielle Quantifizierung | "für mind. ein" | + +> **_Beispiele:_** +> $A(x, y) := x < y$ +> $\forall x \in \mathbb{R}(\exists y \in \mathbb{R} A(x, y))$ +> In Worten: "Für alle $x$ in den reellen Zahlen gibt es mindestens ein $y$, das grösser ist. Diese Aussage ist wahr. +> +> $B(x) := \text{"}x\text{ kann programmieren"}$ +> $I := Menge der Informatiker$ +> $A := \forall x \in I B(x) \Leftrightarrow \text{"Alle Informatiker können programmieren"}$ +> $\text{"Alles, was ein Informatiker ist, kann programmieren"}$ +> $\Leftrightarrow \forall x (x \in I \Rightarrow B(x))$ + +Ausdrücke wie $\forall_x \forall_y A(x, y)$ können zu $\forall_{x,y} A(x,y)$ gekürzt werden. + +#### Regeln + 1. Klammern + Quantoren binden stärker als Junktoren: + $\forall x \in M B(x) \wedge C(x) \Leftrightarrow (\forall x \in M B(x)) \wedge C(x)$ + nicht dasselbe wie: + $\forall x \in M (B(x) \wedge C(x))$ + + 2. Abkürzungen + $\forall x \in M (\forall y \in M A(x,y)) \Leftrightarrow \forall_{x,y} \in M A(x,y)$ + $\exists x \in M (\exists y \in M A(x,y)) \Leftrightarrow \exists_{x,y} \in M A8x,y)$ + Falls die Menge klar ist, kann diese von den Faktoren weggelassen werden: + $\forall x A(x)$ statt $\forall x \in M A(x)$ + 3. Negation + $\neg \exists_x \in M A(x) \Leftrightarrow \forall_x \in M \neg A(x)$ + $\neg \forall_x \in M A(x) \Leftrightarrow \exists_in \in M \neg A(x)$ + +#### Beispielsätze + +| In Worten | Operation | +| ---------------------------------- | ------------------------------------------------------------------------------------------------------ | +| Alle Prüfungen sind einfach | $\forall_x \in P E(x)$ | +| Eine Prüfung ist einfach | $\exists_x \in P E(x)$ | +| Keine Prüfung ist einfach | $\exists_x \in P E(x)$ | +| Alle Prüfungen sind nicht einfach | $\forall_x \in P \neg E(x)$ | +| Nur eine Prüfung ist einfach | $(\exists_x \in P E(x)) \wedge (\forall_{y,z} \in P (E(y) \wedge E(z) \Rightarrow y=z))$ | +| Nur eine Prüfung ist nicht einfach | $(\exists_x \in P \neg E(x)) \wedge (\forall_{y,z} \in P (\neg E(y) \wedge \neg E(z) \Rightarrow y=z)$ | +| Nicht alle Prüfungen sind einfach | $\neg \forall_x \in P E(x))$ | +| Eine Prüfung ist nicht einfach | $\exists_x \in P \neg E(x)$ | + +#### Vereinfachungen +| Term | Vereinfachung | +| ------------------------------------ | ---------------------- | +| $\neg \exists_x \neg A(x)$ | $\forall_x A(x)$ | +| $\neg \exists_x \in K \neg A(x)$ | $\forall_x \in K A(x)$ | +| $\forall_x(x\in K \Rightarrow A(x))$ | $\forall_x \in K A(x)$ | +| $\exists_x (x \in K \wedge A(x))$ | $\exists_x \in K A(x)$ | + +## Grundlegende Beweistechniken +### Direkter Beweis einer Implikation +Es gilt, eine Implikation zu beweisen: +$$A \Rightarrow B$$ + +Beweisen, dass in allen Fällen, in denen $A$ wahr ist, auch $B$ wahr ist. + +Dies geschieht durch das Beweisen der Allgemeingültigkeit durch Nutzung von Variablen an Stelle von konkreten Werten. + +> ***Beispiel:*** +> - $A$: "$x$ und $y$ sind gerade." +> - $B$: "$x \cdot y$ ist gerade." +> - $A \Rightarrow B$: "Wenn $x$ und $y$ gerade sind, ist auch $x \cdot y$ gerade. +> +> ***Beweis:*** +> $$x = 2 \cdot n_x$$ +> $$y = 2 \cdot n_y$$ +> $$x \cdot y = (2 \cdot n_x) \cdot (2 \cdot n_y)$$ +> $$\Leftrightarrow 2 \cdot (n_x \cdot 2 \cdot n_y)$$ +> $x \cdot y$ ist also durch 2 teilbar und ist somit gerade. + +### Beweis durch Widerspruch +Es gilt zu beweisen, dass eine Aussage $A$ wahr ist. + +Die Lösungsstrategie hierbei ist, zu beweisen, dass die Negation der Aussage falsch ist. + +> ***Beispiel:*** +> - $A$: "Es gibt keine grösste natürliche Zahl" +> +> Die negierte Annahme $A$, entspricht der, dass es eine grösste natürliche Zahl $m$ gibt. +> +> Für jede natürliche Zahl $n \in \mathbb{N}$ gilt, dass es einerseits eine nächstgrössere Natürliche Zahl $o = n + 1$ für die $o > n$ gilt. +> +> Da auch die angenommene grösste Zahl $m$ eine natürliche Zahl $n \in \mathbb{N}$ ist, gilt auch für $m$, dass es eine folgezahl $o$ gibt, die grösser ist. Dies kann als Beweis interpretiert werden, dass die Aussage $A$ wahr ist. + +### Beweis durch (Gegen-)Beispiel +Es gilt zu zeigen, dass eine bestimmte bestimmte Aussage nicht auf alle Elemente zutrifft. + +Dies geschieht, indem man ein Beispiel oder ein Gegenbeispiel für die vorliegende Aussage findet. + +> ***Beispiele in Worte:*** +> - $A$: "Alle Schweine sind rosa." +> - Gegenbeispiel $B$: "Die Schweine, die Kenny getötet haben, sind aber nicht rosa!" +> +> - $A$: "Es gibt Wochentage, die nicht mit '-tag' enden." +> - Beispiel $B$: "Mittwoch." + +> ***Beispiel:*** +> - $A$: "Nicht jede natürliche Zahl ist eine Quadratzahl einer natürlichen Zahl." +> oder in alternativer Ausdrucksweise: +> $A$: "Es gibt natürliche Zahlen, die keine Quadratzahl einer natürlichen Zahl sind." +> +> Um diese Aussage $A$ zu belegen, gilt es lediglich, ein geeignetes Beispiel zu finden. +> +> Aufzeigen kann man das bspw. anhand der Zahl $2$. +> +> $1^2 = 1$ ist kleiner als $2$ und $2^2 = 4$ ist grösser als $2$. $2$ ist also keine Quadratzahl einer natürlichen Zahl. + +### Beweis durch Kontraposition +Es gilt zu beweisen, ob eine Aussage, welche eine Implikation in der Form $A \Rightarrow B$ (siehe [Implikation](#4-implikation)) ist, wahr oder falsch ist. + +Dies kann erreicht werden, indem man, wie im Kapitel [Kontraposition](#kontraposition) beschrieben die Aussage von $A \Rightarrow B$ zu $\neg B \Rightarrow \neg A$ umformt. + +> ***Beispiel in Worten:*** +> - $A$: "Wenn es regnet ist die Wiese nass." +> - Beweisbare Kontraposition $B$: "Wenn die Wiese nicht nass ist, regnet es nicht." + +> ***Beispiel:*** +> - $A$: "Für jede natürliche Zahl $n$ gilt: $(n^2 + 1 = 1) \Rightarrow (n = 0)$ +> - Kontraposition $B$: "Für jede natürliche Zahl $n$ gilt: $(n \not = 0) \Rightarrow (n^2 + 1 \not = 1)$ +> +> Falls die Bedingung, dass $n \not = 0$ ist, gilt auch, dass $n^2 \not = 0$ ist. +> Somit ist also bewiesen, dass, im Falle, dass $n \not = 0$, auch $n^2 + 1 \not = 1$ zutrifft. + +### Beweis einer Äquivalenz +Es ist eine Aussage der Form $A \Leftrightarrow B$ zu beweisen. + +Erreicht werden kann das, indem man sowohl $A \Rightarrow B$ als auch $B \Rightarrow A$ beweist. + +> ***Beispiel:*** +> - $A$: "$(n\text{ ist gerade}) \Leftrightarrow (n^2\text{ ist gerade})$" +> +> Eine gerade Zahl kann jeweils bestimmt werden, indem man eine bestehende Zahl verdoppelt: +> $$n = 2 \cdot i$$ +> $n$ ist also immer dann gerade, wenn es $2 \cdot i$ entspricht ($i$ ist hierbei eine beliebige, natürliche Zahl). +> +> Trifft dies zu, so entspricht $n^2$ folgendem: $(2 \cdot i) \cdot (2 \cdot i)$. +> Dies lässt sich, als Beweis, dass es durch $2$ teilbar ist, folgendermassen umformen: +> $$2 \cdot (i \cdot 2 \cdot i)$$ +> Da $n^2$ immer dem Term $(2 \cdot i) \cdot (2 \cdot i)$ entspricht, ist diese Aussage nun in beide Richtungen bewiesen. + +### Beispielübung +Jeder Geldbetrag von mindestens $4$ Cents lässt sich alleine mit $2$- und $5$-Centstücken bezahlen. + +In algebraischer Form würde das in etwa so aussehen: + +$$\forall x \in \left\{ \mathbb{N} | x \geq 4 \right\} x = 2a + 5b$$ + +An dieser Stelle steht $a$ für die Anzahl $2$-Centstücke und $b$ für die Anzahl $5$-Centstücke. + +Dies kann mit Hilfe einer Fallunterscheidung (basierend darauf, ob der zu bezahlende Betrag gerade oder ungerade ist). + +Eine natürliche Zahl kann nur entweder gerade oder ungerade sein. Aus diesem Grund müssen nur diese beiden Fälle behandelt werden. + +#### Für gerade Zahlen +Gerade Zahlen können jeweils mit $2$-Centstücken bezahlt werden. Die Anzahl $2$-Centstücke ist hierbei jeweils der zu bezahlende Betrag geteilt durch $2$. + +In algebraischer Form würde dies in etwa folgendermassen aussehen: +$$\forall x \in \left\{ \mathbb{N} | x \geq 4 | x \text{ ist gerade} \right\} = 2 \cdot \frac{x}{2}$$ + +#### Für ungerade Zahlen +Um ungerade Zahlen zu erreichen, muss ein Weg gefunden werden, zu einem bestehenden, geraden Betrag einen zusätzlichen Cent zu bezahlen. + +Dies kann erreicht werden, indem man 2 $2$-Centstücke weniger als geplant und stattdessen ein zusätzliches $5$-Centstück auszahlt. + +Algebraisch sieht das wiederum so aus: +$$\forall x \in \left\{ \mathbb{N} | x \geq 4 | x \text{ ist ungerade} \right\} = 2 \cdot \left(\frac{x}{2} - 2\right) + 5 \cdot 1$$ + +Damit ist nun die getätigte Aussage dieser Aufgabe bewiesen. diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/02-Syntax & Semantik.md b/Notes/Semester 1/DM - Diskrete Mathematik/02-Syntax & Semantik.md new file mode 100644 index 0000000..fd6721e --- /dev/null +++ b/Notes/Semester 1/DM - Diskrete Mathematik/02-Syntax & Semantik.md @@ -0,0 +1,234 @@ +# Syntax & Semantik +## Definition +Die Syntax beschreibt jeweils die Form, in der Dinge niedergeschrieben oder abgespeichert sind, während die Semantik bedeutet, wie das Geschriebene/das Gespeicherte interpretiert wird. + +Folgend einige Beispiele: + +| Syntax | Semantik | +| ---------------------------------- | ---------------------------------------------- | +| Paritur | Musik (Schallwellen) | +| Java-Code | Verhalten des Computers | +| Terme einer mathematischen Theorie | Mathematische Objekte | +| Aussagenlogische Formeln | Boolsche Funktionen | +| Peano-Axiome | Die Struktur ($\mathbb{N}$, $+$, $\cdot$ etc.) | +| Feynnman-Diagramm | Wechselwirkungen | + +Abgesehen von den bereits aus dem Kapitel "Grundbegriffe und elementare Logik" bekannten Ausdrücke sind auch folgende Ausdrücke wichtig: + - $\top$: Gleichbedeutend mit `true` + - $\bot$: Gleichbedeutend mit `false` + +## Darstellung +Um leichter Erkenntnisse über Wahrheitswerte von Aussagen zu ziehen, können diese in verschiedene Darstellungsformen gebracht werden. + +Im Folgenden werden einige davon aufgezeigt. + +### Ableitungsbaum +Ein Ableitungsbaum lässt es zu, den Überblick über eine Aussage bei einer bestimmten Belegung zu geben. + +Folgende Formel gilt es darzustellen: +$$f = (((a \wedge b) \vee (\neg c)) \wedge (a \vee b))$$ + +Folgendes ist der Ableitungsbaum unter der Bedingung, dass $a = 1$, $b = 0$ und $c = 0$ entspricht: + +```mermaid +flowchart BT; +a((a: 1)); +b((b: 0)); +c((c: 0)); +a --- 1((AND)); +b --- 1; +c --- 2((NOT)); +1 -- 0 --- 3((OR)); +2 -- 1 --- 3; +a --- 4((OR)); +b --- 4; +3 -- 1 --- 5((AND)); +4 -- 1 --- 5; +5 --- f((f: 1)) +``` + +### Boolsche Funktionen +Ein weiterer Weg, eine Aussage darzustellen ist als boolsche Funktionen. + +Hierbei werden jeweils algebraische Operatoren durch eine Funktion ersetzt, die dasselbe aussagt, nämlich folgende: + +| Operator | Funktion | +| ------------ | ------------------ | +| $\neg A$ | $\text{not}(A)$ | +| $A \wedge B$ | $\text{or}(A, B)$ | +| $A \vee B$ | $\text{and}(A, B)$ | + +$$\begin{aligned} +\newcommand{\and}{\mathop{\mathrm{and}}} + \text{or}(x,y) &= \begin{cases} + true & \text{falls} & x = true & \text{oder} & y = true \\ + false & \text{sonst} + \end{cases} \\ + + \text{and}(x,y) &= \begin{cases} + true & \text{falls} & x = true & \text{und} & y = true \\ + false & \text{sonst} + \end{cases} \\ + + \text{not}(x) &= \begin{cases} + true & \text{falls} & x = false \\ + false & \text{sonst} + \end{cases} +\end{aligned}$$ + +### Wahrheitstabelle +Ein weiterer Weg, welcher es einem erleichtert, Erkenntnisse aus einer Aussage zu treffen, ist das Ausarbeiten einer Wahrheitstabelle, indem man alle einzelnen Terme berechnet. + +Folgend ein Beispiel für diesen algebraischen Ausdruck: +$$p_0 \rightarrow (q \vee p_1)$$ + +| $p_0$ | q | $p_1$ | $q \vee p_1$ | $p_0 \rightarrow (q \vee p_1)$ | +| :---: | :---: | :---: | :----------: | :----------------------------: | +| $0$ | $0$ | $0$ | $0$ | $1$ | +| $0$ | $0$ | $1$ | $1$ | $1$ | +| $0$ | $1$ | $0$ | $1$ | $1$ | +| $0$ | $1$ | $1$ | $1$ | $1$ | +| $1$ | $0$ | $0$ | $0$ | $0$ | +| $1$ | $0$ | $1$ | $1$ | $1$ | +| $1$ | $1$ | $0$ | $1$ | $1$ | +| $1$ | $1$ | $1$ | $1$ | $1$ | + +#### Boolsche Operatoren als Wahrheitstabellen +Folgendes sind boolsche Operatoren dargestellt als Wahrheitstabellen. + +##### `AND` $\wedge$ +| $F$ | $G$ | $F \wedge G$ | +| :---: | :---: | :----------: | +| $0$ | $0$ | $0$ | +| $0$ | $1$ | $0$ | +| $1$ | $0$ | $0$ | +| $1$ | $1$ | $1$ | + +##### `OR` $\vee$ +| $F$ | $G$ | $F \vee G$ | +| :---: | :---: | :--------: | +| $0$ | $0$ | $0$ | +| $0$ | $1$ | $1$ | +| $1$ | $0$ | $1$ | +| $1$ | $1$ | $1$ | + +##### Implikation $\Rightarrow$ +| $F$ | $G$ | $F \Rightarrow G$ | +| :---: | :---: | :---------------: | +| $0$ | $0$ | $1$ | +| $0$ | $1$ | $1$ | +| $1$ | $0$ | $0$ | +| $1$ | $1$ | $1$ | + +#### Negation $\neg$ +| $F$ | $\neg F$ | +| :---: | :------: | +| $0$ | $1$ | +| $1$ | $0$ | + +## Semantische Eigenschaften +Über eine Formel $A$ mit der Belegung $B$ können unter bestimmten Umständen bestimmte Aussagen getroffen werden. + +Folgend sind Aussagen und dazugehörige Umstände aufgelistet. + +| Bezeichnung | Alternative Bezeichnung | Beschreibung | +| ----------------- | --------------------------------- | ------------------------------------------------------------------------------ | +| _Gültig_ | _richtig_ oder _wahr_ | Die gegebene Formel ist unter der Belegung $B$ wahr. | +| _Allgemeingültig_ | _Tautologie_ oder _immer wahr_ | Die gegebene Formel ist, unabhängig der Belegung $B$, immer wahr. | +| _Ungültig_ | _falsch_ oder _unwahr_ | Die gegebene Formel ist unter der Belegung $B$ nicht wahr. | +| _Unerfüllbar_ | _Widerspruch_ oder _immer falsch_ | Die gegebene Formel ist, unabhängig der Belegung $B$, immer falsch. | +| _erfüllbar_ | | Es gibt mindestens eine Belegung $B$ unter der die Formel erfüllbar ist. | +| _widerlegbar_ | | Es gibt mindestens eine Belegung $B$ unter der die Formel nicht erfüllbar ist. | + +## Normalformen +Normalformen beinhalten generell nur `AND`s ($\wedge$), `OR`s ($\vee$) und `NOT`s ($\neg$). + +### Negationsnormalform `NNF` +Die Negationsnormalform (`NNF`) ist die Form einer Formel, in der nur atomare (nicht aufteilbare) Teilformeln negiert sind. + +Folgendes Beispiel anhand dieser Formel: +$$\neg(A \rightarrow (B \wedge \neg(C \vee D)))$$ + +Diese Form ist nicht komplett normalisiert, da sie den Operator $\rightarrow$ beinhaltet. +Dieser Operator wird im Folgenden umgeformt. + +$$\neg(\neg A \vee (B \wedge \neg(C \vee D)))$$ + +Diese Formel ist keine `NNF`, da 2 nicht-atomare Formeln negiert sind. +Im Folgenden werden diese entfernt. + +$$(\neg\neg A \wedge \neg(B \wedge (\neg C \wedge \neg D)))$$ +$$(\neg\neg A \wedge (\neg B \vee \neg(\neg C \wedge \neg D)))$$ + +Nun ist nur noch eine letzte nicht-atomare Teilformel negiert. Dieser Teil wird nun entfernt: + +$$(\neg\neg A \wedge (\neg B \vee (\neg\neg C \vee \neg\neg D)))$$ + +In einem letzten Schritt werden nun doppelte Negationen weg vereinfacht: + +$$(A \wedge (\neg B \vee (C \vee D)))$$ + +Bei dieser Formel handelt es sich nun um eine Negationsnormalform (`NNF`), da nur atomare Teilformeln negiert sind und nur $\neg$s, $\vee$s und $\wedge$s in der Formel genutzt werden. + +### Disjunktive Normalform `DNF` +Die Disjunktive Normalform ist eine Umformung der Formel, in der alle Belegungen für die die Formel $true$ ergibt, mit einander "verodert" werden. + +Das sieht folgendermassen aus: + +| $A$ | $B$ | $C$ | $D$ | $B \vee D$ | $(B \vee D) \wedge C$ | $\neg A \wedge ((B \vee D) \wedge C)$ | +| :---: | :---: | :---: | :---: | :--------: | :-------------------: | :-----------------------------------: | +| $0$ | $0$ | $0$ | $0$ | $0$ | $0$ | $0$ | +| $0$ | $0$ | $0$ | $1$ | $1$ | $0$ | $0$ | +| $0$ | $0$ | $1$ | $0$ | $0$ | $0$ | $0$ | +| $0$ | $0$ | $1$ | $1$ | $1$ | $1$ | $1$ | +| $0$ | $1$ | $0$ | $0$ | $1$ | $0$ | $0$ | +| $0$ | $1$ | $0$ | $1$ | $1$ | $0$ | $0$ | +| $0$ | $1$ | $1$ | $0$ | $1$ | $1$ | $1$ | +| $0$ | $1$ | $1$ | $1$ | $1$ | $1$ | $1$ | +| $1$ | $0$ | $0$ | $0$ | $0$ | $0$ | $0$ | +| $1$ | $0$ | $0$ | $1$ | $1$ | $0$ | $0$ | +| $1$ | $0$ | $1$ | $0$ | $0$ | $0$ | $0$ | +| $1$ | $0$ | $1$ | $1$ | $1$ | $1$ | $0$ | +| $1$ | $1$ | $0$ | $0$ | $1$ | $0$ | $0$ | +| $1$ | $1$ | $0$ | $1$ | $1$ | $0$ | $0$ | +| $1$ | $1$ | $1$ | $0$ | $1$ | $1$ | $0$ | +| $1$ | $1$ | $1$ | $1$ | $1$ | $1$ | $0$ | + +Wie zu sehen ist, ist diese Formel an folgenden Stellen wahr: + - $\neg A \wedge \neg B \wedge C \wedge D$ + - $\neg A \wedge B \wedge C \wedge \neg D$ + - $\neg A \wedge B \wedge C \wedge D$ + +Die `DNF` erreicht man nun die Teilformeln der genannten Stellen mit einem `OR` verknüpft: +$$(\neg A \wedge \neg B \wedge C \wedge D) \vee (\neg A \wedge B \wedge C \wedge \neg D) \vee (\neg A \wedge B \wedge C \wedge D)$$ + +### Konjunktive Normalform `KNF` +Bei der Konjunktiven Normalform wiederum, werden alle negierten Belegungen, in denen die gegebene Formel $false$ ergibt miteinander "geandet". + +Folgendes wieder anhand eines realen Beispiels: + +| $A$ | $B$ | $C$ | $A \vee C$ | $B \vee (A \wedge C)$ | +| :---: | :---: | :---: | :--------: | :-------------------: | +| $0$ | $0$ | $0$ | $0$ | $0$ | +| $0$ | $0$ | $1$ | $0$ | $0$ | +| $0$ | $1$ | $0$ | $0$ | $1$ | +| $0$ | $1$ | $1$ | $0$ | $1$ | +| $1$ | $0$ | $0$ | $0$ | $0$ | +| $1$ | $0$ | $1$ | $1$ | $1$ | +| $1$ | $1$ | $0$ | $0$ | $1$ | +| $1$ | $1$ | $1$ | $1$ | $1$ | + +An folgenden Stellen ergibt diese Formel $false$: + - $\neg A \wedge \neg B \wedge \neg C$ + Negation: $A \vee B \vee C$ + - $\neg A \wedge \neg B \wedge C$ + Negation: $A \vee B \vee \neg C$ + - $A \wedge \neg B \wedge \neg C$ + Negation: $\neg A \vee B \vee C$ + +Um nun eine `KNF` zu erhalten müssen die Negationen der genannten Stellen mit dem $\vee$-Operator verknüpft werden: +$$(A \vee B \vee C) \wedge (A \vee B \vee \neg C) \wedge (\neg A \vee B \vee C)$$ + +# Quellen + - [YouTube - Konjunktive Normalform KNF / conjunctive normal form CNF | Digitaltechnik](https://www.youtube.com/watch?v=l6b7895U-u8) + - [YouTube - Disjunktive Normalform DNF / disjunctive normal form | Digitaltechnik](https://www.youtube.com/watch?v=GyQITHPQst4) diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/03-Mengen, Relationen und Funktionen.md b/Notes/Semester 1/DM - Diskrete Mathematik/03-Mengen, Relationen und Funktionen.md new file mode 100644 index 0000000..4658702 --- /dev/null +++ b/Notes/Semester 1/DM - Diskrete Mathematik/03-Mengen, Relationen und Funktionen.md @@ -0,0 +1,96 @@ +# Mengen, Relationen und Funktionen +## Mengen +Zusammenfassung **unterscheidbarer** Objekte + +> **Beispiele:** +> * Folgendes sind Mengen: +> * ${1, 2, 3}$ +> * Mitglieder einer Klasse +> * Wesen einer bestimmten Spezies +> * Folgendes sind **keine** Mengen: +> * ${1, 1, 3}$ +> * Personen mit schlechtem Gedankengut +> * ***Anmerkung:*** Keine Menge, da der Term "schlecht" nicht genauer beschrieben wird + +### Gleichheit von Mengen +Zwei Mengen sind genau dann gleich, wenn die dieselben Elemente enthalten. Es gilt für alle Mengen $\mathbb{X}$ und $\mathbb{Y}$ die Äquivalenz, wenn folgendes zutrifft: + +**Im Scrtipt nachlesen - Definition 15** + +### Eigenschaften von Mengen +#### Sortierung +Mengen sind unsortiert folglich gilt folgendes: +$$\{1,2,3\} = \{2,3,1\} = \{1,3,2\}$$ + +### Spezielle Zahlenmengen +#### Natürliche Zahlen $\mathbb{N}$ +Die natürlichen zahlen beinhalten alle positiven, ganzen Zahlen. +Üblicherweise ist in diesen die $0$ **nicht** mit eingeschlossen. Um dies eindeutig zu kennzeichnen, kann man die Menge auch als $\mathbb{N}_0$ schreiben. +$$\mathbb{N} = \{\mathbb{N}_{\ge 1}\} = \{ 1, 2, 3, ...\}$$ +$$\mathbb{N}_0 = \{\mathbb{N}_{\ge 0}\} = \{ 0, 1, 2, 3, ... \}$$ + +#### Ganze Zahlen $\mathbb{Z}$ +$\mathbb{Z}$ beinhaltet alle ganzzahligen Werte. Des weiteren kann man die Menge $\mathbb{Z}$ in einer Notation schreiben, um klarzustellen, ob nur positive oder nur negative Zahlen gemeint sind ($\mathbb{Z}^+$ und $\mathbb{Z}^-$). Wird die Menge mit keiner besonderen Notation geschrieben, sind sowohl positive als auch negative Zahlen (inkl. $0$) gemeint. + +$$\mathbb{Z} : \text{ganze Zahlen}$$ +$$\mathbb{Z} = \{..., -2, -1, 0, 1, 2 ...\}$$ +$$\mathbb{Z}^+ : \text{positive Zahlen}$$ +$$\mathbb{Z}^- : \text{negative Zahlen}$$ + +#### Rationale Zahlen $\mathbb{Q}$ +Rationale Zahlen sind Zahlen, die sich als einfacher Bruch darstellen lassen. So ist bspw. $\frac{1}{\sqrt{2}}$ **keine** rationale Zahl, da sich dieser Term nicht als einfacher Bruch darstellen lässt, denn $\sqrt{2}$ lässt sich nicht berechnen. + +> ***Beispiele:*** +> $$\frac{2}{3}$$ +> $$\frac{1}{2}$$ + +#### Reelle Zahlen $\mathbb{R}$ + +$$\mathbb{R} : \text{reelle Zahlen}$$ +**Beispiele** $\sqrt{2}, \pi, e$ +$$\mathbb{C} : \text{komplexe Zahlen}$$ +Unmögliche Zahlen wie bspw. negaive Wurzeln + +### Intervallschreibweise +$$[a,b]:= \{ x \in \mathbb{R} | a \leq x \leq b \}$$ + +Falls in einer in der Intervallschreibweise geschriebenen Menge kein Definitionsbereich angegeben wird, wird implizit mit $\mathbb{R}$ (reellen Zahlen) gearbeitet. + +$$]a, b[ = (a, b) = \{x\in \mathbb{R} | a < x < b\}$$ + +### Prädikatschreibweise + + +## Relationen +### Operationen auf Relationen +1. Komposition $\circ$ (hintereinander ausführen) + +$$R = \{(1, a), (2, b), (3, c)\} \subseteq A \times B$$ + +Surrjektiv - Rechtstotal +Zu jedem "b" hat es mindestens ein "a" + +Injektiv - Linkseindeutig +Zu jedem "b" gibt es maximal ein "a" + +Bijektiv (Surjektiv & ijketiv) +Zu jedem "b" gibt es genau ein "a" + +### Unendlich grosse Mengen +Endlich grosse Mengen lassen sich vergleichen, indem man die Mächtigkeit gegenüberstellt - also die Anzahl der Elemente in $A$ und die Anzahl Elemente in $B$ und diese vergleicht. + +In unendlich grossen Mengen ist dies jedoch unmöglich. + +#### Abzählbarkeit + 1. Jede endliche Menge ist abzählbar + 2. Jede Teilmenge ist abzählbar + 3. Ist $X$ eine abzählbare Menge & gibt es eine surjektive Funktion $F: X \rightarrow Y$, dann ist auch $Y$ abzählbar + 4. Gibt es keine solche Funktion, ist $Y$ überabzählbar + +Beispiele von Menge: + - Abzählbar + - $\mathbb{M}$, $\mathbb{Z}$, $\mathbb{Q}$, $\mathbb{N} \times \mathbb{N}$ + +## 2021-11-23 + - Beweismethode kleinster Verbrecher (Script Beispiel 50) + - \ No newline at end of file diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/05- Elementare Zahlen.md b/Notes/Semester 1/DM - Diskrete Mathematik/05- Elementare Zahlen.md new file mode 100644 index 0000000..041ed85 --- /dev/null +++ b/Notes/Semester 1/DM - Diskrete Mathematik/05- Elementare Zahlen.md @@ -0,0 +1,21 @@ +## 5.2 Primzahlen +Primzahlen $p$ sind natürliche Zahlen ($\mathbb{N}$), die nur durch 1 und sich selbst teilbar sind. + +D.h. Die Anzahl an Teilern, die eine Primzahl hat, **muss** $2$ entsprechen. + +Dementsprechend ist $1$ keine Primzahl, da $1$ nur durch eine Zahl teilbar ist. + +Primzahlen mit dem Sieb des Eratosthenes + +### Beweisführung für unendliche Primzahlen +Es gibt unendlich grosse Primzahlen + +Beweis: Widerspruch +Behauptung: Es gibt nur endlich viele Primzahlen $\mathbb{P} = \{p_1, ..., p_n} | p_i \in \mathbb{N}$ + +Aus satz 25: + +### Primfaktoren Zerlegung +Jede natürliche Zahl > 1 ist ein Produkt von endlich vielen Primzahlen. + +Mit Hilfe der Primfaktorzerlegung lassen sich diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/Q&A.md b/Notes/Semester 1/DM - Diskrete Mathematik/Q&A.md new file mode 100644 index 0000000..b31389c --- /dev/null +++ b/Notes/Semester 1/DM - Diskrete Mathematik/Q&A.md @@ -0,0 +1 @@ +In welchen Situationen wird $\rightarrow$ und in welchen Situationen $\Rightarrow$ verwendet? diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/Table of Contents.md b/Notes/Semester 1/DM - Diskrete Mathematik/Table of Contents.md new file mode 100644 index 0000000..271ce05 --- /dev/null +++ b/Notes/Semester 1/DM - Diskrete Mathematik/Table of Contents.md @@ -0,0 +1,4 @@ +# Inhaltsverzeichnis + - [Grundbegriffe und elementare Logik](./01-Gundbegriffe%20und%20elementare%20Logik.md) + - [Syntax & Semantik](./02-Syntax%20&%20Semantik.md) + - [Mengen, Relationen und Funktionen](./03-Mengen,%20Relationen%20und%20Funktionen.md) diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/Zusammenfassung.md b/Notes/Semester 1/DM - Diskrete Mathematik/Zusammenfassung.md new file mode 100644 index 0000000..f6d202a --- /dev/null +++ b/Notes/Semester 1/DM - Diskrete Mathematik/Zusammenfassung.md @@ -0,0 +1,479 @@ + +# Inhaltsverzeichnis +- [Inhaltsverzeichnis](#inhaltsverzeichnis) +- [Aussagenlogisches Rechnen](#aussagenlogisches-rechnen) + - [Operatoren](#operatoren) + - [Regeln](#regeln) + - [Regeln der Doppelten Negation](#regeln-der-doppelten-negation) + - [Absorption](#absorption) + - [Kommutativität](#kommutativität) + - [Assoziativität](#assoziativität) + - [Distributivität](#distributivität) + - [Regeln von De Morgan](#regeln-von-de-morgan) + - [Quantoren](#quantoren) + - [Regeln](#regeln-1) +- [Beweistechniken](#beweistechniken) + - [Beweis durch Implikation](#beweis-durch-implikation) + - [Beweis durch Widerspruch](#beweis-durch-widerspruch) + - [Beweis durch (Gegen-)Beispiel](#beweis-durch-gegen-beispiel) + - [Beweis durch Kontraposition](#beweis-durch-kontraposition) + - [Beweis durch Äquivalenz](#beweis-durch-äquivalenz) + - [Wahrheitstabelle](#wahrheitstabelle) + - [Normalformen](#normalformen) + - [Negationsnormalform `NNF`](#negationsnormalform-nnf) + - [Disjunktive Normalform `DNF`](#disjunktive-normalform-dnf) + - [Konjunktive Normalform `KNF`](#konjunktive-normalform-knf) + - [Ableitungsbaum](#ableitungsbaum) +- [Mengen](#mengen) + - [Syntax](#syntax) + - [Operationen](#operationen) + - [Subset $\subseteq$](#subset-subseteq) + - [Vereinigung $\cup$](#vereinigung-cup) + - [Schnittmenge $\cap$](#schnittmenge-cap) + - [Differenz $\setminus$](#differenz-setminus) + - [Komplement/Negation $\overline{A}$](#komplementnegation-overlinea) + - [Symmetrische Differenz $\triangle$](#symmetrische-differenz-triangle) + - [Mächtigkeit $\vert A \vert$](#mächtigkeit-vert-a-vert) + - [Kartesisches Produkt $\times$](#kartesisches-produkt-times) + - [Rechenregeln](#rechenregeln) + - [Kommuntativität](#kommuntativität) + - [Vordefinierte Mengen](#vordefinierte-mengen) + - [Potenzmenge $\mathcal{P}$](#potenzmenge-mathcalp) + - [Partition](#partition) + - [Unendlichkeit](#unendlichkeit) + - [Rechnen mit Unendlichkeit](#rechnen-mit-unendlichkeit) +- [Relationen](#relationen) + - [Äquivalenzklasse](#äquivalenzklasse) + - [Äquivalenzrelation](#äquivalenzrelation) +- [Themen](#themen) +- [Glossar](#glossar) + +# Aussagenlogisches Rechnen +## Operatoren + - $\neg A$ + Gesprochen: "Nicht $A$" + - $A \wedge B$ + Gesprochen: "$A$ und $B$" + - $A \vee B$ + Gesprochen: "$A$ oder $B$" + - $A \Rightarrow B$ + Entspricht $\neg A \vee B$. Gesprochen: "$A$ impliziert $B$" + - $A \Leftrightarrow B$ + Gesprochen: "$A$ äquivalent $B$" + +## Regeln +### Regeln der Doppelten Negation +$$\neg\neg A \Leftrightarrow A$$ + +### Absorption +$$A \wedge A \Leftrightarrow A$$ +$$A \vee A \Leftrightarrow A$$ + +### Kommutativität +Operanden können beliebig vertauscht werden: + +$$A \wedge B \Leftrightarrow B \wedge A$$ +$$A \vee B \Leftrightarrow B \vee A$$ + +### Assoziativität +**Identische** Operationen können in beliebiger Reihenfolge ausgeführt werden: + +$$(A \wedge B) \wedge C \Leftrightarrow A \wedge (B \wedge C)$$ +$$(A \vee B) \vee C \Leftrightarrow A \vee (B \vee C)$$ + +### Distributivität +**Unterschiedliche** Operationen können "ausmultipliziert" werden: + +$$A \wedge (B \vee C) \Leftrightarrow (A \wedge B) \vee (A \wedge C)$$ +$$A \vee (B \wedge C) \Leftrightarrow (A \vee B) \wedge (A \vee C)$$ + +### Regeln von De Morgan +$$\neg(A \wedge B) \Leftrightarrow \neg A \vee \neg B$$ +$$\neg(A \vee B) \Leftrightarrow \neg A \wedge \neg B$$ + +## Quantoren + - $\forall x\, A(x)$ + Gesprochen: "Für alle $x$ gilt $A(x)$" + - $\forall x \in M A(x)$ + Gesprochen: "Für alle $x$ aus der Menge $M$ gilt $A(x)$ + - $\exists x\, A(x)$ + Gesprochen: "Es gibt ein $x$ mit $A(x)$" + - $\exists x \in M A(x)$ + Gesprochen: "Es gibt ein $x$ aus der Menge $M$ mit $A(x)$" + +$\forall x \forall y\, A(x,y) \Leftrightarrow \forall{x,y}\, A(x,y)$ und $\exist x \exist y\, A(x,y) \Leftrightarrow \exist{x,y}\, A(x,y)$ + +> ***Hinweis:*** +> Die Bezeichnung fär die Symbole $\forall$ und $\exist$ sind _Allquantor_ und _Existenzquantor_. + +### Regeln + - Vertauschungsregel für unbeschränkte Quantoren + $\forall x\, A(x) \Leftrightarrow \neg\exist x\, \neg A(x)$ + - Vertauschungsregel für beschränkte Quantoren + $\forall x \in K\, A(x) \Leftrightarrow \neg\exist x \in K \neg A(x)$ + - Beschränkter und unbeschränkter Allquantor + $\forall x \in K A(x) \Leftrightarrow \forall x(x \in K \Rightarrow A(x))$ + - Beschränkter und unbeschränkter Existenzquantor + $\exist x K A(x) \Leftrightarrow \exist x(x \in K \wedge A(x))$ + +# Beweistechniken +## Beweis durch Implikation +Anwendbar bei Formeln in der Form: +$$A \Rightarrow B$$ + + 1. Zwingende Voraussetzungen für die Bedingung $A$ erfassen + 2. Prüfen, ob $B$ richtig ist + +> ***Beispiel:*** +> $A$: "$x$ und $y$ sind gerade." +> $B$: "$x \cdot y$ ist gerade." +> +> Damit $x$ und $y$ gerade sind, müssen sie ein Produkt von $2$ sein. Die Behauptung ist also: +> +> $x = 2 \cdot n_x$ und $y = 2 \cdot n_y$ +> +> $n_x$ und $n_y$ sind hierbei **beliebige** natürliche Zahlen. +> +> Für den Nachweis ergibt sich folgendes für $B$: +> $$x \cdot y = (2 \cdot n_x) \cdot (2 \cdot n_y) = 22 \cdot (n_x \cdot 2 \cdot n_y)$$ +> Da das Ergebnis ein vielfaches von $2$ ist, heisst das, dass $x \cdot y$ gerade ist und somit die Aussage $A \Rightarrow B$ wahr ist. + +## Beweis durch Widerspruch +Anwendbar bei einfachen Aussagen. + +Der Merksatz ist hierbei: "Wenn die Aussage _nicht nicht wahr_ ist, ist sie _wahr_." + +Der Vorgang ist hierbei, die ursprüngliche Aussage zu negieren und zu beweisen, dass die negierte Aussage **unerfüllbar** ist. + +> ***Beispiel:*** +> $A$: "Es gibt keine grösste natürliche Zahl." +> $\neg A$: "Es gibt **eine** grösste natürliche Zahl." +> +> $m$ sei dei grösste natürliche Zahl. Für jede natürliche Zahl $x$ gibt es ein Inkrement, welches man mit Hilfe von $x + 1$ errechnen kann. So gibt es auch für $m$ ein Inkrement $m + 1$, welches um $1$ grösser ist als $m$. Somit sit die negierte Aussage $\neg A$ **unerfüllbar**. $A$ ist wahr. + +## Beweis durch (Gegen-)Beispiel +Anwendbar bei Aussagen mit Quantoren ($\forall$ "für alle" und $\exists$ "existiert"). + +Die Strategie hierbei ist, ein anwendbares Beispiel (im Falle $\exists$) oder Gegenbeispiel (im Falle $\forall$) zu finden. + +> ***Beispiel:*** +> $A$: "Es existieren Zahlen, welche kein Quadrat einer natürlichen Zahl sind." +> +> Dies lässt sich an dem Beispiel $2$ beweisen. $2$ ist weder ein Quadrat von $1$ ($1^2 = 1$) noch von $2$ ($2^2 = 4)$. + +## Beweis durch Kontraposition +Anwendbar bei Aussagen in der Form $A \Rightarrow B$ + +Es gilt für diese Strategie, die dazugehörige Kontraposition $\neg B \Rightarrow \neg A$ zu belegen. + +> ***Beispiel:*** +> $A$: "Für jede natürliche Zahl $n$ gilt: $(n^2 + 1 = 1) \Rightarrow (n = 0)$ +> +> Die Kontraposition dazu lautet wie folgt: +> $A'$: "Für alle Zahlen, die **nicht** $0$ sind gilt $n^2 + 1 \not= 1$ +> +> Da alle Zahlen $> 0$ ein Quadrat haben, das grösser als $0$ ist, gilt: $n^2 + 1 > 1$. +> Daraus folgt, dass Aussage $A$ wahr ist. + +## Beweis durch Äquivalenz +Anwendbar für Aussagen der Form $A \Leftrightarrow B$ + +Die Strategie ist hierbei, zu beweisen, dass $A \Rightarrow B$ gilt und $B \Rightarrow A$ gilt. + +> ***Beispiel:*** +> $A: (n^2 + 1 = 1) \Leftrightarrow (n = 0)$ +> +> Wenn $n = 0$ ist, ergibt sich aus $(n^2 + 1 = 1)$ folgendes: $(0^2 + 1 = 1) = (0 + 1 = 1)$. Damit ist $A \Rightarrow B$ bewiesen. +> +> Die einzige Situation in der $(n^2 + 1 = 1)$ oder eher $(n^2 = 0)$ ergibt, ist, wenn $n$ $0$ entspricht. Damit ist auch $B \Rightarrow A$ bewiesen. + +## Wahrheitstabelle +Folgend ein Beispiel einer Wahrheitstabelle: + +| $a$ | $b$ | $c$ | $b \vee c$ | $a \Rightarrow (b \vee c)$ | +| :---: | :---: | :---: | :--------: | :------------------------: | +| $0$ | $0$ | $0$ | $0$ | $1$ | +| $0$ | $0$ | $1$ | $1$ | $1$ | +| $0$ | $1$ | $0$ | $1$ | $1$ | +| $0$ | $1$ | $1$ | $1$ | $1$ | +| $1$ | $0$ | $0$ | $0$ | $0$ | +| $1$ | $0$ | $1$ | $1$ | $1$ | +| $1$ | $1$ | $0$ | $1$ | $1$ | +| $1$ | $1$ | $1$ | $1$ | $1$ | + +## Normalformen +Normalformen beinhalten generell nur `AND`s ($\wedge$), `OR`s ($\vee$) und `NOT`s ($\neg$) + +### Negationsnormalform `NNF` +Die Negationsnormalform (`NNF`) ist die Form einer Formel, in der nur atomare (nicht aufteilbare) Teilformeln negiert sind. + +> ***Beispiel:*** +> $$(A \wedge (\neg B \vee (C \vee D)))$$ +> Merke, dass nur $B$, welches _atomar_ ist, negiert ist. + +### Disjunktive Normalform `DNF` +Die Disjunktive Normalform ist eine Umformung der Formel, in der alle Belegungen für die die Formel $true$ ergibt, mit einander "verodert" werden. + +> ***Beispiel:*** +> Die `DNF` für die Formel $\neg A \wedge (B \vee C)$ lautet folgendermassen: +> +> $$(\neg A \wedge \neg B \wedge C) \vee (\neg A \wedge B \wedge \neg C) \vee (\neg A \wedge B \wedge C)$$ +> +> ***Herleitung:*** +> Schritt 1: Wahrheitstabelle aufstellen: +> | $A$ | $B$ | $C$ | $B \vee C$ | $\neg A \wedge (B \vee C)$ | +> | :---: | :---: | :---: | :--------: | :------------------------: | +> | $0$ | $0$ | $0$ | $0$ | $0$ | +> | $0$ | $0$ | $1$ | $1$ | $1$ | +> | $0$ | $1$ | $0$ | $1$ | $1$ | +> | $0$ | $1$ | $1$ | $1$ | $1$ | +> | $1$ | $0$ | $0$ | $0$ | $0$ | +> | $1$ | $0$ | $1$ | $1$ | $0$ | +> | $1$ | $1$ | $0$ | $1$ | $0$ | +> | $1$ | $1$ | $1$ | $1$ | $0$ | +> +> Schritt 2: $1$-Stellen aufschreiben: +> - $\neg A \wedge \neg B \wedge C$ +> - $\neg A \wedge B \wedge \neg C$ +> - $\neg A \wedge B \wedge C$ +> +> Schritt 3: Formeln für $1$-Stellen "verodern": +> $$(\neg A \wedge \neg B \wedge C) \vee (\neg A \wedge B \wedge \neg C) \vee (\neg A \wedge B \wedge C)$$ + +### Konjunktive Normalform `KNF` +Bei der Konjunktiven Normalform wiederum, werden alle negierten Belegungen, in denen die gegebene Formel $false$ ergibt miteinander "geandet". + +> ***Beispiel:*** +> Der `KNF` von $B \vee (A \wedge C)$ ist: +> $$(A \vee B \vee C) \wedge (A \vee B \vee \neg C) \wedge (\neg A \vee B \vee C)$$ +> +> ***Herleitung:*** +> Schritt 1: Wahrheitstabelle aufstellen: +> | $A$ | $B$ | $C$ | $A \vee C$ | $B \vee (A \wedge C)$ | +> | :---: | :---: | :---: | :--------: | :-------------------: | +> | $0$ | $0$ | $0$ | $0$ | $0$ | +> | $0$ | $0$ | $1$ | $0$ | $0$ | +> | $0$ | $1$ | $0$ | $0$ | $1$ | +> | $0$ | $1$ | $1$ | $0$ | $1$ | +> | $1$ | $0$ | $0$ | $0$ | $0$ | +> | $1$ | $0$ | $1$ | $1$ | $1$ | +> | $1$ | $1$ | $0$ | $0$ | $1$ | +> | $1$ | $1$ | $1$ | $1$ | $1$ | +> +> Schritt 2: $0$-Stellen aufschreiben **und negieren**: +> - $\neg A \wedge \neg B \wedge \neg C$ +> Negation: $A \vee B \vee C$ +> - $\neg A \wedge \neg B \wedge C$ +> Negation: $A \vee B \vee \neg C$ +> - $A \wedge \neg B \wedge \neg C$ +> Negation: $\neg A \vee B \vee C$ +> +> Schritt 3: Negierte Ausdrücke mit `AND`s verketten: +> $$(A \vee B \vee C) \wedge (A \vee B \vee \neg C) \wedge (\neg A \vee B \vee C)$$ + +## Ableitungsbaum +Der Ableitungsbaum bietet einen übersichtlichen Weg um Gleichungen in der Aussagenlogik zu lösen. + +Folgend ein Beispiel: + +Es sei $(x \Rightarrow y) \wedge z$ mit folgender Belegung: + - $B(x) = \top$ + - $B(y) = \bot$ + - $B(z) = \top$ + +Der dazugehörige Ableitungsbaum ist dann: + +```mermaid +flowchart BT +op3(("∧: 0")) +op2(("∨: 0")) +op1(("¬: 0")) +x["x: 1"] +y["y: 0"] +z["z: 1"] +x --- op1 +op1 --- op2 +y --- op2 +op2 --- op3 +z --- op3 +``` + +# Mengen +Mengen haben keine Sortierung und keine doppelten Elemente. + +> ***Hinweise:*** +> - Mengen heissen "disjunkt", wenn sie **keine gemeinsamen** Elemente beinhalten. + +## Syntax +$M = \{ x \in \N | x > 5\}$ + + - $\in$ + Gesprochen: "Element von" + - $\notin$ + Gesprochen: "Nicht Element von" + - $|$ + Gesprochen: "Für die gilt" + +"$M$ ist die Menge aller $x$, für die gilt, dass $x > 5$ ist." + +$M = { 5, 6, 7, 8, ... }$ + +![](assets/SetExamples.png) + +## Operationen +### Subset $\subseteq$ +### Vereinigung $\cup$ +Die Vereinigung "Union" beschreibt die Zusammenfassung zweier Mengen: + +![mini](assets/SetUnion.png) + +### Schnittmenge $\cap$ +Die Schnittmenge "Intersection" zweier Mengen: + +![mini](assets/SetIntersection.png) + +### Differenz $\setminus$ +Beschreibt die Differenzmenge zweier Mengen: + +![mini](assets/SetMinus.png) + +$A \setminus B$ gesprochen: "$A$ ohne $B$" + +### Komplement/Negation $\overline{A}$ +Das Komplement einer Menge $A$ wird wie folgt geschrieben: +$$\overline{A}$$ + +Sie beschreibt alle Elemente, die _nicht_ in der Menge $A$ vorkommen: + +![mini](assets/SetComplement.png) + +### Symmetrische Differenz $\triangle$ +Die Vereinigung zweier Mengen abzüglich deren Schnittmenge: + +![mini](assets/SetDelta.png) + +$A \triangle B = (A \setminus B) \cup (B \setminus A)$ gesprochen "$A$ ohne $B$ vereinigt mit $B$ ohne $A$" + +### Mächtigkeit $\vert A \vert$ +Die Mächtigkeit $\vert A \vert$ beschreibt, wieviele Elemente eine Menge $A$ beinhaltet. + +> ***Beispiel:*** +> $\vert \{1, 78, 28\} \vert = 3$ + +### Kartesisches Produkt $\times$ +Das Kartesische Produkt ist eine Menge aller Folgen, die aus den Elementen der beiden Mengen gebildet werden können. + +Beispiel: +$$A = \{a, b\}$$ +$$B = \{2, 3, 4\}$$ +$$A \times B = \{a, b\} \times \{2, 3, 4\} = \{(a, 2), (a, 3), (a, 4), (b, 2), (b, 3), (b, 4)\}$$ + +Die Mächtigkeit von $A \times B$ ist gleich $\vert A \vert \cdot \vert B \vert$ + +> ***Hinweis:*** +> **Folgen** sind sortiert das bedeutet folgendes: +> $$A \times B \not = B \times A$$ + +## Rechenregeln +### Kommuntativität + +## Vordefinierte Mengen + - $\N$: Natürliche Zahlen - Zahlen $\geq 0$ + - $\Z$: Alle ganzen Zahlen (positiv und negativ) + +## Potenzmenge $\mathcal{P}$ +Die Potenzmenge gibt alle möglichen Kombinationen aus einer gegebenen Menge zurück. Die Funktion $\mathcal{P}(x)$ ist folgendermassen definiert: + +$$\mathcal{P}(A) := \{x | x \subseteq A \}$$ + +> ***Beispiel:*** +> $$\mathcal{P}(\{0, 1\}) = \{\emptyset, \{0\}, \{1\}, \{0, 1\}\}$$ + +> ***Bemerkung:*** +> Die Mächtigkeit einer Potenzmenge errechnet sich folgendermassen: +> $$|\mathcal{P}(A)| = 2^{|A|}$$ + +## Partition +Eine Partition einer Menge $A$ ist eine Menge von Teilmengen von $A$. + +Diese Teilmengen müssen folgende Bedingungen erfüllen: + - Die Mengen dürfen nicht leer sein + - Teilmengen dürfen untereinander keine gemeinsamen Elemente haben + +## Unendlichkeit +Unendliche Mengen sind unter folgenden Bedingungen abzählbar oder überabzählbar: + + - Abzählbar unendlich, wenn sie gleich mächtig wie $\N$ sind + - Überabzählbar unendlich, wenn sie mächtiger als $\N$ sind + +### Rechnen mit Unendlichkeit +$A$ sei eine abzählbar unendliche und $B$ eine überabzählbar unendliche Menge: + + - $A \cup B$ ist **abzählbar**, da im Ergebnis nur Elemente aus der abzählbaren Menge $A$ enthalten sind. + - $A \cap B$ ist **überabzählbar**, da alle Elemente der überabzählbaren Menge $B$ im Ergebnis enthalten sind + - $B \setminus A$ ist **überabzählbar**, da von der überabzählbaren Menge $B$ nur die abzählbaren Elemente abgezogen werden. + +# Relationen +DAG ("discrete acyclic graph") ein "gerichteter azyklischer Graph" ist ein Graph, in dem keine Zyklen enthalten sind: + +Folgendes ist ein DAG: + +```mermaid +flowchart LR +a((A)) +b((B)) +c((C)) +d((D)) +e((E)) +f((F)) +g((G)) +a --> b +b --> c +c --> e +b --> e +b --> d +g --> d +d --> e +e --> f +``` + +Folgendes ist **kein** DAG: +```mermaid +flowchart LR +a((A)) +b((B)) +c((C)) +d((D)) +e((E)) +f((F)) +a --> b +b --> c +d --> b +c --> e +e --> f +e --> d +``` + +## Äquivalenzklasse +Eine Äquivalenzklasse beinhaltet alle Elemente, welche einer Klasse zugeordnet werden können + +![](assets/Äquivalenzklasse.png) + +## Äquivalenzrelation + + +# Themen + - Chinesischer Restsatz + - Euklidischer Algorithmus (ggt, kgv berechnen) + +![](assets/SortGraph.png) + +# Glossar +| Bezeichnung | Beschreibung | +| -------------------- | ------------------------------------------------------------------ | +| Knotenmenge | Die Menge aller Elemente (Knoten), die in einem Graphen vorkommen. | +| Wahrheits-Konstanten | $\top$ steht für `true`, $\bot$ für `false`. \ No newline at end of file diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetComplement.png b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetComplement.png new file mode 100644 index 0000000..1d3b431 Binary files /dev/null and b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetComplement.png differ diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetDelta.png b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetDelta.png new file mode 100644 index 0000000..39436b0 Binary files /dev/null and b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetDelta.png differ diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetExamples.png b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetExamples.png new file mode 100644 index 0000000..5998a5d Binary files /dev/null and b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetExamples.png differ diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetIntersection.png b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetIntersection.png new file mode 100644 index 0000000..739ea29 Binary files /dev/null and b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetIntersection.png differ diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetMinus.png b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetMinus.png new file mode 100644 index 0000000..94cd8c9 Binary files /dev/null and b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetMinus.png differ diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetUnion.png b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetUnion.png new file mode 100644 index 0000000..57a7610 Binary files /dev/null and b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SetUnion.png differ diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/assets/SortGraph.png b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SortGraph.png new file mode 100644 index 0000000..54fb57c Binary files /dev/null and b/Notes/Semester 1/DM - Diskrete Mathematik/assets/SortGraph.png differ diff --git a/Notes/Semester 1/DM - Diskrete Mathematik/assets/Äquivalenzklasse.png b/Notes/Semester 1/DM - Diskrete Mathematik/assets/Äquivalenzklasse.png new file mode 100644 index 0000000..c6033bb Binary files /dev/null and b/Notes/Semester 1/DM - Diskrete Mathematik/assets/Äquivalenzklasse.png differ diff --git a/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Gleichmässig Beschläunigte Bewegung.md b/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Gleichmässig Beschläunigte Bewegung.md new file mode 100644 index 0000000..a0df25d --- /dev/null +++ b/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Gleichmässig Beschläunigte Bewegung.md @@ -0,0 +1,16 @@ +# Gleichmässig Beschläunigte Bewegung +Bewegung mit konstanter Beschläunigung + +$$a = const.$$ +$$v(t) = v(0) + a * t$$ +$$a = \frac{\Delta v}{\Delta t}$$ +$$\int^{v(t)}_{v(0)} \Delta v = \int^t_0 a \Delta t$$ +$$v \int^{v(t)}_{v(0)} = v(t) - v(0) = a \times \int^t_0 = a \times (t - 0)$$ +$$\Rightarrow v(t) - v(0) = a \times t \Rightarrow v(t) = v(0) + a \times t$$ +$$v_x = \frac{\Delta x}{\Delta t}$$ +$$x(t) = x(0) + v(0) \times t + \frac{1}{2}at^2$$ + +Zeitfreie: +$$x(t)-x(0) = \frac{v(t)^2 - v(0)^2}{2a}$$ + +(Script: Spezialfall $x = \frac{v^2}{2a}$, $x(0) = v(0) = 0$) diff --git a/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/SI-Einheiten.md b/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/SI-Einheiten.md new file mode 100644 index 0000000..52884f4 --- /dev/null +++ b/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/SI-Einheiten.md @@ -0,0 +1,17 @@ +# SI-Einheiten +## Einheit Energie/Arbeit +Die Einheit von Energie/Arbeit ist $J$ (Joule). + +Energie: + +$$1J=1N \times m=1kg \frac{m^2}{s^2}$$ + +Leistung + +$$P=\frac{\Delta E}{\Delta t}$$ + +Einheit Leistung: $[P] = W$ + +$1W = 1 \frac{J}{s}$ => $1 Ws = 1J$ + +$$1kWh = 1 \times 10^3 W \times (3.6 \times 10^3s) = 3.6 \times 10^6 Ws = 3.6 \times 10^6J = 3.6 MJ$$ diff --git a/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Stromkreis.md b/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Stromkreis.md new file mode 100644 index 0000000..f16a31d --- /dev/null +++ b/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Stromkreis.md @@ -0,0 +1,10 @@ +# Stromkreis +## Spannung +Die Spannung beschreibt die Differenz zweier Ladungen. Die Spannung sorgt dafür, dass der Strom fliesst. + +## Kondensator +Q - Elektrische Ladung gemessen in $C$ (Coulomb => $A \cdot s$) + +### Kapazität +> **_Kapazität:_** +> $$C = \frac{Q}{K_C}$$ diff --git a/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Table of Contents.md b/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Table of Contents.md new file mode 100644 index 0000000..f61259a --- /dev/null +++ b/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Table of Contents.md @@ -0,0 +1 @@ +# Inhaltsverzeichnis diff --git a/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Zusammenfassung.md b/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Zusammenfassung.md new file mode 100644 index 0000000..03cbe6d --- /dev/null +++ b/Notes/Semester 1/GED - Grundlagen der Elektro- und Digitaltechnik/Zusammenfassung.md @@ -0,0 +1,23 @@ +# Zusammenfassung Physik +## Knotenregel +Summe aller Ströme ist 0 + +## Maschen-Regel +Summe aller Spannungen ist 0 + +## Ohmsches Gesetz +$$U = R \cdot I$$ + +## Schaltungsregeln +### Serien-Schaltungen +$$R_\text{total} = R_1 + R_2 + R_2 + R_3$$ + +### Parallel-Schaltung +$$R_\text{total} = \frac{1}{\frac{1}{R_1} + \frac{1}{R_2} + \frac{1}{R_3}} = \left(\frac{1}{R_1} + \frac{1}{R_2} + \frac{1}{R_3}\right)^{-1}$$ + +## Misc +Unterschied Schwarzer Strahler und Schwarzer Körper: + - Schwarzer Strahler ist dasselbe wie ein Schwarzer Körper + Schwarze Körper absorbieren & emittieren alles - reflektieren aber nichts + +Schwarze Strahler haben einen Emissionskoeffizient = 1, Graue Strahler haben einen Emissionskoeffizient < 1 diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/Gatter.md b/Notes/Semester 1/INCO - Informatik und Codierung/Gatter.md new file mode 100644 index 0000000..4e0c08b --- /dev/null +++ b/Notes/Semester 1/INCO - Informatik und Codierung/Gatter.md @@ -0,0 +1,41 @@ +# Gatter +Gatter sind Hardware (Transistoren), welche binäre Daten verarbeiten können. (Binäre: 0en und 1en) +Diese werden üblicherweise als Boxen dargestellt. + +## Rechenoperationen +### `AND` +```mermaid +graph LR; + a["A"]; + b["B"]; + out["C"]; + and["&"]; + a --- and; + b --- and; + and --- out; +``` + +Ein `AND` (einige, verschiedene Notationen sind `AND`, `&` und $\wedge$) setzt voraus, dass die Eingabe-Werte (hier `A` und `B`) beide den Wert `true` beinhalten. + +### NAND +```mermaid +graph LR; + a["A"]; + b["B"]; + out["C"]; + and["&"]; + not((" ")); + a --- and; + b --- and; + and --- not --- out; +``` + +Ein `NAND` (kurz für "not and") ist die invertierte Version der [`AND`-Operation](#and). Dieser setzt voraus, dass eine der Eingabe-Werte (hier `A` und `B`) **nicht** `true` entsprechen. + +Ein `NAND` lässt sich folgendermassen umformen: +$$C = \overline{A \wedge B}$$ +$$C = \overline{A} \vee \overline{B}$$ + +## Vereinfachung +Für die Hardwaretechnik ist es jeweils effizienter, dieselben Operationen für alle Gatter zu verwenden. +Dies ist bei einer Vereinfachung zu berücksichtigen. diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/INCO Summary.md b/Notes/Semester 1/INCO - Informatik und Codierung/INCO Summary.md new file mode 100644 index 0000000..489fd57 --- /dev/null +++ b/Notes/Semester 1/INCO - Informatik und Codierung/INCO Summary.md @@ -0,0 +1,7 @@ +# Zusammenfassung +## Zahlensysteme +Zahlensysteme sind Arten, Zahlen darzustellen anhand deren Basis. + +### Beispiel +#### Dezimalsystem +| $16 diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/JPEG.md b/Notes/Semester 1/INCO - Informatik und Codierung/JPEG.md new file mode 100644 index 0000000..e69de29 diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/Kombinatorische Logik.md b/Notes/Semester 1/INCO - Informatik und Codierung/Kombinatorische Logik.md new file mode 100644 index 0000000..99be79b --- /dev/null +++ b/Notes/Semester 1/INCO - Informatik und Codierung/Kombinatorische Logik.md @@ -0,0 +1,9 @@ +# Kombinatorische Logik +Die Kombinatorische Logik bezeichnet logische, binäre Operationen, deren Eingänge und Ausgänge beschreibt. +Beschrieben werden lediglich simple Zustände ohne Speicherung von Daten. + +Da kombinatorische Logiken Systeme ohne Speicher beschreiben, sind unter dieser Prämisse sind die Ergebnisse immer vorhersehbar (es sei denn, eine der Eingänge liefert zufällige Werte). + +Kombinatorische Logik kann mit Hilfe sogenannter Gatter dargestellt werden. + +Diese werden unter dem Punkt [Gatter](./Gatter.md) genauer erklärt: diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/Q&A.md b/Notes/Semester 1/INCO - Informatik und Codierung/Q&A.md new file mode 100644 index 0000000..20532a5 --- /dev/null +++ b/Notes/Semester 1/INCO - Informatik und Codierung/Q&A.md @@ -0,0 +1 @@ + - Was ist die Aussage von H(ε)? \ No newline at end of file diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/Quellencodierung 2021-10-18.md b/Notes/Semester 1/INCO - Informatik und Codierung/Quellencodierung 2021-10-18.md new file mode 100644 index 0000000..42e8eed --- /dev/null +++ b/Notes/Semester 1/INCO - Informatik und Codierung/Quellencodierung 2021-10-18.md @@ -0,0 +1,23 @@ +# Quellencodierung +## Ziel ist die Datenkompression +* Speicherplatz sparen +* Bandbreite reduzieren + * => Kosten minimieren +* Überarbeitungszeit reduzieren +* Energie sparen + * Optimierung zwischen Verarbeitung und Übertragung + +## Keine Ziele der Quellencodierung sind + * Datenverschlüsselung (Chiffrierung) + +## Redundanz +Falls Redundanz R grösser als 0 ist, kann verlustfrei komprimiert werden. +Ist die Redundanz R kleiner als 0, so wird verlustbehaftet komprimiert. +0 bedeutet keine Redundanz => keine Komprimierung +< 0 bedeutet das "Wegwerfen" von Informationen (bspw. gewisse Frequenzen in .mp3) + +## Huffman-Code + +### Kompressions-Algorithmen +#### LZ77 + diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/Script.md b/Notes/Semester 1/INCO - Informatik und Codierung/Script.md new file mode 100644 index 0000000..e69de29 diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/Table of Contents.md b/Notes/Semester 1/INCO - Informatik und Codierung/Table of Contents.md new file mode 100644 index 0000000..f020a70 --- /dev/null +++ b/Notes/Semester 1/INCO - Informatik und Codierung/Table of Contents.md @@ -0,0 +1,4 @@ +# Inhaltsverzeichnis + - [Kombinatorische Logik](./Kombinatorische%20Logik.md) + - [Gatter](./Gatter.md) + - [Lektionen](./Lessons) diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/Zahlensysteme.md b/Notes/Semester 1/INCO - Informatik und Codierung/Zahlensysteme.md new file mode 100644 index 0000000..f8913e5 --- /dev/null +++ b/Notes/Semester 1/INCO - Informatik und Codierung/Zahlensysteme.md @@ -0,0 +1,39 @@ +# Zahlensysteme +Zahlensysteme haben jeweils eine bestimme Basis, die darüber bestimmt, welche Wertigkeit die einzelnen Ziffern haben. + +So hat unser herkömmliches System, das Dezimalsystem, die Basis 10. Die erste Ziffer hat den Wert $10^0$, die zweite Ziffer den Wert $10^1$, die dritte den Wert $10^2$ etc. + +## Zahlensysteme umwandeln +### Binärzahlen in Hexadezimal umwandeln +Binär- und Hexadezimal-Zahlen lassen sich problemlos umwandeln. + +Jede Hexadezimalzahl entspricht jeweils 4 Stellen im Binärsystem. Folgend eine Tabelle mit allen Hexadezimal-Zahlen und deren Binären Repräsentationen: + +| Hex | Bin | +| :---: | :----: | +| $0$ | $0000$ | +| $1$ | $0001$ | +| $2$ | $0010$ | +| $3$ | $0011$ | +| $4$ | $0100$ | +| $5$ | $0101$ | +| $6$ | $0110$ | +| $7$ | $0111$ | +| $8$ | $1000$ | +| $9$ | $1001$ | +| $A$ | $1010$ | +| $B$ | $1011$ | +| $C$ | $1100$ | +| $D$ | $1101$ | +| $E$ | $1110$ | +| $F$ | $1111$ | + +> Beispiel anhand des $8$er- (Oktal)-Systems: +> | $8^3$ | $8^2$ | $8^1$ | $8^0$ | +> | :---: | :---: | :---: | :---: | +> | $6$ | $2$ | $5$ | $7$ | +> +> $$6257_8 = \\ +> 6 \cdot 8^3 + 2 \cdot 8^2 + 5 \cdot 8^1 + 7 \cdot 8^0 = \\ +> 6 \cdot 512 + 2 \cdot 64 + 5 \cdot 8 + 7 \cdot 1 = \\ +> 3072 + 128 + 40 + 8 = 3248$$ \ No newline at end of file diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/Zusammenfassung.md b/Notes/Semester 1/INCO - Informatik und Codierung/Zusammenfassung.md new file mode 100644 index 0000000..b537da8 --- /dev/null +++ b/Notes/Semester 1/INCO - Informatik und Codierung/Zusammenfassung.md @@ -0,0 +1,890 @@ +--- +Footer: + Left: "" + Right: "" + Center: "" +Header: + Left: "" + Right: "" + Center: "" +--- + + + + +# Zusammenfassung INCO +## Inhaltsverzeichnis +- [Zusammenfassung INCO](#zusammenfassung-inco) + - [Inhaltsverzeichnis](#inhaltsverzeichnis) + - [Formeln](#formeln) + - [Zahlensysteme](#zahlensysteme) + - [Zahlen berechnen](#zahlen-berechnen) + - [Hex $\Leftrightarrow$ Bin](#hex-leftrightarrow-bin) + - [Rechen-Operationen](#rechen-operationen) + - [Addition](#addition) + - [Subtraktion](#subtraktion) + - [Multiplikation](#multiplikation) + - [Division](#division) + - [Darstellung von Negativen Zahlen](#darstellung-von-negativen-zahlen) + - [$1$er-Komplement](#1er-komplement) + - [$2$er-Komplement](#2er-komplement) + - [Informationstheorie](#informationstheorie) + - [Formeln](#formeln-1) + - [Probability $P(x)$](#probability-px) + - [Informationsgehalt $I(x)$](#informationsgehalt-ix) + - [Entropie $H(x)$](#entropie-hx) + - [Quellencodierung](#quellencodierung) + - [Grundsätze](#grundsätze) + - [Übersicht](#übersicht) + - [Formeln](#formeln-2) + - [Mittlere Symbollänge $L(x)$](#mittlere-symbollänge-lx) + - [Redundanz einer Codierung $R(x)$](#redundanz-einer-codierung-rx) + - [Run Length Encoding `RLE`](#run-length-encoding-rle) + - [Huffman Code](#huffman-code) + - [LZ77-Kompression](#lz77-kompression) + - [LZW-Kompression](#lzw-kompression) + - [JPEG-Kompressionsverfahren](#jpeg-kompressionsverfahren) + - [Aufteilung in Luminanz und Chrominanz](#aufteilung-in-luminanz-und-chrominanz) + - [Downsampling](#downsampling) + - [Block-Verarbeitung](#block-verarbeitung) + - [Diskrete Kosinus Transformation](#diskrete-kosinus-transformation) + - [Quantisierung](#quantisierung) + - [Entropy Encoding](#entropy-encoding) + - [Qualitätsunterschied](#qualitätsunterschied) + - [Audiocodierung](#audiocodierung) + - [Abtasttheorem](#abtasttheorem) + - [Quantisierung](#quantisierung-1) + - [Kanalcodierung](#kanalcodierung) + - [Fehlerkorrekturverfahren](#fehlerkorrekturverfahren) + - [Backward Error Correction](#backward-error-correction) + - [Forward Error Correction](#forward-error-correction) + - [Binäre Kanäle](#binäre-kanäle) + - [Bitfehlerwahrscheinlichkeit](#bitfehlerwahrscheinlichkeit) + - [Binary Symmetric Channel](#binary-symmetric-channel) + - [Mehrbitfehlerwahrscheinlichkeit Berechnen](#mehrbitfehlerwahrscheinlichkeit-berechnen) + - [Wahrscheinlichkeiten in einem BSC](#wahrscheinlichkeiten-in-einem-bsc) + - [Binäre Kanalcodes](#binäre-kanalcodes) + - [Code-Rate](#code-rate) + - [Hamming-Distanz](#hamming-distanz) + - [Beispiele](#beispiele) + - [Hamming Distanz 1](#hamming-distanz-1) + - [Hamming Distanz 2](#hamming-distanz-2) + - [Hamming Distanz 3](#hamming-distanz-3) + - [Hamming-Gewicht](#hamming-gewicht) + - [Eigenschaften von Binären Kanalcodes](#eigenschaften-von-binären-kanalcodes) + - [Perfekt](#perfekt) + - [Systematisch](#systematisch) + - [Linear](#linear) + - [Zyklisch](#zyklisch) + - [Fehlererkennung](#fehlererkennung) + - [Paritäts-Check](#paritäts-check) + - [Cyclic Redundancy Check CRC](#cyclic-redundancy-check-crc) + - [Fehlerkorrektur](#fehlerkorrektur) + - [Lineare Block-Codes](#lineare-block-codes) + - [Faltungscode](#faltungscode) + - [Schaltungs-Umsetzung eines Faltungscodes](#schaltungs-umsetzung-eines-faltungscodes) + - [Glossar](#glossar) + +## Formeln + + +## Zahlensysteme +### Zahlen berechnen +> Beispiel anhand des $8$er- (Oktal)-Systems: +> | $8^3$ | $8^2$ | $8^1$ | $8^0$ | +> | :---: | :---: | :---: | :---: | +> | $6$ | $2$ | $5$ | $7$ | +> +> $$6257_8 =$$ +> $$6 \cdot 8^3 + 2 \cdot 8^2 + 5 \cdot 8^1 + 7 \cdot 8^0 =$$ +> $$6 \cdot 512 + 2 \cdot 64 + 5 \cdot 8 + 7 \cdot 1 =$$ +> $$3072 + 128 + 40 + 8 = 3248$$ + +### Hex $\Leftrightarrow$ Bin +| Hex | Bin | +| :---: | :----: | +| $0$ | $0000$ | +| $1$ | $0001$ | +| $2$ | $0010$ | +| $3$ | $0011$ | +| $4$ | $0100$ | +| $5$ | $0101$ | +| $6$ | $0110$ | +| $7$ | $0111$ | +| $8$ | $1000$ | +| $9$ | $1001$ | +| $A$ | $1010$ | +| $B$ | $1011$ | +| $C$ | $1100$ | +| $D$ | $1101$ | +| $E$ | $1110$ | +| $F$ | $1111$ | + +### Rechen-Operationen +Operationen werden generell identisch zu den herkömmlichen schriftlichen Rechenoperationen durchgeführt. + +#### Addition +![](./assets/Addition.png) + +#### Subtraktion +![](./assets/Subtraction.png) + +#### Multiplikation +![](./assets/Multiplication.png) + +#### Division +![](./assets/Division.png) + +### Darstellung von Negativen Zahlen +#### $1$er-Komplement +Das $1$er-Komplement wird gebildet indem man jede Ziffer einer Zahl durch die Ergänzung auf $1$ ersetzt: +| Ursprüngliche Zahl | $0010$ | +| ------------------ | ------ | +| Subtrahend | $1111$ | +| $1$er-Komplement | $1101$ | + +Genauso kann für Dezimal-Zahlen ein $9$er-Komplement gebildet werden, indem alle Ziffern mit der Ergänzung auf $9$ ersetzt werden: +![](./assets/9Complement.png) + +Das Problem des $1$er-Komplements ist, dass $0$ zwei verschiedene Darstellungsweisen hat. + +Das $1$er-Komplement von $0$ lautet nämlich folgendermassen: + +| Ursprüngliche Zahl | $0000$ | +| ------------------ | ------ | +| Subtrahend | $1111$ | +| $1$er-Komplement | $1111$ | + +Die $0$ kann also mit dem $1$er-Komplement sowohl als $0000$ als auch als $1111$ dargestellt werden. + +#### $2$er-Komplement +Das $2$er-Komplement schafft hierbei Abhilfe und wird gebildet, indem man das $1$er-Komplement um $1$ erhöht: + +| Ursprüngliche Zahl | $0010$ | +| ------------------ | ------ | +| Subtrahend | $1111$ | +| $1$er-Komplement | $1101$ | +| Summand | $0001$ | +| $2$er-Komplement | $1110$ | + +So ergibt die Bildung des Komplements von $0$ folgendes: + +| Ursprüngliche Zahl | $0000$ | +| ------------------ | ------ | +| Subtrahend | $1111$ | +| $1$er-Komplement | $1111$ | +| Summand | $0001$ | +| $2$er-Komplement | $0000$ | + +## Informationstheorie +![](./assets/Informationtheory.png) + +### Formeln +#### Probability $P(x)$ +Die Wahrscheinlichkeit errechnet sich indem man die Anzahl Vorkommen des Symbols ($N_x$) durch die gesamte Anzahl Symbole in der Nachricht ($N$) teilt: +$$P(x) = \frac{N_x}{N}$$ + +> **Beispiel:** +> Für ein Symbol, das $2$-mal in einer Nachricht mit $4$ Symbolen vorkommt, würde die Rechnung also folgendermassen aussehen: +> $$P(x) = \frac{N_x}{N} = \frac{2}{4} = \frac{1}{2} = 0.5$$ + +#### Informationsgehalt $I(x)$ +Der Informationsgehalt errechnet sich, indem man berechnet, wieviele Bits mindestens benötigt werden, um das Symbol $x$ darzustellen. +Je weniger man ein Symbol in einer Nachricht erwartet, desto höher ist dessen Informationsgehalt. + +$$I(x) = \log_2\left(\frac{1}{P(x)}\right)$$ + +#### Entropie $H(x)$ +Die Entropie besagt, was der durchschnittliche Informationsgehalt einer Datenquelle ist. + +Die Entropie eines einzelnen Symbols oder eines einzelnen Falls errechnet sich wie folgt: + +$$H(x) = P(x) \cdot \log_2\left(\frac{1}{P(x)}\right)$$ + +Folgendermassen errechnet sich die Entropie einer ganzen Datenquelle: + +$$H(x) = \sum^{N-1}_{n=1}\left(P(x_n) \cdot \log_2\left(\frac{1}{P(x_n)}\right)\right)$$ + +Je gleichmässiger die Häufigkeit der einzelnen Symbole, desto höher die Entropie. + +Die untenstehende Grafik zeigt das Verhältnis zwischen der Wahrscheinlichkeit in einem BMS (Binary Memoryless Source) und der daraus resultierenden Entropie. + +
+ +Wie zu sehen ist die Entropie am höchsten, wenn die Wahrscheinlichkeit für $1$en ($P(1)$) identisch mit der Wahrscheinlichkeit für $0$en ($P(0)$) ist. + +## Quellencodierung +Unter Quellencodierung versteht man die Aufbereitung von Daten für einen optimierten Versand. + +### Grundsätze +Die Grundsätze und/oder Ziele der Quellencodierung sind folgende: + + - Speicherplatz sparen + - Bandbreite reduzieren + - Kosten minimieren + - Übertragungszeit reduzieren + - Energie sparen + - Optimierung zwischen Verarbeitung und Übertragung + +Folgendes sind **keine** Ziele der Quellencodierung + + - ~~_Datenverschlüsselung (Chiffrierung, Security)_~~ + - ~~_Sicherung der Datenintegrität durch Fehlererkennung und Fehlerkorrektur (folgt später, siehe Kanalcodierung)_~~ + +### Übersicht +![](assets/Quellencodierung.png) + + - Die **Irrelevanz**-Reduktion ist darauf ausgelegt, Daten zu entfernen, die für den Empfänger irrelevant sind + - Nicht-hörbare Frequenzen bspw. in Musik + - Überhöhte, nicht wahrnehmbare Bildwiederholfrequenz + - Nicht wahrnehmbare Farben in Bildern + - Die Reduktion von **Redundanz** beschreibt die das **verlustfreie** Komprimieren von Daten + +### Formeln +#### Mittlere Symbollänge $L(x)$ +$$L(x) = \sum_{n=0}^{N - 1} P(x_n) \cdot l_n$$ + +_Einheit: $\frac{Bit}{Symbol}$_ + +#### Redundanz einer Codierung $R(x)$ +$$R(x) = L(x) - H(x)$$ + +_Einheit: $\frac{Bit}{Symbol}$_ + +Falls die Entropie einer Datenquelle grösser ist als die durchschnittliche Länge der codierten Worte, handelt es sich bei der Codierung um eine verlustbehaftete Kompression. + +### Run Length Encoding `RLE` +Die Lauflängencodierung ist die simpelste Art von Komprimierung. +Diese basiert auf das Prinzip, sich wiederholende Frequenzen in der Form `[Marker, Anzahl, Symbol]` festzuhalten. + +Die Anzahl Bits, welche für da Speichern der `Anzahl` aufgewendet werden, sollte so gewählt werden, dass die typische Länge von `RLE`-Blöcken abgebildet werden kann. + +Tritt also ein Symbol sehr oft hintereinander auf: `ABBBBBBBBBA` + +Könnte diese beispielsweise in der folgenden Form dargestellt werden: `AC9BA` + +`C` wird an dieser Stelle als `RLE`-Marker (Segment, welche den Start eines `RLE`-Codes markiert) eingesetzt. + +> ***Beispiel:*** +> In diesem Code wird von einem System ausgegangen, welches nur die Übertragung von `T`, `E`, `R`, `A`, `U`, `I`, `W`, `Q`, `C`, `S` und `L` zulässt. +> - Quelle: +> `TERRRRRRRRRMAUIIIIIIIIIIIIIIIIIWQCSSSSSSSSSSL` +> +> Als `RLE`-Marker sollte das Symbol verwendet werden, das am allerwenigsten vorkommt (in diesem Fall wäre das `A`). +> Da sich in der Quelle Symbole teils 10-17 Mal wiederholen werden für das Speichern der `Anzahl` 2 Dezimalstellen (oder 5 Bits) verwendet: +> - `RLE`-komprimiert: +> `TE`***`A09R`***`M`***`A01A`***`U`***`A17I`***`WQC`***`A10S`***`L` + +### Huffman Code +Der Huffman Code ermöglicht es einem, Codeworte zu generieren, welche folgende wichtige Grundsätze einhalten: + - Häufige Symbole haben kurze Code-Worte + - Seltene Symbole haben lange Code-Worte + - Präfix-frei + - Optimal (kein besserer, Präfix-freier Code möglich) + +Schritte zum Bilden eines Huffman-Codes + 1. Alle Symbole aufsteigend nach Wahrscheinlichkeit $P(x)$ auflisten - dies sind die _Blätter_ des Huffman-Baums + 2. Entsprechende Wahrscheinlichkeiten dazuschreiben + 3. Blätter mit der kleinsten Wahrscheinlichkeit verbinden und die Summe der Wahrscheinlichkeiten in der entstehenden Gabelung notieren + 4. Punkt 3 Wiederholen bis alle Blätter miteinander verbunden sind + 5. Festlegen, welche Richtung des Astes einer Gabelung einer $0$ oder einer $1$ entspricht + 6. Entstehende Code-Werte notieren + +> ***Beispiel:*** +> Beispiel anhand von `M`, `N`, `O`, `R`, `S` mit folgenden Wahrscheinlichkeiten: +> $P(M) = 0.35$, $P(N) = 0.2$, $P(O) = 0.25$, $P(R) = 0.05$, $P(S) = 0.15$ +> ```mermaid +> flowchart LR +> r["R (111)"]---4((0.05)) +> s["S (110)"]---5((0.15)) +> n["N (10)"]---1((0.2)) +> p["O (01)"]---2((0.25)) +> m["M (00)"]---3((0.35)) +> a1((0.2)) +> 4---a1 +> 5---a1 +> b1((0.4)) +> a1---b1 +> 1---b1 +> a2((0.6)) +> 2---a2 +> 3---a2 +> c1((1.0)) +> b1---c1 +> a2---c1 +> ``` +> In diesem Beispiel wird die Richtungszuweisung $\uparrow = 1$ und $\downarrow = 0$ verwendet. + +### LZ77-Kompression +Im LZ77-Verfahren werden die Daten durch ein Sliding Window bestehend aus Such- und Vorschau-Buffer geleitet, um diese nach Gemeinsamkeiten abzutasten: +![](assets/LZ77.png) + +Wie in der Abbildung zu sehen wird der Vorschau-Buffer nach Übereinstimmungen im Such-Buffer geprüft. + +Folgend ein Beispiel des Vorgangs einer `LZ77`-Kompression mit der Eingabe `AMAMMMAAAMMMTAAT` mit einer Such-Buffer Länge von $8$ und einer Vorschau-Buffer Länge von $5$: + +| Such-Buffer | Vorschau-Buffer | Input-Daten | Token (Offset, Länge, Zeichen) | +| ----------- | --------------- | ------------- | ------------------------------ | +| | `AMAMM` | `MAAAMMMTAAT` | `(0, 0, A)` | +| `A` | `MAMMM` | `AAAMMMTAAT` | `(0, 0, M)` | +| `AM` | `AMMMA` | `AAMMMTAAT` | `(2, 2, M)` | +| `AMAMM` | `MAAAM` | `MMTAAT` | `(4, 2, A)` | +| `AMAMMMAA` | `AMMMT` | `AAT` | `(6, 4, T)` | +| `MMAAAMMT` | `AAT` | | `(6, 2, T)` | + +Bei der Decodierung werden die Token interpretiert und dessen Resultat am Ende des Buffers hinzugefügt. +So werden redundante Daten automatisch wiederhergestellt. + +| Token | Resultierender Buffer | +| ----------- | --------------------- | +| `(0, 0, A)` | `A` | +| `(0, 0, M)` | `AM` | +| `(2, 2, M)` | `AMAMM` | +| `(4, 2, A)` | `AMAMMMAA` | +| `(6, 4, T)` | `AMAMMMAAAMMMT` | +| `(6, 2, T)` | `AMAMMMAAAMMMTAAT` | + +### LZW-Kompression +Das LZW-Verfahren lehnt nur geringfügig an dem LZ77-Verfahren an. An Stelle eines Sliding-Windows wird ein Wörterbuch verwendet. + +Das Wörterbuch hat zu Beginn des Kompression lediglich 255 Einträge mit den dazugehörigen ASCII-Charakteren. + +Während der Kompression wird das Wörterbuch nach und nach aufgebaut, neue Wörterbuch-Einträge werden als Token versendet. Ein Token besteht aus dem Index eines übereinstimmenden Wörterbuch-Eintrags, welches möglichst viele Zeichen lang ist. + +Der Wert des Tokens setzt sich aus dem Wert des verwiesenen Wörterbuch-Eintrags und dem ersten Zeichen des Werts des nächsten Tokens zusammen: + +![](assets/LZW.png) + +Folgend ein Beispiel anhand des zu komprimierenden Wertes: `AMAMMMAAAMMMTAAT`: + +| Input-Daten | Token-Index | Token | Wert | +| ------------------ | ----------- | ----- | ------ | +| `AMAMMMAAAMMMTAAT` | `256` | `65` | `AM` | +| `MAMMMAAAMMMTAAT` | `257` | `77` | `MA` | +| `AMMMAAAMMMTAAT` | `258` | `256` | `AMM` | +| `MMAAAMMMTAAT` | `259` | `77` | `MM` | +| `MAAAMMMTAAT` | `260` | `257` | `MAA` | +| `AAMMMTAAT` | `261` | `65` | `AA` | +| `AMMMTAAT` | `262` | `258` | `AMMM` | +| `MTAAT` | `263` | `77` | `MT` | +| `TAAT` | `264` | `84` | `TA` | +| `AAT` | `265` | `261` | `AAT` | +| `T` | `266` | `84` | `T` | + +Gesendet werden also folgende Daten: + +``` +[65, 77, 256, 77, 257, 65, 258, 77, 84, 261, 84] +``` + +> ***Hinweis:*** +> $65$ ist der ASCII-Wert von einem `A`, $77$ entspricht einem `M` und $84$ einem `T`. + +Für die Decodierung werden die versendeten Wörterbuch-Einträge wieder zu eigentlichem Text umgewandelt: + +| Index | Token | Wert | Resultierender Buffer | +| ----- | ----- | ------ | --------------------- | +| `256` | `65` | `A?` | `A` | +| `257` | `77` | `M?` | `AM` | +| `258` | `256` | `AM?` | `AMAM` | +| `259` | `77` | `M?` | `AMAMM` | +| `260` | `257` | `MA` | `AMAMMMA` | +| `261` | `65` | `A?` | `AMAMMMAA` | +| `262` | `258` | `AMM?` | `AMAMMMAAAMM` | +| `263` | `77` | `M?` | `AMAMMMAAAMMM` | +| `264` | `84` | `T?` | `AMAMMMAAAMMMT` | +| `265` | `261` | `AA?` | `AMAMMMAAAMMMTAA` | +| `266` | `84` | `T` | `AMAMMMAAAMMMTAAT` | + +### JPEG-Kompressionsverfahren +JPEG ist eine **verlustbehaftete** Kompressionsart. Es gibt auch die Möglichkeit, Bilder verlustfrei mit JPEG zu komprimieren, diese Möglichkeit ist aber in kaum einem Programm vorzufinden. +Diese entfernt sowohl Redundanz als auch Bild-Informationen (Farben), welche für das menschliche Auge kaum ersichtlich sind. + +JPEG eignet sich vor allem bei Fotografien, während es für Dokumente oder Computergrafiken (aka. Bilder mit scharfen Kanten wie Schriften oder Website-Banner) **nicht** geeignet ist. + +#### Aufteilung in Luminanz und Chrominanz +In einem ersten Schritt werden die Farbinformationen aufgeteilt in Luminanz $Y$, Chrominanz (Rot) $C_R$ und Chrominanz (Blau) $C_B$. +Dieser Schritt ist notwendig, da das menschliche Auge viel affiner auf Helligkeit (die Luminanz) als auf Farben ist. + +Der Schritt der Umwandlung von `RGB` in LCrCb ist verlustfrei. + +Folgende Abbildung zeigt diese Umwandlung: + +![](./assets/LCrCb.png) + +Die folgende Abbildung zeigt auf, wie die Farbwerte eines Bildes zu Luminanz-Werten umgerechnet werden können: + +![](./assets/Luminance.png) + +Mit Hilfe folgender Formel können aus `RGB`-Werten die dazugehörigen Luminanz und Chrominanz-Werte berechnet werden: + +$$\begin{bmatrix} + Y \\ + C_B \\ + C_R +\end{bmatrix} = +\begin{bmatrix} + 0.299 & 0.587 & 0.114 \\ + -0.1687 & -0.3313 & 0.5 \\ + 0.5 & -0.4187 & -0.0813 +\end{bmatrix} +\cdot +\begin{bmatrix} + R \\ + G \\ + B +\end{bmatrix} ++ +\begin{bmatrix} + 0 \\ + 128 \\ + 128 +\end{bmatrix}$$ + +> **Erinnerung:** +> Im einzelnen bedeutet das bspw. folgendes: +> +> $$Y = (0.299 \cdot R + 0.587 \cdot G + 0.114 \cdot 0.114) + 0$$ +> $$C_B = (-0.1687 \cdot R + -0.3313 \cdot G + 0.5 \cdot B) + 128$$ +> $$C_R = (0.5 \cdot R + -0.4187 \cdot G + -0.0813 \cdot B) + 128$$ + +Die Formel zum Umwandeln von Luminanz- und Chrominanz-Werten lautet wie folgt: + +$$\begin{bmatrix} + R \\ + G \\ + B +\end{bmatrix} = +\begin{bmatrix} + 1 & 0 & 1.402 \\ + 1 & -0.34414 & -0.71414 \\ + 1 & 1.772 & 0 +\end{bmatrix} +\cdot +\begin{bmatrix} + Y \\ + C_B - 128 \\ + C_R - 128 +\end{bmatrix}$$ + +#### Downsampling +Da, wie bereits erwähnt, das Auge sensitiver auf Helligkeit (Luminanz) als auf Farben (Chrominanz) ist, kann die Auflösung der Chrominanz-Werte beliebig verringert werden. + +Das Downsampling wird im Format `J:a:b` definiert. + - `J` steht für die Breite der 2px hohen Blöcke + - `a` steht für die Anzahl Pixel nach dem Down-Sampling in der 1. Zeile + - `b` steht für die Anzahl Pixel nach dem Down-Sampling in der 2. Zeile + +![](assets/Downsampling.png) + +Folgend einige Beispiele: + +![](assets/DownsamplingExamples.png) + +Nach dem Downsampling sehen die Bilder jeweils folgendermassen aus: + +![](assets/DownsamplingIRL.png) + +#### Block-Verarbeitung +Die hier geschilderten Schritte werden jeweils für Blöcke à 8x8 Pixel angewendet. +Folgend ein Überblick über die einzelnen Schritte: + +![](assets/CosTransformOverview.png) + +##### Diskrete Kosinus Transformation + +Bei der Transformation werden die Werte in den 8x8-Blöcken (Werte von $0$ bis $254$) umgewandelt, sodass sie nicht mehr Koordinaten und die dazugehörigen Werte repräsentieren, sondern eine Gewichtung, wie sehr sie aus dem Muster einer bestimmten Kosinus-Frequenz zusammengesetzt sind: + +![](assets/DCTTable.png) + +Dies geschieht mit Hilfe folgender Formel: +$$F_{vu} = \frac{1}{4} \cdot C_u \cdot C_v \cdot \sum_{x=0}^7\sum_{y=0}^7B_{xy} \cdot \cos\left(\frac{(2x + 1) \cdot u \cdot \pi}{16}\right) \cdot \cos\left(\frac{(2y + 1) \cdot v \cdot \pi}{16}\right)$$ + +> ***Information***: +> $C_u,C_v = \frac{1}{\sqrt{2}}$ für $u=0$ oder $v=0$ +> $C_u,C_v = 1$ für alle anderen Fälle (i.e. $u \not =0$ und $v \not = 0$) + +Folgendermassen lässt sich diese Formel auch wieder umkehren: +$$B_{yx} = \frac{1}{4}\sum_{u=0}^7\sum_{v=0}^7 C_u \cdot C_v \cdot F_{vu} \cdot \cos\left(\frac{(2x + 1) \cdot u \cdot \pi}{16}\right) \cdot \cos\left(\frac{(2y + 1) \cdot v \cdot \pi}{16}\right)$$ + +##### Quantisierung +Die gewonnene 8x8 Frequenz-Tabellen werden anschliessend quantisiert. In diesem Schritt werden aufgrund einer Quantisierungstabelle (welche Resultat intensiver Experimente war) alle Werte dividiert. + +Dies führt dazu, dass vorwiegend nur signifikante Werte in der rechten oberen Ecke übrig bleiben: + +![](assets/Quant.png) + +##### Entropy Encoding +In einem letzten Schritt werden der DC-Koeffizient (Wert ganz oben links) und die AC-Koeffizienten (alle übrigen Werte) mit Hilfe von Run Length Encoding (siehe [RLE](#run-length-encoding-rle)) in der Form `[DC-Wert, [Anzahl Nullen, Koeffizient]*, EOB]` gespeichert. + +Der "End of Block" (`EOB`) Marker markiert hierbei die Stelle ab der nur noch $0$-Werte folgen. Die Werte werden in einer diagonalen "Zick-Zack" Form abgetastet: + +![](assets/Scanning.png) + +> ***Beispiel:*** +> ![](assets/ScanningExample.png) +> +> Die in dieser Abbildung ersichtlichen Werte würden also folgendermassen codiert werden: +> +> ``` +> (79), (1, -2), (0, -1), (0, -1), (2, -1), (0, -1), (EOB) +> ``` + +#### Qualitätsunterschied +Folgendes Beispiel zeigt, wie sich JPEG-Bilder je nach gewählter Qualität unterscheiden. + +![](assets/JPEGQuality.png) + +## Audiocodierung +Im Folgenden ist beschrieben, wie die Audiocodierung im Wave-Format funktioniert. + +### Abtasttheorem +Um ein Audiosignal korrekt abtasten zu können, muss die Abtast-Frequenz mindestens doppelt so gross sein wie die maximale Frequenz des Audio-Signals: + +$$F_\text{abtast} > 2 \cdot F_\text{max}$$ + +Wird dieses Theorem nicht eingehalten, so kann es bspw. zu einer sog. "Spiegelung" kommen. + +In diesem Fall führt, wie in der Abbildung zu sehen, das originale Signal (gelb hinterlegt) zu einem falschen Ausgabesignal (blau hinterlegt): + +![](assets/Mirror.png) + +### Quantisierung +Im Rahmen der Quantisierung wird versucht, mit Hilfe von Quantisierung das Signal so genau wie möglich in binärer Form abzubilden: + +![](assets/AudioQuant.png) + +Da das quantisierte Signal nicht zu 100% dem originalen Signal entspricht entsteht jeweils ein Rauschen, welches pro zusätzlichem Bit, welches für das Quantisieren verwendet wird, um 6db abnimmt: + +![](assets/QRauschen.png) + +Im Vergleich: In der Telefonie wird eine Quantisierung mit 8 Bit vorgenommen - auf Audio-CDs mit 16 Bit. Aus diesem Grund klingen Anrufe sehr "verrauscht". + +## Kanalcodierung +Das Ziel der Kanalcodierung ist das Erkennen und/oder Beheben von Fehlern. + +### Fehlerkorrekturverfahren +#### Backward Error Correction +Unter dem Prinzip der Backward Error Correction (Rückwärtsfehlerkorrektur) versteht man, dass Fehler in Daten **lediglich erkannt** werden, um diese dann erneut beim Sender anzufordern. + +Mögliche Hilfsmittel hierfür sind bspw.: + - Blockcodes + - CRC (Cyclic redundancy check (siehe [CRC](#crc))) + +#### Forward Error Correction +Das Prinzip der Forward Error Correction (Vorwärtsfehlerkorrektur) ist es, Fehler nicht nur zu erkennen sondern direkt beim Empfang zu korrigieren. + +Mögliche Hilfsmittel sind: + - Blockcodes + - Minimum-Distance-Decoding + - Faltungscodes + +Verfahren, die bei jedem Versand eines Pakets auf eine Antwort, dass der Versand erfolgreich war, warten, kosten viel Performance: + +![](assets/FlowControl.png) + +Aus diesem Grund ist bspw. das Protokoll TCP, welches eine Flusskontrolle hat, um einiges langsamer als UDP, welches **keine** Flusskontrolle hat. + +### Binäre Kanäle +Binäre Kanäle können nur die Werte $0$ und $1$ übertragen. + +Alle Beispiele unterliegen der Annahme, dass ein symmetrischer, binärer Kanal vorliegt (siehe [Binary Symmetric Channel](#binary-symmetric-channel)). + +![](assets/BinaryChannel.png) + +#### Bitfehlerwahrscheinlichkeit +Die eingezeichnete Störquelle sorgt dafür, dass zu einer Wahrscheinlichkeit $\varepsilon$ eine $0$ statt einer $1$ oder eine $1$ statt einer $0$ gesendet wird. + +Die Bit Error ***Ratio*** `BER` (Formelbuchstabe $\varepsilon$) beschreibt, wie hoch die Wahrscheinlichkeit ist, dass ein Fehler auftritt. + +Einige Beispiele von Fehlerwahrscheinlichkeiten: + - Alle Bits falsch: + $\text{BER} = 1$ + - Alle Bits richtig: + $\text{BER} = 0$ + - 1 von 2 Bits falsch: + $\text{BER} = 0.5$ + - 1 von 1000 Bits falsch: + $\text{BER} = 0.001$ + +Ein asymmetrischer Kanal hat unterschiedliche Wahrscheinlichkeiten: + - $\varepsilon_{0 \rightarrow 1}$: Die Wahrscheinlichkeit, dass eine $0$ durch einen Fehler zu einer $1$ wird + - $\varepsilon_{1 \rightarrow 0}$: Die Wahrscheinlichkeit, dass eine $1$ durch einen Fehler zu einer $0$ wird + + +#### Binary Symmetric Channel +In einem symmetrischen Kanal sind diese beiden Wahrscheinlichkeiten identisch: +$$\varepsilon_{0 \rightarrow 1} = \varepsilon_{1 \rightarrow 0} = \varepsilon$$ + +Bildlich sieht das folgendermassen aus: +![](assets/BSC.png) + +Wahrscheinlichkeit, dass 1 Bit korrekt übertragen wird: +$$1-\varepsilon$$ + +Wahrscheinlichkeit, dass $N$ Bits korrekt übertragen werden: +$$(1-\varepsilon)^N$$ + +#### Mehrbitfehlerwahrscheinlichkeit Berechnen +In einem BSC lässt sich mit Hilfe folgender Formel berechnen, ob in einer Sequenz von $N$ Bits **genau $F$ Bitfehler** auftreten: + +$$P_{F,N} = \underbrace{\begin{pmatrix} + N \\ + F +\end{pmatrix}}_{\text{Anzahl möglicher Anordnungen der Fehler}} \cdot \overbrace{\varepsilon^F}^{\text{Wahrscheinlichkeit für F Fehler}} \cdot \underbrace{(1-\varepsilon)^{N - F}}_{\text{Wahrscheinlichkeit, dass alle weiteren Bits korrekt sind}}$$ + +$\begin{pmatrix} + N \\ + F +\end{pmatrix}$ berechnet sich hierbei folgendermassen: + +$$\begin{pmatrix} + N \\ + F +\end{pmatrix} = \frac{N!}{F! \cdot (N - F)!}$$ + +Alternativ kann das Ergebnis von $\begin{pmatrix} + N \\ + F +\end{pmatrix}$ auch aus dem Pascalschen Dreieck abgelesen werden: + +![](assets/PascalCombinations.png) + +#### Wahrscheinlichkeiten in einem BSC +Folgende Grafik zeigt zudem auf, wie die Wahrscheinlichkeiten in einem BSC aussehen: + +![](assets/BSCProb.png) + +Mit Hilfe der im Kapitel [Entropie](#entropie-hx) erwähnten Formel lassen sich zudem auch die Entropien der einzelnen Fälle berechnen: + +![](assets/BSCEntropy.png) + +Zwar erhöht der Bitfehler, wie zu sehen, die Entropie, zerstört aber gleichzeitig auch Informationen vom Eingang. + +Um also den resultierenden, tatsächlichen unversehrten Informationsgehalt zu errechnen, muss von der resultierenden Entropie $H(Y)$ die Entropie des Bitfehlers $H(\varepsilon)$ abgezogen werden. + +$$I_{BSC} = H(Y) - H(\varepsilon)$$ + +Die gesamthafte Entropie der Störquelle $H(\varepsilon)$ berechnet sich mit dieser Formel: + +$$H(\varepsilon) = \varepsilon \cdot \log_2\left(\frac{1}{\varepsilon}\right) + (1 - \varepsilon) \cdot \log_2\left(\frac{1}{1 - \varepsilon}\right)$$ + +Daraus ergibt sich diese Rechnung zum Bestimmen der Kapazität des BSCs aus der Abbildung: + +$$I_{BSC} = H(Y) - H(\varepsilon) = 0.323 - \left(0.01 \cdot \log_2\left(\frac{1}{0.01}\right) + (1 - 0.01) \cdot \left(\frac{1}{1 - 0.01}\right)\right) = 0.323 - 0.081 = 0.242 Bit/Bit$$ + +Folgender Graph zeigt das Verhältnis zwischen der Bitfehler-Rate und der Kanalkapazität auf: + +![](assets/BSCError.png) + +### Binäre Kanalcodes +Binäre Kanalcodes sind eine Sammlung Codewörter, welche zusätzlich zu den Daten auch Informationen zwecks Fehlerschutz beinhalten können: + +![](assets/ChannelCode.png) + +#### Code-Rate +Die Code-Rate $R$ gibt an, zu wieviel Prozent Code-Wörter aus verwertbaren Informationen bestehen. + +Sie errechnet sich aus der gesamtlänge der Code-Wörter $N$ und der Anzahl Informations-Bits $K$: + +$$R = \frac{K}{N}$$ + +#### Hamming-Distanz +Die minimale Hamming-Distanz $d_\text{min}$ gibt wider, wieviele Bits mindestens wechseln müssen, um aus einem Codewort ein anderes zu bilden. + +Die Anzahl erkennbarer Fehler ist $d_\text{min}-1$ + +Die Anzahl _korrigierbarer_ Fehler $\frac{d_\text{min}-1}{2}$ + +##### Beispiele +Folgend einige Beispiele anhand einer 3-Bit Codes. + +###### Hamming Distanz 1 +Ein Fehler führt zu einer Verwechslung mit einem anderen Codewort: + +![](assets/Hamming1.png) + +###### Hamming Distanz 2 +Maximal 1 Bitfehler (orange hinterlegt) kann erkannt werden: + +![](assets/Hamming2.png) + +###### Hamming Distanz 3 +Maximal 2 Bitfehler erkennbar, maximal 1 Bitfehler korrigierbar: + +![](assets/Hamming3.png) + +#### Hamming-Gewicht +Das Hamming-Gewicht $w_H(x)$ bezeichnet die Anzahl in einem Code-Wort. + +> ***Beispiele:*** +> - $w_H(000) = 0$ +> - $w_H(001) = w_H(010) = w_H(100) = 1$ +> - $w_H(110) = w_H(101) = w_H(011) = 2$ +> - $w_H(111) = 3$ + +Mit Hilfe des Hamming-Gewitchs lässt sich die Hamming-Distanz mathemtaisch berechnen: + +$$d(x, y) = w_H(x \oplus y)$$ + +#### Eigenschaften von Binären Kanalcodes +##### Perfekt +Alle möglichen Sequenzen haben eine minimale Hamming-Distanz zu einem korrekten Code-Wort zu dem es somit zugewiesen werden kann. + +##### Systematisch +Die Informations-Bits (die zu versendenden Daten) sind an einem Stück + +Beispiele: + +![](assets/Systematic1.png) + +oder + +![](assets/Systematic2.png) + +##### Linear +Zwei beliebige gültige Code-Wörter geben, rechnet man sie mit `XOR` $\oplus$ zusammen, wiederum ein gültiges Code-Wort. + +> ***Hinweis:*** +> Durch Generator-Matrizen erstellte Codes sind **immer** linear (siehe [Lineare Block-Codes](#lineare-block-codes)). +> +> Ob ein Block-Code linear ist kann nur mit Sicherheit überprüft werden, indem man alle Code-Wörter untereinander mit `XOR` $\oplus$ zusammenrechnet und prüft, ob das Ergebnis ein gültiges Code-Wort ist. + +##### Zyklisch +Die zyklische Verschiebung eines gültigen Code-Wortes ergibt ein gültiges Codewort: + +![](assets/Cyclic.png) + +Beispiele dazu: + +![](assets/CyclicExamples.png) + +## Fehlererkennung +### Paritäts-Check +Der einfachste Weg, Daten auf deren Gültigkeit zu prüfen. Für den Paritäts-Check werden alle Bits eines Datenstroms mit `XOR` $\oplus$ zusammengerechnet. Das Ergebnis ist die sogenannte Parität. Ist diese beim Empfang der Daten ungültig, so ist beim Versand ein Fehler aufgetreten. + +Beispiel eines Paritäts-Checks: + +![](assets/Parity.png) + +### Cyclic Redundancy Check CRC +Der Cyclic Redundancy Check (oder CRC) ist ein Algorithmus zum einfachen Prüfen eines Datenstroms auf Fehler. + +Um eine CRC Prüfsumme zu erstellen und zu prüfen, muss man sich vorgängig auf ein Generator Polynom einigen (das heutzutage gängigste ist bspw. `crc32`). + +Um den CRC zu berechnen, muss dem Datenstrom die Anzahl Stellen des Generator-Polynoms minus 1 angefügt werden (grau hinterlegt). Die daraus errechnete Zahl muss anschliessend durch das Generator-Polynom (blau hinterlegt) dividiert werden. + +Der daraus entstehende Rest (rot hinterlegt) ist die CRC Prüfsumme. + +![](assets/EncodeCRC.png) + +Anschliessend wird der Datenstrom zusammen mit dem CRC (an Stelle des grau hinterlegten Platzhalters) versendet. + +Geprüft wird die Gültigkeit indem der ankommende Datenstrom durch das Generator-Polynom geteilt wird. Ist der Rest $0$, so sind die Daten korrekt: + +![](assets/DecodeCRC.png) + +## Fehlerkorrektur +Ander als in der Fehlererkennung sollen in der Fehlererkennung einige Fehler auch ohne weiteres beim Empfänger korrigiert werden können. + +Das Konzept sieht hierbei folgend aus: + +![](assets/Correction.png) + +Die Formel zum Errechnen von der Anzahl Prüfbits $P$ für die Übertragung von $K$ Informations-Bits: + +$p \approx I(K + 1)$ + +Für 200 Informations-Bits: + +$p \approx \log_2(200 + 1) = 7.6\text{ bit} \approx 8\text{ bit}$ + +### Lineare Block-Codes +Hamming Codes gehören zu den linearen Block-Codes. + +Lineare Block-Codes werden mit Hilfe einer Generatormatrix gebildet, welche aus einer Paritäts-Matrix und einer Einheits-Matfix besteht: + +![](assets/Generatormatrix.png) + +Die Paritätsmatrix wird verwendet, um die Prüfsumme zu erstellen, die Einheitsmatrix, um die eigentliche Information einzufügen. + +Berechnet werden die generierten Bits ähnlich wie in einer Matrix Rechnung. + +Will man bspw. die Daten `0101` versenden, ist die Rechnung für das 1. Bit folgendermassen: + +Die erste Spalte für das 1. Bit befindet sich in der Paritätsmatrix und lautet `1011`. + +Die Rechnung ist $(0 \wedge 1) \oplus (1 \wedge 0) \oplus (0 \wedge 1) \oplus (1 \wedge 1) = 1$ + +Folgend sieht die Lösung für das Berechnen aller Bits aus: + +![](assets/MatrixCalc.png) + +Die Prüfmatrix kann gebildet werden, indem die horizontale Einheitsmatrix entfernt und durch eine vertikale Einheitsmatrix ersetzt wird: + +![](assets/MatrixTransform.png) + +Berechnet man auf dieselbe Weise wie zuvor das Produkt eines Code-Wortes mit der Prüf-Matrix erhält man als Ergebnis $0$, falls die Übertragung korrekt war. + +Ansonsten erhält man das sogenannte "Syndrom" des Indexes des Bits, welches falsch übertragen wurde: + +![](assets/Syndrom.png) + +## Faltungscode +Folgendes Bild zeigt auf, wie mit Hilfe eines Trellis-Diagramms ein Faltungscode errechnet und auch wieder decodiert wird: + +![](assets/Faltungscode.png) + +Die freie Hamming-Distanz kann am einfachsten vom Zustandsdiagramm abgelesen werden. + +### Schaltungs-Umsetzung eines Faltungscodes +![](assets/FaltungscodeSchaltung.png) + +## Glossar +| Wort | Definition | +| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Zahlensystem | System zum Darstellen von Zahlen (bspw. Dezimalsystem, Hexadezimal-System siehe [Zahlensysteme](#zahlensysteme)) | +| Bit (Binary Digit) | Speicher für 1 Bit (`true`/`false`) | +| Byte (Octet) | 8 Bit oder 2 Nibble à 4 Bit ![](./assets/Octet.png) | +| Word | Wert mit (meist) 16 Bit: ![](./assets/Word.png) | +| Doubleword (`DWord`) | Aneinanderreihung von 2 Worten: ![](./assets/DWord.png) | +| Quadword (`QWord`) | Aneinanderreihung von 4 Worten | +| Octaword | Aneinanderreihung von 8 Worten | +| DMS | Eine DMS - Discrete Memoryless Source - liefert voneinander unabhängige, zufällige Werte | +| BMS | Eine BMS - Binary Memoryless Source - liefert voneinander unabhängige, zufällige binäre Werte ($0$en und $1$en) | +| Probability $P(x)$ | Die Wahrscheinlichkeit, dass das Symbol $x$ in einer Nachricht auftritt (siehe [Probability](#probability-px)) | +| Informationsgehalt $I(x)$ | Der Informationsgehalt, der ein übermitteltes Symbol hat (siehe [Informationsgehalt](#informationsgehalt-ix)) | +| Entropie $H(x)$ | Der durchschnittliche Informationsgehalt einer Quelle (siehe [Entropie](#entropie-hx)) | +| Mittlere Codewortlänge $L(x)$ | Die durchschnittliche Länge, welche die Codeworte einer Codierung haben (siehe [Codewortlänge](#mittlere-symbollänge-lx)) | +| Redundanz $R(x)$ | Die Redundanz beschreibt, wieviele unnötige Daten Codeworte einer Codierung enthalten. Eine niedrige Redundanz ist besser. (siehe [Redundanz](#redundanz-einer-codierung-rx)) | +| `RLE` (Run Length Encoding) | Codierung in der ein sich oft wiederholendes Symbol komprimiert darstellen lässt (siehe [RLE](#run-length-encoding-rle)) | +| Luminanz $Y$ | Graustufen-Intensität (siehe [JPEG](#jpeg-kompressionsverfahren)) | +| Spiegelung | Eine der möglichen Fehlern, die beim Digitalisieren eines Audiosignals auftreten kann (siehe [Abtasttheorem](#abtasttheorem)) | +| Backward Error Correction | Das Erkennen von Fehlern in empfangenen Daten | +| Bit Error Ratio `BER` | Die Bit Error Ratio beschreibt, wie hoch die Wahrscheinlichkeit ist, dass Bit-Fehler in einem Binären Kanal auftreten. (siehe [Bitfehlerwahrscheinlichkeit](#bitfehlerwahrscheinlichkeit)) | +| Hamming-Distanz | Die minimale Anzahl unterschiedlicher Bits zwischen 2 Code-Worten in einem Blockcode (siehe [Hamming-Distanz](#hamming-distanz)) | +| Hamming-Gewicht | Die Anzahl $1$en in einem Code-Wort (siehe [Hamming-Gewicht](#hamming-distanz)) | +| Code-Rate $R$ | Die Code-Rate beschreibt, das Verhältnis der Anzahl Informationsbits gegenüber der gesamtlänge der Codewörter (siehe [Code-Rate](#coderate)) | +| Syndrom | Ein Wert, der darauf hinweist, dass an einer gewissen Bit-Stelle ein Fehler geschehen ist. | diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/9Complement.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/9Complement.png new file mode 100644 index 0000000..90ea8fa Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/9Complement.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Addition.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Addition.png new file mode 100644 index 0000000..f75e234 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Addition.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/AudioQuant.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/AudioQuant.png new file mode 100644 index 0000000..b09cf76 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/AudioQuant.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSC.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSC.png new file mode 100644 index 0000000..3e1d01b Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSC.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSCEntropy.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSCEntropy.png new file mode 100644 index 0000000..b2102a1 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSCEntropy.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSCError.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSCError.png new file mode 100644 index 0000000..152ce7e Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSCError.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSCProb.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSCProb.png new file mode 100644 index 0000000..b3e74b9 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/BSCProb.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/BinaryChannel.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/BinaryChannel.png new file mode 100644 index 0000000..7121a51 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/BinaryChannel.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/ChannelCode.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/ChannelCode.png new file mode 100644 index 0000000..1d9e4a1 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/ChannelCode.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Correction.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Correction.png new file mode 100644 index 0000000..2c44ea1 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Correction.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/CosTransformOverview.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/CosTransformOverview.png new file mode 100644 index 0000000..8de9645 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/CosTransformOverview.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Cyclic.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Cyclic.png new file mode 100644 index 0000000..e769680 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Cyclic.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/CyclicExamples.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/CyclicExamples.png new file mode 100644 index 0000000..fdc56d2 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/CyclicExamples.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/DCTTable.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/DCTTable.png new file mode 100644 index 0000000..cc2759d Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/DCTTable.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/DWord.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/DWord.png new file mode 100644 index 0000000..bd67ca3 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/DWord.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/DecodeCRC.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/DecodeCRC.png new file mode 100644 index 0000000..54b1da0 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/DecodeCRC.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Division.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Division.png new file mode 100644 index 0000000..a9a5c33 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Division.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Downsampling.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Downsampling.png new file mode 100644 index 0000000..f75f83a Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Downsampling.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/DownsamplingExamples.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/DownsamplingExamples.png new file mode 100644 index 0000000..63eb06d Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/DownsamplingExamples.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/DownsamplingIRL.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/DownsamplingIRL.png new file mode 100644 index 0000000..eef4b8c Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/DownsamplingIRL.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/EncodeCRC.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/EncodeCRC.png new file mode 100644 index 0000000..22a43a7 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/EncodeCRC.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Faltungscode.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Faltungscode.png new file mode 100644 index 0000000..e4836f9 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Faltungscode.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/FaltungscodeSchaltung.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/FaltungscodeSchaltung.png new file mode 100644 index 0000000..ce51c41 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/FaltungscodeSchaltung.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Flow-control.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Flow-control.png new file mode 100644 index 0000000..a59a458 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Flow-control.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/FlowControl.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/FlowControl.png new file mode 100644 index 0000000..a59a458 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/FlowControl.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Generatormatrix.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Generatormatrix.png new file mode 100644 index 0000000..72f6ae1 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Generatormatrix.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Hamming1.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Hamming1.png new file mode 100644 index 0000000..cc9bcac Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Hamming1.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Hamming2.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Hamming2.png new file mode 100644 index 0000000..9e7a1b0 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Hamming2.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Hamming3.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Hamming3.png new file mode 100644 index 0000000..8d5bae4 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Hamming3.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Informationtheory.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Informationtheory.png new file mode 100644 index 0000000..274fcb5 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Informationtheory.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/JPEGQuality.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/JPEGQuality.png new file mode 100644 index 0000000..1fecaa2 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/JPEGQuality.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/LCrCb.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/LCrCb.png new file mode 100644 index 0000000..b43fe58 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/LCrCb.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/LZ77.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/LZ77.png new file mode 100644 index 0000000..9e208a8 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/LZ77.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/LZW.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/LZW.png new file mode 100644 index 0000000..c188046 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/LZW.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Luminance.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Luminance.png new file mode 100644 index 0000000..110f6fc Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Luminance.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/MatrixCalc.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/MatrixCalc.png new file mode 100644 index 0000000..a7cc715 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/MatrixCalc.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/MatrixTransform.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/MatrixTransform.png new file mode 100644 index 0000000..93f3bd2 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/MatrixTransform.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Mirror.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Mirror.png new file mode 100644 index 0000000..2b0b41a Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Mirror.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Multiplication.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Multiplication.png new file mode 100644 index 0000000..803ba81 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Multiplication.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Octet.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Octet.png new file mode 100644 index 0000000..8eaebbb Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Octet.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Parity.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Parity.png new file mode 100644 index 0000000..69895a1 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Parity.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/PascalCombinations.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/PascalCombinations.png new file mode 100644 index 0000000..fc48b70 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/PascalCombinations.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/QRauschen.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/QRauschen.png new file mode 100644 index 0000000..de20f99 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/QRauschen.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Quant.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Quant.png new file mode 100644 index 0000000..e22c633 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Quant.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Scanning.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Scanning.png new file mode 100644 index 0000000..87afbbf Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Scanning.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/ScanningExample.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/ScanningExample.png new file mode 100644 index 0000000..7d9b47c Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/ScanningExample.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Subtraction.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Subtraction.png new file mode 100644 index 0000000..23ce9a1 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Subtraction.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Syndrom.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Syndrom.png new file mode 100644 index 0000000..50fe258 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Syndrom.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Systematic1.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Systematic1.png new file mode 100644 index 0000000..32294e2 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Systematic1.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Systematic2.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Systematic2.png new file mode 100644 index 0000000..78a2990 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Systematic2.png differ diff --git a/Notes/Semester 1/INCO - Informatik und Codierung/assets/Word.png b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Word.png new file mode 100644 index 0000000..ab76699 Binary files /dev/null and b/Notes/Semester 1/INCO - Informatik und Codierung/assets/Word.png differ diff --git a/Notes/Semester 1/PROG1 - Programmieren/Bücher.md b/Notes/Semester 1/PROG1 - Programmieren/Bücher.md new file mode 100644 index 0000000..6dfef9b --- /dev/null +++ b/Notes/Semester 1/PROG1 - Programmieren/Bücher.md @@ -0,0 +1,5 @@ +# Bücher +Folgende Bücher müssen gekauft werden: + + * ISBN 978-3-86894-911-7 + * ISBN 978-0-13-235088-4 diff --git a/Notes/Semester 1/PROG1 - Programmieren/OOP.md b/Notes/Semester 1/PROG1 - Programmieren/OOP.md new file mode 100644 index 0000000..69c4743 --- /dev/null +++ b/Notes/Semester 1/PROG1 - Programmieren/OOP.md @@ -0,0 +1,15 @@ +# Objekt-Orientierte Programmierung +## Klassen +Definitionen von Instanzen einer Objekt-Art - der "Bauplan" - nennt sich `Klasse`. + +Die Klasse gibt vor, wie dessen Instanzen aufgebaut sind. So könnte bspw. eine Klasse für ein `Auto` in einem GTA-Spiel Eigenschaften wie `Velocity` (Beschläunigung), `Color` (Farbe) oder `Model` (Modell) haben. + +Will man jedoch kein GTA-Spiel sondern - möglicherweise - ein Programm für einen Auto-Makler erstellen, sind wiederum andere Eigenschaften von Wichtigkeit wie bspw. der `Price` (Preis) oder das `Brand` (die Marke). + +## Instanzen +Instanzen sind Objekte, die anhand einer [Klasse](#klassen) erstellt wurde. Diese haben alle in der Klasse vorgeschriebene Eigenschaften, Felder und Methoden. Einer Instanz kann man konkrete Werte für die Eigenschaften zuweisen. + +So könnte man eine Objekt-Instanz `expensiveCar` der `Auto`-Klasse erstellen, welche das `Brand` `BMW` hat und eine Objekt-Instanz `CheapCar`, welche das `Brand` `Škoda` hat. + +## Bezeichnungen +Sämtliche Komponenten eines Projekts (Variablen (`variable`s), Parameter (`parameter`s), Klassen (`class`es), Felder (`field`s), Eigenschaften (`Property`/Properties) und Methoden (`Method`s)) müssen benannt werden. Hierbei ist wichtig, auf möglichst prägnante Bezeichnungen zurückzugreifen. diff --git a/Notes/Semester 1/PROG1 - Programmieren/Table of Contents.md b/Notes/Semester 1/PROG1 - Programmieren/Table of Contents.md new file mode 100644 index 0000000..f61259a --- /dev/null +++ b/Notes/Semester 1/PROG1 - Programmieren/Table of Contents.md @@ -0,0 +1 @@ +# Inhaltsverzeichnis diff --git a/Notes/Semester 1/Table of Contents.md b/Notes/Semester 1/Table of Contents.md new file mode 100644 index 0000000..763bd0b --- /dev/null +++ b/Notes/Semester 1/Table of Contents.md @@ -0,0 +1,4 @@ +# Inhaltsverzeichnis + - [DB - Datenbanken](./DB%20-%20Datenbanken/Table%20of%20Contents.md) + - [INCO - Informationen und Codierung](./INCO%20-%20Informationen%20und%20Codierung/Table%20of%20Contents.md) + - [DM - Diskrete Mathematik](./DM%20-%20Diskrete%20Mathematik/Table%20of%20Contents.md) diff --git a/Notes/Semester 2/AN2 - Analysis 2/Analysis 2.ipynb b/Notes/Semester 2/AN2 - Analysis 2/Analysis 2.ipynb new file mode 100644 index 0000000..b925029 --- /dev/null +++ b/Notes/Semester 2/AN2 - Analysis 2/Analysis 2.ipynb @@ -0,0 +1,239 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "import sympy\n", + "from sympy import Symbol, Function, cos, diff\n", + "from sympy.codegen.ast import Assignment, Print\n", + "from sympy.integrals.integrals import integrate, Integral\n", + "from sympy.plotting import plot\n", + "from sympy.plotting.pygletplot import PygletPlot as Plot\n", + "from IPython.display import Markdown" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle f{\\left(x \\right)} = x^{2}$" + ], + "text/plain": [ + "Eq(f(x), x**2)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\operatorname{f'}{\\left(x \\right)} = 2 x$" + ], + "text/plain": [ + "Eq(f'(x), 2*x)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\operatorname{f''}{\\left(x \\right)} = 2$" + ], + "text/plain": [ + "Eq(f''(x), 2)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = Symbol('x')\n", + "\n", + "def f(x):\n", + " return x**2\n", + "\n", + "display(sympy.Eq(Function('f')(x), f(x)))\n", + "display(sympy.Eq(Function('f\\'')(Symbol('x')), diff(f(x))))\n", + "display(sympy.Eq(Function('f\\'\\'')(Symbol('x')), diff(diff(f(x)))))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\int \\left(x^{2} + x + 1\\right)\\, dx$" + ], + "text/plain": [ + "Integral(x**2 + x + 1, x)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{x^{3}}{3} + \\frac{x^{2}}{2} + x$" + ], + "text/plain": [ + "x**3/3 + x**2/2 + x" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = Symbol('x')\n", + "i = Integral(x**2 + x + 1, x)\n", + "sympy.solvers.solve(i, x)\n", + "display(i)\n", + "display(i.doit())" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\int \\cos{\\left(x \\right)}\\, dx$" + ], + "text/plain": [ + "Integral(cos(x), x)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\sin{\\left(x \\right)}$" + ], + "text/plain": [ + "sin(x)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "i = Integral(cos(x), x)\n", + "display(i)\n", + "display(i.doit())" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left\\{-1, 1\\right\\}$" + ], + "text/plain": [ + "{-1, 1}" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = Symbol('x')\n", + "y = Symbol('y')\n", + "sympy.FiniteSet(*sympy.solvers.solve(sympy.Eq(x**2, 1), x))" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "![](plot.svg)" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from sympy import symbols\n", + "from sympy.plotting import plot\n", + "x = symbols('x')\n", + "p1 = plot(x**2, show=False, label='$f(x)=x^2$', legend=True)\n", + "p2 = plot(x, label='$g(x)=x$', show=False)\n", + "p2.extend(plot(-x**2, label='$h(x)=-x$', show=False))\n", + "p1.extend(p2)\n", + "p1.save('plot.svg')\n", + "Markdown('![](plot.svg)')" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "96fc3968b0459c7bb0304f66d2259bbe1d74f60096901795baa92b56e1ba9010" + }, + "kernelspec": { + "display_name": "Python 3.10.2 ('AN2_Analysis_2-DUdzbZjr')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.2" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Notes/Semester 2/AN2 - Analysis 2/Zusammenfassung.md b/Notes/Semester 2/AN2 - Analysis 2/Zusammenfassung.md new file mode 100644 index 0000000..1269261 --- /dev/null +++ b/Notes/Semester 2/AN2 - Analysis 2/Zusammenfassung.md @@ -0,0 +1,145 @@ + + + + +# Zusammenfassung Analysis 2 +## Inhalt +- [Zusammenfassung Analysis 2](#zusammenfassung-analysis-2) + - [Inhalt](#inhalt) + - [Integrale](#integrale) + - [Unbestimmte Integrale](#unbestimmte-integrale) + - [Integration von Produkten](#integration-von-produkten) + - [Integration durch Substitution](#integration-durch-substitution) + - [Schritt 1: Verschachtelte Funktionen Bestimmen](#schritt-1-verschachtelte-funktionen-bestimmen) + - [Schritt 2: Substitutions-Gleichung für $x$](#schritt-2-substitutions-gleichung-für-x) + - [Schritt 3: Substitutions-Gleichung für $dx$](#schritt-3-substitutions-gleichung-für-dx) + - [Schritt 4: Integral-Substitution](#schritt-4-integral-substitution) + - [Taylor-Reihe](#taylor-reihe) + +## Integrale +Integrale dienen dazu, die Flächen unter einer Kurve zu berechnen. + +

+ +Mit der Funktion $f(x) = x^3 + 5$ lässt sich dessen Integral folgendermassen darstellen: + +$$\int_{2}^4{f(x)dx}$$ + +oder + +$$\int_{2}^4{\left(x^3 + 5\right)dx}$$ + +Berechnen lässt sich das Integral mit Hilfe der Basisfunktion: + +$$F(x) = \frac{1}{4}x^4 + 5x$$ + +Folgend lautet die Integration: + +$$\int_{2}^4{f(x)dx} = F(4) - F(2)$$ + +oder + +$$\int_{2}^4{f(x)dx} = \left(\frac{1}{4}4^4 + 5 \cdot 4\right) - \left(\frac{1}{4} \cdot 2^4 + 5 \cdot 2\right) \\ +\int_{2}^4{f(x)dx} = \frac{1}{4} \cdot 256 + 20 - \frac{1}{4} \cdot 16 - 10 \\ +\int_{2}^4{f(x)dx} = 64 + 20 - 4 - 10 = 70$$ + +### Unbestimmte Integrale +Integrale können in unbestimmter oder in bestimmter Form geschrieben werden. Unbestimmte Integrale haben - anders als bestimmte Integrale - keinen festgelegte Grenzwerte. + +Aus diesem Grund können diese nicht eindeutig berechnet werden: + +$$\int{x^3 + 5dx} = F(x) = \frac{1}{4}x^4 + 5x + C$$ + +> ***Informationen zur Konstanten $C$:*** +> Da in der Ableitung von $f(x) = x^3 + 5$ eine beliebige Konstante $C$ zulässt, kann die Ableitung nicht eindeutig bestimmt werden. Nur durch Setzen von Grenzen lässt sich die Konstante **eliminieren**: +> $$\int_{-1}^1{x^3 + 5dx} = F(1) - F(-1) \\ +> \int_{-1}^1{x^3 + 5dx} = \left(\frac{1}{4} \cdot 1^4 + 5 \cdot 1 + C\right) - \left(\frac{1}{4} + 5 \cdot -1 + C\right) \\ +> \int_{-1}^1{x^3 + 5dx} = \frac{1}{4} + 5 + C - \frac{1}{4} + 5 - C \\ +> \int_{-1}^1{x^3 + 5dx} = 5 + 5 + \frac{1}{4} - \frac{1}{4} + C - C = 10$$ + +### Integration von Produkten +Da Produkte sowohl durch Produktregel oder durch Kettenregel entstandene Ableitungen sein können, ist das Bestimmen der Basisfunktion von Produkten etwas komplizierter. + +So kann ein Produkt von folgenden 2 Ableitungen[^Derivation] stammen: + +$$\left(u(x) \cdot v(x) \right)' = u'(x) \cdot v(x) + u(x) \cdot v'(x)$$ + +oder + +$$(u(v(x)))' = u'(v(x)) \cdot v'(x)$$ + +Die zwei gängigsten Methoden sind im folgenden beschrieben: + +#### Integration durch Substitution +Diese Methode basiert auf folgende Ableitungs-Regel[^Derivation]. + +$$F(u(x)) = \int{F(u(x))' dx} = \int{F'(u) \cdot u'(x) dx}$$ + +Gelöst wird das Ganze mit der Regel $\frac{du}{dx} = g'(x)$ für $u = g(x)$. + +Aufgezeigt wird das anhand eines bestimmten und eines unbestimmten Integrals: + + - Beispiel a) + $$\int{\left(\cos(x^2) \cdot x\right) dx}$$ + - Beispiel b) + $$\int^{\sqrt{\frac{\pi}{2}}}_0\left(\cos(x^2) \cdot x\right) dx$$ + +##### Schritt 1: Verschachtelte Funktionen Bestimmen +In diesem Schritt sollen die verschachtelten Funktionen für spätere Funktionen bestimmt werden: + +Für Beispiel a) und b) mit $f(g(x)) = \cos(x^2) \cdot x$: + - $f(x) = \cos(g(x)) \cdot x$ + - $g(x) = x^2$ + +##### Schritt 2: Substitutions-Gleichung für $x$ +$$u = g(x)$$ + +Für Beispiel a) und b) bedeutet das: +$$u = x^2$$ + +> ***Note:*** +> Eine verschachtelte Funktion wird üblicherweise mit $g(x)$ bezeichnet. + +##### Schritt 3: Substitutions-Gleichung für $dx$ +$$\frac{du}{dx} = g'(x) \Rightarrow dx = \frac{du}{g'(x)}$$ + +Im Fall von Beispiel a) und b) entspricht die Ableitung $g'(x)$ $2x$. + +Für Beispiel a) und b) bedeutet das folgendes: + +$$\frac{du}{dx} = 2x \Rightarrow dx = \frac{du}{2x}$$ + +##### Schritt 4: Integral-Substitution +$$\int{f(x) dx} = \int{\varphi(u) du}$$ + +Die genannte Formel muss nun auf das Integral und das substituierte Integral angewendet werden. + +Hierbei soll die Variable $x$ weggekürzt werden. Ist dies nicht möglich, so ist dieser Ansatz "Integration durch Substitution" für dieses Integral nicht möglich. + +***Beispiel a)*** +$$\int{\left(\cos(x^2) \cdot x\right) dx} = \int{\left(\cos(u) \cdot x\right) \frac{du}{2x}} \\ +\int{\left(\cos(x^2) \cdot x\right) dx}$$ + +## Taylor-Reihe + +[^Derivation]: [Ableitungen](../.../../../Semester%201/AN1%20-%20Analysis%201/Ableitungen.md) diff --git a/Notes/Semester 2/KT - Kommunikationstechnik/IP-Adressierung.md b/Notes/Semester 2/KT - Kommunikationstechnik/IP-Adressierung.md new file mode 100644 index 0000000..6161a23 --- /dev/null +++ b/Notes/Semester 2/KT - Kommunikationstechnik/IP-Adressierung.md @@ -0,0 +1,24 @@ +# IP-Adressierung +## Adressierung im L3 + - Hierarchisch + +### Subnetting +Mögliche Zahlen in Subnetzmasken: + + +| Wert (dezimal) | Wert (Hexadezimal) | Wert (Binär) | Alternative Schreibweise | Anzahl adressierbarer Interfaces | +| :------------: | :----------------: | :-------------------------------------: | ------------------------ | :------------------------------: | +| 255.255.255.0 | 0xFFFFFF00 | 1111'1111'1111'1111'1111'1111'0000'0000 | /24 | $256 - 2$ | +| 255.255.254.0 | 0xFFFFFE00 | 1111'1111'1111'1111'1111'1110'0000'0000 | /23 | $512 - 2$ | +| 255.255.252.0 | 0xFFFFFC00 | 1111'1111'1111'1111'1111'1100'0000'0000 | /22 | $1024 - 2$ | +| 255.255.248.0 | 0xFFFFF800 | 1111'1111'1111'1111'1111'1000'0000'0000 | /21 | $2048 - 2$ | +| 255.255.240.0 | 0xFFFFF000 | 1111'1111'1111'1111'1111'0000'0000'0000 | /20 | $4096 - 2$ | +| 255.255.224.0 | 0xFFFFE000 | 1111'1111'1111'1111'1110'0000'0000'0000 | /19 | $8192 - 2$ | +| 255.255.192.0 | 0xFFFFC000 | 1111'1111'1111'1111'1100'0000'0000'0000 | /18 | $16384 - 2$ | +| 255.255.128.0 | 0xFFFF8000 | 1111'1111'1111'1111'1000'0000'0000'0000 | /17 | $32768 - 2$ | +| 255.255.0.0 | 0xFFFF0000 | 1111'1111'1111'1111'0000'0000'0000'0000 | /16 | $65536 - 2$ | + +## Routing +## IP-Adressen/Header +## ARP, Kapselung +## Fragmentierung \ No newline at end of file diff --git a/Notes/Semester 2/KT - Kommunikationstechnik/Lektion 4.md b/Notes/Semester 2/KT - Kommunikationstechnik/Lektion 4.md new file mode 100644 index 0000000..98fee33 --- /dev/null +++ b/Notes/Semester 2/KT - Kommunikationstechnik/Lektion 4.md @@ -0,0 +1,39 @@ +$c_m = 200000 \frac{km}{s}$ + +## Metallische Leiter +### Dämpfung +Verkleinerung der Amplitude über die Zeit + +$10 \cdot \log(\frac{P_1}{P_2}) = 20 \cdot \log(\frac{U_1}{U_2}) + +### Kapazitiver Effekt +Entsteht bei Spannungsdifferenzen zwischen 2 Adern. +Kann behoben werden durch Abschirmung + +### Induktiver Effekt +Kann behoben werden durch Verdrillen der Adern + +## Lichtleiter + +### Stufenfaser +Dispersion, Delay Skew + +Hat keine Gradienten-Verteilung. Besteht nur aus Innen- und Aussenfaser. + +### Gradientenfaser + +### Monomode-Faser + +## Codierung +### Anforderungen + - Taktrückgewinnung + - Gleichspannungsfreiheit + +### Formeln +#### Nyquist +#### Hartley +#### Shannon +Theorem von Shannon + +### AMI-Codierung +### PAM-Codierung diff --git a/Notes/Semester 2/KT - Kommunikationstechnik/OSI-Modell.md b/Notes/Semester 2/KT - Kommunikationstechnik/OSI-Modell.md new file mode 100644 index 0000000..d2ec9f0 --- /dev/null +++ b/Notes/Semester 2/KT - Kommunikationstechnik/OSI-Modell.md @@ -0,0 +1,17 @@ +# OSI-Modell +## Grundlagen +Folgende Aspekte müssen gegeben sein für die Übermittlung von Daten + - Eine Verbindung + - Physikalisch + - Logisch + - Vereinbarung der Datenstruktur + - Standard (RFC 802.1) + - Fehlerkorrekturverfahren + - Adressierung + - Security/Verschlüsselung + +OSI-Layer 1-4 werden vom Betriebssystem abgehandelt + +## HW +### RJ-45 +4 Paare à je 2 Adern diff --git a/Notes/Semester 2/LA - Lineare Algebra/Aufgaben.ipynb b/Notes/Semester 2/LA - Lineare Algebra/Aufgaben.ipynb new file mode 100644 index 0000000..ff7e5b4 --- /dev/null +++ b/Notes/Semester 2/LA - Lineare Algebra/Aufgaben.ipynb @@ -0,0 +1,87 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aufgaben\n", + "Gegeben ist die folgende lineare Abbildung:\n", + "$$f: \\mathbb{R}^2 \\rightarrow \\mathbb{R}^3:\n", + "\\begin{pmatrix}\n", + "x_1 \\\\\n", + "x_2\n", + "\\end{pmatrix}\n", + "\\mapsto\n", + "\\begin{pmatrix}\n", + "-x_2 \\\\\n", + "2x_1 \\\\\n", + "x_2 - x_1\n", + "\\end{pmatrix}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from sympy import init_printing, latex, Symbol, Function, Matrix, Eq, Mul, MatMul\n", + "init_printing(latex_printer=lambda *args, **kwargs: latex(*args, mul_symbol='dot', **kwargs))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGYAAAAzCAYAAABlnH0mAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFWUlEQVR4Ae2c7VFVMRCGkaEARzvADlAqUDsQOkA70OEf/xjsAKxAsQOwAoUOtAORDvB9YnI4Nydf957cIxeyM7nJ2Wx2k93s5ovh0c3NzVqDxTRwcHDwONRS+OsQPoSL8VgPETdcsQYuRPnHS0fFrf8Rnnrt4Xe6MSeTRj7UwGvN+vMhugyjtq/7lPp+q++d5jF9rdyhcvOYCYwhL9iSGELWc5WL1p9mmCUZRgZgY/BJ6UrphdKmUjE0wxSraj5C6xk7tFL5vTK8phjaGlOsqmkJm2Gm1XextGaYYlVNS9gMM62+i6U1wxSralrCZphp9V0srRmmWFXTEjbDTKvvYmlVDKMD1GaxxDkIl8V3ji78N9LRhlnkVOuPVjy4RwrBpuUfqlsl3FPb2SelnU4aRko5VjqyafAoJPwbCXqq/GupwAjdY/F45dcJZ67TlXMVvnKgfp+S1HHXf/NdMp7oXZka8+CDhY+Vvil9V+oMoHoMta/8ufIkWFoelWLgQuHgXUNtPypdKH1RKrqZjQmZGq/+mruyReRGDSNmWHlPCeP8UPKVhuEwWhasQp+FCFXHBd92ZhDIQd67EI/7iAuGMimJsIJHnKtM4pXOn627wp1UUAr8kzPLykEefXoQEDSMRs5z5y8pwjeGUYrwrC2/zMfIH/G6LGSBvN1C2pUnmwllUhLhC6PgMVf6ZuEi90MINH5oE+oW1IbZva/022IJZR+EDxrb0qQy5CG3hpem5NyJOt8wDPpEyuNvmg6Vf4z0khe56PqidhiW+h2VjUco56EIQ31QWgR+qhF8syBZyC6i7TG7VLtkSO3RLr04YxikqXPRHVKvN3gDT6YDsO3PVPFO5X6YQlHgO1A9fAhP0OZ2d8hzfet4hAri5Xt4iOxO4waGUW+Z2WsaXF+p/iDYqcVCkvMkzibsuAAOWGf67sKfyshxsxoD5YA1poQux2cl6kOG2VbPxyzsKPurFB8Lg0YxqsfwhA82EiWQmgwl7VeKJmQYZnLKWxggYSU1ezmM1gbkITcLMvb9W2M0ahb2w8zo8ahYvKfO3Q3NsME7lLrbg5nK/AceU+TJknG/1hgNCGUzM3MeQz0hLwSDE7r4whM8aVFgc5Dr16K8l9ZOY3dj5tjAkYG7x+wE80MZYWxNDbtFmu8AfBaOM84A1JbtNgs/HWKLC/A9dhazdo3lYToz1Y/GzP0gxw4TJZQzQbn34yYlaRzfMBzgsqFGTFm015S2KPsDFS658Pv0uW/xM2FTeW7C5FhNVq++clhnQnb6VPnafrMGousorIuQuO9mP+sL3lACeMRUM5hDKfJWCTisDiatcGyMXknneE8U1lXDgLGsIVTeWTjaShWi45aAhywzm1O0oTraKSF73/Ih9rpzT9fE8od21a5iCL1X3UBuCy6EUR8FQpkxjM3nvZKAHm9LuqXqByBF08GS6xncfirPHPRzEYTGlvQGy5NdZhQ2xsxEtSVmcp3yXqnqukKP4asM/m6WRQdyxyqc0q8T/UoaD48ZBVZp1Y1Cp8R7KXxHDbhe4+BZz7FnjWlQXwOhtcVJcd7knkMcfiZvhplRR50PeboLYaFw5XDJ8NwMU8cWIS6cuUI7VucxyTNZM0xIpXVw7FY5F/pgrpZ6XuXXm+9mmKBaxiOleM5dPMt3zxoqE8Z4GNzLSRi9K8sJeOD1eAcHZy58WezJX+o7dCOgqltohrnVRfWSDMAmYKHDcQtl1c1Rh2EzTB09VufSDFNdpXUYNsPU0WN1Ls0w1VVah2HblY3XI29F7prFcLO7sSLOfls1MryaxxSpL0nEe1H/n8nN+9LKDcGg/V9o45EP0mnbbAAAAABJRU5ErkJggg==", + "text/latex": [ + "$\\displaystyle f{\\left(\\vec{e_1} \\right)} = \\left[\\begin{matrix}1\\\\0\\end{matrix}\\right]$" + ], + "text/plain": [ + " ⎡1⎤\n", + "f(\\vec{e_1}) = ⎢ ⎥\n", + " ⎣0⎦" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f = Function('f')\n", + "e = Symbol('\\\\vec{e_1}')\n", + "M = Matrix([1, 0])\n", + "Eq(f(e), M, evaluate=False)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "341c8103277e0717e088b7bc94c2655a933f4146b751d7557e6ec751ee6c0dd9" + }, + "kernelspec": { + "display_name": "Python 3.10.2 ('ZHAW-Pb88adSo')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.2" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Notes/Semester 2/LA - Lineare Algebra/Zusammenfassung.ipynb b/Notes/Semester 2/LA - Lineare Algebra/Zusammenfassung.ipynb new file mode 100644 index 0000000..d92de2c --- /dev/null +++ b/Notes/Semester 2/LA - Lineare Algebra/Zusammenfassung.ipynb @@ -0,0 +1,301 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lineare Algebra Zusammenfassung" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "from sympy import Add, Matrix, Eq, Expr, MatMul, Mul, Equality, Equivalent, Function, Symbol, init_printing, latex\n", + "from IPython.display import Markdown, Math\n", + "init_printing(latex_printer=lambda *args, **kwargs: latex(*args, mul_symbol='dot', **kwargs))\n", + "\n", + "def calculate(vars: dict, calculation: Expr, precision: int = None):\n", + " for key in vars:\n", + " display(Eq(key, vars[key], evaluate=False))\n", + "\n", + " if isinstance(vars[key], Expr):\n", + " display(Eq(key, vars[key].subs(vars, simultaneous=True), evaluate=False))\n", + "\n", + " display(Eq(calculation, calculation.subs(vars, simultaneous=True), evaluate=False))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Linearer Spann im $\\mathbb{R}^2$\n", + " - 2 Kollineare Vektoren \n", + " Ursprungsgerade\n", + " - 2 nicht-kollineare Vektoren $\\mathbb{R}^2$\n", + "\n", + "Im $\\mathbb{R}^3$\n", + " - 3 kollineare Vektoren Ursprungsgerade\n", + " - 3 komplanare, nicht-kollineare Vektoren \n", + " Ursprungsebene\n", + " - 3 linear unabhängige Vektoren \n", + " $\\mathbb{R}^3$" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/latex": [ + "$\\displaystyle M = \\left[\\begin{matrix}1 & 2 & 3\\\\4 & 5 & 6\\end{matrix}\\right]$" + ], + "text/plain": [ + " ⎡1 2 3⎤\n", + "M = ⎢ ⎥\n", + " ⎣4 5 6⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/latex": [ + "$\\displaystyle N = \\left[\\begin{matrix}1 & 2\\\\3 & 4\\\\5 & 6\\end{matrix}\\right]$" + ], + "text/plain": [ + " ⎡1 2⎤\n", + " ⎢ ⎥\n", + "N = ⎢3 4⎥\n", + " ⎢ ⎥\n", + " ⎣5 6⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/latex": [ + "$\\displaystyle M \\cdot N = \\left[\\begin{matrix}9 & 12 & 15\\\\19 & 26 & 33\\\\29 & 40 & 51\\end{matrix}\\right]$" + ], + "text/plain": [ + " ⎡9 12 15⎤\n", + " ⎢ ⎥\n", + "M⋅N = ⎢19 26 33⎥\n", + " ⎢ ⎥\n", + " ⎣29 40 51⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "M = Symbol(\"M\")\n", + "N = Symbol(\"N\")\n", + "calculate({M: Matrix([[1, 2, 3], [4, 5, 6]]), N: Matrix([[1, 2], [3, 4], [5, 6]])}, M*N)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Funktionen $f: \\mathbb{R} \\rightarrow \\mathbb{R}: x \\mapsto m \\cdot x$ ($m \\in \\mathbb{R}$) sind lineare Abbildungen." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/latex": [ + "$\\displaystyle f{\\left(x + y \\right)} = m \\cdot \\left(x + y\\right)$" + ], + "text/plain": [ + "f(x + y) = m⋅(x + y)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "f = Function('f')\n", + "m = Symbol('m')\n", + "x = Symbol('x')\n", + "y = Symbol('y')\n", + "la = Symbol('\\lambda')\n", + "display(Eq(f(x + y), m * (x + y)))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/latex": [ + "$\\displaystyle f{\\left(\\left[\\begin{matrix}x\\\\y\\\\z\\\\w\\end{matrix}\\right] \\right)} = \\left[\\begin{matrix}w + x\\\\- y + z\\\\- 2 \\cdot w - x + y\\\\2 \\cdot x - y\\\\w + z\\end{matrix}\\right]$" + ], + "text/plain": [ + " ⎡ w + x ⎤\n", + " ⎛⎡x⎤⎞ ⎢ ⎥\n", + " ⎜⎢ ⎥⎟ ⎢ -y + z ⎥\n", + " ⎜⎢y⎥⎟ ⎢ ⎥\n", + "f⎜⎢ ⎥⎟ = ⎢-2⋅w - x + y⎥\n", + " ⎜⎢z⎥⎟ ⎢ ⎥\n", + " ⎜⎢ ⎥⎟ ⎢ 2⋅x - y ⎥\n", + " ⎝⎣w⎦⎠ ⎢ ⎥\n", + " ⎣ w + z ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/latex": [ + "$\\displaystyle f{\\left(\\left[\\begin{matrix}1\\\\0\\\\0\\\\0\\end{matrix}\\right] \\right)} = \\left[\\begin{matrix}1\\\\0\\\\-1\\\\2\\\\0\\end{matrix}\\right]$" + ], + "text/plain": [ + " ⎡1 ⎤\n", + " ⎛⎡1⎤⎞ ⎢ ⎥\n", + " ⎜⎢ ⎥⎟ ⎢0 ⎥\n", + " ⎜⎢0⎥⎟ ⎢ ⎥\n", + "f⎜⎢ ⎥⎟ = ⎢-1⎥\n", + " ⎜⎢0⎥⎟ ⎢ ⎥\n", + " ⎜⎢ ⎥⎟ ⎢2 ⎥\n", + " ⎝⎣0⎦⎠ ⎢ ⎥\n", + " ⎣0 ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/latex": [ + "$\\displaystyle f{\\left(\\left[\\begin{matrix}0\\\\1\\\\0\\\\0\\end{matrix}\\right] \\right)} = \\left[\\begin{matrix}0\\\\-1\\\\1\\\\-1\\\\0\\end{matrix}\\right]$" + ], + "text/plain": [ + " ⎡0 ⎤\n", + " ⎛⎡0⎤⎞ ⎢ ⎥\n", + " ⎜⎢ ⎥⎟ ⎢-1⎥\n", + " ⎜⎢1⎥⎟ ⎢ ⎥\n", + "f⎜⎢ ⎥⎟ = ⎢1 ⎥\n", + " ⎜⎢0⎥⎟ ⎢ ⎥\n", + " ⎜⎢ ⎥⎟ ⎢-1⎥\n", + " ⎝⎣0⎦⎠ ⎢ ⎥\n", + " ⎣0 ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/latex": [ + "$\\displaystyle f{\\left(\\left[\\begin{matrix}0\\\\0\\\\1\\\\0\\end{matrix}\\right] \\right)} = \\left[\\begin{matrix}0\\\\1\\\\0\\\\0\\\\1\\end{matrix}\\right]$" + ], + "text/plain": [ + " ⎡0⎤\n", + " ⎛⎡0⎤⎞ ⎢ ⎥\n", + " ⎜⎢ ⎥⎟ ⎢1⎥\n", + " ⎜⎢0⎥⎟ ⎢ ⎥\n", + "f⎜⎢ ⎥⎟ = ⎢0⎥\n", + " ⎜⎢1⎥⎟ ⎢ ⎥\n", + " ⎜⎢ ⎥⎟ ⎢0⎥\n", + " ⎝⎣0⎦⎠ ⎢ ⎥\n", + " ⎣1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/latex": [ + "$\\displaystyle f{\\left(\\left[\\begin{matrix}0\\\\0\\\\0\\\\1\\end{matrix}\\right] \\right)} = \\left[\\begin{matrix}1\\\\0\\\\-2\\\\0\\\\1\\end{matrix}\\right]$" + ], + "text/plain": [ + " ⎡1 ⎤\n", + " ⎛⎡0⎤⎞ ⎢ ⎥\n", + " ⎜⎢ ⎥⎟ ⎢0 ⎥\n", + " ⎜⎢0⎥⎟ ⎢ ⎥\n", + "f⎜⎢ ⎥⎟ = ⎢-2⎥\n", + " ⎜⎢0⎥⎟ ⎢ ⎥\n", + " ⎜⎢ ⎥⎟ ⎢0 ⎥\n", + " ⎝⎣1⎦⎠ ⎢ ⎥\n", + " ⎣1 ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = Symbol('x')\n", + "y = Symbol('y')\n", + "z = Symbol('z')\n", + "w = Symbol('w')\n", + "f = Function('f')\n", + "\n", + "def realF(x, y, z, w):\n", + " return Matrix([x + w, z - y, y - x - 2 * w, 2 * x - y, z + w])\n", + "\n", + "display(Eq(f(Matrix([x, y, z, w])), realF(x, y, z, w), evaluate=False))\n", + "input = 1, 0, 0, 0\n", + "display(Eq(f(Matrix(input)), realF(*input), evaluate=False))\n", + "input = 0, 1, 0, 0\n", + "display(Eq(f(Matrix(input)), realF(*input), evaluate=False))\n", + "input = 0, 0, 1, 0\n", + "display(Eq(f(Matrix(input)), realF(*input), evaluate=False))\n", + "input = 0, 0, 0, 1\n", + "display(Eq(f(Matrix(input)), realF(*input), evaluate=False))" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "184a40b3dca75cecb3b866e2d98ad88cc8239a23b64498ef3e7e2e1f5f9f2635" + }, + "kernelspec": { + "display_name": "Python 3.10.2 ('ZHAW-Pb88adSo')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.2" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Notes/Semester 2/LA - Lineare Algebra/Zusammenfassung.md b/Notes/Semester 2/LA - Lineare Algebra/Zusammenfassung.md new file mode 100644 index 0000000..4edb620 --- /dev/null +++ b/Notes/Semester 2/LA - Lineare Algebra/Zusammenfassung.md @@ -0,0 +1,9 @@ +# Koordinatensystem +Aufbau eines 3D Koordinatensystems + - Die erste Achse $e_1$ ist parallel zur zweiten Achse $e_2$ + - Das "Rechtssystem" lässt sich jeweils mit der rechten Hand in der Reihenfolge "Daumen", "Zeigefinger, "Mittelfinger" darstellen + +Jeder Vektor lässt sich als Produkt von den einzelnen Achsen (bspw. $e_1$, $e_2$ und $e_3$ oder $x$, $y$ und $z$) darstellen. + +## Vektoren +### Skalarprodukt diff --git a/Notes/Semester 2/PROG2 - Programmieren 2/MicrosoftJava.ipynb b/Notes/Semester 2/PROG2 - Programmieren 2/MicrosoftJava.ipynb new file mode 100644 index 0000000..f63fd1a --- /dev/null +++ b/Notes/Semester 2/PROG2 - Programmieren 2/MicrosoftJava.ipynb @@ -0,0 +1,335 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
572
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
772
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "List numbers = new List(){ 1, 7, 18, 48, 28, 20, 17, 458 };\n", + "IEnumerable evenNumbers = numbers.Skip(1).Where(n => n % 2 == 0);\n", + "DisplayExtensions.Display(evenNumbers.Sum());\n", + "numbers.Add(200);\n", + "DisplayExtensions.Display(evenNumbers.Sum());" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
indexvalue
0
4
1
36
2
144
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Func isEven = n => n % 2 == 0;\n", + "DisplayExtensions.Display(\n", + " new List(){3, 6, 6, 5, 2, 12, 11, 13}.Skip(2).Where(isEven).Select(n => n * n).OrderBy(n => n).ToArray());" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
indexvalue
0
2
1
3
2
6
3
5
4
12
5
13
6
11
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "DisplayExtensions.Display(\n", + " new List>(){ new List(){2, 3, 6, 5}, new List(){ 12, 13, 11 } }.SelectMany(l => l).ToArray());" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
55
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
5
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "List numbers = new List(){3, 6, 2, 5, 6, 12, 11, 13};\n", + "Func isEven = n => n % 2 == 0;\n", + "DisplayExtensions.Display(\n", + " numbers.Where(isEven)\n", + " .Select(n => n * n)\n", + " .Average());\n", + "\n", + "DisplayExtensions.Display(\n", + " numbers.Where(i => i > 4)\n", + " .OrderBy(i => i)\n", + " .FirstOrDefault());" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
indexvalue
0
6
1
2
2
6
3
12
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
indexvalue
0
[ 3, 5, 11, 13 ]
1
[ 6, 2, 12 ]
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
indexvalue
0
9
1
36
2
4
3
25
4
144
5
121
6
169
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "[3;6;2;5;6;12;11;13]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "List numbers = new List(){3, 6, 2, 5, 6, 12, 11, 13};\n", + "Func isEven = n => n % 2 == 0;\n", + "\n", + "DisplayExtensions.Display(\n", + " numbers.Where(isEven)\n", + " .ToList());\n", + "\n", + "DisplayExtensions.Display(\n", + " numbers.Distinct()\n", + " .GroupBy(i => isEven(i) ? \"Even\" : \"Odd\"));\n", + "\n", + "DisplayExtensions.Display(\n", + " numbers.Distinct().Select(i => i * i));\n", + "\n", + "DisplayExtensions.Display(\n", + " $\"[{String.Join(\";\", numbers.ToArray())}]\");" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Filter: 3\r\n", + "Filter: 2\r\n", + "Map: 2 => 4\r\n", + "Filter: 12\r\n", + "Map: 12 => 144\r\n", + "Reduce: aggregate=4 next=144 => 148\r\n", + "Filter: 5\r\n", + "Filter: 13\r\n", + "Filter: 11\r\n" + ] + }, + { + "data": { + "text/html": [ + "
148
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "DisplayExtensions.Display(\n", + " new List(){3, 2, 12, 5, 13, 11}.Select(\n", + " (i) =>\n", + " {\n", + " Console.WriteLine($\"Filter: {i}\");\n", + " return i;\n", + " })\n", + " .Where(i => i % 2 == 0)\n", + " .Select(\n", + " (i) =>\n", + " {\n", + " int result = i * i;\n", + " Console.WriteLine($\"Map: {i} => {result}\");\n", + " return result;\n", + " })\n", + " .Aggregate(\n", + " (sum, nextValue) =>\n", + " {\n", + " int result = sum + nextValue;\n", + " Console.WriteLine($\"Reduce: aggregate={sum} next={nextValue} => {result}\");\n", + " return result;\n", + " }));" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
indexvalue
0This
1is
2test
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
indexvalue
0This
1is
2test
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
indexvalue
0This
1is
2test
3another1
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "List lines = new List(){\"This\", \"is\", \"a\", \"test\"};\n", + "IEnumerable linesWithEvenCount = lines.Where(line => line.Length % 2 == 0);\n", + "DisplayExtensions.Display(linesWithEvenCount);\n", + "DisplayExtensions.Display(linesWithEvenCount.ToArray());\n", + "lines.Add(\"another\");\n", + "lines.Add(\"another1\");\n", + "DisplayExtensions.Display(linesWithEvenCount.ToArray());" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "C#" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Notes/Semester 2/THIN - Theoretische Informatik/Glossary.md b/Notes/Semester 2/THIN - Theoretische Informatik/Glossary.md new file mode 100644 index 0000000..26d75d6 --- /dev/null +++ b/Notes/Semester 2/THIN - Theoretische Informatik/Glossary.md @@ -0,0 +1,36 @@ +# Glossar +| Bezeichnung | Definition | +| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Alphabet | **Endliche**, **nichtleere** Menge von **Symbolen**. Bsp: $\Sigma_\text{Bool}=\{0,1\}$ | +| Wort | Ist eine **endliche** Folge von Symbolen eines Alphabets. Bsp. $100111$ ist ein Wort über dem Alphabet $\{0,1\}$ | +| Leeres Wort $\varepsilon$ | Ist ein Wort, welches keine Symbole enthält. Dieses kann mit jedem Alphabet dargestellt werden. | +| Wortlänge | Der Operator $\|\Box\|$ bezeichnet die Länge eines Wortes. Bsp: $\|abc\|=\{1,2,3\}$ | +| Häufigkeit eines Symbols in einem Wort $\|w\|_x$ | Bezeichnet die **absolute Häufigkeit eines Wortes $x$ in einem Wort $w$** | +| Spiegelwort $w^R$ | $w^R$ ist die spiegelverkehrte Repräsentation eines Wortes: $abc^R = cba$ | +| Infix | Ein Teilwort eines Wortes. Beispiel: Von "Bodensee-Rundfahrt-Passkontrolleur" Können beliebige Teilworte (Infixes) wie etwa "Bodensee" oder "Passkontrolleur" gebildet werden. | +| Prefix | Der Start eines Wortes. | +| Suffix | Das Ende eines Wortes. | +| Menge aller Wörter der Länge $k$ | Die **Menge aller Wörter der Länge** $k$ über dem Alphabet $\Sigma$ wird mit $\Sigma^k$ bezeichnet. $\Sigma^0$ ist immer $= \{\varepsilon\}$ | +| Menge aller Wörter $\Sigma^*$ | + +# Wortpotenz +Sei $x$ ein Wort über einem Alphabet $\Sigma$. Für alle $n \in \N$ sind **Wortpotenzen** wie folgt definiert: + +$x^0 := \varepsilon$ +$x^n+1 := x^n \circ x = x^nx$ + +> ***Beispiel:*** +> $a^3 = a^2a = a^1aa = a^0aaa = aaa$ + +# Konkatenation von Alphabeten +Die Konkatenation $AB$ ist ein Alphabet, welches Verkettungen aller Alphabet-Einträge $A$ und Alphabet-Einträge $B$ beinhaltet. + +# Kleenesche Hülle +Die Kleenesche Hülle $A^*$ ist ein Alphabet, welcher die Verkettungen beliebig vieler Alphabet-Einträge von $A$ beinhaltet. + + +# Symbole +| Symbol | Bedeutung | +| ------------- | ------------- | +| $\varepsilon$ | Leeres Wort | +| $\empty = {}$ | Leere Sprache | \ No newline at end of file diff --git a/Notes/Semester 2/THIN - Theoretische Informatik/collatz.py b/Notes/Semester 2/THIN - Theoretische Informatik/collatz.py new file mode 100644 index 0000000..72d3a69 --- /dev/null +++ b/Notes/Semester 2/THIN - Theoretische Informatik/collatz.py @@ -0,0 +1,40 @@ +from time import time + +result = 0 +maxIterations = 0 +cache = dict() +start_time = time() + +def printTime(sec: int): + mins = sec // 60 + hours = mins // 60 + mins = mins % 60 + sec = sec % 60 + print("Time: %02d:%02d:%02d" % (hours, mins, sec)) + +def collatz(value: int): + currentValue = value + + if (value not in cache): + if (currentValue % 2 == 0): + currentValue //= 2 + else: + currentValue = (currentValue * 3) + 1 + + if (currentValue == 1): + cache[value] = 1 + else: + cache[value] = 1 + collatz(currentValue) + + return cache[value] + +for i in range(1, 50 * 1000 * 1000): + iterations = collatz(i) + + if (iterations > maxIterations): + maxIterations = iterations + result = i + +end_time = time() +print("The number with the most iterations is " + str(result) + " with " + str(maxIterations) + " iterations.") +printTime(end_time - start_time) diff --git a/Test.md b/Test.md new file mode 100644 index 0000000..aef3e2e --- /dev/null +++ b/Test.md @@ -0,0 +1,12 @@ +# This is a test +Ist Mayonnaise auch ein Instrument? + +--- + + +# Hello World + +--- + + +# Modern diff --git a/ZHAWNotes.code-workspace b/ZHAWNotes.code-workspace new file mode 100644 index 0000000..fae031b --- /dev/null +++ b/ZHAWNotes.code-workspace @@ -0,0 +1,64 @@ +{ + "folders": [ + { + "name": "ZHAWNotes", + "path": "." + }, + { + "name": "Lineare Algebra", + "path": "./Notes/Semester 2/LA Lineare Algebra" + }, + { + "name": "Analysis 2", + "path": "./Notes/Semester 2/AN2 Analysis 2" + }, + { + "name": "Datenbanken", + "path": "./Notes/Semester 1/DB Datenbanken" + } + ], + "settings": { + "sqltools.connections": [ + { + "server": "localhost", + "port": 5432, + "driver": "PostgreSQL", + "name": "Praktikum 13", + "database": "Praktikum13", + "username": "postgres", + "password": "example" + } + ] + }, + "tasks": { + "version": "2.0.0", + "tasks": [ + { + "type": "docker-compose", + "label": "Start Postgres Workspace", + "dockerCompose": { + "up": { + "detached": true, + "build": true + }, + "files": [ + "${workspaceFolder:Datenbanken}/Docker-Workspace/docker-compose.yml" + ] + } + }, + { + "type": "docker-compose", + "label": "Stop Postgres Workspace", + "dockerCompose": { + "up": { + "detached": true, + "build": true + }, + "files": [ + "${workspaceFolder:Datenbanken}/Docker-Workspace/docker-compose.yml" + ] + } + } + ] + } +} diff --git a/assets/deployggb.js b/assets/deployggb.js new file mode 100644 index 0000000..fb44346 --- /dev/null +++ b/assets/deployggb.js @@ -0,0 +1,5 @@ +/* + @author: GeoGebra - Dynamic Mathematics for Everyone, http://www.geogebra.org + @license: This file is subject to the GeoGebra Non-Commercial License Agreement, see http://www.geogebra.org/license. For questions please write us at office@geogebra.org. +*/ +(function(){if(typeof window.GGBApplet=="function"){console.warn("deployggb.js was loaded twice");return}var isRenderGGBElementEnabled=false;var scriptLoadStarted=false;var html5AppletsToProcess=null;var ggbHTML5LoadedCodebaseIsWebSimple=false;var ggbHTML5LoadedCodebaseVersion=null;var ggbHTML5LoadedScript=null;var GGBApplet=function(){"use strict";var applet={};var ggbVersion="5.0";var parameters={};var views=null;var html5NoWebSimple=false;var html5NoWebSimpleParamExists=false;var appletID=null;var initComplete=false;var html5OverwrittenCodebaseVersion=null;var html5OverwrittenCodebase=null;for(var i=0;i4?parseFloat(d):5};applet.setHTML5Codebase=function(codebase,offline){html5OverwrittenCodebase=codebase;setHTML5CodebaseInternal(codebase,offline)};applet.setJavaCodebase=applet.setJavaCodebaseVersion=applet.isCompiledInstalled=applet.setPreCompiledScriptPath=applet.setPreCompiledResourcePath=function(){};applet.setHTML5CodebaseVersion=function(version,offline){var numVersion=parseFloat(version);if(numVersion!==NaN&&numVersion<5){console.log("The GeoGebra HTML5 codebase version "+numVersion+" is deprecated. Using version latest instead.");return}html5OverwrittenCodebaseVersion=version;setDefaultHTML5CodebaseForVersion(version,offline)};applet.getHTML5CodebaseVersion=function(){return html5CodebaseVersion};applet.getParameters=function(){return parameters};applet.setFontsCSSURL=function(url){fonts_css_url=url};applet.setGiacJSURL=function(url){};applet.setJNLPFile=function(newJnlpFilePath){jnlpFilePath=newJnlpFilePath};applet.setJNLPBaseDir=function(baseDir){};applet.inject=function(){function isOwnIFrame(){return window.frameElement&&window.frameElement.getAttribute("data-singleton")}var type="auto";var container_ID=parameters.id;var container;var noPreview=false;for(var i=0;i=5){return true}var app=applet.getAppletObject();if(app){if(typeof app.recalculateEnvironments==="function"){app.recalculateEnvironments();return true}}return false};applet.startAnimation=function(){var app=applet.getAppletObject();if(app){if(typeof app.startAnimation==="function"){app.startAnimation();return true}}return false};applet.stopAnimation=function(){var app=applet.getAppletObject();if(app){if(typeof app.stopAnimation==="function"){app.stopAnimation();return true}}return false};applet.getAppletObject=function(){var appName=parameters.id!==undefined?parameters.id:"ggbApplet";return window[appName]};applet.resize=function(){};var appendParam=function(applet,name,value){var param=document.createElement("param");param.setAttribute("name",name);param.setAttribute("value",value);applet.appendChild(param)};var valBoolean=function(value){return value&&value!=="false"};var injectHTML5Applet=function(appletElem,parameters,noPreview){if(parseVersion(html5CodebaseVersion)<=4.2){noPreview=true}var loadScript=!isRenderGGBElementEnabled&&!scriptLoadStarted;if(!isRenderGGBElementEnabled&&!scriptLoadStarted||(ggbHTML5LoadedCodebaseVersion!==html5CodebaseVersion||ggbHTML5LoadedCodebaseIsWebSimple&&!html5CodebaseIsWebSimple)){loadScript=true;isRenderGGBElementEnabled=false;scriptLoadStarted=false}var article=document.createElement("div");article.classList.add("appletParameters","notranslate");var oriWidth=parameters.width;var oriHeight=parameters.height;parameters.disableAutoScale=parameters.disableAutoScale===undefined?GGBAppletUtils.isFlexibleWorksheetEditor():parameters.disableAutoScale;if(parameters.width!==undefined){if(parseVersion(html5CodebaseVersion)<=4.4){if(valBoolean(parameters.showToolBar)){parameters.height-=7}if(valBoolean(parameters.showAlgebraInput)){parameters.height-=37}if(parameters.width<605&&valBoolean(parameters.showToolBar)){parameters.width=605;oriWidth=605}}else{var minWidth=100;if(valBoolean(parameters.showToolBar)||valBoolean(parameters.showMenuBar)){if(parameters.hasOwnProperty("customToolBar")){parameters.customToolbar=parameters.customToolBar}minWidth=valBoolean(parameters.showMenuBar)?245:155}if(oriWidth=5){parameters.appletOnLoad=function(api){var preview=appletElem.querySelector(".ggb_preview");if(preview){preview.parentNode.removeChild(preview)}if(window.GGBT_spinner){window.GGBT_spinner.removeSpinner(previewPositioner)}if(window.GGBT_wsf_view){$(window).trigger("resize")}else{window.onresize()}oriAppletOnload(api)};if(!preRendered){previewPositioner.appendChild(previewContainer)}}else{article.appendChild(previewContainer)}previewPositioner.appendChild(article);if(!preRendered){appletElem.appendChild(previewPositioner)}setTimeout((function(){applet.resize()}),1)}else{var appletScaler=document.createElement("div");appletScaler.className="applet_scaler";appletScaler.style.position="relative";appletScaler.style.display="block";appletScaler.appendChild(article);appletElem.appendChild(appletScaler);parameters.appletOnLoad=function(api){applet.resize();oriAppletOnload(api)}}function renderGGBElementWithParams(article,parameters){if(parameters&&typeof parameters.appletOnLoad==="function"&&typeof renderGGBElement==="function"){renderGGBElement(article,parameters.appletOnLoad)}else{renderGGBElement(article)}log("GeoGebra HTML5 applet injected and rendered with previously loaded codebase.",parameters)}function renderGGBElementOnTube(a,parameters){if(typeof renderGGBElement==="undefined"){if(html5AppletsToProcess===null){html5AppletsToProcess=[]}html5AppletsToProcess.push({article:a,params:parameters});window.renderGGBElementReady=function(){isRenderGGBElementEnabled=true;if(html5AppletsToProcess!==null&&html5AppletsToProcess.length){html5AppletsToProcess.forEach((function(obj){renderGGBElementWithParams(obj.article,obj.params)}));html5AppletsToProcess=null}};if(parseVersion(html5CodebaseVersion)<5){a.className+=" geogebraweb"}}else{renderGGBElementWithParams(a,parameters)}}if(loadScript){scriptLoadStarted=true;for(var i=0;i0){content.remove();oldcontent.attr("id","fullscreencontent").show();jQuery(container).append(oldcontent);window.onresize()}else{injectHTML5Applet(content,parameters,false)}window.GGBT_wsf_view.launchFullScreen(container)}else{loadedAppletType=type;injectHTML5Applet(appletElem,parameters,false)}if(!window.GGBT_wsf_view){for(i=0;ioriWidth/4*3){pWidth=oriWidth/4*3}pHeight=pWidth/5.8;previewOverlay.setAttribute("src",previewLoadingPath);previewOverlay.setAttribute("width",pWidth);previewOverlay.setAttribute("height",pHeight);var pX=(oriWidth-pWidth)/2;var pY=(oriHeight-pHeight)/2;previewOverlay.style.left=pX+"px";previewOverlay.style.top=pY+"px";previewContainer.appendChild(previewOverlay)}}previewContainer.appendChild(preview);return previewContainer};var detectAppletType=function(preferredType){preferredType=preferredType.toLowerCase();if(preferredType==="html5"||preferredType==="screenshot"){return preferredType}return"html5"};var modules=["web","webSimple","web3d","tablet","tablet3d","phone"];var setDefaultHTML5CodebaseForVersion=function(version,offline){html5CodebaseVersion=version;if(offline){setHTML5CodebaseInternal(html5CodebaseVersion,true);return}var hasWebSimple=!html5NoWebSimple;if(hasWebSimple){var v=parseVersion(html5CodebaseVersion);if(!isNaN(v)&&v<4.4){hasWebSimple=false}}var protocol,codebase;if(window.location.protocol.substr(0,4)==="http"){protocol=window.location.protocol}else{protocol="http:"}var index=html5CodebaseVersion.indexOf("//");if(index>0){codebase=html5CodebaseVersion}else if(index===0){codebase=protocol+html5CodebaseVersion}else{codebase="https://www.geogebra.org/apps/5.0.664.0/"}for(var key in modules){if(html5CodebaseVersion.slice(modules[key].length*-1)===modules[key]||html5CodebaseVersion.slice((modules[key].length+1)*-1)===modules[key]+"/"){setHTML5CodebaseInternal(codebase,false);return}}if(!GGBAppletUtils.isFlexibleWorksheetEditor()&&hasWebSimple&&!views.is3D&&!views.AV&&!views.SV&&!views.CV&&!views.EV2&&!views.CP&&!views.PC&&!views.DA&&!views.FI&&!views.PV&&!valBoolean(parameters.showToolBar)&&!valBoolean(parameters.showMenuBar)&&!valBoolean(parameters.showAlgebraInput)&&!valBoolean(parameters.enableRightClick)&&(!parameters.appName||parameters.appName=="classic")){codebase+="webSimple/"}else{codebase+="web3d/"}setHTML5CodebaseInternal(codebase,false)};var setHTML5CodebaseInternal=function(codebase,offline){if(codebase.requirejs){html5Codebase=codebase;return}if(codebase.slice(-1)!=="/"){codebase+="/"}html5Codebase=codebase;if(offline===null){offline=codebase.indexOf("http")===-1}isHTML5Offline=offline;html5CodebaseScript="web.nocache.js";html5CodebaseIsWebSimple=false;var folders=html5Codebase.split("/");if(folders.length>1){if(!offline&&folders[folders.length-2]==="webSimple"){html5CodebaseScript="webSimple.nocache.js";html5CodebaseIsWebSimple=true}else if(modules.indexOf(folders[folders.length-2])>=0){html5CodebaseScript=folders[folders.length-2]+".nocache.js"}}folders=codebase.split("/");html5CodebaseVersion=folders[folders.length-3];if(html5CodebaseVersion.substr(0,4)==="test"){html5CodebaseVersion=html5CodebaseVersion.substr(4,1)+"."+html5CodebaseVersion.substr(5,1)}else if(html5CodebaseVersion.substr(0,3)==="war"||html5CodebaseVersion.substr(0,4)==="beta"){html5CodebaseVersion="5.0"}var numVersion=parseFloat(html5CodebaseVersion);if(numVersion!==NaN&&numVersion<5){console.log("The GeoGebra HTML5 codebase version "+numVersion+" is deprecated. Using version latest instead.");setDefaultHTML5CodebaseForVersion("5.0",offline)}};var log=function(text,parameters){if(window.console&&window.console.log){if(!parameters||typeof parameters.showLogging==="undefined"||parameters.showLogging&¶meters.showLogging!=="false"){console.log(text)}}};if(parameters.material_id!==undefined){fetchParametersFromApi(continueInit,parameters.apiUrl)}else{continueInit()}function continueInit(){var html5Version=ggbVersion;if(html5OverwrittenCodebaseVersion!==null){html5Version=html5OverwrittenCodebaseVersion}else{if(parseFloat(html5Version)<5){html5Version="5.0"}}setDefaultHTML5CodebaseForVersion(html5Version,false);if(html5OverwrittenCodebase!==null){setHTML5CodebaseInternal(html5OverwrittenCodebase,isHTML5Offline)}initComplete=true}return applet};var GGBAppletUtils=function(){"use strict";function isFlexibleWorksheetEditor(){return window.GGBT_wsf_edit!==undefined}function scaleElement(el,scale){if(scale!=1){el.style.transformOrigin="0% 0% 0px";el.style.webkitTransformOrigin="0% 0% 0px";el.style.transform="scale("+scale+","+scale+")";el.style.webkitTransform="scale("+scale+","+scale+")";el.style.maxWidth="initial";if(el.querySelector(".ggb_preview")!==null){el.querySelector(".ggb_preview").style.maxWidth="initial"}if(el.querySelectorAll(".ggb_preview img")[0]!==undefined){el.querySelectorAll(".ggb_preview img")[0].style.maxWidth="initial"}if(el.querySelectorAll(".ggb_preview img")[1]!==undefined){el.querySelectorAll(".ggb_preview img")[1].style.maxWidth="initial"}}else{el.style.transform="none";el.style.webkitTransform="none"}}function getWidthHeight(appletElem,appletWidth,allowUpscale,autoHeight,noBorder,scaleContainerClass){var container=null;if(scaleContainerClass!=undefined&&scaleContainerClass!=""){var parent=appletElem.parentNode;while(parent!=null){if((" "+parent.className+" ").indexOf(" "+scaleContainerClass+" ")>-1){container=parent;break}else{parent=parent.parentNode}}}var myWidth=0,myHeight=0,windowWidth=0,border=0,borderRight=0,borderLeft=0,borderTop=0;if(container){myWidth=container.offsetWidth;myHeight=Math.max(autoHeight?container.offsetWidth:0,container.offsetHeight)}else{if(window.innerWidth&&document.documentElement.clientWidth){myWidth=Math.min(window.innerWidth,document.documentElement.clientWidth);myHeight=Math.min(window.innerHeight,document.documentElement.clientHeight);windowWidth=myWidth}else{myWidth=window.innerWidth;myHeight=window.innerHeight;windowWidth=window.innerWidth}if(appletElem){var rect=appletElem.getBoundingClientRect();if(rect.left>0){if(rect.left<=myWidth&&(noBorder===undefined||!noBorder)){if(document.dir==="rtl"){borderRight=myWidth-rect.width-rect.left;borderLeft=windowWidth<=480?10:30}else{borderLeft=rect.left;borderRight=windowWidth<=480?10:30}border=borderLeft+borderRight}}}if(appletElem&&typeof window.GGBT_wsf_view==="object"&&window.GGBT_wsf_view.isFullscreen()){var appletRect=appletElem.getBoundingClientRect();if(window.GGBT_wsf_view.getCloseBtnPosition()==="closePositionRight"){border=40;borderTop=0}else if(window.GGBT_wsf_view.getCloseBtnPosition()==="closePositionTop"){border=0;borderTop=40}}}if(appletElem){if((allowUpscale===undefined||!allowUpscale)&&appletWidth>0&&appletWidth+border1){allowUpscale=true}}if(appletElem&&typeof window.GGBT_wsf_view==="object"&&window.GGBT_wsf_view.isFullscreen()){allowUpscale=true}if(!(parameters.hasOwnProperty("disableAutoScale")&¶meters.disableAutoScale)){autoScale=calcScale(parameters,appletElem,allowUpscale,showPlayButton,parameters.scaleContainerClass)}else{return scale}if(allowUpscale&&(!parameters.hasOwnProperty("scale")||scale===1)){return autoScale}else{return Math.min(scale,autoScale)}}function positionCenter(appletElem){var windowWidth=Math.min(window.innerWidth,document.documentElement.clientWidth);var windowHeight=Math.min(window.innerHeight,document.documentElement.clientHeight);var appletRect=appletElem.getBoundingClientRect();var calcHorizontalBorder=(windowWidth-appletRect.width)/2;var calcVerticalBorder=(windowHeight-appletRect.height)/2;if(calcVerticalBorder<0){calcVerticalBorder=0}appletElem.style.position="relative";if(window.GGBT_wsf_view.getCloseBtnPosition()==="closePositionRight"){if(calcHorizontalBorder<40){appletElem.style.left="40px"}else{appletElem.style.left=calcHorizontalBorder+"px"}appletElem.style.top=calcVerticalBorder+"px"}else if(window.GGBT_wsf_view.getCloseBtnPosition()==="closePositionTop"){if(calcVerticalBorder<40){appletElem.style.top="40px"}else{appletElem.style.top=calcVerticalBorder+"px"}appletElem.style.left=calcHorizontalBorder+"px"}}function responsiveResize(appletElem,parameters){var article=appletElem.querySelector(".appletParameters");if(article){if(typeof window.GGBT_wsf_view==="object"&&window.GGBT_wsf_view.isFullscreen()){if(parameters.id!==article.getAttribute("data-param-id")){return}window.GGBT_wsf_view.setCloseBtnPosition(appletElem)}if(article.parentElement&&/fullscreen/.test(article.parentElement.className)){return}var scale=getScale(parameters,appletElem);if(isFlexibleWorksheetEditor()){article.setAttribute("data-param-scale",scale)}var scaleElem=null;for(var i=0;i-1&&window.JSON){var h=e.createDocumentFragment();h.appendChild(e.createTextNode(ab));for(var i=P;i=P){continue}if(j==mb){k=i.getAttribute(nb);if(k){var l,m=k.indexOf(ob);if(m>=P){j=k.substring(P,m);l=k.substring(m+Q)}else{j=k;l=W}c[j]=l}}else if(j==pb){k=i.getAttribute(nb);if(k){try{d=eval(k)}catch(a){alert(qb+k+rb)}}}else if(j==sb){k=i.getAttribute(nb);if(k){try{e=eval(k)}catch(a){alert(qb+k+tb)}}}}}__gwt_getMetaProperty=function(a){var b=c[a];return b==null?null:b};s=d;webModule.__errFn=e}function C(){function e(a){var b=a.lastIndexOf(ub);if(b==-1){b=a.length}var c=a.indexOf(vb);if(c==-1){c=a.length}var d=a.lastIndexOf(wb,Math.min(c,b));return d>=P?a.substring(P,d+Q):W}function f(a){if(a.match(/^\w+:\/\//)){}else{var b=p.createElement(xb);b.src=a+yb;a=e(b.src)}return a}function g(){var a=__gwt_getMetaProperty(zb);if(a!=null){return a}return W}function h(){var a=p.getElementsByTagName(cb);for(var b=P;bP){return a[a.length-Q].href}return W}function j(){var a=p.location;return a.href==a.protocol+Cb+a.host+a.pathname+a.search+a.hash}var k=g();if(k==W){k=h()}if(k==W){k=i()}if(k==W&&j()){k=e(p.location.href)}k=f(k);return k}function D(a){if(a.match(/^\//)){return a}if(a.match(/^[a-zA-Z]+:\/\//)){return a}return webModule.__moduleBase+a}function F(){var f=[];var g=P;function h(a,b){var c=f;for(var d=P,e=a.length-Q;d=$&&b=Jb&&b=Lb&&b=Hb}())return Ob;return Fb};i[Db]={gecko1_8:P,ie10:Q,ie8:Pb,ie9:Qb,safari:Rb};__gwt_isKnownPropertyValue=function(a,b){return b in i[a]};webModule.__getPropMap=function(){var a={};for(var b in i){if(i.hasOwnProperty(b)){a[b]=k(b)}}return a};webModule.__computePropValue=k;o.__gwt_activeModules[M].bindings=webModule.__getPropMap;if(q()){return D(Tb)}var l;try{h([Ob],Ub);h([Ib],Ub+Vb);h([Kb],Ub+Wb);h([Fb],Ub+Xb);l=f[k(Db)];var m=l.indexOf(Yb);if(m!=-1){g=parseInt(l.substring(m+Q),$);l=l.substring(P,m)}}catch(a){}webModule.__softPermutationId=g;return D(l+Zb)}function G(){if(!o.__gwt_stylesLoaded){o.__gwt_stylesLoaded={}}}B();webModule.__moduleBase="https://www.geogebra.org/apps/5.0.664.0/"+name+"/";t[M].moduleBase=webModule.__moduleBase;var H=F();G();A(H);return true}return webModule};if(typeof window.web3d!=="function"){window.web3d=GGBAppletUtils.makeModule("web3d","993B8BCA9EEC80DD7265C882467ED910")}if(typeof window.webSimple!=="function"){window.webSimple=GGBAppletUtils.makeModule("webSimple","E98006E186460FED8F537AD1FD25BD4A")}window.GGBApplet=GGBApplet})(); \ No newline at end of file diff --git a/assets/graphs.js b/assets/graphs.js new file mode 100644 index 0000000..0ea5352 --- /dev/null +++ b/assets/graphs.js @@ -0,0 +1,37 @@ +/** + * Initializes graphs on the website. + * + * @param {Array<[id: string, commands: string[], initializer: (any) => void]>} graphs + * The graphs to initialize. + */ +window.graphs = (graphs) => { + window.addEventListener( + "load", + () => + { + for (let entry of graphs) { + new GGBApplet( + { + height: 250, + preventFocus: true, + perspective: "G", + enableFileFeatures: false, + appletOnLoad: (api) => { + for (let command of entry[1]) { + api.evalCommand(command); + } + + (entry[2] ?? (() => {}))(api); + api.evalCommand("ZoomIn()"); + (entry[3] ?? (() => {}))(api); + + for (let object of api.getAllObjectNames()) { + api.evalCommand(`ShowLabel(${object}, true)`); + } + }, + ...(entry[2] ?? {}) + }, + true).inject(entry[0]); + } + }); +}