diff --git a/1. Semester/ANAG/README.md b/1. Semester/ANAG/README.md index ac08287..67a4e8a 100644 --- a/1. Semester/ANAG/README.md +++ b/1. Semester/ANAG/README.md @@ -1,47 +1,3 @@ -# TUD_MATH_BA -Skript zur Vorlesung ANAG. +# Analysis, 1. Semester -Wer mithelfen möchte, dieses Script zu vervollständigen, bitte melden. - -### Fortschritt Analysis -1. Grundlagen der Mathematik ... fertig - - 1.1 Grundbegriffe der Mengenlehre und Logik ... fertig - - 1.2 Aufbau einer mathematischen Theorie ... fertig - - 1.3 Relationen und Funktionen ... fertig - - 1.4 Bemerkungen zum Fundament der Mathematik ... fertig - - -2. Zahlenbereiche ... wird bearbeitet - - 2.1 natürliche Zahlen ... fertig - - 2.2 ganze und rationale Zahlen ... fertig - - 2.3 reelle Zahlen ... wird bearbeitet - - 2.4 komplexe Zahlen ... fertig - -3. Metrische Räume und Konvergenz ... wird bearbeitet - - 3.1 grundlegende Ungleichungen ... fertig - - 3.2 Metrische Räume ... fertig - - 3.3 Konvergenz ... wird bearbeitet - - 3.4 Vollständigkeit ... noch nicht bearbeitet - - 3.5 Kompaktheit ... noch nicht berbeitet - - 3.6 Reihen ... noch nicht bearbeitet - -4. Funktionen und Stetigkeit ... noch nicht bearbeitet - - 4.1 Funktionen ... noch nicht bearbeitet - - -### Kapitel befinden sich im TeX folder, diese sind eingebunden via Vorlesung_ANAG.tex!!! \ No newline at end of file +E gibt eine verbesserte Version der Analysis-Vorlesung im 2. Semester, in der auch Analysis 1 inkludiert ist diff --git a/1. Semester/ANAG/TeX_files/chapter01_Grundbegriffe_aus_Mengenlehre_und_Logik.tex b/1. Semester/ANAG/TeX_files/chapter01_Grundbegriffe_aus_Mengenlehre_und_Logik.tex deleted file mode 100644 index 2d4bc07..0000000 --- a/1. Semester/ANAG/TeX_files/chapter01_Grundbegriffe_aus_Mengenlehre_und_Logik.tex +++ /dev/null @@ -1,178 +0,0 @@ -\part{Grundlagen der Mathematik} - -Mathematik besitzt eine Sonderrolle unter den Wissenschaften, da -\begin{compactitem} - \item Resultate nicht empirisch gezeigt werden müssen - \item Resultate nicht durch Experimente widerlegt werden können -\end{compactitem} - -\paragraph{Literatur} -\begin{compactitem} - \item Forster: Analysis 1 + 2, Vieweg - \item Königsberger: Analysis 1 + 2, Springer - \item Hildebrandt: Analysis 1 + 2, Springer - \item Walter: Analysis 1 + 2, Springer - \item Escher/Amann: Analysis 1 + 2, Birkhäuser - \item Ebbinghaus: Einfühung in die Mengenlehre, BI-Wissenschaftsverlag - \item Teubner-Taschenbuch der Mathematik, Teubner 1996 - \item Springer-Taschenbuch der Mathematik, Springer 2012 -\end{compactitem} - -\chapter{Grundbegriffe aus Mengelehre und Logik} -\textbf{Mengenlehre:} Universalität von Aussagen \\ -\textbf{Logik:} Regeln des Folgerns, wahre/falsche Aussagen - -\begin{mydef}[Definition Aussage] - Sachverhalt, dem man entweder den Wahrheitswert "wahr" oder "falsch" zuordnen kann, aber nichts anders. -\end{mydef} - -\begin{exmp} - \item 5 ist eine Quadratzahl $\to$ falsch (Aussage) - \item Die Elbe fließt durch Dresden $\to$ wahr (Aussage) - \item Mathematik ist rot $\to$ ??? (keine Aussage) -\end{exmp} - -\begin{mydef}[Menge] - Zusammenfassung von bestimmten wohlunterscheidbaren Objekten der Anschauung oder des Denkens, welche die Elemente der Menge genannt werden, zu einem Ganzen.\\ (\textsc{Cantor}, 1877) -\end{mydef} - -\begin{exmp} - \item $M_1 :=$ Menge aller Städte in Deutschland - \item $M_2 := \{1;2;3\}$ -\end{exmp} - -Für ein Objekt $m$ und eine Menge $M$ gilt stets $m \in M$ oder $m \notin M$ \\ -Für die Mengen $M$ und $N$ gilt $M=N$, falls dieselben Elemente enthalten sind -$\{1;2;3\} = \{3;2;1\} = \{1;2;2;3\}$ \\ -- $N \subseteq M$, falls $n \in M$ für jedes $n \in N$ \\ -- $N \subset M$, falls zusätzlich $M \neq N$ \\ - -\begin{mydef}[Aussageform] - Sachverhalt mit Variablen, der durch geeignete Ersetzung der Variablen zur Aussage wird. -\end{mydef} - -\begin{exmp} - \begin{itemize} - \item $A(X) := $ Die Elbe fließt durch X - \item $B(X;Y;Z) := X + Y = Z$ - \item aber $A(Dresden) ,B(2;3;4)$ sind Aussagen, $A(Mathematik)$ ist keine Aussage - \item $A(X)$ ist eine Aussage f\"u jedes $X \in M_1$ $\to$ Generalisierung von Aussagen durch Mengen - \end{itemize} -\end{exmp} - -\section*{Bildung und Verknüpfung von Aussagen} - -\begin{tabular}{|c|c|c|c|c|c|c|} - \hline - $A$ & $B$ & $\lnot A$ & $A \land B$ & $A \lor B$ & $A \Rightarrow B$ & $A \iff B$\\ - \hline - w & w & f & w & w & w & w\\ - \hline - w & f & f & f & w & f & f\\ - \hline - f & w & w & f & w & w & f\\ - \hline - f & f & w & f & f & w & w\\ - \hline -\end{tabular} - -\begin{exmpn} - \begin{itemize} - \item $\lnot$(3 ist gerade) $\to$ w - \item (4 ist gerade) $\land$ (4 ist Primzahl) $\to$ f - \item (3 ist gerade) $\lor$ (3 ist Primzahl) $\to$ w - \item (3 ist gerade) $\Rightarrow$ (Mond ist Würfel) $\to$ w - \item (Die Sonne ist heiß) $\Rightarrow$ (es gibt Primzahlen) $\to$ w - \end{itemize} -\end{exmpn} - -\noindent Auschließendes oder: (entweder $A$ oder $B$) wird realisiert durch $\lnot(A \iff B)$.\\ -Aussageform $A(X)$ sei f\"ur jedes $X \in M$ Aussage: neue Aussage mittels Quantoren - -\begin{compactitem} - \item $\forall$: "für alle" - \item $\exists$: "es existiert" -\end{compactitem} - -\begin{exmpn} - $\forall n \in \mathbb{N}: n$ ist gerade $\to$ f\\ - $\exists n \in \mathbb{N}: n$ ist gerade $\to$ w -\end{exmpn} - -\begin{mydef}[Tautologie bzw. Kontraduktion/Widerspruch] - Zusammengesetzte Aussage, die unabhängig vom Wahrheitsgehalt der Teilaussagen stest wahr bzw. falsch ist. -\end{mydef} - -\begin{exmpn} - \begin{itemize} - \item Tautologie (immer wahr): - $(A) \lor (\lnot A), \lnot (A \land (\lnot A)), (A \land B) \Rightarrow A$ - \item Widerspruch (immer falsch): $A \land (\lnot A), A \iff \lnot A$ - \item besondere Tautologie: $(A \Rightarrow B) \iff (\lnot B \Rightarrow \lnot A)$ - \end{itemize} -\end{exmpn} - -\begin{satz}[Morgansche Regeln] - Folgende Aussagen sind Tautologien: - \begin{itemize}{ } - \item $\lnot(A \land B) \iff \lnot A \lor \lnot B$ - \item $\lnot(A \lor B) \iff \lnot A \land \lnot B$ - \end{itemize} -\end{satz} - -\section*{Bildung von Mengen} -Seien $M$ und $N$ Mengen -\begin{compactitem} - \item Aufzählung der Elemente: $\{1;2;3\}$ - \item mittels Eigenschaften: $\{X \in M \mid A(X)\}$ - \item $\emptyset:=$ Menge, die keine Elemente enthält - \begin{compactitem} - \item leere Menge ist immer Teilmenge jeder Menge $M$ - \item \textbf{Warnung:} $\{\emptyset\} \neq \emptyset$ - \end{compactitem} - \item Verknüpfung von Mengen wie bei Aussagen -\end{compactitem} - -\begin{mydef}[Mengensystem] - Ein Mengensystem $\mathcal M$ ist eine Menge, bestehend aus anderen Mengen. - \begin{compactitem} - \item $\bigcup M := \{X \mid \exists M \in \mathcal M: X \in M\}$ (Vereinigung aller Mengen in - $\mathcal M$) - \item $\bigcap M := \{X \mid \forall M \in \mathcal M: X \in M\}$ (Durchschnitt aller Mengen in - $\mathcal M$) - \end{compactitem} -\end{mydef} - -\begin{mydef}[Potenzmenge] - Die Potenzmenge $\mathcal P$ enth\"alt alle Teilmengen einer Menge $M$. \\ - $\mathcal P(X) := \{\tilde M \mid \tilde M \subset M\}$ -\end{mydef} - -Beispiel: -\begin{compactitem} - \item $M_3 := \{1;3;5\}$ \\ - $\to \mathcal P(M_3) = \{\emptyset, \{1\}, \{3\}, \{5\}, \{1;3\}, \{1;5\}, \{3;5\}, \{1;3;5\}\}$ -\end{compactitem} - -\begin{framed} - \textbf{Satz (de Morgansche Regeln f\"ur Mengen):} - \begin{compactitem} - \item $(\mathop{\bigcup}_{N \in \mathcal N} N)^C = \mathop{\bigcap}_{N \in \mathcal N} N^C$ - \item $(\mathop{\bigcap}_{N \in \mathcal N} N)^C = \mathop{\bigcup}_{N \in \mathcal N} N^C$ - \end{compactitem} -\end{framed} - -\begin{mydef}[Kartesisches Produkt] - $M \times N := \{m,n \mid m \in M \land n \in N\}$ \\ - $(m,n)$ hei{\ss}t geordnetes Paar (Reihenfolge wichtig!) \\ - allgemeiner: $M_1 \times ... \times M_k := \{(m_1,...,m_k) \mid m_j \in M_j, j=1, .., k\}$ \\ - $M^k := M \times ... \times M := \{(m_1,...,m_k) \mid m_j \in M_j, j=1, .., k\}$ -\end{mydef} - -\begin{satz}[Auswahlaxiom] - Sei $\mathcal M$ ein Mengensystem nichtleerer paarweise disjunkter Mengen $M$. - \begin{compactitem} - \item Es existiert eine Auswahlmenge $\tilde M$, die mit jedem $M \in \mathcal M$ genau 1 Element gemeinsam hat. - \item beachte: Die Auswahl ist nicht konstruktiv! - \end{compactitem} -\end{satz} \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter02_Aufbau_einer_math_Theorie.tex b/1. Semester/ANAG/TeX_files/chapter02_Aufbau_einer_math_Theorie.tex deleted file mode 100644 index 0c5668b..0000000 --- a/1. Semester/ANAG/TeX_files/chapter02_Aufbau_einer_math_Theorie.tex +++ /dev/null @@ -1,227 +0,0 @@ -\chapter{Aufbau einer mathematischen Theorie} -Axiome $\to$ Beweise $\to$ Sätze ("neue" wahre Aussagen) \\ -$\to$ ergibt Ansammlung (Menge) wahrer Aussagen - -\paragraph*{Formulierung mathematischer Aussagen} -\begin{compactitem} - \item typische Form eines mathematischen Satzes: "Wenn A gilt, dann gilt auch B." - \item formal: $A \Rightarrow B$ bzw. $A(X) \Rightarrow B(X)$ ist stets wahr (insbesondere falls - A wahr ist) -\end{compactitem} - -Beispiel -\begin{compactitem} - \item $X \in \mathbb N$ und ist durch 4 teilbar $\Rightarrow X$ ist durch 2 teilbar - \item beachte: Implikation auch wahr, falls $X = 5$ oder $X =6$, dieser Fall ist aber - uninteressant - \item genauer meint man sogar $A \land C \Rightarrow B$, wobei $C$ aus allen bekannten wahren - Aussagen besteht - \item man sagt: $B$ ist \textbf{notwendig} f\"ur $A$, da $A$ nur wahr sein kann, wenn $B$ - wahr ist - \item man sagt: $A$ ist \textbf{hinreichend} f\"ur $B$, da $B$ stets wahr ist, wenn $A$ wahr ist -\end{compactitem} - -\paragraph{Mathematische Beweise} -\begin{compactitem} - \item \textbf{direkter Beweis:} finde Zwischenaussagen $A_1,...,A_k$, sodass f\"ur $A$ auch wahr: \\ - $(A \Rightarrow A_1) \land (A_1 \Rightarrow A_2) \land ... \land (A_k \Rightarrow B)$ - \item Beispiel: Zeige $x > 2 \Rightarrow x^2-3x+2>0$ \\ - $(x>2) \Rightarrow (x-2>0) \land (x-1>0) \Rightarrow (x-2) \cdot (x-1) \Rightarrow x^2-3x+2>0$ - \item \textbf{indirekter Beweis:} auf Grundlage der Tautologie $(A \Rightarrow B) \iff - (\lnot B \Rightarrow \lnot A)$ f\"uhrt man direkten Beweis $\lnot B \Rightarrow \lnot A$ (das - hei{\ss}t angenommen $B$ falsch, dann auch $A$ falsch) - \item praktisch formuliert man das auch so: $(A \land \lnot B) \Rightarrow ... \Rightarrow (A - \land \lnot A)$ - \item Beispiel: Zeige $x^2-3x+2 \le 0$ sei wahr \\ - $\lnot B \Rightarrow (x-2) \cdot (x-1) \le 0 \Rightarrow 1 \le x \le 2 \Rightarrow x \le 2 - \Rightarrow \lnot A$ -\end{compactitem} - -\section{Relationen und Funktionen} -\begin{mydef}[Relation] - Seien $M$ und $N$ Mengen. Dann ist jede Teilmenge $R$ von - $M \times N$ eine Relation. \\ - $(x,y) \in R$ hei{\ss}t: $x$ und $y$ stehen in Relation zueinander -\end{mydef} - -\begin{exmp} - $M$ ist die Menge aller Menschen. Die Liebesbeziehung $x$ liebt $y$ sieht als geordnetes Paar - geschrieben so aus: $(x,y)$. Das hei{\ss}t die Menge der Liebespaare ist das: $L := \{(x,y) \mid - x \; liebt \; y\}$. Und es gilt: $L \subset M \times M$. -\end{exmp} - -Die Relation $R \subset M \times N$ hei{\ss}t \textbf{Ordnungsrelation} (kurz. Ordnung) auf M, falls f\"ur alle $a,b,c \in M$ gilt: -\begin{compactitem} - \item $(a,a) \in R$ (reflexiv) - \item $(a,b),(b,a) \in R$ (antisymetrisch) - \item $(a,b), (b,c) \in R \Rightarrow (a,c) \in R$ (transitiv) - \item z.B. $R = \{(X,Y) \in \mathcal P(Y) \times \mathcal P(Y) \mid X \subset Y\}$ -\end{compactitem} - -$\newline$ -Eine Ordnungsrelation hei{\ss}t \textbf{Totalordnung}, wenn zus\"atzlich gilt: $(a,b) \in R \lor -(b,a) \in R$ \\ - -$\newline$ -Beispiel \\ -Seien $m$, $n$ und $o$ natürliche Zahlen, dann ist $R = \{(m,n) \in \mathbb{N} \times \mathbb{N} -\mid x \le y\}$ eine Totalordnung, da -\begin{compactitem} - \item $m \le m$ (reflexiv) - \item $(m \le n \land n \le m) \Rightarrow m=n$ (antisymetrisch) - \item $(m \le n \land n \le o) \Rightarrow m \le o$ (transitiv) - \item $m \le n \lor n \le m$ (total) -\end{compactitem} - -$\newline$ -Eine Relation auf $M$ heißt \textbf{Äquivalenzrelation}, wenn für alle $a,b,c \in M$ gilt: -\begin{compactitem} - \item $(a,a) \in R$ (reflexiv) - \item $(a,b),(b,a) \in R$ (symetrisch) - \item $(a,b), (b,c) \in R \Rightarrow (a,c) \in R$ (transitiv) -\end{compactitem} - -$\newline$ -Obwohl Ordnungs- und Äquivalenzrelation die gleichen Eigenschaften haben, haben sie -unterschiedliche Zwecke: Ordnungsrelationen ordnen Elemente in einer Menge (z.B. das Zeichen $\le$ -ordnet die Menge der natürlichen Zahlen), während Äquivalenzrelationen eine Menge in disjunkte -Teilmengen (Äquivalenzklassen) ohne Rest aufteilen. \\ -$\newline$ - -Wenn $R$ eine Ordnung auf M ist, so wird häufig geschrieben: \\ -\noindent\hspace*{5mm} $a \le b$ bzw. $a \ge b$ falls $(a,b) \in \mathbb R$ \\ -\noindent\hspace*{5mm} $a < b$ bzw. $a > b$ falls zus\"atzlich $a \neq b$ \\ - -\begin{mydef}[Abbildung/Funktion] - Eine Funktion $F$ von $M$ nach $N$ - (kurz: $F: M \to N$), ist eine Vorschrift, die jedem Argument/Urbild $m \in M$ genau einen - Wert/Bild $F(m) \in N$ zuordnet. \\ - $D(F) := M$ heißt Definitionsbereich/Urbildmenge \\ - \noindent\hspace*{15mm} $N$ heißt Zielbild \\ - $F(M') := \{n \in N \mid n=F(m)$ f\"ur ein $m \in M' \}$ ist Bild von $M' \subset M$ \\ - $F^{-1}(N') := \{m \in M \mid n=F(m)$ für ein $N' \}$ ist Urbild von $N' \subset N$ \\ - $R(F) := F(M)$ heißt Wertebereich/Bildmenge \\ - $graph(F) := \{(m,n) \in M \times N \mid n=F(m)\}$ heißt Graph von $F$ \\ - $F_{\mid M'}$ ist Einschränkung von $F$ auf $M' \subset M$ -\end{mydef} - -Unterschied Zielmenge und Wertebereich: $f(x) = \sin(x):$ \\ -\noindent\hspace*{5mm} Zielmenge: $\mathbb R$ \\ -\noindent\hspace*{5mm} Wertebereich: $[-1;1]$ \\ - -Funktionen $F$ und $G$ sind gleich, wenn -\begin{compactitem} - \item $D(F) = D(G)$ - \item $F(m) = G(m) \quad \forall m \in D(F)$ -\end{compactitem} - -\noindent Manchmal wird auch die vereinfachende Schreibweise benutzt: -\begin{itemize}[label={-}] - \item $F: M \to N$, obwohl $D(F) \subsetneq M$ (z.B. $\tan: \mathbb R \to \mathbb R$, Probleme - bei $\frac{\pi}{2}$) - \item gelegentlich spricht man auch von "Funktion $F(m)$" statt Funktion $F$ -\end{itemize} - -\begin{lem}[Komposition/Verknüpfung] - Die Funktionen $F: M \to N$ und $G: N \to P$ - sind verknüpft, wenn \\ - $F \circ G: M \to P$ mit $(F \circ G)(m) := G(F(m))$ -\end{lem} - -\textbf{Eigenschaften von Funktionen:} \\ -\begin{compactitem} - \item injektiv: Zuordnung ist eineindeutig $\to F(m_1) = F(m_2) \Rightarrow m_1=m_2$ - \item Beispiel: $x^2$ ist nicht injektiv, da $F(2)=F(-2)=4$ - \item surjektiv: $F(M) = N \quad \forall n \in N \; \exists m \in M: F(m)=n$ - \item Beispiel: $\sin(x)$ ist nicht surjektiv, da es kein $x$ für $y=27$ gibt - \item bijektiv: injektiv und surjektiv -\end{compactitem} -$\newline$ -Für bijektive Abbildung $F: M \mapsto N$ ist Umkehrabbildung/inverse Abbildung $F^{-1}: N \mapsto M$ -definiert durch: $F^{-1}(n) = m \iff F(m)=n$ \\ -Hinweis: Die Notation $F^{-1}(N')$ f\"ur Urbild bedeutet nicht, dass die inverse Abbildung $F^{-1}$ -existiert. - -\begin{satz} - Sei $F: M \to N$ surjektiv. Dann existiert die Abbildung $G: N \to M$, - sodass $F \circ G = id_N$ (d.h. $F(G(n))=n \quad \forall n \in N$) -\end{satz} - -\begin{mydef}[Rechenoperation/Verknüpfung] - Eine Rechenoperation auf einer Menge $M$ ist - die Abbildung $*: M \times M \to M$ d.h. $(m,n) \in M$ wird das Ergbnis $m*n \in M$ zugeordnet. -\end{mydef} - -\textbf{Eigenschaften von Rechenoperationen:} -\begin{compactitem} - \item hat neutrales Element $e \in M: m*e=m$ - \item ist kommutativ $m*n=n*m$ - \item ist assotiativ $k*(m*n)=(k*m)*n$ - \item hat ein inverses Element $m' \in M$ zu $m \in M: m*m'=e$ -\end{compactitem} -$e$ ist stets eindeutig, $m'$ ist eindeutig, wenn die Operation $*$ assoziativ ist. \\ - -Beispiele: -\begin{compactitem} - \item Addition $+$: $(m,n) \mapsto m+n$ Summe, neutrales Element heißt Nullelement, inverses - Element $-m$ - \item Multiplikation $\cdot$: $(m,n) \mapsto m \cdot n$ Produkt, neutrales Element Eins, inverses - Element $m^{-1}$ -\end{compactitem} -Addition und Multiplikation sind distributiv, falls $k(m+n) = k \cdot m + k \cdot n$ - -\begin{mydef}[Körper] - Eine Menge $M$ ist ein Körper $K$, wenn man auf $K$ eine Addition - und eine Multiplikation mit folgenden Eigenschaften durchführen kann: - \begin{compactitem} - \item es gibt neutrale Elemente 0 und 1 $\in K$ - \item Addition und Multiplikation sind jeweils kommutativ und assoziativ - \item Addition und Multiplikation sind distributiv - \item es gibt Inverse $-k$ und $k^{-1} \in K$ \\ - $\to$ die reellen Zahlen sind ein solcher Körper - \end{compactitem} -\end{mydef} - -Eine Menge $M$ habe die Ordnung ``$\leq$'' und diese erlaubt die Addition und Multiplikation, wenn -\begin{compactitem} - \item $a \le b \iff a+c \le b+c$ - \item $a \le b \iff a \cdot c \le b \cdot c \quad c > 0$ \\ - $\to$ Man kann die Gleichungen in gewohnter Weise umformen. -\end{compactitem} -$\newline$ - -Ein Körper $K$ heißt angeordnet, wenn er eine Totalordnung besitzt, die mit Addition -und Multiplikation verträglich ist. \\ -$\newline$ - -\textbf{Isomorphismus} bezüglich einer Struktur ist die bijektive Abbildung $I: M_1 -\mapsto M_2$, die die vorhandene Struktur auf $M_1$ und $M_2$ erhält, z.B. -\begin{compactitem} - \item Ordnung $\le_1$ auf $M_1$, falls $a \le_1 b \iff I(a) \le_2 I(b)$ - \item Abbildung $F_i: M_i \to M_i$, falls $I(F_1(a)) = F_2(I(a))$ - \item Rechenoperation $*_i: M_i \times M_i \to M_i$, falls $I(a*_1b) = I(a) *_2 I(b)$ - \item spezielles Element $a_i \in M_i$, falls $I(a_1) = a_2$ -\end{compactitem} -$\newline$ - -\textit{"Es gibt 2 verschiedene Arten von reellen Zahlen, meine und Prof. Schurichts. Wenn wir einen - Isomorphismus finden, dann bedeutet das, dass unsere Zahlen strukturell die selben sind."}\\ - -Beispiele: $M_1 = \mathbb N$ und $M_2 = \{$gerade Zahlen$\}$, jeweils mit Addition, Multiplikation -und Ordnung \\ -$\to I: M_2 \to M_2$ mit $I(k)=2k \quad \forall k \in \mathbb N$ \\ -$\to$ Isomorphismus, der die Addition, Ordnung und die Null, aber nicht die Multiplikation erh\"alt - -\subsection*{Bemerkungen zum Fundament der Mathematik} -Forderungen an eine mathematische Theorie: -\begin{compactitem} - \item widerspruchsfrei: Satz und Negation nicht gleichzeitig herleitbar - \item vollständig: alle Aussagen innerhalb der Theorie sind als wahr oder falsch beweisbar -\end{compactitem} -$\newline$ - -zwei Unvollständigkeitssätze: -\begin{compactitem} - \item jedes System ist nicht gleichzeitig widerspruchsfrei und vollständig - \item in einem System kann man nicht die eigene Widerspruchsfreiheit zeigen -\end{compactitem} \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter03_nat_Zahlen.tex b/1. Semester/ANAG/TeX_files/chapter03_nat_Zahlen.tex deleted file mode 100644 index ae9ab36..0000000 --- a/1. Semester/ANAG/TeX_files/chapter03_nat_Zahlen.tex +++ /dev/null @@ -1,111 +0,0 @@ -\part{Zahlenbereiche} -\chapter{Natürliche Zahlen} -$\mathbb N$ sei diejenige Menge, die die \textbf{Peano-Axiome} erfüllt, das heißt -\begin{compactitem} - \item $\mathbb N$ sei induktiv, d.h. es existiert ein Nullelement und eine injektive Abbildung - $\mathbb N to \mathbb N$ mit $\nu(n) \neq 0 \quad \forall n$ - \item Falls $N \subset \mathbb N$ induktiv in $\mathbb N$ (0, $\nu(n) \in N$ falls $n \in N - \Rightarrow N = \mathbb N$ -\end{compactitem} -$\to \mathbb N$ ist die kleinste induktive Menge \\ -$\newline$ - -Nach der Mengenlehre ZF (Zermelo-Fraenkel) existiert eine solche Menge $\mathbb N$ der natürlichen -Zahlen. Mit den üblichen Symbolen hat man: -\begin{compactitem} - \item $0 := \emptyset$ - \item $1 := \nu(0) := \{\emptyset\}$ - \item $2 := \nu(1) := \{\emptyset, \{\emptyset\}\}$ - \item $3 := \nu(2) := \{\emptyset, \{\emptyset, \{\emptyset\}\}\}$ -\end{compactitem} -Damit ergibt sich in gewohnter Weise $\mathbb N = \{1; 2; 3; ...\}$ \\ -anschauliche Notation $\nu(n) = n+1$ (beachte: noch keine Addition definiert!) \\ - -\begin{theorem} - Falls $\mathbb N$ und $\mathbb N'$ die Peano-Axiome erfüllen, sind sie - isomorph bez\"uglich Nachfolgerbildung und Nullelement. Das hei{\ss}t alle solche $\mathbb N'$ - sind strukturell gleich und k\"onnen mit obigem $\mathbb N$ identifiziert werden. -\end{theorem} - -\begin{satz}[Prinzip der vollständigen Induktion] - Sei $\{A_n \mid n \in N\}$ eine Menge - von Aussagen $A_n$ mit der Eigenschaft: - \begin{enumerate}[ ] - \item IA: $A_0$ ist wahr - \item IS: $\forall n \in \mathbb N$ gilt $A_n \Rightarrow A_{n+1}$ - \end{enumerate} - $A_n$ ist wahr für alle $n \in \mathbb N$ -\end{satz} - -\begin{lem} Es gilt: - \begin{enumerate} - \item $\nu(n) \cup \{0\} = \mathbb N$ - \item $\nu(n) \neq n \quad \forall n \in \mathbb N$ - \end{enumerate} -\end{lem} - -\begin{satz}{(rekursive Definition/Rekursion)} Sei $B$ eine Menge und $b \in B$. Sei $F$ eine - Abbildung mit $F: B \times \mathbb N \mapsto B$. Dann liefert nach Vorschrift: $f(0):= b$ und - $f(n+1) = F(f(n),n) \quad \forall n \in \mathbb N$ genau eine Abbildung $f: \mathbb N \mapsto B$. - Das heißt eine solche Abbildung exstiert und ist eindeutig. -\end{satz} -$\newline$ - -\textbf{Rechenoperationen:} -\begin{compactitem} - \item Definition Addition '$+$': $\mathbb N \times \mathbb N \mapsto \mathbb N$ auf $\mathbb N$ - durch $n+0:=n$, $n+\nu(m):=\nu(n+m) \quad \forall n,m \in \mathbb N$ - \item Definition Multiplikation '$\cdot$': $\mathbb N \times \mathbb N \mapsto \mathbb - N$ auf $\mathbb N$ durch $n \cdot 0 := 0$, $n \cdot \nu(m) := n \cdot m + n \quad \forall - n,m \in \mathbb N$ -\end{compactitem} -Für jedes feste $n \in \mathbb N$ sind beide Definitionen rekursiv und eindeutig definiert. \\ -$\forall n \in \mathbb N$ gilt: $n+1=n+\nu(0)=\nu(n+0) = \nu(n)$ - -\begin{satz} - Addition und Multiplikation haben folgende Eigenschaften: - \begin{compactitem} - \item es existiert jeweils ein neutrales Element - \item kommutativ - \item assoziativ - \item distributiv - \end{compactitem} -\end{satz} - -Es gilt $\forall k,m,n \in \mathbb N$: -\begin{compactitem} - \item $m \neq 0 \Rightarrow m+n \neq 0$ - \item $m \cdot n = 0 \Rightarrow n=0$ oder $m=0$ - \item $m+k=n+k \Rightarrow m=n$ (Kürzungsregel der Addition) - \item $m \cdot k=n \cdot k \Rightarrow m=n$ (Kürzungsregel der Multiplikation) -\end{compactitem} - -Ordnung auf $\mathbb N:$ Relation $R := \{(m,n) \in \mathbb N \times \mathbb N \mid m \le n\}$ \\ -wobei $m \le n \iff n=m+k$ f\"ur ein $k \in \mathbb N$ \\ - -\begin{satz} - Es gilt auf $\mathbb N:$ - \begin{compactitem} - \item $m \le n \Rightarrow \exists ! k \in \mathbb N: n=m+k$, nenne $n-m:=k$ (Differenz) - \item Relation $R$ (bzw. $\le$) ist eine Totalordnung auf $\mathbb N$ - \item Ordnung $\le$ ist vertr\"aglich mit der Addition und Multiplikation - \end{compactitem} -\end{satz} - -\begin{proof} - \item Sei $n=m+k=m+k' \Rightarrow k=k'$ - \item Sei $n=n+0 \Rightarrow n \le n \Rightarrow$ reflexiv \\ - sei $k\le m, m \le n \Rightarrow \exists l,j: m=k+l, n=m+j=(k+l)+j=k+(l+j) \Rightarrow - k \le n \Rightarrow$ transitiv \\ - sei nun $m \le n und n \le m \Rightarrow n=m+j=n+l+j \Rightarrow 0=l+j \Rightarrow j=0 - \Rightarrow n=m \Rightarrow$ antisymmetrisch \\ - Totalordnung, d.h. $\forall m,n \in \mathbb N: m\le n$ oder $n\le m$ \\ - IA: $m=0$ wegen $0=n+0$ folgt $0 \le n \forall n$ \\ - IS: gelte $m\le n$ oder $n \le m$ mit festem $m$ und $\forall n \in \mathbb N$, dann \\ - falls $n \le m \Rightarrow n \le m+1$ \\ - falls $m < n \Rightarrow \exists k \in \mathbb N: n=m+(k+1)=(m+)1+k \Rightarrow m+1 \le n$ \\ - $m\le n$ oder $n \le m$ gilt für $m+1$ und $\forall n \in \mathbb N$, also $\forall n,m \in - \mathbb N$ - \item sei $m \le n \Rightarrow \exists j: n=m+j \Rightarrow n+k=m+j+k \Rightarrow m+k \le n+k$ - \QEDA -\end{proof} \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter04_ganze_u_rat_Zahlen.tex b/1. Semester/ANAG/TeX_files/chapter04_ganze_u_rat_Zahlen.tex deleted file mode 100644 index 2d88a79..0000000 --- a/1. Semester/ANAG/TeX_files/chapter04_ganze_u_rat_Zahlen.tex +++ /dev/null @@ -1,178 +0,0 @@ -\chapter{Ganze und rationale Zahlen} -\textbf{Frage:} Existiert eine natürliche Zahl $x$ mit $n=n'+x$ für ein gegebenes $n$ und $n'$? \\ -\textbf{Antwort:} Das geht nur falls $n \le n'$, dann ist $x=n-n'$ \\ -\textbf{Ziel:} Zahlenbereichserweiterung, sodass die Gleichung immer lösbar ist. Ordne jedem Paar -$(n,n') \in \mathbb N \times \mathbb N$ eine neue Zahl als L\"osung zu. Gewisse Paare liefern die -gleiche L\"osung, z.B. $(6,4),(5,3),(7,5)$. Diese m\"ussen mittels Relation identifiziert werden. \\ -$\newline$ - -$\mathbb Q := \{(n_1,n_1'),(n_2,n_2') \in (\mathbb N \times \mathbb N) \times (\mathbb N \times -\mathbb N) \mid n_1+n_2'=n_1'+n_2\}$ \\ -$\newline$ - -\begin{mydef} - $\mathbb Q$ ist die Äquivalenzrelation auf $\mathbb N \times \mathbb N$. -\end{mydef} -$\newline$ - -\begin{exmp} - $(5,3) \sim (6,4) \sim (7,5)$ bzw. $(5-3) \sim (6-4) \sim (7-5)$\\ - $(3,6) \sim (5,8)$ bzw. $(3-6) \sim (5-8)$ -\end{exmp} - -\begin{proof} - % find a way to give an example a better formating!!! - offenbar $((n,n'),(n,n')) \in \mathbb Q \Rightarrow$ reflexiv\\ - falls $((n_1,n_1'),(n_2,n_2')) \in \mathbb Q \Rightarrow (n_2,n_2'),(n_1,n_1')) \in - \mathbb Q \Rightarrow$ symmetrisch\\ - sei $((n_1,n_1'),(n_2,n_2')) \in \mathbb Q$ und $((n_2,n_2'),(n_3,n_3')) \in \mathbb Q - \Rightarrow n_1+n_2'=n_1'+n_2, n_2+n_3'=n_2'+n_3 \Rightarrow n_1+n_3'=n_1'+n_3 \Rightarrow - ((n_1,n_1'),(n_3,n_3')) \in \mathbb Q \Rightarrow$ transitiv.\QEDA -\end{proof} - -\noindent setze $\overline{\mathbb{Z}} := \{[(n,n')] \mid n,n' \in \mathbb{N}\}$ Menge der ganzen Zahlen, -[ganze Zahl] \\ -Kurzschreibweise: $\overline m := [(m,m')]$ oder $\overline n := [(n,n')]$ \\ - -\begin{satz} - Sei $[(n,n')] \in \overline{\mathbb{Z}}$. Dann existiert eindeutig $n* \in \mathbb N$ mit $(n*,0) \in [(n,n')]$, falls $n \ge n'$ bzw. $(0,n*) \in [(n,n')]$ falls $n < n'$. -\end{satz} - -\begin{proof} - $n \ge n' \Rightarrow \exists ! n* \in \mathbb N: n=n'+n* \Rightarrow (n*,0) \sim (n,n')$\\ - $n < n' \Rightarrow \exists ! n* \in \mathbb N: n+n*=n' \Rightarrow (0,n*) \sim (n,n')$\QEDA -\end{proof} - -\noindent\textbf{Frage:} Was hat $\overline{\mathbb{Z}}$ mit $\whole$ zu tun?\\ -\textbf{Antwort:} identifiziere $(n,0)$ bzw. $(n-0)$ mit $n \in \natur$ und identifiziere $(0,n)$ -bzw. $(0-n)$ mit Symbol $-n$ \\ -$\Rightarrow$ ganze Zahlen kann man eindeutig den Elementen folgender Mengen zuordnen: $\mathbb Z := -\natur \cup \{(-n) \mid n \in \natur\}$ \\ -$\newline$ - -\textbf{Rechenoperationen auf $\overline{\whole}$:} \\ -\begin{itemize} - \item Addition: $\overline m + \overline n = [(m,m')]+[(n,n')]=[(m+n,m'+n')]$ - \item Multiplikation: $\overline m \cdot \overline n = [(m,m')] \cdot [(n,n')]=[(mn+m'n',mn'+m'n)]$ -\end{itemize} - -\begin{satz} - Addition und Multiplikation sind eindeutig definiert, d.h. unabhängig von Repräsentant bezüglich $\mathbb Q$ -\end{satz} -\begin{proof} - Sei $(m_1,m_1') \sim (m_2,m_2'), (n_1,n_1') \sim (n_2,n_2')\\ - \Rightarrow m_1+m_2'=m_1'+m_2, n_1 - +n_2'=n_1'+n_2\\ - \Rightarrow m_1+n_1+m_2'+n_2'=m_1'+n_1'+m_2+n_2\\ \Rightarrow (m_1,m_1')+(n_1,n_1') \sim (m_2,m_2')+(n_2,n_2')$\QEDA -\end{proof} - -\begin{satz} - Für Addition und Multiplikation auf $\mathbb Z$ gilt $\forall\;\overline m, - \overline{n} \in \overline{\whole}$: - \begin{enumerate} - \item es existiert eine neutrales Element: $0:=[(0,0)]$, $1:=[(1,0)]$ - \item jeweils kommutativ, assoziativ und gemeinsam distributiv - \item $- \overline{n} := [(n',n)] \in \whole$ ist invers bezüglich der Addition zu - $[(n,n')] = \overline n$ - \item $(-1) \cdot \overline n = - \overline n$ - \item $\overline m \cdot \overline n = 0 \iff \overline m =0 \lor \overline n=0$ - \end{enumerate} -\end{satz} - -\begin{proof} - \begin{enumerate}[label={\arabic*)}, nolistsep] - \item offenbar $\overline n +0=0+\overline n=\overline n$ und $\overline n \cdot 1 = 1 \cdot - \overline n = \overline n$ - \item Fleißarbeit $\to$ SeSt - \item offenbar $\overline n+(- \overline n) = (- \overline n)+\overline n=[(n+n',m+m')]=0$ - \item $(-1)\cdot \overline n = [(0,1)]\cdot [n,n']=[n',n]=-\overline n$ - \item ÜA \QEDA - \end{enumerate} - -\end{proof} - -\begin{satz} - Für $\overline m, \overline n \in \mathbb Z$ hat die Gleichung $\overline m=\overline n + \overline x$ die Lösung $\overline x=\overline m+(-\overline n)$. -\end{satz} - -\noindent Ordnung auf $\overline{\whole}:$ betrachte Relation $R := \{(\overline{m},\overline{n}) \in -\overline{\whole} \times \overline{\whole} \mid \overline{m} \le \overline{n}\}$ - -\begin{satz} - $R$ ist Totalordnung auf $\whole$ und verträglich mit Addition und - Multiplikation -\end{satz} - -\noindent Ordnung verträglich mit Addition: $\overline n < 0 \iff 0=\overline n+(-\overline n) < -\overline n -= (-1) \cdot \overline n$ \\ - -\noindent \textbf{beachte:} $\mathbb Z := \mathbb N \cup \{(-n) \mid n \in \mathbb N_{>0}\}$ \\ - -\begin{satz} - $\whole$ und $\overline{\whole}$ sind isomorph bezüglich Addition, Multiplikation und Ordnung. -\end{satz} - -\begin{proof} - betrachte Abbildung $I: \mathbb Z \to \overline{\whole} $ mit $I(k):=[(k,0)]$ und $I(-k):=[(0,k)] \quad \forall k \in \natur \Rightarrow$ ÜA \QEDA -\end{proof} - -\noindent Notation: verwende stets $\mathbb Z$, schreibe $m,n,...$ statt $\overline m, \overline n,...$ für -ganze Zahlen in $\mathbb Z$ \\ - -\noindent \textbf{Frage:} Existiert eine ganze Zahl mit $n=n' \cdot x$ f\"ur $n,n' \in \mathbb Z, n' \neq 0$ \\ -\textbf{Antwort:} im Allgemeinen nicht -\textbf{Ziel:} Zahlbereichserweiterung analog zu $\mathbb N \to \mathbb Z$ \\ -ordne jedem Paar $(n,n') \in \mathbb Z \times \mathbb Z$ neue Zahl $x$ zu \\ -schreibe $(n,n')$ auch als $\frac{n}{n'}$ oder $n:n'$ \\ -identifiziere Paare wie z.B. $\frac 4 2, \frac 6 3, \frac 8 4$ durch Relation \\ -$\mathbb Q := {(\frac{n_1}{n'_2}, \frac{n_2}{n'_2}) \in (\mathbb Z \times \mathbb Z_{\neq 0}) - \times (\mathbb Z \times \mathbb Z_{\neq 0}) \mid n_1n'_2=n'_1n_2}$ \\ -$\Rightarrow \mathbb Q$ ist eine Äquivalenzrelation auf $\mathbb Z \times \mathbb Z_{\neq 0}$ \\ - -\noindent setze $\mathbb Q := {[\frac{n}{n'}] \mid (n,n') \in \mathbb Z \times \mathbb Z_{\neq 0}}$ Menge der -rationalen Zahlen \\ -beachte: unendlich viele Symbole $\frac{n}{n'}$ für gleiche Zahl $[\frac{n}{n'}]$ \\ -wir schreiben später $\frac{n}{n'}$ für die Zahl $[\frac{n}{n'}]$ \\ -\noindent offenbar gilt die Kürzungsregel: $[\frac{n}{n'}]=[\frac{kn}{kn'}] \quad \forall k \in -\mathbb Z_{\neq 0}$ \\ - -\noindent \textbf{Rechenoperationen auf $\mathbb Q$:} \\ -\begin{compactitem} - \item Addition: $[\frac{m}{m'}]+[\frac{n}{n'}] := [\frac{mn'+m'n}{m'n'}]$ - \item Multiplikation: $[\frac{m}{m'}] \cdot [\frac{n}{n'}] := [\frac{mn}{m'n'}]$ -\end{compactitem} - -\begin{satz} - Mit Addition und Multiplikation ist $\mathbb Q$ ein Körper mit\\ - neutralen Elementen: $0=[\frac{0_{\mathbb Z}}{1_{\mathbb Z}}]= - [\frac{0_{\mathbb Z}}{n_{\mathbb Z}}], 1:=[\frac{1_{\mathbb Z}}{1_{\mathbb Z}}]=[\frac n n] \neq 0$\\ - inversen Elementen: $-[\frac{n}{n'}]=[\frac{-n}{n}], [\frac{n}{n'}]^{-1}=[\frac{n'}{n}]$\\ -\end{satz} - -\noindent Ordnung auf $\mathbb Q:$ f\"ur $[\frac{n}{n'}] \in \mathbb Q$ kann man stets $n'>0$ annehmen \\ -Realtion: $R:=\{([\frac{m}{m'}],[\frac{n}{n'}]) \in \mathbb Q \times \mathbb Q \mid mn' \le m'n, -m',n' > 0\}$ gibt Ordnung $\le$ \\ - -\begin{satz} - $\mathbb Q$ ist ein angeordneter K\"orper (d.h. $\le$ ist eine Totalordnung undv erträglich mit Addition und Multiplikation). -\end{satz} - -Notation: schreibe vereinfacht nur noch $\frac{n}{n'}$ für die Zahl $[\frac{n}{n'}] \in \mathbb Q$ und verwende auch Symbole $p,q,...$ für Elemente aus $\mathbb Q$ \\ - -Gleichung $p \cdot x = q$ hat stets eindeutige Lösung: $x=q \cdot p^{-1}$ ($p,q \in \mathbb Q, p \neq 0$) \\ - -\textbf{Frage:} $\mathbb N \subset \mathbb Z \to \mathbb Z \subset \mathbb Q$? -\textbf{Antwort:} Sei $\mathbb Z_{\mathbb Q} := {\frac n 1 \in \mathbb Q \mid n \mathbb Z}, I: -\mathbb Z \to \mathbb Z_{\mathbb Q}$ mit $I(n)=\frac n 1$ \\ -$\Rightarrow I$ ist Isomorphismus bez\"uglich Addition, Multiplikation und Ordnung. \\ -In diesem Sinn: $\mathbb N \subset \mathbb Z \subset \mathbb Q$ \\ - -\begin{folg} - Körper $\mathbb Q$ ist archimedisch angeordnet, d.h. f\"ur alle $q \in \mathbb Q \exists n \in \mathbb N: q<_{\mathbb Q} n.$ -\end{folg} - -\begin{proof} - Sei $q = [\frac{k}{k'}]$ mit $k'>0$ \\ - $n := 0$ falls $k<0 \Rightarrow q=[\frac{k}{k'}] < [\frac{0}{k'}]=0=n$ \\ - $n := k+1$ falls $k \ge 0 \Rightarrow q=[\frac{k}{k'}] < [\frac{k+1}{k'}]=n$ \QEDA -\end{proof} \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter05_reelle_Zahlen.tex b/1. Semester/ANAG/TeX_files/chapter05_reelle_Zahlen.tex deleted file mode 100644 index 1353e8d..0000000 --- a/1. Semester/ANAG/TeX_files/chapter05_reelle_Zahlen.tex +++ /dev/null @@ -1,56 +0,0 @@ -\chapter{Reelle Zahlen} -\begin{description} - \item[Frage:] Frage: algebraische Gleichung $a_0+a_1x+\dots+a_x^k=0\;(a_j\in \whole)$\\ - i.A nur für $k=1$ lösbar (d.h. lin. Gl.) -\end{description} - -\begin{exmpn} - $x^2 - 2 = 0$ keine Lösung in $\ratio$. Angenommen es existiert eine Lösung $x = \frac{m}{n} \in \ratio$, o.B.d.A. höchstens eine der Zahlen $m,n$ gerade $\Rightarrow \frac{m^2}{n^2} = 2 \Rightarrow m^2 = 2n^2 \Rightarrow m$ gerade $\overset{m=2k}{\Rightarrow} 4k^2 = 2n^2 \Rightarrow 2n^2 \Rightarrow 2k^2 = n^2 \Rightarrow n$ gerade $\Rightarrow \lightning$.\QEDA -\end{exmpn} - -\noindent Offenbar $1,4^2 < 2 < 1,5^2,\; 1,41^2 < 2 < 1,42^2,\;\dots,$ falls es $\sqrt{2}$ gibt, kann diese in $\ratio$ beliebig genau approximiert werden. Es folgt, dass $\ratio$ anscheinend "`Lücken"' hat. -\textbf{Fläche auf dem Einheitskreis} kann durch rationale Zahlen beliebig genau approximiert werden. Falls "`Flächenzahl"' $\pi$ existiert, ist das \textbf{nicht} Lösung einer algebraischen Gleichung (Lindemann 1882).\\ - -\begin{description} - \item[Ziel:] Konstruktion eines angeordneten Körpers, der diese Lücken füllt. -\end{description} - -\section{Struktur von archimedisch angeordneten Körper (allg.)} -$\field$ sei ein (bel.) Körper mit bel. Elementen $0, 1$ bzw. $0_K, 1_K$. -\begin{satz} - Sei $\field$ Körper. Dann gilt $\forall a,b \in \field$: - \begin{enumerate}[label={\arabic*)}, nolistsep] - \item $0,1, (-a), b^{-1}$ sind eindeutig bestimmt - \item $(-0) = 0$, $1^{-1} = 1$ - \item $-(-a) = a$, $(b^{-1})^{-1} = b$ $(b \neq 0)$ - \item $-(a + b) = (-a) + (-b)$, $(a^{-1}b^{-1}) = (a^{-1}b^{-1})$ $(a,\neq 0)$ - \item $-a = (-1)\cdot a$, $(-a)(-b)=ab$, $a \cdot 0 = 0$ - \item $ab=0 \iff a=0 \text{ oder } b=0$ - \item $a + x = b \text{ hat eindeutige Lösung } x = b + (-a) =:b-a$ Differenz\\ - $ax=b \text{ hat eindeutige Lösung } x = a^{-1}b:=\frac{b}{a}$ Quotient - \end{enumerate} -\end{satz} - -\begin{proof} - \begin{enumerate}[label={\arabic*)}] - \item vgl. lin. Algebra - \item betrachte $0 + 0 = 0$ bzw. $1 \cdot 1 = 1$ - \item $(-a) + a = 0 \overset{komm}{\Rightarrow} a = -(-a)$ Rest analog - \item $a+b = ((-a) + (-b)) \Rightarrow$ Behauptung, Addition und Multiplikation analog - \item $a\cdot 0 = 0$ vgl. lin. Algebra\\ - $1a + (-1)a = 0 \Leftrightarrow (1-1)a=0 \Rightarrow (-1)a=-1$, $(-a)(-b)=(-1)(-a)b\overset{3,5}{=}ab$ - \item ($\Leftarrow$): nach 5)\\ - ($\Rightarrow$) sei $a\neq0$ (sonst klar) $\Rightarrow 0 = a^{-1}\cdot 0 \overset{ab=0}{=} a^{-1}ab = b \Rightarrow$ Beh. - \item $a+x=b \Leftrightarrow x = (-a) + a \neq x = (-a) + b$, für $ax=b$ analog \QEDA - \end{enumerate} -\end{proof} - -Setze für alle $a, \dots a_k \in \field,n\in \natur_{\geq 1}$ -\begin{itemize} - \item[Vielfache] $n\cdot a$ (kein Produkt in $\field$!) - \item[Potenzen] $a^n=\prod_{k=1}^{n} a_k \text{für } n \in N_{\geq 1}$ damit $(-n)a:=n(-a) \text{, } 0_{\natur}a=0_{\natur} \text{ für } n\in\natur_{\geq1}\\ - a^{-n}=(a^-1)^n \text{, }a^{0_{\natur}}:=1_{\field} \text{ für } n \in \natur_{\geq 1}, a \neq 0\\ - beachte: 0^0 = (0_\natur)^{0_{\natur}} \text{ \emph{nicht} definiert!}$ - \item[Rechenregeln] $\forall\;a,b\in \field\text{, } m,n\in \whole \text{ (sofern Potenz definiert) } $ -\end{itemize} -%TODO \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter06_komplexe_zahlen.tex b/1. Semester/ANAG/TeX_files/chapter06_komplexe_zahlen.tex deleted file mode 100644 index dcf3d7b..0000000 --- a/1. Semester/ANAG/TeX_files/chapter06_komplexe_zahlen.tex +++ /dev/null @@ -1,27 +0,0 @@ -\chapter{Komplexe Zahlen (kurzer Überblick)} -\begin{description} - \item[Problem:] $x^2 = -1$ keine Lösung in $\real \Rightarrow$ Körpererweiterung $\real \to \comp$ - \item[Betrachte Menge der komplexen Zahlen] $\comp := \real \times \real = \real^2$ - \item mit Addition und Multiplikation:\\ - $(x,x^{'}) + (y,y^{'}) = (x+y, x^{'} + y^{'})$\\ - $(x,x^{'}) \cdot (y,y^{'}) = (xy - x^{'}y^{'}, xy^{'}+x^{'}y)$ - \item $\comp$ ist ein Körper mit (vgl. lin Algebra):\\ - $0_{\field} = (0,0)$, $1_{\field} = (1,0)$, $-(x,y) = (-x,-y)$ and $(x,y)^{-1} = \bigg(\frac{x}{x^2+y^2},\frac{-y}{x^2+y^2}\bigg)$\\ - mit imaginärer Einheit $\iota=(0,1)$\\ - $z=x+\iota y$ statt $z=(x,y)$ mit $x:=\Realz(z)$ Realteil von $z$, $y:= \Imag(z)$ Imaginärteil von $z$\\ - komplexe Zahl $z=x + \iota y$ wird mit reeller Zahl $x \in \real$ identifiziert\\ - offenbar $\iota^2=(-1,0)=-1$, d.h. $z=\iota \in \comp$ und löst die Gleichung $z^2=-1$ (nicht eindeutig, auch $(-\iota)^2 = -1$)\\ - Betrag $|\cdot|: \comp \to \real_{> 0}$ mit $|z|:= \sqrt{x^2+y^2}$ (ist Betrag/Länge des Vektors $(x,y)$)\\ - es gilt: - \begin{enumerate}[label={\alph*)}] - \item $\Realz(z) = \frac{z+\overline{z}}{2}, \Imag(z) = \frac{z+\overline{z}}{2\iota}$ - \item $\overline{z_1 + z_2} = \overline{z_1} + \overline{z_2}$, $\overline{z_1 \cdot z_2} = \overline{z_1} \cdot \overline{z_2}$ - \item $|z| = 0 \iff z=0$ - \item $|\overline{z}| = |z|$ - \item $|z_1 \cdot z_2| = |z_1| \cdot |z_2|$ - \item $|z_1 + z_2| \leq |z_1| + |z_2|$ (Dreiecks-Ungleichung: Mikoswski-Ungleichung) - \end{enumerate} -\begin{proof} - SeSt \QEDA -\end{proof} -\end{description} \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter07_grundl_ungleichungen.tex b/1. Semester/ANAG/TeX_files/chapter07_grundl_ungleichungen.tex deleted file mode 100644 index 80fab02..0000000 --- a/1. Semester/ANAG/TeX_files/chapter07_grundl_ungleichungen.tex +++ /dev/null @@ -1,132 +0,0 @@ -\part{Metrische Räume und Konvergenz} -\begin{description} - \item[Konvergenz:] grundlegender Begriff in Analysis %(benötigt Abstandsbegriff (Metrik)) -\end{description} -\chapter{Grundlegen Ungleichungen} - -\begin{satz}[Geometrisches und arithmetisches Mittel]\label{satz_7_1_geo_mittel} - Seien $x_1, \dots, x_n \in \real_{>0}$\\ -$\Rightarrow$ - \begin{tabular}{ccc} - $ \sqrt[n]{x_1, \dots, x_n}$ & $=$ & $\frac{x_1, \dots, x_n}{n}$ \\ - geoemtrisches Mittel & & arithmetisches Mittel \\ - \end{tabular}\\ -Gleichheit gdw $x_1 = \dots = x_n$. -\end{satz} - -\begin{proof} - Zeige zunächst mit vollständiger Induktion\\ - \begin{align} %% add /nonumber to have no numbering - \prod_{i=1}^{n}x_i= \Rightarrow \sum_{i=1}^{n} x_i \geq n \text{, mit } x_1=\dots=x_n \label{7_1_ind} - \end{align} - \begin{itemize} - \item (IA) $n = 1$ klar - \item (IS) (\ref{7_1_ind}) gelte für $n$, zeige (\ref{7_1_ind}) für $n+1$ d.h. $\prod_{i=1}^{n+1} = 1$, falls alle $x_i=1 \beha$ Sonst oBdA $x_n < 1$, $x_{n+1} > 1:$\\ mit $y_n:=x_n x_{n+1}$ gilt $x_1\cdot\dots\cdot x_{n-1}\cdot y_n=1$ - \begin{align*} - \Rightarrow x_1 + \dots + x_{n+1} &= \underbrace{x_1+\dots+x_{n-1}}_{\geq \text{ (IV)}} + y_n - y_n + x_n+x_{n+1}\\ - &\geq n + \underbrace{(x_{n+1} -1)}_{>n}\underbrace{(1-x_n)}_{>n}\\ - &\Rightarrow (\ref{7_1_ind}) \forall n \in \natur& \text{vollständige Induktion}\\ - \shortintertext{allgemein sei nun $g:=\big( \prod_{i=1}^{n} x_i \big)^{\frac{1}{n}} \Rightarrow \prod_{i=1}^{n} \frac{x_i}{g} = 1$} - &\Rightarrow \sum_{i=1}^{n} \frac{x_i}{g} \geq n \beha& \text{Satz \ref{7_1_ind}}\\ - \shortintertext{Aussage über Gleichheit nach nochmaliger Durchsicht.} - \end{align*} - \end{itemize} - \QEDA -\end{proof} - -\begin{satz}[allg. Bernoulli-Ungleichung] - Seien $\alpha, x \in \real$. Dann\\ - \begin{align*} - 1)\;(1+x)^{\alpha} &\geq 1 + \alpha x \; \forall x > -1, \alpha > 1\\ - 2)\; (1+x)^{\alpha} &\leq 1+\alpha x \; \forall x \geq -1, 0 < \alpha < 1 - \end{align*} -\end{satz} - -\begin{proof} % fix alignment - \begin{enumerate} - \item[2)] Sei $\alpha =\frac{m}{n} \in \ratio_{<1}\text{, d.h. } m\leq n$ - \begin{align*} - &\Rightarrow (1+x)^\frac{m}{n} = \sqrt[n]{(1+x)^m\cdot1^{n-m}}& \text{Definition} \\ - &\leq \frac{m(1+x)+(n-m)\cdot1}{n}&\\ - &=\frac{n + mx}{n} = 1 + \frac{m}{n}x \text{, für } \alpha \in \ratio \beha& - \shortintertext{Sei $\alpha \in \real$ angenommen $(1+x)^{\alpha} > 1 + \alpha x$ ($x\neq 0$ sonst klar!)} - & \Rightarrow \exists \in \ratio_{<1} - \begin{cases*} - x > 0&$\alpha1$ mit $\frac{1}{q} + \frac{1}{q} =1 \Rightarrow ab \leq \frac{a^p}{p}+\frac{b^q}{q}\;\forall a,b \geq 0$ (Gleichheit gdw $a^p = b^q$)\\ - Spezialfall($p=q=2$): $ab \geq \frac{a^2 + b^2}{2}$ gilt $\forall a,b \in \real$ (folgt direkt $0\leq (a-b)^2$) -\end{satz} - -\begin{proof} %fix formating - \begin{align*} - \shortintertext{Sei $a,b > 0$ (sonst klar!)} - &\Rightarrow \big(\frac{b^q}{a^p}\big)^{\frac{p}{q}} = \big(1+\big(\frac{b^q}{a^p} -1\big)\big)^{\frac{p}{q}}&\\ - &\leq 1+ \frac{1}{q}\big(\frac{b^q}{a^p} -1\big)& \text{Bernoulli-Ungleichung}\\ - &=\frac{1}{p}+\frac{1}{q}+\frac{1}{q}\frac{b^q}{a^p}-\frac{1}{q}\\ - &\Rightarrow a^p\frac{b}a^{\frac{p}{q}} = a^{p(1-\frac{1}{q})}b = ab \leq \frac{a^p}{p} + \frac{b^q}{q}& \cdot a^p - \end{align*}\QEDA -\end{proof} - -\begin{satz}[Höldersche Ungleichung] - Sei $p,q \in \real;\;p,q > 0$ mit $\frac{1}{q} + \frac{1}{p} = 1$\\ - $\Rightarrow \sum_{i=1}^{n} \vert x_i y_i\vert \leq \big( \sum_{i=1}^{n} \vert x_i \vert \big)^{\frac{1}{p}} \big( \sum_{i=1}^{n} \vert y_i \vert \big)^{\frac{1}{p}}\;\forall x,y \in \real$ -\end{satz} - -\begin{remark} - \begin{enumerate}[label={\arabic*)}] - \item Ungleichung gilt auch für $x_i,y_i \in \comp$ (nur Beträge gehen ein) - \item für $p=q=2$ heißt Ungleichung Cauchy-Schwarz-Ungleichung (Gleichheit gdw $\exists x \in \real x_i = \alpha y_i \text{ oder } y_i = \alpha x_i\;\forall i$) - \end{enumerate} -\end{remark} - -\begin{proof} - Faktoren rechts seien $\mathcal{X} \text{ und } \mathcal{Y}$ d.h. - \begin{align*} - \mathcal{X}^p &= \sum_{i=1}^{n} \vert x_i \vert^{\frac{1}{p}}, \mathcal{Y}^p = \sum_{i=1}^{n} \vert y_i \vert^{\frac{1}{q}}\text{, falls } \mathcal{X}=0&\\ &\Rightarrow x_i = 0\;\forall i \beha \text{, analog für } \mathcal{Y} =0&\\ - \shortintertext{Seien $\mathcal{X}, \mathcal{Y} > 0$} - &\Rightarrow \frac{\vert x_i y_i \vert}{\mathcal{XY}} \leq \frac{1}{p}\frac{\vert x_i \vert^p}{\mathcal{X}^p}+ \frac{1}{q}\frac{\vert y_i \vert^q}{\mathcal{Y}^p} \forall i& \text{Satz 7.3}\\ - &\Rightarrow \frac{1}{\mathcal{XY}}\sum_{i=1}^{n}\vert x_i y_i \vert \leq \frac{1}{p}\frac{\mathcal{X}^p}{\mathcal{X}^p}+\frac{1}{q}\frac{\mathcal{Y}^p}{\mathcal{Y}^p} = 1 \beha & \cdot \mathcal{XY} - \end{align*}\QEDA -\end{proof} - -\begin{satz}[Minkowski-Ungleichung] - Sei $p\in \real, p \geq 1 \Rightarrow \big(\sum_{i=1}^{n} \vert x_i + y_i \vert^p \big)^\frac{1}{p} \leq \big(\sum_{i=1}^{n} \vert x_i \vert^p \big)^\frac{1}{p} + \big(\sum_{i=1}^{n} \vert y_i \vert^p \big)^\frac{1}{p}\forall x,y\in \real$ -\end{satz} - -\begin{remark} - \begin{enumerate}[label={\arabic*)}] - \item Ungleichung gilt auch für $x_i, y_i \in \comp$ (vgl. Beweis) - \item ist $\Delta$-Ungleichung für $p$-Normen (vgl. später) - \end{enumerate} -\end{remark} - -\begin{proof} - $p=1$ Beh. folgt aus $\Delta$-Ungleichung $\vert x_i + y_i\vert \overset{Satz 5.5}{\leq} \vert x_i \vert + \vert y_i \vert \forall i$\\ $p>1$ sei $\frac{1}{p} + \frac{1}{q} = 1$, $z_i:=\vert x_i + y_i\vert^{p-1}\forall i$ - \begin{align*} - \mathcal{S}^p &= \sum_{i=1}^{n} \vert z_i \vert^q & q = \frac{p}{p-1}\\ - & = \sum_{i=1}^{n} \vert +x_i+y_i \vert\cdot\vert z_i \vert^q & \\ - & = \sum_{i=1}^{n} \vert x_i + y_i \vert + \sum_{i=1}^{n} \vert z_i \vert & \Delta\text{-Ungleichung}\\ - & \leq \big(\mathcal{X+Y}\big)\big(\sum_{i=1}^{n} \vert z_i\vert^q \big)^\frac{1}{p} & \text{Hölder-Ungleichung}\\ - & = \big(\mathcal{X+Y}\big)\mathcal{S}^\frac{p}{q} & \\ - & \beha & p=\frac{p}{q}+1 - \end{align*}\QEDA -\end{proof} - - -%continue-+ diff --git a/1. Semester/ANAG/TeX_files/chapter08_metr_raeume.tex b/1. Semester/ANAG/TeX_files/chapter08_metr_raeume.tex deleted file mode 100644 index d220435..0000000 --- a/1. Semester/ANAG/TeX_files/chapter08_metr_raeume.tex +++ /dev/null @@ -1,306 +0,0 @@ -\chapter{Metrische und normierte Räume} -\section{Metrische Räume} -\begin{mydefn}[Metrik] - Sei $X$ Menge und Abbildung $d: X \times X \to \real$ heißt \underline{Metrik} auf $X$ falls $\forall x,y,z \in X$ - \begin{enumerate}[label={\alph*)}] - \item $d(x,y) = 0 \Leftrightarrow x=y$ - \item $d(x,y) = d(y,x)$ (Symmetrie) - \item $d(x,z) \leq d(x,y) + d(y,z)$ ($\Delta$-Ungleichung) - \end{enumerate} - $(X,d)$ heißt metrischer Raum. -\end{mydefn} -Man hat $d(x,y) = 0 \forall x,y \in X$, dann - -\begin{align} - 0 &= d(x,x) = d(x,y) + d(y,x) & \text{a), c)}\nonumber\\ - & = 2d(x,y) \forall x,y & \text{b)}\nonumber\\ - \text{nach } & \text{b), c) } &\nonumber\\ - & \vert d(x,y) -d(z,y)\vert \leq d(x,y) \forall x,y,z \in X & -\end{align} - -\begin{exmpn}[Standardmetrik]\label{8_1_exmp_metrik} - $d(x,y) := \vert x-y\vert$ ist Metrik auf $X=\real$ bzw. $X=\comp$ - \begin{align*} - \text{Eig. a), b), c) klar}& &\\ - \text{c) } \vert x-z\vert& \vert (x+y)-(x-z)\vert &\\ - &\leq \vert x+y\vert + \vert y+z\vert & \Delta\text{-Ungleichung für }\real\text{, }\comp\text{-Betrag} - \end{align*} -\end{exmpn} - -\begin{exmpn}[diskrete Metrik] - Diskrete Metrik auf beliebiger Menge $X$.\\ - \[d(x,y) = - \begin{dcases*} - 0 & x = y\\ - 1 & $x \neq y$ - \end{dcases*}\] - ist offenbar eine Metrik. -\end{exmpn} - -\begin{exmpn}[induzierte Metrik] - Sei $(X,d)$ metrischer Raum, $Y \subset X$\\ - $\Rightarrow (Y,d)$ ist metrischer Raum mit \emph{induzierter Metrik} $\tilde{d}(x,y):=d(x,y)\forall x,y \in Y$ -\end{exmpn} - -\section{Normierte Räume} - -wichtiger Spezialfall: normierte Vektorraum(VR) - -\begin{mydefn}[Norm] - Sei $X$ Vektorraum über $K=\real$ oder $K=\comp$.\\ - Abbildung $\Vert \cdot \Vert: X \to \real$ heißt \emph{Norm} auf $X$ falls $\forall x,y \in X, \forall \lambda \in \real$ gilt: - \begin{enumerate}[label={\alph*)}] - \item $\Vert x\Vert = \Leftrightarrow x=0$ - \item $\Vert \lambda x\Vert = \vert \lambda \vert \Vert x\Vert$ (Homogenität) - \item $\Vert x+y\Vert \leq \Vert x\Vert + \Vert y\Vert$ ($\Delta$-Ungleichung) - \end{enumerate} - $(X,\Vert \cdot\Vert)$ heißt \emph{normierter Raum}. -\end{mydefn} - -\begin{align*} - \text{Metrik} &\leftarrow \text{Norm}&\\ - \text{Abbildung} & \not \rightarrow \text{VR, Abstand } x,0\\ - \text{man hat } \Vert x \Vert &\leq 0 \forall x \in X \text{, denn } 0 = \Vert x-x\Vert \leq \Vert x\Vert + \Vert -x\Vert = 2\Vert x\Vert & \text{a), c), b)}\\ -\end{align*} -Analog Satz 5.5 folgt\\ -\begin{align} - \vert \Vert x \Vert - \Vert y \Vert\vert &\leq \Vert x-y\Vert \forall x,y \in X -\end{align} -$\Vert \cdot\Vert: X \to \real_{\geq0}$ heißt \emph{Halbraum} falls nur b), c) gelten analog Beispiel \ref{8_1_exmp_metrik} folgt. - -\begin{satz} - Sei $(X,\Vert\cdot \Vert)$ normierter Raum, dann $X$ metrischer Raum mit Metrik $d(x,y):=\Vert x-y \Vert\forall x,y \in X$. -\end{satz} - -\begin{exmpn}\label{8_5_exmp_Norm} - $X=\real^n$ ist Vektorraum über $\real$, Elemente in $\real^n$\\ $x=(x_1,\dots,x_n), y=(y_1, \dots, y_n)$,\\ man hat unter anderem folgende Normen auf $\real^n$ - \begin{align*} - p\text{-Norm}: \vert x \vert_p& := \Bigg( \sum_{i=0}^{n} \vert x_i \vert^p \Bigg)^{\frac{1}{p}} & (1\leq p < \infty)\\ - \text{Maximum-Norm}: \vert x \vert_p& := \max\{\vert x_i \vert \mid i=1,\dots n\} &\\ - \text{a), b) jeweils klar, c) für } & - \begin{cases*} - \vert \cdot \vert_p & \text{ist Minkowski-Ungleichung}\\ - \vert \cdot \vert_{\infty} & \text{wegen } $\vert x_i + y_i \vert \leq \vert x_i \vert + \vert y_i \vert \forall i$ - \end{cases*} - \end{align*} - Standardnorm in $\real^n$: - $\vert \cdot \vert = \vert \cdot \vert_{p=2}$ heißt \emph{eukldische Norm}.\\ -\end{exmpn} - -\begin{mydefn}[Skalarprodukt] - $\langle x,y \rangle = \sum_{i=1}^{n}$ heißt \emph{Skalarprodukt} (inneres Produkt) von $x,y \in \real^n$ offenbar $\langle x,y \rangle = \vert x \vert_2 \forall x \in comp$ nur für euklidische Räume gibt es Skalarprodukt (nur für euklische Norm!).\\ - Man hat $\vert \langle x,y\rangle \vert \leq \vert x \vert_2 \cdot \vert y \vert_2 \forall x,y \in \real^n$ Cauchy-Schwarsche Ungleichung (CSU), denn - \begin{align*} - \vert \langle x,z \rangle \vert &= \vert \sum_{i=1}^{n} x_i y_i \vert \leq \sum_{i=1}^{n}\vert x_i y_i\vert & \Delta\text{-Ungleichung in } \real\\ - & \leq \vert x \vert_2 \cdot\vert y \vert_2 & \text{Hölder-Ungleichung mit } p=q=2 - \end{align*} -\end{mydefn} - -\begin{exmpn} - $X=\comp^n$ ist Vektorraum über $\comp$, $x=(x_1,\dots,x_n) \in\comp^n, x_i \in \comp$\\ - analog zum Bsp. \ref{8_5_exmp_Norm} sind $\vert \cdot \vert_{p} \text{ und } \vert \cdot \vert_{\infty}$ Normen auf $\comp^n$\\ - $\langle x,y\rangle = \sum_{i=1}^{n} \bar{x}_i y_i\forall x_i, y_i \in \comp$ heißt \emph{Skalarprodukt} von $x,y \in \comp^n$ (beachte $\langle x,y\rangle \in \comp, \langle x,x \rangle=\vert x \vert^2$) \\ - $\overset{\text{wie oben}}{\Rightarrow} \vert \langle x,y\rangle \vert \leq \vert x \vert\cdot \vert y \vert \forall x,y \in \comp^n$ -\end{exmpn} - -\begin{mydefn}[Orthogonalität] - $x,y \in \real^n(\comp^n)$ heißen \emph{orthogonal} falls $\langle x,y\rangle =0$ -\end{mydefn} - -\begin{exmpn} - Sei $M$ beliebige Menge, $f: M \to \real$\\ - $\Vert f\Vert:= \sup\{\vert f(x) \vert \mid x\in M\}$. Dann ist \\ - \[\mathcal{B}(M):= \{f: M \to \real \mid \Vert f\Vert < \infty\}\] - \emph{Menge der beschränkte Funktionen} auf $M$\\ - $\mathcal{B}(M)$ ist Vektorraum auf $\real$ - \begin{enumerate}[label={\alph*)}] - \item $((f+g)(x) = f(x) + g(x)$ - \item $(\lambda f)(x) = \lambda f(x)$ - \item Nullelement ist Nullfunktion $f(x)=0 \forall x \in M$ - \end{enumerate} - \begin{align*} - \shortintertext{$\Vert \cdot\Vert$ ist Norm auf $\mathcal{B}(M)$, denn a), b) klar}\\ - \Vert f+g\Vert&:=\sup\{\vert f(x)+g(x) \vert\mid x \in M\}&\\ - &\leq \sup\{\vert f(x) \vert + \vert g(x) \vert\mid x\in M \} & \Delta\text{-Ungleichung in }\real\\ - &\leq \sup\{\vert f(x) \vert\mid x \in M \} + \sup\{\vert g(x) \vert\mid x \in M \} & \text{Übungsaufgabe}\\ - &=\Vert f\Vert + \Vert g\Vert - \end{align*} -\end{exmpn} - -\begin{exmpn} - $\Vert x \Vert:=\vert x_1 \vert$ auf $X=\real^n \to$ kein Nullvektor ``nur'' Halbnorm (später wichtige Halbnorm in Integraltheorie). Normen $\Vert \cdot \Vert_1,\;\Vert \cdot \Vert_2$ auf $X$ heißen äquivalent falls - \[ - \exists \alpha,\beta > 0\;\alpha \vert x \vert_1 \leq \vert x \vert_2 \leq \beta\vert x \vert_1\qquad\forall x \in X - \] - (Indizes entsprechen hier keinem p, sondern es sind hier nur beliebige unterschiedliche Normen gemeint.) -\end{exmpn} - -\begin{exmpn} - \[ - \vert x \vert_{\infty} \leq \vert x \vert_p \leq \sqrt[p]{n}\vert x \vert_{\infty}\qquad \forall x \in \real^n,\;p\geq 1\\ - \] - $\vert \cdot \vert_\infty$ und $\vert \cdot \vert_\infty$ sind äquivalent $\forall p \geq 1$ -\end{exmpn} - -\begin{proof} - \begin{align*} - \vert x \vert_{\infty} &=\big(\max \{ \vert x_j \vert, \vert \dots \}^p\big)^\frac{1}{p} \leq \bigg(\sum_{j=1}^{n} \vert x_j \vert^p \bigg)^\frac{1}{p} = \vert x \vert_p\\ - \vert x \vert_{\infty} &\leq \big( n\cdot \max\{ \vert x_j \vert, \vert \dots \}^p\big)^\frac{1}{p} \leq \bigg(\sum_{j=1}^{n} \vert x_j \vert^p \bigg)^\frac{1}{p} = \sqrt[p]{n}\vert x \vert_{\infty} - \end{align*}\QEDA -\end{proof} - -\begin{folg} - $\vert \cdot \vert_p,\;\vert \cdot \vert_q$ äquivalent auf $\real^n\;\forall p,q \geq 1$ (siehe Aufgabe 45b)) -\end{folg} - -\section{Begriffe im metrischen Raum} - -\begin{mydefn}[Kugel im metrischen Raum] - Sei $(X,d)$ metrischer Raum. - \begin{itemize} - \item $B_r(a):= \{ a \in X \mid d(a,x) 0$ - \item $B_r[a]:= \overline{B}_r(a) = \{ a \in X \mid d(a,x) \leq r \}$ heißt abgeschlossene \emph{Kugel} um $a$ mit Radius $r>0$ - \end{itemize} -\end{mydefn} -Hinweis: muss keine übliche Kugel sein z.B. $\{x\in \real^n \mid d(0,x) < 1\}$ ist Quadrat $B_r(0)$. - -\begin{mydefn} - \begin{itemize} - \item Menge $M\subset X$ \emph{offen} falls $\forall x \in M\;\exists \epsilon > 0\; B_{\epsilon}(x) \subset M$ - \item Menge $M$ offen falls $X\setminus M$ abgeschlossen - \item $U \subset X$ Umgebung von $M \subset X$ falls $\exists V \subset X$ offen mit $M \subset V \subset U$ - \item $x \in M$ \emph{innerer Punkt} von $M$ falls $\exists \epsilon >0\colon B_{\epsilon}(x) \subset M$ - \item $x \in M$ \emph{äußerer Punkt} von $M$ falls $\exists \epsilon >0\colon B_{\epsilon}(x) \subset X\setminus M$ - \item $x \in X$ \emph{Randpunkt} von $M$ falls $x$ weder innerer noch äußerer Punkt ist - \item $\inter M:=$ Menge der \emph{inneren} Punkte von $M$ heißen inneres von $M$ - \item $\ext M:=$ Menge der \emph{äußeren} Punkte von $M$ heißen äußeres von $M$ - \item $\partial M:=$ Menge der Randpunkte von $M$ heißt \emph{Rand} von $M$ - \item $\cl M:= \overline{M}:=\overline{\inter M} \cup \partial M$ heißt Abschluss von $M$ (closure) - \item $M \subset X$ \emph{beschränkt} falls $\exists a \in X, r >0\; M \subset B_r(a)$ - \item $x \in X$ \emph{Häufungskt (Hp)} von $M$ falls $\forall \epsilon > 0$ enhält \emph{$B_{\epsilon}(x)$ unendlich viele} Elemente aus $M$ - \item $x \in M$ \emph{isolierter} Punkt von $M$ falls $x$ kein Hp von $M$ - \end{itemize} -\end{mydefn} - -\begin{exmpn} - \begin{enumerate}[label={\alph*)}] - \item Sei $X=\real$ mit $d(x,y)=\vert x-y \vert$ - \begin{itemize} - \item $(a,b),(-\infty,a)$ offen - \item $[a,b], (-\infty, b]$ abgeschlossen - \item $[a,b)$ weder abgeschlossen noch offen, aber beschränkt - \end{itemize} - Es gilt: - \begin{itemize} - \item $\inter(a,b) = \inter[a,b] = (a,b)$ - \item $\ext(a,b) = \ext[a,b] = (-\infty,a) \cup (b, \infty)$ - \item $\partial(a,b) = \partial[a,b] = \{a,b\}$ - \item $\cl(a,b) = \cl[a,b]=[a,b]$ - \end{itemize} - Speziell: - \begin{itemize} - \item $\ratio$ weder offen noch abgeschlossen in $\real$, da $\inter \ratio =\emptyset, \ext \ratio = \emptyset, \partial \ratio = \real$ - \item $\real \setminus \emptyset$ ist offen - \item $\natur \text{ in } \real$ abgeschlossen und nicht beschränkt - \item $[0,3]$ ist Umgebung von $[1,2], B_r(a)$ ist Umgebung von $a$ (eigentlich $\{a\}$) - \item $a$ ist Hp von $(a,b),[a,b]$ für $a0,a\in X$ - \item $M\subset X$ beschränkt $\Rightarrow \forall a \in X \exists r>0\colon M\subset B_r(a)$ - \end{enumerate} -\end{lem} - -\begin{proof} - \begin{enumerate}[label={\arabic*)}] - \item Sei $b \in B_r(a),\epsilon := r - a-d(a,b)>0$, dann gilt für beliebige $x \in B_{\epsilon}(b)$ - \begin{align*} - d(a,x) &\leq d(a,b) + d(b,x) & \Delta\text{-Ungleichung mit } b\\ - & 0 \colon B_{\epsilon_i}(x) \subset U_i \forall i, \epsilon = \min\{\epsilon_1, \dots \epsilon_n\}$\\ - $\Rightarrow B_{\epsilon}(x) \in \bigcap_{i=0}^{n} U_i \beha$ - \item Sei $x \in \bigcup_{U\in\tau^{\prime}} U \Rightarrow \exists \tilde{U}\in \tau^{\prime}\colon x \in \tilde{U} \overset{\tilde{U} \text{ offen}}{\Rightarrow}\exists \epsilon > 0 \colon B_{\epsilon}(x) \subset \tilde{U} \in \bigcup_{U\in\tau^{\prime}} U \beha$. - \end{enumerate}\QEDA -\end{proof} - -Hinweis: Durchschnitt beliebiger vieler offener Menge ist nicht offen! - -\begin{exmp} - $\bigcap_{n\in \natur} (-\frac{1}{n},1+\frac{1}{n}) = [0,1]$ -\end{exmp} - -Komplementbildung im Satz \ref{8_13_satz_open_topo} liefert: - -\begin{folg}[Abgeschlossene Kugeln sind Topologie auf X] - Sei $(X,d)$ metrischer Raum und $\sigma :=\{ V \subset X \mid V \text{ abgeschlossen}\}$. Dann - \begin{enumerate}[label={\arabic*)}] - \item $X,\emptyset\in\sigma$ - \item $\bigcup_{i=1}^{n} U_i \in \sigma$ falls $U_i\in \sigma \text{ für } i = 1, \dots, n$ (endlich viele) - \item $\bigcap_{U\in\sigma^{\prime}} U \in \sigma$ falls $\sigma^{\prime} \subset \sigma$ (beliebig viele) - \end{enumerate} -\end{folg} - -\begin{mydefn}[Topologie] - Sei $X$ Menge und $\tau$ Menge von Teilmengen von $X$ (d.h. $\tau \in \powerset(X)$)\\ - $\tau$ ist Topologie und $(X, \tau)$ topologischer Raum, falls 1), 2), 3) aus Satz \ref{8_13_satz_open_topo} gelten. -\end{mydefn} -\begin{remark} - Menge $U\in \tau$ heißen dann offen (per Definition!). Folglich oben definierte offene Mengen in metrischen Räumen bilden ein Spezialfall für eine Topologie. Beachte! In metrischem Raum $(X,d)$ ist $\tilde{\tau} = \{\emptyset, X\}$ stets eine Topologie für beliebige Menge $X$). -\end{remark} - -\begin{satz} - Seinen $\Vert \cdot\Vert_1, \Vert \cdot\Vert_2$ äquivalente Normen auf $X$ und $U\subset X$. Dann\\ - $U$ offen bezüglich $\Vert \cdot\Vert_1 \Leftrightarrow U \text{ offen bezüglich } \Vert \cdot\Vert_2$. -\end{satz} - -\begin{proof} - Übungsaufgabe.\QEDA -\end{proof} - -\begin{satz} - Sei $(X,d)$ metrischer Raum und $M\subset X$. Dann - \begin{enumerate}[label={\arabic*)}] - \item $\inter M, \ext M$ offen - \item $\partial M, \inter M$ abgeschlossen - \item $M \leq \inter M$ falls $M$ offen, \\ - $M= \cl M$ falls $M$ abgeschlossen - \end{enumerate} -\end{satz} - -\begin{proof} - \begin{enumerate}[label={\arabic*)}] - \item Seien $x \in \inter M$, d.h. innere Punkte von $M \Rightarrow \exists \epsilon > 0 \colon B_{\epsilon}(x) \subset M$, da $B_{\epsilon}(x)$ offene Menge, ist jedes $y \in B_{\epsilon}(x)$ eine Teilemenge von $\inter M$ $\Rightarrow B_{\epsilon}(x) \subset M \beha$ ($\ext M$ analog) - \item $\partial X\setminus (\inter M \cup \ext M)$ ist abgeschlossen, $\cl M = X\setminus\ext M$ abgeschlossen - \item $M$ offen: es ist stets $\int M$ und da $M$ offen $M \subset \inter M \beha$ $\Rightarrow X\setminus M = \inter(X\setminus M) = \ext M = X \setminus \cl M \beha$. - ($M$ abgeschlossen analog) - \end{enumerate}\QEDA -\end{proof} \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter09_konvergenz.tex b/1. Semester/ANAG/TeX_files/chapter09_konvergenz.tex deleted file mode 100644 index bd34413..0000000 --- a/1. Semester/ANAG/TeX_files/chapter09_konvergenz.tex +++ /dev/null @@ -1,23 +0,0 @@ -\chapter{Konvergenz} -Sei $(X,d)$ metrischer Raum. - -\textbf{Ab jetzt alles ohne Bweise, folgen später.} - -\begin{mydef}[konvergente Folge, Grenzwert] - Folge $\{a_n\}_{n\in\natur}$ (d.h. $a_n \in X$) heißt konvergent falls $a\in X$ existiert mit $\forall \epsilon > 0\exists n_0 \in \natur\colon d(a_n,a) <\epsilon \quad \forall n \geq n_0$. Dann heißt $a$ Grenzwert (Limes).\\ Schreibe $a = \lim_{n\to \infty} a_n$ bzw. $a_n \longrightarrow a$ für $n \longrightarrow \infty$ oder $a_n \overset{n \to \infty}{\longrightarrow} a$. -\end{mydef} - -Sprich: ``'Für jede Kugel um Grenzwert befinden sich ab einem gewissen Index fasst alle FOlgenglieder innerhalb der Kugel.'' Folge $\{a_n\}$ heißt divergent, falls sie nicht konvergent ist. - -\begin{folg} - Für Folge $\{a_n\}$ gilt: $\forall > 0\quad a = \lim_{n\to \infty} a_n \Leftrightarrow$ jede Kugel $B_{\epsilon}(a)$ enthält fast alle Folgeglieder $a_n$, das heißt alle $a_n$ bis auf endlich viele. -\end{folg} - -\begin{exmp}[Konstante Folge] - Sei $\{a_n\} = \{a\}_{n\in \natur}$ (das heißt $a_n = a \forall n$) $\Rightarrow d(a_n,a) = d(a,a) = 0 < \epsilon \forall \epsilon > 0, n \in \natur \Rightarrow a = \lim_{n\to \infty} a_n$. -\end{exmp} - -\begin{exmp} - - $\forall \epsilon > 0 \exists n_0 \in \natur\colon \frac{1}{n} = \vert \frac{1}{n} - 0 \vert = d(\frac{1}{n},0)<\epsilon \forall n \geq n_0 \Rightarrow \lim_{n\to \infty} \frac{1}{n} = 0$. -\end{exmp} \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter10_vollst.tex b/1. Semester/ANAG/TeX_files/chapter10_vollst.tex deleted file mode 100644 index 833d882..0000000 --- a/1. Semester/ANAG/TeX_files/chapter10_vollst.tex +++ /dev/null @@ -1,2 +0,0 @@ -\chapter{Vollständigkeit} -%TODO \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter11_kompaktheit.tex b/1. Semester/ANAG/TeX_files/chapter11_kompaktheit.tex deleted file mode 100644 index 62cfcd3..0000000 --- a/1. Semester/ANAG/TeX_files/chapter11_kompaktheit.tex +++ /dev/null @@ -1,2 +0,0 @@ -\chapter{Kompaktheit} -%TODO \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter12_reihen.tex b/1. Semester/ANAG/TeX_files/chapter12_reihen.tex deleted file mode 100644 index c9e6eb1..0000000 --- a/1. Semester/ANAG/TeX_files/chapter12_reihen.tex +++ /dev/null @@ -1,2 +0,0 @@ -\chapter{Reihen} -%TODO \ No newline at end of file diff --git a/1. Semester/ANAG/TeX_files/chapter13_funktionen.tex b/1. Semester/ANAG/TeX_files/chapter13_funktionen.tex deleted file mode 100644 index 22340be..0000000 --- a/1. Semester/ANAG/TeX_files/chapter13_funktionen.tex +++ /dev/null @@ -1,3 +0,0 @@ -\part{Funktionen und Stetigkeit} -\chapter{Funktionen} -%TODO \ No newline at end of file diff --git a/1. Semester/ANAG/Vorlesung_ANAG.pdf b/1. Semester/ANAG/Vorlesung_ANAG.pdf deleted file mode 100644 index 93ef522..0000000 Binary files a/1. Semester/ANAG/Vorlesung_ANAG.pdf and /dev/null differ diff --git a/1. Semester/ANAG/Vorlesung_ANAG.tex b/1. Semester/ANAG/Vorlesung_ANAG.tex deleted file mode 100644 index 5616ea6..0000000 --- a/1. Semester/ANAG/Vorlesung_ANAG.tex +++ /dev/null @@ -1,151 +0,0 @@ -\documentclass[12pt, oneside]{book} -\usepackage[a4paper,left=2cm,right=2cm,top=2cm,bottom=4cm,bindingoffset=5mm]{geometry} -\usepackage[utf8]{inputenc} -\usepackage{paralist} -%\usepackage{booktabs} -%\usepackage{graphicx} -\usepackage[ngerman]{babel} -\usepackage{hyperref} % link chapters over name and page number -% math/enviroments -\usepackage{mathtools,bm} -\usepackage{stmaryrd} % Widerspruch symbol -\usepackage{amssymb} -\usepackage{amsfonts} -\usepackage{framed} -\usepackage[framed, hyperref, thmmarks, amsmath]{ntheorem} -\usepackage[framemethod=tikz]{mdframed} -\usepackage[autostyle]{csquotes} -%\usepackage{lipsum} -\usepackage{enumerate} -\usepackage{enumitem} % compress enumerate env -\setlist{nolistsep} -\usepackage{titlesec} % remove page break - -%theorem enviroment - -%theorem -\newframedtheorem{theorem}{Theorem}[chapter] -% example -\theoremstyle{break} -\theorembodyfont{\upshape} % no italics! -\newtheorem*{exmp}{Beispiel} -\theoremstyle{break} -\theorembodyfont{\upshape} -\newtheorem{exmpn}[theorem]{Beispiel} -% defintion -\theorembodyfont{\upshape} -\newtheorem{mydef}[theorem]{Definition} -% definition no numbering -\theorembodyfont{\upshape} -\newtheorem*{mydefn}{Definition} -% corollary -\theorembodyfont{\upshape} -\newtheorem{folg}[theorem]{Folgerung} -% remark -\theorembodyfont{\upshape} -\newtheorem*{remark}{Bemerkung} -% satz -\newtheorem{satz}[theorem]{Satz} -% beweis -\theorembodyfont{\upshape} -\newtheorem*{proof}{Beweis} -% lemma -\theorembodyfont{\upshape} -\newtheorem{lem}[theorem]{Lemma} -%\let\olddefinition\lem -%\renewcommand{\lem}{\olddefinition\normalfont} - -%General newcommands! -\newcommand{\comp}{\mathbb{C}} % complex set C -\newcommand{\real}{\mathbb{R}} % real set R -\newcommand{\whole}{\mathbb{Z}} % whole number Symbol -\newcommand{\natur}{\mathbb{N}} % natural number Symbol -\newcommand{\ratio}{\mathbb{Q}} % rational number symbol -\newcommand{\field}{\mathbb{K}} % general field for the others above! -\newcommand{\diff}{\mathrm{d}} % differential d -\newcommand{\s}{\,\,} % space after the function in the intergral -\newcommand{\cont}{\mathcal{C}} % Contour C -\newcommand{\fuk}{f(z) \s\diff z} % f(z) dz -\newcommand{\diffz}{\s\diff z} -\newcommand{\subint}{\int\limits} % lower boundaries for the integral -\newcommand{\poly}{\mathcal{P}} % special P - polygon -\newcommand{\defi}{\mathcal{D}} % D for the domain of a function -\newcommand{\cover}{\mathcal{U}} % cover for a set -\newcommand{\setsys}{\mathcal{M}} % set system M -\newcommand{\setnys}{\mathcal{N}} % set system N -\newcommand{\zetafunk}{f(\zeta)\s\diff \zeta} %f(zeta) d zeta -\newcommand{\ztfunk}{f(\zeta)} % f(zeta) -\newcommand{\bocirc}{S_r(z)} -\newcommand{\prop}{\,|\,} -\newcommand*{\QEDA}{\hfill\ensuremath{\blacksquare}} %tombstone -\newcommand{\emptybra}{\{\varnothing\}} % empty set with set-bracket -\newcommand{\realpos}{\real_{>0}} -\newcommand{\realposr}{\real_{\geq0}} -\newcommand{\naturpos}{\natur_{>0}} -\newcommand{\Imag}{\operatorname{Im}} % Imaginary symbol -\newcommand{\Realz}{\operatorname{Re}} % Real symbol -\newcommand{\norm}{\Vert \cdot \Vert} -\newcommand{\metric}{\vert \cdot \vert} -\newcommand{\foralln}{\forall n} %all n -\newcommand{\forallnset}{\forall n \in \natur} %all n € |N -\newcommand{\forallnz}{\forall n \geq _0} % all n >= n_0 -\newcommand{\conjz}{\overline{z}} % conjugated z -\newcommand{\tildz}{\tilde{z}} % different z -\newcommand{\lproofar}{"`$ \Lightarrow $"'} % "`<="' -\newcommand{\rproofar}{"`$ \Rightarrow $"'} % "`=>"' -\newcommand{\beha}{\Rightarrow \text{ Behauptung}} -\newcommand{\powerset}{\mathcal{P}} - - -% Math Operators -\DeclareMathOperator{\inter}{int} % Set of inner points -\DeclareMathOperator{\ext}{ext} % Set of outer points -\DeclareMathOperator{\cl}{cl} % Closure - -% Hack page break on part page. - -\titleclass{\part}{top} -\titleformat{\part}[display] -{\normalfont\huge\bfseries}{\centering\partname\ \thepart}{20pt}{\Huge\centering} -\titlespacing*{\part}{0pt}{50pt}{40pt} -\titleclass{\chapter}{straight} -\titleformat{\chapter}[display] -{\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\LARGE} -\titlespacing*{\chapter} {0pt}{50pt}{40pt} - -\setlength\parindent{0pt} % noindent whole file! - -\begin{document} - -\title{\textbf{Analysis 1. Semester (WS2017/18)}} -\author{Dozent: Prof. Dr. Friedemann Schuricht\\ - Kursassistenz: Moritz Schönherr} -\date{Stand: \today} - -\frontmatter -\maketitle -\tableofcontents - -\mainmatter -% PArt 1 Grundlagen der Mathematik -\include{./TeX_files/chapter01_grundbegriffe_aus_mengenlehre_und_logik} -\include{./TeX_files/chapter02_aufbau_einer_math_theorie} -% Part 2 Zahlenbereiche -\include{./TeX_files/chapter03_nat_zahlen} -\include{./TeX_files/chapter04_ganze_u_rat_zahlen} -\include{./TeX_files/chapter05_reelle_zahlen} -\include{./TeX_files/chapter06_komplexe_zahlen} -% Part 3 Metrische Räume und Konvergenz -\include{./TeX_files/chapter07_grundl_ungleichungen} -\include{./TeX_files/chapter08_metr_raeume} -\include{./TeX_files/chapter09_konvergenz} -\include{./TeX_files/chapter10_vollst} -\include{./TeX_files/chapter11_kompaktheit} -\include{./TeX_files/chapter12_reihen} -% Part 4 Funktionen und Stetigkeit -\include{./TeX_files/chapter13_funktionen} - -\backmatter -% bibliography, glossary and index would go here. - -\end{document} \ No newline at end of file diff --git a/1. Semester/LAAG/README.md b/1. Semester/LAAG_Fehm/README.md similarity index 100% rename from 1. Semester/LAAG/README.md rename to 1. Semester/LAAG_Fehm/README.md diff --git a/1. Semester/LAAG/Vorlesung LAAG.pdf b/1. Semester/LAAG_Fehm/Vorlesung LAAG.pdf similarity index 100% rename from 1. Semester/LAAG/Vorlesung LAAG.pdf rename to 1. Semester/LAAG_Fehm/Vorlesung LAAG.pdf diff --git a/1. Semester/LAAG/Vorlesung LAAG.tex b/1. Semester/LAAG_Fehm/Vorlesung LAAG.tex similarity index 100% rename from 1. Semester/LAAG/Vorlesung LAAG.tex rename to 1. Semester/LAAG_Fehm/Vorlesung LAAG.tex diff --git a/1. Semester/LAAG_Kraehmer/TeX_files/1.tex b/1. Semester/LAAG_Kraehmer/TeX_files/1.tex new file mode 100644 index 0000000..e69de29 diff --git a/1. Semester/LAAG_Kraehmer/TeX_files/2.tex b/1. Semester/LAAG_Kraehmer/TeX_files/2.tex new file mode 100644 index 0000000..e69de29 diff --git a/1. Semester/LAAG_Kraehmer/TeX_files/Vorwort.tex b/1. Semester/LAAG_Kraehmer/TeX_files/Vorwort.tex new file mode 100644 index 0000000..e69de29 diff --git a/1. Semester/LAAG_Kraehmer/Vorlesung LAAG.pdf b/1. Semester/LAAG_Kraehmer/Vorlesung LAAG.pdf new file mode 100644 index 0000000..ab2ea49 Binary files /dev/null and b/1. Semester/LAAG_Kraehmer/Vorlesung LAAG.pdf differ diff --git a/1. Semester/LAAG_Kraehmer/Vorlesung LAAG.tex b/1. Semester/LAAG_Kraehmer/Vorlesung LAAG.tex new file mode 100644 index 0000000..edebc5c --- /dev/null +++ b/1. Semester/LAAG_Kraehmer/Vorlesung LAAG.tex @@ -0,0 +1,36 @@ +\documentclass[ngerman,a4paper,order=firstname]{../../texmf/tex/latex/mathscript/mathscript} +\usepackage{../../texmf/tex/latex/mathoperators/mathoperators} + +\title{\textbf{Lineare Algebra und analytische Geometrie WS2018/19}} +\author{Dozent: Prof. Dr. Ulrich Krähmer} + +\begin{document} +\pagenumbering{roman} +\pagestyle{plain} + +\maketitle + +\hypertarget{tocpage}{} +\tableofcontents +\bookmark[dest=tocpage,level=1]{Inhaltsverzeichnis} + +\pagebreak +\pagenumbering{arabic} +\pagestyle{fancy} + +\chapter*{Vorwort} +\input{./TeX_files/Vorwort} + +\chapter{1} +\input{./TeX_files/1} +\include{./TeX_files/2} + +\part*{Anhang} +\addcontentsline{toc}{part}{Anhang} +\appendix + +%\printglossary[type=\acronymtype] + +\printindex + +\end{document} diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Abbildungen.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Abbildungen.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Abbildungen.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Abbildungen.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Basis_und_Dimension.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Basis_und_Dimension.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Basis_und_Dimension.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Basis_und_Dimension.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Das_Vorzeichen_einer_Permutation.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Das_Vorzeichen_einer_Permutation.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Das_Vorzeichen_einer_Permutation.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Das_Vorzeichen_einer_Permutation.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Definition_und_Beispiele.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Definition_und_Beispiele.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Definition_und_Beispiele.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Definition_und_Beispiele.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Der_VR_der_linearen_Abbildungen.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Der_VR_der_linearen_Abbildungen.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Der_VR_der_linearen_Abbildungen.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Der_VR_der_linearen_Abbildungen.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Determinante_einer_Matrix.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Determinante_einer_Matrix.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Determinante_einer_Matrix.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Determinante_einer_Matrix.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Determinante_und_Spur_von_Endomorphismen.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Determinante_und_Spur_von_Endomorphismen.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Determinante_und_Spur_von_Endomorphismen.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Determinante_und_Spur_von_Endomorphismen.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Gruppen.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Gruppen.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Gruppen.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Gruppen.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Homomorphismen_von_Gruppen.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Homomorphismen_von_Gruppen.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Homomorphismen_von_Gruppen.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Homomorphismen_von_Gruppen.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Homomorphismen_von_Ringen.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Homomorphismen_von_Ringen.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Homomorphismen_von_Ringen.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Homomorphismen_von_Ringen.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Homomorphismen_von_VR.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Homomorphismen_von_VR.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Homomorphismen_von_VR.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Homomorphismen_von_VR.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Koerper.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Koerper.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Koerper.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Koerper.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Koordinatendarstellung_linearer_Abbildungen.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Koordinatendarstellung_linearer_Abbildungen.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Koordinatendarstellung_linearer_Abbildungen.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Koordinatendarstellung_linearer_Abbildungen.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Lineare_Gleichungssysteme.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Lineare_Gleichungssysteme.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Lineare_Gleichungssysteme.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Lineare_Gleichungssysteme.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Linearkombinationen.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Linearkombinationen.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Linearkombinationen.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Linearkombinationen.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Logik_und_Mengen.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Logik_und_Mengen.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Logik_und_Mengen.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Logik_und_Mengen.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Matrizen.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Matrizen.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Matrizen.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Matrizen.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Minoren.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Minoren.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Minoren.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Minoren.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Polynome.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Polynome.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Polynome.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Polynome.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Quotientenraeume.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Quotientenraeume.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Quotientenraeume.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Quotientenraeume.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Rang.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Rang.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Rang.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Rang.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Ringe.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Ringe.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Ringe.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Ringe.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Summen_von_VR.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Summen_von_VR.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Summen_von_VR.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Summen_von_VR.tex diff --git a/1. Semester/LAAG_ueberarbeitet/TeX_files/Vorwort.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Vorwort.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/TeX_files/Vorwort.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/TeX_files/Vorwort.tex diff --git a/1. Semester/LAAG_ueberarbeitet/Vorlesung LAAG.pdf b/1. Semester/LAAG_ueberarbeitet_Fehm/Vorlesung LAAG.pdf similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/Vorlesung LAAG.pdf rename to 1. Semester/LAAG_ueberarbeitet_Fehm/Vorlesung LAAG.pdf diff --git a/1. Semester/LAAG_ueberarbeitet/Vorlesung LAAG.tex b/1. Semester/LAAG_ueberarbeitet_Fehm/Vorlesung LAAG.tex similarity index 100% rename from 1. Semester/LAAG_ueberarbeitet/Vorlesung LAAG.tex rename to 1. Semester/LAAG_ueberarbeitet_Fehm/Vorlesung LAAG.tex diff --git a/1. Semester/PROG/TeX_files/Allgemeines.tex b/1. Semester/PROG/TeX_files/Allgemeines.tex new file mode 100644 index 0000000..81187bc --- /dev/null +++ b/1. Semester/PROG/TeX_files/Allgemeines.tex @@ -0,0 +1,43 @@ +Eine Programmiersprache ist lexikalisch, syntaktisch und semantisch eindeutig definiert. Eine \begriff{Compiler} übersetzt die \begriff{Programmiersprache} in \begriff{Maschinensprache}. Ein \begriff{Interpreter} arbeitet das Programm dann ab. Ein \begriff{Laufzeitsystem} stellt grundlegende Operationen und Funktionen zur Verfügung. + +\section{Bereiche der Informatik} + +Die Informatik untergliedert sich in 4 Bereiche: +\begin{itemize} + \item Technische Informatik + \item Praktische Informatik + \item Theoretische Informatik + \item Angewandte Informatik +\end{itemize} + +Die \begriff[Informatik!]{Technische Informatik} beschäftigt sich mit der Konstruktion der Hardware, zum Beispiel der Datenleitungen, um Informationen durch das Internet zu transportieren. Wichtige Firmen sind hier: Intel, Globalfoundries und Infineon. + +Die \begriff[Informatik!]{Praktische Informatik} beschäftigt sich mit der Software, also Betriebssystem, Compiler, Interpreter und so weiter. In alltäglicher Software findet sich rund 1 Fehler in 100 Zeilen Quelltext. In wichtiger Software, also Raketen, Betriebssysteme, ..., ist es nur 1 Fehler pro 10.000 Zeilen Code. + +Die \begriff[Informatik!]{Theoretische Informatik} beschäftigt sich mit Logik, formalen Sprachen, der Automatentheorie, Komplexität von Algorithmen, ... + +Die \begriff[Informatik!]{Angewandte Informatik} beschäftigt sich mit der Praxis, dem Nutzer, der Interaktion zwischen Mensch und Maschine, ... + +\section{Maßeinheiten und Größenordnungen} + +Ein \begriff{bit} ist ein Kunstwort aus "'binary"' und "'digit"'. Es kann nur 2 Werte speichern: 0 und 1 + +Ein \begriff{nibble} ist eine Hexadezimalziffer, bündelt also 4 bits und kann damit 16 Werte annehmen: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E und F. + +Ein \begriff{byte} bündelt 2 nibble, also 8 bit. Er ist die gebräuchlichste, direkt addressierbare, kleinste Speichereinheit. Weitere Speichergrößen sind: +\begin{center} + \begin{tabular}{c|c||c|c} + \textbf{Name} & \textbf{Anzahl byte} & \textbf{Name} & \textbf{Anzahl byte} \\ + \hline + 1 KB & $10^3$ & 1 KiB & $2^{10}=1.024$ \\ + 1 MB & $10^6$ & 1 MiB & $2^{20}=1.048.576$ \\ + 1 GB & $10^9$ & 1 GiB & $2^{30}=1.073.741.824$ \\ + 1 TB & $10^{12}$ & 1 TiB & $2^{40}$ \\ + 1 PB & $10^{15}$ & 1 PiB & $2^{50}$ \\ + 1 EB & $10^{18}$ & 1 EiB & $2^{60}$ + \end{tabular} +\end{center} + +Der \begriff{ROM} ("'read-only-memory"') speichert wichtige Informationen auch ohne Strom, wie zum Beispiel die Uhrzeit, Informationen über die Festplatte, ... Er ist nicht mehr änderbar, außer durch Belichtung. + +Der \begriff{RAM} ("'random-access-memory"') ermöglicht den Zugriff auf alle Adressen, insbesondere im Hauptspeicher. \ No newline at end of file diff --git a/1. Semester/PROG/TeX_files/Ausdruecke.tex b/1. Semester/PROG/TeX_files/Ausdruecke.tex new file mode 100644 index 0000000..46dad9d --- /dev/null +++ b/1. Semester/PROG/TeX_files/Ausdruecke.tex @@ -0,0 +1,62 @@ +\section{Ausdrücke} + +\begin{*anmerkung} + Beliebtes Klausuren-Thema! +\end{*anmerkung} + +Ein Ausdruck (= expression) wird in Fortran folgendermaßen ausgewertet: +\begin{enumerate} + \item Konstanten und Objekte werden ausgewertet + \item geklammerte Ausdrücke werden von innen nach außen ausgewertet + \item Funktionen werden aufgerufen + \item Operatoren höherer Priorität werden vor Operatoren niedrigerer Priorität behandelt + \item sind die Prioritäten gleich, so wird von links nach rechts gearbeitet (Ausnahme: \texttt{**}) +\end{enumerate} + +Ein \begriff{Ausdrucksbaum} zeigt auf, wie in Fortran Ausdrücke ausgewertet werden: Für den Ausdruck (auch Infix-Notation) +\begin{align} + \texttt{logo = i / j / x >= y .OR. - y / z < - x ** 3 ** 2 .AND. char <= 'p' // 'eter'}\notag +\end{align} +sieht der Baum folgendermaßen aus: +\begin{center} + \begin{tikzpicture}[level/.style={sibling distance=60mm/#1}] + \node[circle,draw] (root) {\texttt{.OR.}} + child {node[circle,draw] (a) {\texttt{>=}} + child {node[circle,draw] (b) {\texttt{/}} + child {node[circle,draw] (c) {\texttt{/}} + child {node[] (d) {$i$}} + child {node[] (e) {$j$}}} + child {node[] (f) {$x$}}} + child {node[] (g) {$y$}}} + child {node[circle,draw] (h) {\texttt{.AND.}} + child {node[circle,draw] (i) {\texttt{<}} + child {node[circle,draw] (j) {\texttt{-}} + child {node[circle,draw] (k) {\texttt{/}} + child {node[] (l) {$y$}} + child {node[] (m) {$z$}}}} + child {node[circle,draw] (q) {\texttt{-}} + child {node[circle,draw] (p) {\texttt{**}} + child {node[] (n) {$x$}} + child {node[circle,draw] (o) {\texttt{**}} + child {node[] (w) {3}} + child {node[] (x) {2}}}}}} + child {node[circle,draw] (r) {\texttt{<=}} + child {node[] (s) {$char$}} + child {node[circle,draw] (t) {\texttt{//}} + child {node[] (u) {'p'}} + child {node[] (v) {'eter'}}}}}; + \end{tikzpicture} +\end{center} + +Es gibt verschiedene Notationen um Ausdrücke aufzuschreiben: +\begin{itemize} + \item \begriff{Präfix-Notation}: Task $\to$ rekursiv linke Seite $\to$ rekursiv rechte Seite + \item \begriff{Infix-Notation}: rekursiv linke Seite $\to$ Task $\to$ rekursiv rechte Seite + \item \begriff{Postfix-Notation}: rekursiv linke Seite $\to$ rekursiv rechte Seite $\to$ Task +\end{itemize} + +Für unseren Ausdruck bedeutet das: +\begin{itemize} + \item Präfix-Notation: \texttt{= logo .OR. >= / / i j x y .AND. < NEG / y z NEG ** x ** 3 2 <= char // ‚p‘ ‚eter‘} + \item Postfix-Notation: \texttt{logo i j / x / y >= y z / NEG x 3 2 ** ** NEG < char ‚p‘ ‚eter‘ // <= .AND. .OR. =} +\end{itemize} \ No newline at end of file diff --git a/1. Semester/PROG/TeX_files/Basis-Konversion_ganzer_Zahlen.tex b/1. Semester/PROG/TeX_files/Basis-Konversion_ganzer_Zahlen.tex new file mode 100644 index 0000000..4e7f152 --- /dev/null +++ b/1. Semester/PROG/TeX_files/Basis-Konversion_ganzer_Zahlen.tex @@ -0,0 +1,38 @@ +\section{Basis-Konvertierung ganzer Zahlen} + +Die Notation $[9]_{10}$ bedeutet, dass man die Zahl 9 im Zehner-System betrachtet. Es gilt also $[9]_{10} = [1001]_2$ und $[10]_{10}=[1010]_2$. + +Um eine Zahl von einer gegebenen Basis in eine Zielbasis $b$ zu konvertieren, so teilt man immer wieder durch $b$ und notiert den Rest als nächste Ziffer von hinten nach vorne. Am Beispiel von $[57]_{10}$ ins Zweier-System sieht das so aus: +\begin{align} + \frac{57}{2} &= 28\text{ Rest } 1 \Rightarrow\text{ letzte Ziffer der Binärdarstellung} \notag \\ + \frac{28}{2} &= 14\text{ Rest } 0 \Rightarrow\text{ vorletzte Ziffer der Binärdarstellung} \notag \\ + \frac{14}{2} &= 7\text{ Rest } 0 \notag \\ + \frac{7}{2} &= 3\text{ Rest } 1 \notag \\ + \frac{3}{2} &= 1\text{ Rest } 1 \notag \\ + \frac{1}{2} &= 0\text{ Rest } 1 \notag +\end{align} +Also gilt: $[57]_{10}=[111001]_2$. + +Die umgekehrte Richtung verläuft ähnlich: +\begin{center} + \begin{tikzpicture} + \node at (0,0) (a) {111001\quad :\quad 1010\quad =\quad 101\; R\; 111}; + \node at (-2.35,-0.4) (b) {-1010}; + \draw (-2.9,-0.6) -- (-1.5,-0.6); + \node at (-2.2, -0.8) (c) {01000}; + \node at (-2.27, -1.2) (d) {-00000}; + \draw (-2.9,-1.4) -- (-1.5,-1.4); + \node at (-2.03,-1.6) (e) {10001}; + \node at (-2.1,-1.95) (f) {-01010}; + \draw (-2.9,-2.15) -- (-1.5,-2.15); + \node at (-1.85,-2.35) (g) {111}; + \end{tikzpicture} +\end{center} +Also $[111001]_2$ durch $[10]_{10}=[1010]_2$ gleich $[101\text{ Rest }111]_2=[5\text{ Rest }7]_{10}\Rightarrow [57]_{10}$. + +Von Basis 2 in Basis 4, 8 oder 16 ist dann ganz einfach: $[111100101]_2$ +\begin{itemize} + \item Zweiergruppen von hinten nach vorne zusammenzählen: $[13211]_4$ + \item Dreiergruppen von hinten nach vorne zusammenzählen: $[745]_8$ + \item Vierergruppen von hinten nach vorne zusammenzählen: $[1E5]_{16}$ +\end{itemize} \ No newline at end of file diff --git a/1. Semester/PROG/TeX_files/Basis-Konversion_gebrochener_Zahlen.tex b/1. Semester/PROG/TeX_files/Basis-Konversion_gebrochener_Zahlen.tex new file mode 100644 index 0000000..60c5ef8 --- /dev/null +++ b/1. Semester/PROG/TeX_files/Basis-Konversion_gebrochener_Zahlen.tex @@ -0,0 +1,51 @@ +\section{Basis-Konversion gebrochener Zahlen} + +Festkommadarstellung (nur Betrag der Zahl, ohne Vorzeichen): +\begin{center} + \begin{tabular}{rcccccccccc} + Gewichte & $B^{k}$ & $B^{k-1}$ & ... & $B^1$ & $B^0$ & . & $B^{-1}$ & $B^{-2}$ & ... & $B^{-l}$ \\ + Ziffern & $m_k$ & $m_{k+1}$ & ... & $m_{-1}$ & $m_0$ & . & $m_{1}$ & $m_{2}$ & ... & $m_{l}$ \\ + \end{tabular} +\end{center} +Also: $\sum\limits_{i=k}^l m_i\cdot B^{-i}$. + +Die Konvertierung des ganzzahligen Anteils vor dem "'."' läuft wie gehabt. Um den gebrochenen Anteil zu konvertieren, multipliziert man wiederholt mit der Zielbasis $b$ und nimmt den jeweiligen ganzzahligen Anteil als Nachkommaziffern (von links nach rechts). Mit dem gebrochenen Anteil macht man weiter. Wir wollen die Zahl $[0.625]_{10}$ ins Zweiersystem konvertieren: +\begin{align} + 0.625 \cdot 2 &= \textbf{1}.25 \notag \\ + 0.25 \cdot 2 &= \textbf{0}.5 \notag \\ + 0.5 \cdot 2 &= \textbf{1} \notag +\end{align} +Also gilt: $[0.625]_{10}=[0.101]_2$. + +Wieder anders herum: +\begin{align} + 0.101 \cdot 1010 &= \textbf{110}.010 \notag \\ + 0.010 \cdot 1010 &= \textbf{10}.100 \notag \\ + 0.100 \cdot 1010 &= \textbf{101}.0 \notag +\end{align} +Also gilt $[0.101]_2 = [0.110|10|101]_2 = [0.625]_{10}$. + +Jetzt wollen wir $[0.1]_{10}$ ins Zweiersystem konvertieren: +\begin{align} + 0.1 \cdot 2 &= \textbf{0}.2 \notag \\ + 0.2 \cdot 2 &= \textbf{0}.4 \\ + 0.4 \cdot 2 &= \textbf{0}.8 \notag \\ + 0.8 \cdot 2 &= \textbf{1}.6 \notag \\ + 0.6 \cdot 2 &= \textbf{1}.2 \notag \\ + 0.2 \cdot 2 &= \textbf{0}.4 +\end{align} +Wie man sieht, sind die Zeilen (1) und (2) gleich, das heißt, diese Konvertierung wird unendlich lange laufen. Also: $[0.1]_{10}=[0.0\overline{0011}]_2$. Aber es muss gelten: $[0.1]_{10}\cdot [10]_{10}=[1]_{10}$. Aber es stimmt: $[0.0\overline{0011}]_2\cdot [1010]_2=[0.\overline{1}]_2=[1]_2$. + +Entsprechend gilt: +\begin{align} + [0.2]_{10} &= [0.\overline{0011}]_2 \notag \\ + [0.3]_{10} &= [0.01\overline{0011}]_2 \notag \\ + [0.4]_{10} &= [0.011\overline{0011}]_2 \notag \\ + [0.5]_{10} &= [0.1]_2 \notag \\ + [0.6]_{10} &= [0.1\overline{0011}]_2 \notag \\ + [0.7]_{10} &= [0.1011\overline{0011}]_2 \notag \\ + [0.8]_{10} &= [0.11\overline{0011}]_2 \notag \\ + [0.9]_{10} &= [0.111\overline{0011}]_2 \notag +\end{align} + +Problem: Rundungen schon bei $\frac{1}{10}\Rightarrow$ falsche Nachkommastellen. Die Lösung sind hier Gleitkommazahlen. \ No newline at end of file diff --git a/1. Semester/PROG/TeX_files/Benutzerdefinierte_Typen.tex b/1. Semester/PROG/TeX_files/Benutzerdefinierte_Typen.tex new file mode 100644 index 0000000..752cfdc --- /dev/null +++ b/1. Semester/PROG/TeX_files/Benutzerdefinierte_Typen.tex @@ -0,0 +1,43 @@ +\section{Benutzerdefinierte Typen} + +In Modulen werden häufig Datentypen vom Benutzer definiert, zum Beispiel der Datentyp \texttt{kreis} +\begin{lstlisting} +type kreis + private !kein Zugriff auf Komponenten im Hauptprogramm + real :: radius + real :: mitteX + real :: mitteY +end type kreis +\end{lstlisting} + +Für diesen neuen Datentyp funktionieren die alten Operatoren wie \texttt{+} nicht mehr (was soll den die Summe aus 2 Kreisen sein?). Deswegen muss man sich eine neue Addition von Kreisen ausdenken: +\begin{lstlisting} +function add(kreis1, kreis2) + type(kreis), intent(in) :: kreis1, kreis2 + type(kreis) :: add + + add%raduis = kreis1%radius + kreis2%radius + add%mitteX = (kreis1%mitteX + kreis2%mitteX) / 2 + add%mitteY = (kreis1%mitteY + kreis2%mitteY) / 2 +end function add +\end{lstlisting} + +Wie man sieht kann man mit \% auf die einzelnen Komponenten zugreifen. Um jetzt wirklich im Programm \texttt{kreis1 + kreis2} zu benutzen, muss man noch den Operator \texttt{+} überladen. Dazu werden generische Schnittstellen benutzt. Man kann auch das Gleichheitszeichen, also die Zuweisung \texttt{=} überladen. +\begin{lstlisting} +interface operator(+) + module procedure add +end interface operator(+) + +interface assignment(=) + module procedure gleich +end interface assignment(=) +\end{lstlisting} + +Diese Operatorüberladungen brauchen immer das \texttt{intent(in)}-Attribut in den Funktionen! Überladungen von \texttt{=} brauchen dagegen sowohl \texttt{inten(in)} als auch \texttt{intent(out)}. + +Mit dem \texttt{interface}-Block kann man auch lange und sperrige Namen von Funktionen einkürzen, so dass man statt \texttt{langUndSperrig(a,b)} auch \texttt{kurz(a,b)} verwenden kann: +\begin{lstlisting} +interface kurz + module procedure langUndSperrig +end interface kurz +\end{lstlisting} \ No newline at end of file diff --git a/1. Semester/PROG/TeX_files/Dateiverwaltung.tex b/1. Semester/PROG/TeX_files/Dateiverwaltung.tex new file mode 100644 index 0000000..26a8a29 --- /dev/null +++ b/1. Semester/PROG/TeX_files/Dateiverwaltung.tex @@ -0,0 +1,19 @@ +\section{Dateiverwaltung} + +Dateien werden mit \texttt{open} geöffnet und mit \texttt{close} geschlossen. Es gibt dabei noch die Funktionen \texttt{backspace}, die den Cursor vor den aktuellen Datensatz platziert, aber möglichst nicht verwendet werden sollte, da dieser Prozess besonders bei großen Dateien sehr lange dauert. Die Funktion \texttt{rewind} setzt den Cursor an den Anfang der Datei, während \texttt{endfile} an den aktuellen Datensatz einen EOF-Datensatz anhängt. + +Alle diese Funktionen benötigen eine I/O-Unit, eine ganze, nichtnegative Zahl zur Identifikation einer externen Datei. Dabei ist die Tastatur auch eine Datei, von der mittels \texttt{read} eingelesen werden kann. Die I/O-Unit ist hier 5. Der Bildschirm ist auch eine Datei, auf den mittels \texttt{write} geschrieben werden kann (I/O-Unit 6). + +Häufig muss man in Fortran von einer Datei zeilenweise Zahlen einlesen. Das geht so: +\begin{lstlisting} +open(unit = 100, file = informationen.txt, action = "read") + +integer, dimension(5) :: infos +integer :: zeile + +do zeile = 1, 5 + read(100,*) infos(zeile) +end do +\end{lstlisting} + +Der zweite * in der \texttt{read}-Anweisung kann mit einer Format-Angabe gefüllt werden. Mit diesen Format-Angaben kann man den Datentransfer steuern. \ No newline at end of file diff --git a/1. Semester/PROG/TeX_files/Datentypen.tex b/1. Semester/PROG/TeX_files/Datentypen.tex new file mode 100644 index 0000000..3179245 --- /dev/null +++ b/1. Semester/PROG/TeX_files/Datentypen.tex @@ -0,0 +1,192 @@ +\section{Datentypen} + +Fortran besitzt 5 Datentypen. Für jeden Datentyp gibt es spezielle dazugehörige Funktionen: +\begin{itemize} + \item \textbf{Integer} für ganze Zahlen + \item \textbf{Real} für reelle Zahlen + \item \textbf{Complex} für komplexe Zahlen + \item \textbf{Logical} für logische Werte + \item \textbf{Character} für Strings +\end{itemize} + +\subsection{Der Datentyp \texttt{Integer}} + \begin{tabular}{l|l} + mögliche Argumente & \texttt{integer(kind=...)} \\ + \hline + Darstellung & $\{\langle Z\rangle\}$ \\ + \hline + Wert & mindestens 1 Ziffer, höchstens unendlich \\ + \hline + Wertemenge & normalerweise im 2er-Komplement: $\left[ -2^{l-1},2^{l-1}-1 \right]$ \\ + \hline + Operationen & \texttt{+}, \texttt{-}, \texttt{*}, \texttt{/} (schneidet Nachkommastellen ab), \texttt{**} (schneidet Nachkommastellen ab) + \end{tabular} + +\textbf{Wichtige Funktionen:} +\begin{itemize} + \item\texttt{sign(x,y)} gibt den Betrag von $x$, wenn $y\ge 0$ und $-\vert x\vert$, wenn $y<0$ + \item\texttt{int(x)} schneidet die Nachkommastellen von $x$ ab + \item\texttt{floor(x)} rundet ab ($\lfloor x\rfloor$) + \item\texttt{ceiling(x)} rundet auf ($\lceil x\rceil$) + \item\texttt{selected\_int\_kind(k)} liefert KIND-Parameter des kleinsten INTEGER-Typs, der dem alle Zahlen mit $k$ Stellen darstellen kann +\end{itemize} + +\subsection{Der Datentyp \texttt{Real}} + \begin{tabular}{l|l} + mögliche Argumente & \texttt{real(kind=...)} \\ + \hline + Darstellung & $\{\langle Z\rangle\}.\{\langle Z\rangle\}E\pm\{\langle Z\rangle\}$ \\ + \hline + Wert & mindestens 1 Ziffer, höchstens unendlich \\ + \hline + Wertemenge & \\ + \hline + Operationen & \texttt{+}, \texttt{-}, \texttt{*}, \texttt{/}, \texttt{**} + \end{tabular} + +\textbf{Wichtige Funktionen:} +\begin{itemize} + \item\texttt{aint(x)} schneidet die Nachkommastellen von $x$ ab + \item\texttt{real(x)} konvertiert zu REAL + \item\texttt{selected\_real\_kind(p,r)} liefert KIND-Parameter mit $p$ Ziffern in der Mantisse und $r$ Ziffern im Exponenten +\end{itemize} + +\subsection{Der Datentyp \texttt{Complex}} + \begin{tabular}{l|l} + mögliche Argumente & \texttt{complex(kind=...)} \\ + \hline + Darstellung & $(\langle\Re\rangle,\langle\Im\rangle)$ \\ + \hline + Wert &$\Re$,$\Im$ vorzeichenbehaftete realle Konstanten \\ + \hline + Wertemenge & \\ + \hline + Operationen & \texttt{+}, \texttt{-}, \texttt{*}, \texttt{/}, \texttt{**} + \end{tabular} + +\textbf{Wichtige Funktionen:} +\begin{itemize} + \item\texttt{abs(c)} liefert den Betrag von $c$, also $\sqrt{x^2+y^2}$ + \item\texttt{real(c)} liefert den Realteil von $c$ + \item\texttt{aimag(c)} liefert den Imaginärteil von $c$ + \item\texttt{conj(c)} liefert das konjugiert Komplexe zu $c$ +\end{itemize} + +\subsection{Der Datentyp \texttt{Logical}} + \begin{tabular}{l|l} + mögliche Argumente & \\ + \hline + Darstellung & \texttt{.TRUE.}, \texttt{.FALSE.} \\ + \hline + Wert & \texttt{.TRUE.} oder \texttt{.FALSE.} \\ + \hline + Wertemenge & {\texttt{.TRUE.},\texttt{.FALSE.}} \\ + \hline + Operationen & \texttt{.AND.}, \texttt{.OR.}, \texttt{.NOT.}, \texttt{.EQV.}, \texttt{.NEQV} + \end{tabular} + +\subsection{Der Datentyp \texttt{Character}} + \begin{tabular}{l|l} + mögliche Argumente & \texttt{character(len=...)} \\ + \hline + Darstellung & Zeichen \\ + \hline + Wert & einzelnes Zeichen oder Zeichenketten \\ + \hline + Wertemenge & alle möglichen Zeichenfolgen mit $l$ Zeichen \\ + \hline + Operationen & \texttt{//} (Konkardination: fügt 2 Strings zusammen) + \end{tabular} + +\textbf{Wichtige Funktionen:} +\begin{itemize} + \item\texttt{ichar(c)} gibt den internen ganzzahligen Zeichencode von $c$ + \item\texttt{char(i)} gibt den Zeichencode zu $c$ + \item $\langle\text{Zeichenkette}\rangle$\texttt{(a:b)} gibt den Teilstring vom $a$-ten bis zum $b$-ten Zeichen + \item\texttt{len(zk)} gibt die Länge der Zeichenkette $zk$ + \item\texttt{trim(zk)} liefert die Zeichenkette ohne anhängende Leerzeichen + \item\texttt{adjustl(zk)} Inhalt der Zeichenkette wird nach vorne geschoben + \item\texttt{repeat(zk,copies)} gibt einen String mit $copies$-facher Zeichenkette + \item\texttt{index, scan, verify} durchsucht einen String +\end{itemize} + +Es gibt allerdings noch eine Reihe weiterer (mathematischer) Funktionen, das Ergebnis ist selbsterklärend: +\begin{itemize} + \item\texttt{sin(x)}, \texttt{asin(x)}, \texttt{sinh(x)} + \item\texttt{cos(x)}, \texttt{acos(x)}, \texttt{cosh(x)} + \item\texttt{tan(x)}, \texttt{atan(x)}, \texttt{atan2(x,y)=atan(x/y)} + \item\texttt{sqrt(x)} + \item\texttt{exp(x)} + \item\texttt{log10(x)} +\end{itemize} + +\subsection{INTEGER-Division} + +Die klassiche INTEGER-Division sieht so aus: +\begin{center} + \begin{tabular}{ll} + Division: & $\frac{a}{b} =$ \texttt{a/b} \\ + Rest der Division: & $a-\left(\frac{a}{b}\right)\cdot b =$ \texttt{mod(a,b)} \\ + \hline + \textbf{Beispiele (Division)} & \textbf{Beispiele (Rest)} \\ + \hline + $\frac{8}{5} \to 1$ & \texttt{mod(8,5)} $\to$ 3 \\ + $\frac{-8}{5} \to -1$ & \texttt{mod(-8,5)} $\to$ -3 \\ + $\frac{-8}{-5} \to 1$ & \texttt{mod(-8,-5)} $\to$ -3 \\ + $\frac{8}{-5} \to -1$ & \texttt{mod(8,-5)} $\to$ 3 + \end{tabular} +\end{center} + +Das darf man aber nicht mit der nach unten abgerundeten REAL-Division verwechseln: +\begin{center} + \begin{tabular}{ll} + Division: & $\left\lfloor\frac{a}{b}\right\rfloor =$ \texttt{floor(a/b)} = \texttt{floor(real(a)/real(b))} \\ + Rest der Division: & $a-\left\lfloor\frac{a}{b}\right\rfloor\cdot b =$ \texttt{modulo(a,b)} \\ + \hline + \textbf{Beispiele (Division)} & \textbf{Beispiele (Rest)} \\ + \hline + $\frac{8.0}{5.0} \to 1$ & \texttt{modulo(8,5)} $\to$ 3 \\ + $\frac{-8.0}{5.0} \to -2$ & \texttt{modulo(-8,5)} $\to$ 2 \\ + $\frac{-8.0}{-5.0} \to 1$ & \texttt{modulo(-8,-5)} $\to$ -3 \\ + $\frac{8.0}{-5.0} \to -2$ & \texttt{modulo(8,-5)} $\to$ -2 + \end{tabular} +\end{center} + +\subsection{Potenzieren} + +Die Potenz-Operation \texttt{**} ist die einzige Operation die von rechts nach links gelesen wird, bei allen anderen Operationen wird in Leserichtung, also von links nach rechts gearbeitet. +\begin{itemize} + \item\texttt{2**3} $=2^3=8$ + \item\texttt{2**(-3)} $\to$ \texttt{int($2^{-3}$)=int($\frac{1}{8}$)} $=0$ + \item\texttt{(-3)**2} $=(-3)^2=9$ + \item\texttt{-3**2} $=-3^2=-9$ + \item\texttt{2**3**2} $=$ \texttt{2**(3**2)} $=2^9=512$ + \item\texttt{(2**3)**2} $=(2^3)^2=64$ +\end{itemize} + +\subsection{Operator-Prioritäten} + +Operatoren haben in Fortran eine Priorität, die weiter gefasst ist als: "'Punktrechnung vor Strichrechnung"'. Operatoren mit der höchsten Priorität (12) werden zuerst ausgeführt; Operatoren mit der Priorität 1 zuletzt. +\begin{enumerate} + \item selbstdefinierte Operatoren binär + \item\texttt{.EQV.} und \texttt{.NEQV.} + \item\texttt{.OR.} + \item\texttt{.AND.} + \item\texttt{.NOT.} + \item Vergleichsoperatoren + \item\texttt{//} + \item\texttt{+}, \texttt{-} als Addition beziehungsweise Subtraktion + \item\texttt{+}, \texttt{-} als Vorzeichen + \item\texttt{*}, \texttt{/} + \item\texttt{**} + \item selbstdefinierte Operatoren unär +\end{enumerate} + +Jetzt noch ein kurzer Abschnitt zu Variablen in imperativen Programmiersprachen. Eine Variable wird durch ein 5-Tupel (N,T,G,L,R) beschrieben, das heißt +\begin{itemize} + \item N - Name + \item T - Typ + \item G - Gültigkeitsbereich + \item L - l-Value (Zugriff auf die Variable) + \item R - r-Value (Wert der Variable) +\end{itemize} diff --git a/1. Semester/PROG/TeX_files/Ein_und_Ausgabe.tex b/1. Semester/PROG/TeX_files/Ein_und_Ausgabe.tex new file mode 100644 index 0000000..e278b9b --- /dev/null +++ b/1. Semester/PROG/TeX_files/Ein_und_Ausgabe.tex @@ -0,0 +1,9 @@ +\section{Ein- und Ausgabe} + +Die Aufgabe ist es, Dateien zu verwalten und den Datentransfer zwischen Dateien und internem Hauptspeicher zu organisieren. \begriff{Lesen} ist dabei immer von einer Datei in den Hauptspeicher, \begriff{Schreiben} von Hauptspeicher in eine Datei. + +Eine \begriff{Datei} ist normalerweise eine externe Datei, das heißt, sie liegt nicht im Hauptspeicher. Falls explizit gewünscht, kann eine Datei auch intern sein, dafür wird eine Zeichenkettenvariable als Datei verwendet. Eine Ansammlung von Daten heißt Datei. + +Ein \begriff{Datensatz} ist die Zeile einer Textdatei. Er kann formatiert (Daten sind Sequenzen von Zeichen) oder unformatiert (Daten sind binär) sein. + +Der Dateizugriff kann dabei \begriff{sequenziell} erfolgen, das heißt es gibt eine lineare Anordnung der Datensätze und zu jedem Zeitpunkt gibt es eine aktuelle Position in der Datei. Der sequenzielle Zugriff geht dabei von "'begin of file"' (BOF) nach "'end of file"' (EOF). Ist der Dateizugriff direkt, so kann direkt über die Datensatznummer $i$ auf den $i$-ten Datensatz zugegriffen werden. \ No newline at end of file diff --git a/1. Semester/PROG/TeX_files/Einfache_Syntax.tex b/1. Semester/PROG/TeX_files/Einfache_Syntax.tex new file mode 100644 index 0000000..e7d03b8 --- /dev/null +++ b/1. Semester/PROG/TeX_files/Einfache_Syntax.tex @@ -0,0 +1,146 @@ +\section{Begriffe} + +Eine \begriff{Sequenz} sind einzelne Anweisungen hintereinander. \\ +Eine \begriff{Selektion} ist eine Verzweigung. \\ +Eine \begriff{Repetition} ist eine Wiederholung. + +\subsection{Variablen und Daten} + +Wir sehen uns einen Biertrinker an, der nach dem Genuss noch ein paar Besorgungen machen muss. Dabei ergeben sich folgende Variablen +\begin{itemize} + \item Variable \textbf{Durst} von Typ \textit{LOGICAL} + \item Variable \textbf{Geld} von Typ \textit{INTEGER} + \item Variable \textbf{PreisDerBesorgung} von Typ \textit{INTEGER} + \item Variable \textbf{Rest} von Typ \textit{INTEGER} + \item Variable \textbf{Bierpreis} von Typ \textit{INTEGER} + \item Variable \textbf{WirtschaftAnnehmbar} von Typ \textit{LOGICAL} + \item Variable \textbf{Autofahrer} von Typ \textit{LOGICAL} + \item Variable \textbf{AlkoholGrenzwert} von Typ \textit{REAL} + \item Variable \textbf{AlkoholVergiftungsWert} von Typ \textit{REAL} +\end{itemize} + +\subsection{Schleifen} + +In Fortran gibt es 4 Arten von \begriff{Schleifen}: +\begin{itemize} + \item Endlosschleife + \item Schleife mit Anfangsbedingung + \item Schleife mit Endbedingung + \item Zählschleife +\end{itemize} + +Bei einer \begriff[Schleifen!]{Endlosschleife} wird der Anweisungsblock innerhalb der Schleife unendlich lange ausgeführt: +\begin{lstlisting} +do + Anweisung1 + Anweisung2 + Anweisung3 +end do +\end{lstlisting} + +Bei einer \begriff[Schleifen!]{Schleife mit Anfangsbedingung} wird der Anweisungsblock nur ausgeführt, wenn die Anfangsbedingung wahr ist. Ist sie wahr, so wird der Block ausgeführt und anschließend überprüft, ob die Anfangsbedingung wieder wahr ist. Ist die Anfangsbedingung nicht wahr, so wird die Schleife nicht ausgeführt. +\begin{lstlisting} +do while(Anfangsbedingung) + Anweisung1 + Anweisung2 + Anweisung3 +end do +\end{lstlisting} + +Hat die \begriff[Schleifen!]{Schleife eine Endbedingung}, so wird der Anweisungsblock auf jedem Fall 1-mal ausgeführt. Erst dann wird überprüft, ob die Endbedingung wahr ist. Ist sie das, wird die Schleife \textbf{verlassen}. Ist sie falsch, so wird die Schleife erneut ausgeführt. +\begin{lstlisting} +do + Anweisung1 + Anweisung2 + Anweisung3 + if(Endbedingung) exit +end do +\end{lstlisting} + +Eine \begriff[Schleifen!]{Zählschleife} in Fortran ist ähnlich wie in anderen Programmiersprachen konzipiert, aber die Syntax ist deutlich verschieden. Eine Zählschleife besitzt eine Zählvariable (die auch in der Schleife benutzt werden kann, aber nicht geändert werden sollte), die von einer Anfangszahl mit bestimmter Schrittweite solange hochgezählt (oder bei negativer Schrittweite heruntergezählt) wird, bis die Zählvariable die Endzahl erreicht. +\begin{lstlisting} +do i = anfang, ende, schrittweite + Anweisung1 + Anweisung2 + Anweisung3 +end do +\end{lstlisting} + +Bitte beachten: +\begin{itemize} + \item Der Zustand der Zählvariable \texttt{i} vor der Schleife geht verloren, auch wenn die Schleife 0-mal läuft. + \item Die Zählvariable \texttt{i} darf im Inneren der Schleife nicht geändert werden. + \item Der Endzustand der Zählvariable \texttt{i} ist nach der Schleife nicht definiert. + \item Ausdrücke werden zu Beginn genau 1-mal (vor der ersten Iteration) berechnet und sind dann fest. + \item Die Anzahl der Iterationen ist: $N=\max\left\lbrace 0,\texttt{nint}\left(\frac{\texttt{ende }-\texttt{ anfang }+\texttt{ i}}{\texttt{i}}\right)\right\rbrace$ +\end{itemize} + +\section{Einfache Syntax} + +Es gibt einen zulässigen Fortran-Zeichensatz. Dieser umfasst zum Beispiel die Buchstaben A-Z und a-z, sowie 0-9, Sonderzeichen und Operatoren. + +Nun einige lexikalische Einheiten (Symbole/Tokens): +\begin{itemize} + \item Keywords sind nicht reserviert, Variablen können also auch nach Keywords benannt werden. + \item Identifiers (Namen) haben eine Länge von maximal 63 Zeichen. Variablen können Buchstaben, Zahlen und auch den Unterstrich enthalten. + \item Literale (Konstanten): 3 $\Rightarrow$ INTEGER, 2.876 $\Rightarrow$ REAL, .TRUE. $\Rightarrow$ LOGICAL, "'Hallo"' $\Rightarrow$ STRING + \item Labels (Marken): 00000 ... 99999 sind Sprungmarken, die mit \texttt{GOTO 99999} erreicht werden können. + \item Separatoren (Trennsymbole) sind: \texttt{()}, \texttt{/}, \texttt{/(/)}, \texttt{[]}, \texttt{=}, \texttt{=>}, \texttt{:}, \texttt{::}, \texttt{,}, \texttt{;} und \texttt{\%}. + \item Operatoren sind: \texttt{+}, \texttt{-}, \texttt{*},\texttt{/}, \texttt{**}, \texttt{//}, \texttt{==}, \texttt{<=}, \texttt{<}, \texttt{/=}, \texttt{>}, \texttt{>=}, \texttt{.NOT.}, \texttt{.OR.}, \texttt{.AND.}, \texttt{.EQV.} und \texttt{.NEQV.}. +\end{itemize} + +In den alten Quellformen bis vor Fortran-90, also insbesondere Fortran-66 und Fortran-77 waren +\begin{itemize} + \item Namen maximal 6 Zeichen lang und + \item Lochkarten 80 Zeichen breit. +\end{itemize} + +\begin{center} + \begin{tikzpicture} + \draw (0,0) -- (10,0); + \draw (0,0) -- (0,4); + \draw (0,4) -- (1,5); + \draw (1,5) -- (10,5); + \draw (10,0) -- (10,5); + + \node at (10,-0.3) (ende) {80}; + \node at (8,-0.3) (mitte) {$72\vert73$}; + \node at (0.2,-0.3) (1) {1}; + \node at (0.4,-0.3) (2) {2}; + \node at (0.6,-0.3) (3) {3}; + \node at (0.8,-0.3) (4) {4}; + \node at (1,-0.3) (5) {5}; + \node at (1.3,-0.3) (6) {$\vert 6\vert$}; + + \draw (1.16,0) -- (1.16,5); + \draw (1.43,0) -- (1.43,5); + \draw (8,0) -- (8,5); + + \node at (0.2,3.5) (c) {\texttt{C}}; + \node at (0.85,3.5) (Com) {\texttt{Com}}; + \node at (1.3,3.47) (m) {\texttt{m}}; + \node at (1.82,3.488) (ents) {\texttt{ents}}; + + \node at (0.2,3) (stern) {\texttt{*}}; + \node at (0.85,3) (Kom) {\texttt{Kom}}; + \node at (1.3,2.97) (m2) {\texttt{m}}; + \node at (2,2.99) (entare) {\texttt{entare}}; + + \node at (0.84,2.5) (123) {\texttt{123}}; + \node at (2.75,2.5) (myprog) {\texttt{PROGRAM MYPROG}}; + \node at (0.65,2) (99999) {\texttt{99999}}; + \node at (2.75,2) (product) {\texttt{PRODUC = X * Y}}; + \end{tikzpicture} +\end{center} + +Ab Fortran-90 wurden neue Quellformen entwickelt, das heißt: +\begin{itemize} + \item Zeilen sind nun maximal 132 Zeichen lang + \item Kommentare beginnen mit "'!"' und gehen bis zum Zeilenende + \item Eine neue Zeile ist eine neue Anweisung, außer die letzte Zeile endet mit "'\&"' + \item "'\&"' am Zeilenende bedeutet, dass die nächste nicht-Kommentar und nicht-Leerezeile die Anweisung fortsetzt. + \item Die Fortsetzung darf mit "'\&"' beginnen. + \item Es sind maximal 39 Fortsaetzungszeilen möglich + \item Leerzeichen sind signifkant $\Rightarrow$ alle lexikalischen Tokens sind am Stück zu schreiben. + \item Groß- und Kleinschreibung ist nicht signifikant in Namen und Keywords +\end{itemize} \ No newline at end of file diff --git a/1. Semester/PROG/TeX_files/Felder.tex b/1. Semester/PROG/TeX_files/Felder.tex new file mode 100644 index 0000000..f7d2fb8 --- /dev/null +++ b/1. Semester/PROG/TeX_files/Felder.tex @@ -0,0 +1,172 @@ +\section{Felder (Arrays)} + +Bisher hatten wir nur Skalare als Variablen. Was aber, wenn wir nicht wissen, wie viele Variablen wir brauchen werden. Dann helfen uns Felder. Felder haben eine homogene Datenstruktur, das heißt alle Elemente haben den selben Datentyp, den \begriff{Elementtyp}. Es gibt sowohl ein- als auch mehrdimensionale Felder (die höchste Dimension ist 15), also Vektoren, Matrizen, Tensoren, ... Der lesende als auch schreibende Zugriff erfolgt mittels ganzzahliger Indizees, also \texttt{vector(3)}, \texttt{matrix(2,5)}, \texttt{tensor(3,4,6)}, ... Unzulässige Indexwerte ermöglichen beliebige Speicherzugriffe auch außerhalb des Feldes, wenn sie nicht beim Kompilieren erkannt werden. Es kann also folgender Laufzeitfehler auftreten: \texttt{Index out of bounds}. + +Der Feldtyp ist charakterisiert durch +\begin{itemize} + \item den Elementtyp + \item den Rang: Anzahl der Dimensionen +\end{itemize} + +Die geometrische Gestalt (= shape) eines Feldes kann entweder statisch oder dynamisch definiert werden, und zwar durch Ausdehnungen in jeder einzelnen Dimension +\begin{lstlisting} +! eine 3x3 Matrix +integer, dimension(1:3, 1:3) :: matrix + +! eine dynamsiche Matrix, deren Groesse spaeter 5x5 wird +integer, dimension(:,:), allocatable :: dynMatrix +allocate(dynMatrix(1:5, 1:5)) +\end{lstlisting} + +Eindimensionale Felder kann man in Fortran wie folgt füllen: (seit Fortran-03 kann man statt \texttt{(/ /)}) auch \texttt{[ ]} benutzen) +\begin{lstlisting} +(/1, 3, 5, 7, 9/) = (/(i, i=1,9,2)/) = (/(2*i+1, i=0,4)/) +\end{lstlisting} + +Die Speicherreihenfolge ist in Fortran immer spaltenweise (colum-major), das heißt der erste Index läuft am schnellsten, der letzte Index am langsamsten. Will man dagegen zeilenweise einlesen und ausgeben, so behilft man sich eines kleinen Tricks: +\begin{lstlisting} +real, dimension(3,2) :: A +integer :: i + +read(*,*) A ! liesst spaltenweise ein +read(*,*) (A(i:), i=1,3) ! liesst zeilenweise ein + +do i=1, 3 + write(*,*) A(i:) ! gibt A zeilenweise aus +end do +\end{lstlisting} + +Es gibt auch eine Menge vordefinierter Matrix-Funktionen +\begin{itemize} + \item\texttt{size(A,i)}: Anzahl der Elemente in $i$-ter Dimension + \item\texttt{lbound(A,i)}: kleinster Indexwert in $i$-ter Dimension + \item\texttt{ubound(A,i)}: größter Indexwert in $i$-ter Dimension + \item\texttt{size(A)}: $\sum_{i=1}^{r}$ \texttt{size(A,i)}: Gesamtzahl aller Elemente + \item\texttt{shape(A)}: \texttt{(/size(A,1), size(A,2), ..., size(A,r)/)} + \item\texttt{sum(A,1)}: Summation einzelner Spalten, Ergebnis ist ein Vektor + \item\texttt{sum(A,2)}: Summation einzelner Zeilen, Ergebnis ist ein Vektor + \item\texttt{sum(A)}: Summe aller Elemente + \item\texttt{prod(A)}: Produkt aller Elemente + \item\texttt{all(A == B)}: logisches UND, überprüft, ob beide Matrizen gleich sind (durch Vergleich der Einträge). Es können auch andere logische Verknüpfungen verwendet werden + \item\texttt{any(A == B)}: logisches ODER, überprüft ob mindesten ein Element in beiden Matrizen (an der selben Stelle) gleich ist + \item\texttt{transpose(A)}: transponiert Matrix + \item\texttt{dot\_product(v,w)}: Skalarprodukt der Vektoren $v$ und $w$ + \item\texttt{matmul(A,B)}: Matrizenmultiplikation, geht auch mit einem Vektor + \item\texttt{forall(i=1:n, k=1:m)}: spart doppelte \texttt{do}-Schleifen +\end{itemize} + +\subsection{Subarrays (Teilfelder)} + +Durch Angabe von Indexgrenzen kann man aus einem Feld einen Teil herausschneiden. +\begin{align} + A = \begin{pmatrix}4&5&6&7&8\end{pmatrix} \quad\texttt{A(2:4)}\Rightarrow \begin{pmatrix}5&6&7\end{pmatrix} \notag \\ + B = \begin{pmatrix}1&2&3\\4&5&6\\7&8&9\end{pmatrix} \quad\texttt{B(1:2,2:3)}\Rightarrow \begin{pmatrix}4&5\\7&8\end{pmatrix} \notag +\end{align} + +Man kann das ganze natürlich auch komplizierter machen: Sei $A$ ein Quader ($5\times 5\times 5$). Das Teilfeld \texttt{C = A(3,1:5:2,(/4,1,2/))} nimmt aus dem Quader die 3. Schicht und in dieser Matrix die 1., 3. und 5. Zeile mit der 4., 1. und 2. Zeile +\begin{align} + C = \begin{pmatrix} + \text{Speicherplatz 4} & \text{Speicherplatz 7} & \text{leer} & \text{Speicherplatz 1} & \text{leer}\\ + \text{leer} & \text{leer} & \text{leer} & \text{leer} & \text{leer}\\ + \text{Speicherplatz 5} & \text{Speicherplatz 8} & \text{leer} & \text{Speicherplatz 2} & \text{leer}\\ + \text{leer} & \text{leer} & \text{leer} & \text{leer} & \text{leer}\\ + \text{Speicherplatz 6} & \text{Speicherplatz 9} & \text{leer} & \text{Speicherplatz 3} & \text{leer} + \end{pmatrix}\notag +\end{align} + +Felder können auch formale Argumente sein, aber nur, wenn sie fester Gestalt sind oder als Felder übernommener Gestalt, welche durch die Gestalt des aktuellen Arguments durch die Parameterassoziation (per Referenz) festgelegt ist. Wenn Felder Funktionsergebnisse sein sollen, so müssen die Indexbereiche zum Aufrufzeitpunkt der Funktion berechnet werden können; Indexgrenzen können beliebige Integer-Ausdrücke sein, die von den Werten und Eigenschaften der aktuellen Argumente und globalen Variablen oder Konstanten abhängen. + +\textbf{Wichtige Regel: } Keine \texttt{allocatable}-Felder als formale Argumente (sein Fortran-03 möglich), Feld-Ergebnis einer Funktion und als Typkomponenten. + +\begin{lstlisting} +function fun(v,w) + real,dimension(:), intent(in) :: v,w + real,dimension(size(v),size(w)) :: fun + integer :: i,k + + do i = 1, size(v) + do k = 1, size(w) + fun(i,k) = v(i) * w(k) + end do + end do +end function fun + +function fun_effizient(v,w) + real,dimension(:), intent(in) :: v,w + real,dimension(size(v),size(w)) :: fun + real,dimension(size(v),size(w)) :: A,B + + A = spread(source=v, dim=2, ncopies=size(w)) + B = spread(source=w, dim=1, ncopies=size(v)) + fun_effizient = A * B ! elementweise Multiplikation +end function fun_effizient +\end{lstlisting} + +\subsection{\texttt{pure} Prozeduren} + +\begin{*anmerkung} + völlig unwichtig +\end{*anmerkung} + +Ein Unterprogramm welches keine Seiteneffekte hat ist eine bloßes bzw. reines (pure) Unterprogramm. Ein Unterprogramm erzeugt dann keine Seiteneffekte, wenn es weder seine Eingabedaten, noch die Daten verändert, die außerhalb des Unterprogrammes liegen, es sei denn, es wären seine Ausgabedaten. In einem reinen Unterprogramm haben die lokalen Variablen keine \texttt{save}-Attribute, noch werden die lokalen Variablen in der Datendeklaration initialisiert. + +Das \texttt{save}-Attribut ist bei Initialisierung von Variablen impliziert, d.h. eine Initialisierung in der Typdeklaration macht die Variable automatisch statisch (Lebensdauer = gesamte Programmlaufzeit). +\begin{lstlisting} +integer, save :: counter = 0 +\end{lstlisting} + +Reine Unterprogramme sind für das \texttt{forall}-Konstrukt notwendig: das \texttt{forall}-Konstrukt wurde für das parallele Rechnen konzipiert, weshalb hier der Computer entscheidet, wie das Konstrukt abgearbeitet werden soll. Dazu ist es aber notwendig, das es egal ist in welcher Reihenfolge das Konstrukt abgearbeitet wird. Gilt dies nicht - hat das Unterprogramm also Seiteneffekte - so kann das \texttt{forall}-Konstrukt nicht verwendet werden. + +Jedes Ein- und Ausgabeargument in einem reinen Unterprogramm muss mittels des \texttt{intent}- Attributs deklariert werden. Darüber hinaus muss jedes Unterprogramm, das von einem reinen Unterprogramm aufgerufen werden soll, ebenfalls ein reines Unterprogramm sein. Sonst ist das aufrufende Unterprogramm kein reines Unterprogramm mehr. + +\subsection{\texttt{elemental} Prozeduren} + +\begin{*anmerkung} + völlig unwichtig +\end{*anmerkung} + +Ein Unterprogramm ist elementar, wenn es als Eingabewerte sowohl Skalare als auch Felder akzeptiert. Ist der Eingabewert ein Skalar, so liefert ein elementares Unterprogramm einen Skalar als Ausgabewert. Ist der Eingabewert ein Feld, so ist der Ausgabewert ebenfalls ein Feld. + +\texttt{sin} ist eine elementare Funktion. \texttt{sin(A)} liefert dann eine Matrix $A$ mit +\begin{align} + \begin{pmatrix} + \sin(a_{11}) & \dots & \sin(a_{1n}) \\ + \vdots & \ddots & \vdots \\ + \sin(a_{m1}) & \dots & \sin(a_{mn}) + \end{pmatrix}\notag +\end{align} +Der Sinus wird also \textit{elementweise} angewendet. + +\subsection{Die \texttt{reshape}-Funktion} + +Man kann die Gestalt von Feldern mit der \texttt{reshape}-Funktion ändern. Sei dazu +\begin{lstlisting} +integer, dimension(7) :: integervector = (/(i, i=1,13,2)/) +\end{lstlisting} +\begin{align} + \begin{pmatrix} + 1 & 3 & 5 & 7 & 9 & 11 & 13 + \end{pmatrix}\notag +\end{align} +\begin{lstlisting} +reshape(source = integervector, shape = (/2,3/)) +\end{lstlisting} +\begin{align} + \begin{pmatrix} + 1 & 5 & 9 \\ + 3 & 7 & 11 + \end{pmatrix}\notag +\end{align} +\begin{lstlisting} +reshape(source = integervector, shape = (/5,3/), & +& pad = (/(i+13, i=1,8)/)) +\end{lstlisting} +\begin{align} + \begin{pmatrix} + 1 & 3 & 5 \\ + 7 & 9 & 11 \\ + 13 & 14 & 15 \\ + 16 & 17 & 18 \\ + 19 & 20 & 21 + \end{pmatrix}\notag +\end{align} \ No newline at end of file diff --git a/1. Semester/PROG/TeX_files/Gleitkommazahlen.tex b/1. Semester/PROG/TeX_files/Gleitkommazahlen.tex new file mode 100644 index 0000000..1833a03 --- /dev/null +++ b/1. Semester/PROG/TeX_files/Gleitkommazahlen.tex @@ -0,0 +1,45 @@ +\section{Gleitkommazahlen} + +Gleitkommazahlen werden auch Fließkommazahlen, Gleitpunktzahlen, Fließpunktzahlen oder floating-point-numbers genannt. + +Das \begriff{Gleitkommaformat} $R=(b,l,\underline{e},\overline{e})$ besteht aus +\begin{itemize} + \item einer Basis $b$ + \item einer Mantissenlänge $l$ + \item einem Exponentenbereich von $\underline{e}$ bis $\overline{e}$. +\end{itemize} + +Eine \begriff{Gleitkommazahl} ist entweder 0 oder $x=(-1)^s\cdot m\cdot b^e$ mit +\begin{itemize} + \item Vorzeichenbit $s\in \{0,1\}$ + \item Mantisse $m=[0.m_1m_2m_3...m_l]_b$ mit Mantissenziffern $m_i\in\{0,1,2,...,b-1\}$ + \item $e\in\{\underline{e},\underline{e}+1,\underline{e}+2,...,\overline{e}\}$ +\end{itemize} + +Schauen wir uns das Beispiel $R(2,3,-1,+2)$ an. Eine solche Zahl benötigt 1 bit für $s$, 2 bits für $e$ und 3 bits für $m$. +\begin{center} + \begin{tabular}{l|cccccccc} + $m=$\textbf{ 0.} & \textbf{111} & \textbf{110} & \textbf{101} & \textbf{100} & \textbf{011} & \textbf{010} & \textbf{001} & \textbf{000} \\ + \hline + $e=-1$ & \textcolor{Green}{$\frac{7}{16}$} & \textcolor{Green}{$\frac{6}{16}$} & \textcolor{Green}{$\frac{5}{16}$} & \textcolor{Green}{$\frac{4}{16}$} & \textcolor{red}{$\frac{3}{16}$} & \textcolor{red}{$\frac{2}{16}$} & \textcolor{red}{$\frac{1}{16}$} & 0 \\ + $e=0$ & \textcolor{Green}{$\frac{14}{16}$} & \textcolor{Green}{$\frac{12}{16}$} & \textcolor{Green}{$\frac{10}{16}$} & \textcolor{Green}{$\frac{8}{16}$} & \textcolor{Cyan}{$\frac{6}{16}$} & \textcolor{Cyan}{$\frac{4}{16}$} & \textcolor{Cyan}{$\frac{2}{16}$} & \textcolor{Cyan}{0} \\ + $e=1$ & \textcolor{Green}{$\frac{28}{16}$} & \textcolor{Green}{$\frac{24}{16}$} & \textcolor{Green}{$\frac{20}{16}$} & \textcolor{Green}{$\frac{16}{16}$} & \textcolor{Cyan}{$\frac{12}{16}$} & \textcolor{Cyan}{$\frac{8}{16}$} & \textcolor{Cyan}{$\frac{4}{16}$} & \textcolor{Cyan}{0} \\ + $e=2$ & \textcolor{Green}{$\frac{56}{16}$} & \textcolor{Green}{$\frac{48}{16}$} & \textcolor{Green}{$\frac{40}{16}$} & \textcolor{Green}{$\frac{32}{16}$} & \textcolor{Cyan}{$\frac{24}{16}$} & \textcolor{Cyan}{$\frac{16}{16}$} & \textcolor{Cyan}{$\frac{8}{16}$} & \textcolor{Cyan}{0} \\ + \end{tabular} +\end{center} + +Es gibt also auch mehrere Darstellungen für eine Zahl! Die \textcolor{Cyan}{Cyan} eingefärbten Zahlen können auch anders dargestellt werden. + +\textcolor{Green}{Grüne} Zahlen sind sogenannte \begriff[Gleitkommazahl!]{normalisierte Gleitkommazahlen}, ihre erste Mantissenziffer ist $\neq 0$. Die \textcolor{red}{roten} Zahlen sind \begriff[Gleitkommazahl!]{denormalisierte Gleitkommazahlen}: Ihre ersten Mantissenziffer ist $m_1=0$ und ihr Exponent $e=\underline{e}$. Da das erste Mantissenbit häufig eine 1 ist, wird angenommen, dass das erste Mantissenbit eine 1 ist und wird deswegen nicht gespeichert (hidden bit). Das sorgt dafür, dass bei 3 bit Genauigkeit mit 4 bit Genauigkeit gerechnet werden kann. Ist das erste Mantissenbit eine 0, gibt es dafür eine spezielle Exponentenkennung. + +Ein Zahlenstrahl mit diesen Zahlen ist besonders dicht um 0, aber ab 2 werden die Abstände sehr groß. + +Die größte darstellbare Zahl ist $x_{max}=0.1111...1=(1-b^l)\cdot b^{\overline{e}}$. \\ +Der kleinste darstellbare normalisierte Betrag ist $x_{min,N} = 0.10000...0=b^{\underline{e}-1}$. \\ +Der kleinste darstellbare denormalisierte Betrag ist $x_{min,D} = 0.0000...1=b^{\underline{e}-l}$. + +Doch es gibt eine Probleme: +\begin{itemize} + \item absolute/relative Fehler bei Zahlen, die zwischen 2 darstellbaren Zahlen liegen $\Rightarrow$ Rundungen bei nahezu jeder Rechnung! + \item Grundrechenarten können nicht darstellbare Zahlen erzeugen +\end{itemize} \ No newline at end of file diff --git a/1. Semester/PROG/TeX_files/Rundung.tex b/1. Semester/PROG/TeX_files/Rundung.tex new file mode 100644 index 0000000..6d3137d --- /dev/null +++ b/1. Semester/PROG/TeX_files/Rundung.tex @@ -0,0 +1,26 @@ +\section{Rundung} + +Eine \begriff{Rundung} ist eine Funktion $O:\real\to\text{Gleitkomma-Raster }R$. + +Eine Rundung $O$ hat folgende Eigenschaften: +\begin{enumerate} + \item $O(x)=x$ wenn $x\in R$ + \item $x,y\in\real$ mit $x 1 + \alpha x$ ($x\neq 0$ sonst klar!)} - & \overset{\text{\propref{k_archimedisch_angeordneter_körper}}}{\Rightarrow} \exists \in \ratio_{<1} + & \overset{\text{\propref{k_archimedisch_angeordneter_koerper}}}{\Rightarrow} \exists \in \ratio_{<1} \begin{cases*} x > 0&$\alpha1$ sei $\frac{1}{p} + \frac{1}{q} = 1\Rightarrow q = \frac{p}{p-1}$, $z_i:=\vert x_i + y_i\vert^{p-1}\forall i$ + $p=1$ Beh. folgt aus $\Delta$-Ungleichung $\vert x_i + y_i\vert \overset{\text{\propref{k_angeordneter_koerper}}}{\leq} \vert x_i \vert + \vert y_i \vert \forall i$\\ $p>1$ sei $\frac{1}{p} + \frac{1}{q} = 1\Rightarrow q = \frac{p}{p-1}$, $z_i:=\vert x_i + y_i\vert^{p-1}\forall i$ \begin{align*} \mathcal{S}^{p\cdot q} &= \sum_{i=1}^{n} \vert z_i \vert^q\\ & = \sum_{i=1}^{n} \vert x_i+y_i \vert\cdot\vert z_i \vert^q\\ diff --git a/2. Semester/ANAG/TeX_files/Integral.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Integral.tex similarity index 95% rename from 2. Semester/ANAG/TeX_files/Integral.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Integral.tex index 9306865..6a1d594 100644 --- a/2. Semester/ANAG/TeX_files/Integral.tex +++ b/2. Semester/ANAG 1+2 Semester/TeX_files/Integral.tex @@ -28,7 +28,7 @@ Man verifiziert leicht (Beschränktheit) Es ist $\vert \int_M h\D x \vert \le \int _M \vert h \vert \D x$ $\forall h\in T^{1}(M)$ \item Für $h\in T^1(M)$ gilt: \\ \begin{tabularx}{\linewidth}{X@{\ \ }c@{\ \ }X} - \hfill $\displaystyle \int_M \vert h \vert \D x = 0$ & $\Leftrightarrow$ & $h=0$ \gls{fü} auf $M$ + \hfill $\displaystyle \int_M \vert h \vert \D x = 0$ & $\Leftrightarrow$ & $h=0$ \gls{fue} auf $M$ \end{tabularx} \end{enumerate} @@ -48,7 +48,7 @@ sinnvoll: \proplbl{integral_messbare_funktion_forderung} h_k\to f\text{ in geeigneter Weise }\;\; &\Rightarrow\;\;\int_M h_k \D x \to \int_m f \D x \end{align} -nach \propref{messbarkeit_funktion_approximation} sollte man in \eqref{integral_messbare_funktion_forderung} eine Folge von Treppenfunktionen $\{ h_k\}$ mit $h_k(x)\to f(x)$ \gls{fü} auf $M$ betrachten, \emph{aber} es gibt zu viele konvergente Folgen für einen konsistenten Integralbegriff. +nach \propref{messbarkeit_funktion_approximation} sollte man in \eqref{integral_messbare_funktion_forderung} eine Folge von Treppenfunktionen $\{ h_k\}$ mit $h_k(x)\to f(x)$ \gls{fue} auf $M$ betrachten, \emph{aber} es gibt zu viele konvergente Folgen für einen konsistenten Integralbegriff. \begin{example} \proplbl{integral_funktion_beispiel_striktere_konvergenz} @@ -57,7 +57,7 @@ nach \propref{messbarkeit_funktion_approximation} sollte man in \eqref{integral_ k\cdot \alpha_k&\text{auf }(0,\frac{1}{k}) \\ 0&\text{sonst} \end{cases} \end{align*} - Offenbar konvergiert $h_k$ gegen $0$ \gls{fü} auf $\mathbb{R}$ und man hat $h_k\to 0$ \gls{fü} auf $\mathbb{R}$ und $\int_{\mathbb{R}} h_k \D x = \alpha_k$ + Offenbar konvergiert $h_k$ gegen $0$ \gls{fue} auf $\mathbb{R}$ und man hat $h_k\to 0$ \gls{fue} auf $\mathbb{R}$ und $\int_{\mathbb{R}} h_k \D x = \alpha_k$ \begin{tabularx}{\linewidth}{r@{\ \ }X} $\Rightarrow$ & je nach Wahl der Folge $\alpha_n$ liegt ganz unterschiedliches Konvergenzverhalten der Folge $\int_{\mathbb{R}} h_k \D x$ vor \\ $\Rightarrow$ & kein eindeutiger Grenzwert in \eqref{integral_messbare_funktion_forderung} möglich \\ @@ -90,7 +90,7 @@ nach \propref{messbarkeit_funktion_approximation} sollte man in \eqref{integral_ \end{align*} \stepcounter{equation} - Messbare Funktion $f:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ heißt \begriff{integrierbar} auf $M\subset D$, falls Folge von Treppenfunktionen $\{ h_k\}$ in $T^1(M)$ existiert mit $\{ h_k\}$ ist $L1$-CF auf $M$ und $H_k\to f$ \gls{fü} auf $M$.\marginnote{\leqnos\begin{align}\proplbl{integral_funktion_definition}\,\end{align}Formel (3) unbekannt}[-1.5\baselineskip] + Messbare Funktion $f:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ heißt \begriff{integrierbar} auf $M\subset D$, falls Folge von Treppenfunktionen $\{ h_k\}$ in $T^1(M)$ existiert mit $\{ h_k\}$ ist $L1$-CF auf $M$ und $H_k\to f$ \gls{fue} auf $M$.\marginnote{\leqnos\begin{align}\proplbl{integral_funktion_definition}\,\end{align}Formel (3) unbekannt}[-1.5\baselineskip] Für integrierbare Funktion $f$ heißt eine solche Folge $\{h_k\}$ \begriff{zugehörige $L^1$-CF} auf $M$. @@ -122,7 +122,7 @@ Menge der auf $M$ integrierbaren Funktionen ist \mathsymbol*{L1}{$L^1$} \begin{a \begin{remark}\vspace*{0pt} \begin{enumerate}[label={\alph*)},topsep=\dimexpr -\baselineskip / 2\relax] \item Integral in \eqref{integral_lebesque_funktion_definition} kann als vorzeichenbehaftetes Volumen des Zylinders im $\mathbb{R}^{n+1}$ unter (über) dem Graphen von $f$ interpretiert werden. - \item Sei $0\le h_1 \le h_2 \le \dotsc$ monotone Folge von integrierbaren Treppenfunktionen mit $h_k\to f$ \gls{fü} auf $M$ und sei Folge $\{ \int_M h_k\D x\}$ in $\mathbb{R}$ beschränkt \\ + \item Sei $0\le h_1 \le h_2 \le \dotsc$ monotone Folge von integrierbaren Treppenfunktionen mit $h_k\to f$ \gls{fue} auf $M$ und sei Folge $\{ \int_M h_k\D x\}$ in $\mathbb{R}$ beschränkt \\ $\Rightarrow$ \eqref{integral_lebesque_funktion_definition} gilt und monotone Folge $\{ \int_m h_k \D x \}$ konvergiert in $\mathbb{R}$ (d.h. $\{ h_k \}$ ist $L^1$-CF zu $f$) \item $\{ h_k\}$ aus \propref{integral_funktion_beispiel_striktere_konvergenz} ist nur dann $L^1$-CF, falls $\alpha_k\to 0$. \end{enumerate} @@ -159,10 +159,10 @@ $\xRightarrow[\eqref{integral_lebesque_funktion_definition}]{\propref{integral_f \item Sei $f:M\subset\mathbb{R}\to\overline{\mathbb{R}}$ integrierbar und seien $\{ h_k\}$, $\{ \tilde{h}_k \}$ zugehörigen $L^1$-CF in $T^1(M)$.\\ \begin{tabularx}{\linewidth}{r@{\ \ }X} $\Rightarrow$ & $\forall \epsilon > 0$ $\exists k_0$ mit \[ \int_M \vert (h_k + \tilde{h}_k) - (h_l + \tilde{h}_l)\vert \D x \le \int_M \vert h_k - h_l\vert + \vert \tilde{h}_k - \tilde{h}_l \vert \D x < \epsilon \quad\forall k,l\ge k_0 \] \\ - $\Rightarrow$ & $\{ h_k - \tilde{h}_k \}$ ist $L^1$-CF mit $(h_k - \tilde{h}_k)\to 0$ \gls{fü} auf $M$. + $\Rightarrow$ & $\{ h_k - \tilde{h}_k \}$ ist $L^1$-CF mit $(h_k - \tilde{h}_k)\to 0$ \gls{fue} auf $M$. \end{tabularx} - Da $\{ \int_M h_k \D x\}$, $\{ \int_M \tilde{h}_k \D x \}$ in $\mathbb{R}$ konvergieren, bleibt zu zeigen: $\{ h_k\}$ ist $L^1$-CF in $T^1(M)$ mit $h_k\to 0$ \gls{fü} auf $M$ + Da $\{ \int_M h_k \D x\}$, $\{ \int_M \tilde{h}_k \D x \}$ in $\mathbb{R}$ konvergieren, bleibt zu zeigen: $\{ h_k\}$ ist $L^1$-CF in $T^1(M)$ mit $h_k\to 0$ \gls{fue} auf $M$ \begin{flalign} \Rightarrow &\int_M h_k \D x \xrightarrow{k\to\infty} 0& \end{flalign} @@ -216,7 +216,7 @@ $\xRightarrow[\eqref{integral_lebesque_funktion_definition}]{\propref{integral_f \int_M f \D x &= \int_{M_1} f \D x + \int_{M_2} f \D x \end{align*} \item\proplbl{integral_funktion_rechenregeln_d} - Sei $f = \tilde{f}$ \gls{fü} auf $M$ \\\begin{tabularx}{\linewidth}{r@{\ \ }X} + Sei $f = \tilde{f}$ \gls{fue} auf $M$ \\\begin{tabularx}{\linewidth}{r@{\ \ }X} $\Rightarrow$ & $\tilde{f}$ ist integrierbar auf $M$ mit \end{tabularx} \begin{align*} @@ -235,7 +235,7 @@ Aussage \ref{integral_funktion_rechenregeln_d} bedeutet, dass eine Änderung der Seien $\{ h_k\}$ und $\{ \tilde{h}_k \}$ aus $T^1(\mathbb{R})^n$ $L^1$-CF zu $f$ und $g$. \begin{enumerate}[label={zu \alph*)},leftmargin=\widthof{\texttt{zu a) }},topsep=\dimexpr-\baselineskip/2\relax] - \item Es ist $h_k + \tilde{h}_k\to f + g$ \gls{fü} auf $M$. + \item Es ist $h_k + \tilde{h}_k\to f + g$ \gls{fue} auf $M$. Wegen \begin{align*} \int_M \vert (h_k + \tilde{h}_k) - (h_l + \tilde{h}_l)\vert \D x &\le \underbrace{\int_M \vert h_k - h_l\vert \D x}_{=\text{$L^1$-CF, $<\epsilon$}} + \underbrace{\int_M \vert \tilde{h}_k - \tilde{h}_l \vert \D x}_{=\text{$L^1$-CF, $<\epsilon$}} @@ -275,11 +275,11 @@ Aussage \ref{integral_funktion_rechenregeln_d} bedeutet, dass eine Änderung der \item\proplbl{integral_funktion_eigenschaften_monotonie} (Monotonie) Seien $f$, $g$ integrierbar auf $M$. Dann \begin{center} - $f\le g$ \gls{fü} auf $M$ \ \ $\Rightarrow$ \ \ $\displaystyle\int_M f\D x \le \int_M g \D x$ + $f\le g$ \gls{fue} auf $M$ \ \ $\Rightarrow$ \ \ $\displaystyle\int_M f\D x \le \int_M g \D x$ \end{center} \item\proplbl{integral_funktion_eigenschaften_nullfunktion} Sei $f$ integrierbar auf $M$, dann \begin{center} - $\displaystyle \int_M \vert f \vert \D x = 0$\ \ $\Leftrightarrow$ \ \ $f = 0$ \gls{fü} + $\displaystyle \int_M \vert f \vert \D x = 0$\ \ $\Leftrightarrow$ \ \ $f = 0$ \gls{fue} \end{center} \end{enumerate} In Analogie zur Treppenfunktion ist $\Vert f\Vert _1 := \int_M \vert f \vert \D x$ auf $L^1(M)$ eine Halbnorm, aber keine Norm ($\Vert f \Vert = 0$ $\cancel{\Leftrightarrow}$ $f = 0$). $\Vert f\Vert_1$ heißt \begriff{$L^1$-Halbnorm} von $f$. @@ -293,7 +293,7 @@ Aussage \ref{integral_funktion_rechenregeln_d} bedeutet, dass eine Änderung der \NoEndMark \begin{enumerate}[label={zu \alph*)},topsep=\dimexpr -\baselineskip / 2\relax,leftmargin=\widthof{\texttt{zu b)\ }}] \item Sei $f$ integrierbar auf $M$ und sei $\{ h_k \}$ $L^1$-CF zu $f$ \\ - \ $\Rightarrow$ $\vert h_k \vert\to \vert f \vert$ \gls{fü} auf $M$. + \ $\Rightarrow$ $\vert h_k \vert\to \vert f \vert$ \gls{fue} auf $M$. Wegen $\int_M \left\vert \vert h_k \vert - \vert h_l \vert\right\vert \D x$\marginnote{$\vert\vert \alpha\vert - \vert\beta\vert\vert \le \vert \alpha - \beta\vert$ $\forall \alpha,\beta\in\mathbb{R}$} $\overset{\cref{integral_treppenfunktion_grundlegende_folgerung}}{\le}$ $\int_M \vert h_k - h_l \vert \D x$ ist $\{ \vert h_k\vert \}$ $L^1$-CF zu $\vert f \vert$ \\ \ $\Rightarrow$ $\vert f \vert$ ist integrierbar. @@ -305,14 +305,14 @@ Aussage \ref{integral_funktion_rechenregeln_d} bedeutet, dass eine Änderung der \end{align*} Da $\{ \vert h_k \vert \}$ $L^1$-CF zu $\vert f \vert$ ist, folgt die Behauptung durch Grenzübergang. - \item Nach den Rechenregeln ist $g - f$ integrierbar, wegen $\vert g - f\vert = g - f$ \gls{fü} auf $M$ folgt \begin{align*} + \item Nach den Rechenregeln ist $g - f$ integrierbar, wegen $\vert g - f\vert = g - f$ \gls{fue} auf $M$ folgt \begin{align*} 0 \le \left\vert \int_M g - f\D x\right\vert\overset{\ref{integral_funktion_eigenschaften_beschraenktheit}}{\le} \int_M \vert g - f\vert \D x \overset{ \cref{integral_funktion_rechenregeln}\;\ref{integral_funktion_rechenregeln_a}}{=} \int_M g \D x - \int_M f \D x \end{align*} $\Rightarrow$ Behauptung - \item[zu a)] für "`$\Leftarrow$"' wähle $f^\pm$ ($ f = f^+ - f^-$) jeweils eine monotone Folge von \gls{tf} $\{ h_k^\pm \}$ gemäß \propref{messbarkeit_funktion_existenz_monotone_treppenfunktionen}. Folglich liefert $H_k = h_k^+ - h_k^-$ eine Folge von \gls{tf} mit $h_k\to f$ \gls{fü} auf $M$. + \item[zu a)] für "`$\Leftarrow$"' wähle $f^\pm$ ($ f = f^+ - f^-$) jeweils eine monotone Folge von \gls{tf} $\{ h_k^\pm \}$ gemäß \propref{messbarkeit_funktion_existenz_monotone_treppenfunktionen}. Folglich liefert $H_k = h_k^+ - h_k^-$ eine Folge von \gls{tf} mit $h_k\to f$ \gls{fue} auf $M$. - Wegen $\vert h_k \vert \le \vert f \vert$ \gls{fü} auf $M$ ist $\int_M \vert h_k\vert \D x \le \int_M \vert f \vert \D x$. + Wegen $\vert h_k \vert \le \vert f \vert$ \gls{fue} auf $M$ ist $\int_M \vert h_k\vert \D x \le \int_M \vert f \vert \D x$. Folglich ist die monotone Folge $\int_M \vert h_k\vert \D x$ in $\mathbb{R}$ beschränkt \\ $\Rightarrow$ konvergent. @@ -325,7 +325,7 @@ Aussage \ref{integral_funktion_rechenregeln_d} bedeutet, dass eine Änderung der \end{align*} Als konvergente Folge ist $\{ \int_M \vert h_k \vert \D x \}$ \person{Cauchy}-Folge in $\mathbb{R}$ und folglich ist $\{ h_k \}$ $L^1$-CF und sogar $L^1$-CF zu $f$ \\ $\Rightarrow$ $f$ integrierbar - \item Für $f=0$ \gls{fü} auf $M$ ist offenbar $\int_M \vert f\vert \D x = 0$. + \item Für $f=0$ \gls{fue} auf $M$ ist offenbar $\int_M \vert f\vert \D x = 0$. Sei nun $\int_M \vert f \vert \D x = 0$, mit $M_k := \{ x\in M \mid \vert f \vert \ge \frac{1}{k} \}$ $\forall k\in\mathbb{N}$ ist \begin{align*} 0 = \int_{M\setminus M_k} \vert f \vert \D x + \int_{M_k} \vert f \vert \D x \ge \int_{M\setminus M_k}0 \D x + \int_{M_k}\frac{1}{k}\D x \ge \frac{1}{k}\vert M_k\vert \ge 0 @@ -342,10 +342,10 @@ Aussage \ref{integral_funktion_rechenregeln_d} bedeutet, dass eine Änderung der \proplbl{integral_funktion_lemma_weitere_eigenschaften} Sei $f$ auf $M$ integrierbar\begin{enumerate}[label={\alph*)}] \item Für $\alpha_1$, $\alpha_2\in\mathbb{R}$ gilt:\begin{center} - $\alpha_1\le f \le \alpha_2$ \gls{fü} auf $M$ \ \ $\Rightarrow$ \ \ $\displaystyle \alpha_1 \vert M \vert \le \int_M f \D x \le \alpha_2 \vert M \vert$ + $\alpha_1\le f \le \alpha_2$ \gls{fue} auf $M$ \ \ $\Rightarrow$ \ \ $\displaystyle \alpha_1 \vert M \vert \le \int_M f \D x \le \alpha_2 \vert M \vert$ \end{center} - \item Es gilt $f\ge 0$ \gls{fü} auf $M$ \ \ $\Rightarrow$ \ \ $\int_M f \D x\ge 0$ - \item Es gilt: $\tilde{M}\subset M$ messbar, $f\ge 0$ \gls{fü} auf $M$ \\ + \item Es gilt $f\ge 0$ \gls{fue} auf $M$ \ \ $\Rightarrow$ \ \ $\int_M f \D x\ge 0$ + \item Es gilt: $\tilde{M}\subset M$ messbar, $f\ge 0$ \gls{fue} auf $M$ \\ \ $\Rightarrow$ \ \ $\displaystyle \int_{\tilde{M}} f \D x \le \int_M f \D x$ (linkes Integral nach \propref{integral_funktion_rechenregeln} \ref{integral_funktion_rechenregeln_b}) @@ -358,7 +358,7 @@ Aussage \ref{integral_funktion_rechenregeln_d} bedeutet, dass eine Änderung der \item Wegen $\int_M \alpha_j \D x = \alpha_j \vert M \vert $ für $\vert M \vert$ endlich folgt a) direkt aus der Monotonie des Integrals. \item folgt mit $\alpha_1=0$ aus a) - \item folgt, da $\chi_{\tilde{M}}\cdot f \le f$ \gls{fü} auf $M$ und aus der Monotonie\hfill\csname\InTheoType Symbol\endcsname + \item folgt, da $\chi_{\tilde{M}}\cdot f \le f$ \gls{fue} auf $M$ und aus der Monotonie\hfill\csname\InTheoType Symbol\endcsname \end{enumerate} \end{proof} @@ -369,7 +369,7 @@ In der Vorüberlegung zum Integral wurde eine gewisse Stetigkeit der Integralabb & \lim\limits_{k\to\infty} \int_M \vert f_k - f\vert \D x = 0 \quad(\Vert f_k - f\Vert\to0)\\ \Rightarrow\;\;&\lim\limits_{k\to\infty} \int_M f_k \D x = \int_M f\D x \end{align*} - Weiterhin gibt es eine Teilfolge $\{ f_{k'}\}$ mit $f_{k'}\to f$ \gls{fü} auf $M$. + Weiterhin gibt es eine Teilfolge $\{ f_{k'}\}$ mit $f_{k'}\to f$ \gls{fue} auf $M$. \end{proposition} \begin{proof} @@ -386,13 +386,13 @@ In der Vorüberlegung zum Integral wurde eine gewisse Stetigkeit der Integralabb $\Rightarrow$ & $\displaystyle M_\epsilon \subset\bigcup_{l=j}^\infty \{ \vert f_{k_l} - f \vert > \epsilon \}$ $\forall j\in\mathbb{N}$ \\ $\Rightarrow$ & $\displaystyle M_\epsilon \le \sum_{l=j}^\infty \left\vert \left\{ f_{k_l} - f\vert > \epsilon \right\} \right\vert \le \frac{1}{\epsilon} \sum_{l=j}^\infty \int _M \vert f_{k_l} - f\vert \D x \le \frac{1}{\epsilon} \sum_{l=j}^\infty \frac{1}{2^{l+1}} = \frac{1}{2^j \epsilon}\quad\forall j\in\mathbb{N}$\\ $\Rightarrow$ & $M_\epsilon = 0$ $\forall\epsilon > 0$ \\ - $\Rightarrow$ & $f_{k_l} \xrightarrow{l\to\infty} f$ \gls{fü} auf $M$ \hfill\csname\InTheoType Symbol\endcsname + $\Rightarrow$ & $f_{k_l} \xrightarrow{l\to\infty} f$ \gls{fue} auf $M$ \hfill\csname\InTheoType Symbol\endcsname \end{tabularx} \end{proof} \begin{proposition}[Majorantenkriterium] \proplbl{integral_funktion_majorantenkriterium} - Seien $f$, $g:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ messbar, $M$ messbar, $\vert f \vert \le g$ \gls{fü} auf $M$, $g$ integrierbar auf $M$ \\ + Seien $f$, $g:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ messbar, $M$ messbar, $\vert f \vert \le g$ \gls{fue} auf $M$, $g$ integrierbar auf $M$ \\ $\;\Rightarrow$ $f$ integrierbar auf $M$ Man nennt $g$ auch \begriff{integrierbare Majorante} von $f$. @@ -404,7 +404,7 @@ In der Vorüberlegung zum Integral wurde eine gewisse Stetigkeit der Integralabb \proplbl{integral_funktion_lemma_majorante_eq} 0 \le h_1 \le h_2 \le \dotsc \le f\quad \text{ und }\quad \int_M h_k \D x\text{ beschränkt} \end{align} - $\Rightarrow$ $\{ h_k\}$ ist $L^1$-CF zu $f$ und falls $\{ h_k\}\to f$ \gls{fü} auf $M$ ist $f$ integrierbar (vgl \propref{messbarkeit_funktion_existenz_monotone_treppenfunktionen}) + $\Rightarrow$ $\{ h_k\}$ ist $L^1$-CF zu $f$ und falls $\{ h_k\}\to f$ \gls{fue} auf $M$ ist $f$ integrierbar (vgl \propref{messbarkeit_funktion_existenz_monotone_treppenfunktionen}) \end{lemma} \begin{proof} @@ -414,7 +414,7 @@ In der Vorüberlegung zum Integral wurde eine gewisse Stetigkeit der Integralabb Da $\{ \int_M h_k \D x \}$ konvergent ist in $\mathbb{R}$ als monoton beschränkte Folge ist diese CF in $\mathbb{R}$ \\ $\Rightarrow$ $\{ h_k\}$ ist $L^1$-CF - Falls noch $h_k\to f$ \gls{fü} $\Rightarrow$ $\{h_k\}$ ist $L^1$-CF zu $f$ $\Rightarrow$ $f$ ist integrierbar + Falls noch $h_k\to f$ \gls{fue} $\Rightarrow$ $\{h_k\}$ ist $L^1$-CF zu $f$ $\Rightarrow$ $f$ ist integrierbar \end{proof} \begin{proof}[\propref{integral_funktion_majorantenkriterium}] @@ -424,7 +424,7 @@ In der Vorüberlegung zum Integral wurde eine gewisse Stetigkeit der Integralabb Es existiert eine Folge $\{ h_k \}$ von Treppenfunktionen mit \begin{align*} 0 \le h_1 \le h_2 \le \dotsc \le \vert f \vert \le g \end{align*} - auf $M$ und $\{ h_k\}\to\vert f \vert$ \gls{fü} auf $M$. + auf $M$ und $\{ h_k\}\to\vert f \vert$ \gls{fue} auf $M$. Da $\{ \int_M h_k \D x \}$ beschränkt ist in $\mathbb{R}$ da $g$ integrierbar ist \\ {\renewcommand{\arraystretch}{1.3}\begin{tabularx}{\linewidth}{r@{\ \ }X} @@ -480,7 +480,7 @@ Keine Gleichheit hat man z.B. für $\{ h_k\}$ aus \propref{integral_funktion_bei Alle $g_k$ sind messbar nach \propref{messbarkeit_funktionen_komposition}, \propref{integral_funktion_majorantenkriterium} - Für jedes $k\in\mathbb{N}$ wählen wir gemäß \propref{messbarkeit_funktion_existenz_monotone_treppenfunktionen} eine Folge $\{ h_{k_l} \}_l$ von Treppenfunktionen mit $0\le h_{k_1} \le h_{k_2} \le \dotsc \le g_k$, $h_{k_l}\xrightarrow{l\to\infty} g_k$ \gls{fü} auf $M$. + Für jedes $k\in\mathbb{N}$ wählen wir gemäß \propref{messbarkeit_funktion_existenz_monotone_treppenfunktionen} eine Folge $\{ h_{k_l} \}_l$ von Treppenfunktionen mit $0\le h_{k_1} \le h_{k_2} \le \dotsc \le g_k$, $h_{k_l}\xrightarrow{l\to\infty} g_k$ \gls{fue} auf $M$. Nach \propref{integral_funktion_lemma_majorante} ist $\{ h_{k_l}\}_l$ $L^1$-CF zu $g_k$. @@ -497,14 +497,14 @@ Keine Gleichheit hat man z.B. für $\{ h_k\}$ aus \propref{integral_funktion_bei Mit $\tilde{A}_l := \bigcup_{k=l}^\infty A_k$ folgt $\vert \tilde{A}_l\vert \le \frac{1}{2^{l-1}}$ und $\vert \tilde{h}_k - f \vert \le \frac{2}{k}$ auf $(B_k(0)\cap M)\setminus \tilde{A}_l$ $\forall k>l$. - Folglich $\tilde{h}_l\to f$ \gls{fü} auf $M$ und wegen der Monotonie ist $\{ \tilde{h}_k\}$ $L^1$-CF zu $f$ \\ + Folglich $\tilde{h}_l\to f$ \gls{fue} auf $M$ und wegen der Monotonie ist $\{ \tilde{h}_k\}$ $L^1$-CF zu $f$ \\ $\Rightarrow$ $\int_M f \D x \overset{\text{Def}}{=} \lim\limits_{k\to\infty} \int_M \tilde{h}_k \D x \overset{\text{Monotonie}}{\le}\liminf\limits_{k\to\infty} \int_M f_k \D x$\\ $\Rightarrow$ Behauptung \end{proof} \begin{theorem}[Monotone Konvergenz] \proplbl{integral_grenzwertsatz_monotone_konvergenz} - Seien $f_k:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ integrierbar auf $M\subset D$ $\forall k\in\mathbb{N}$ mit $f_1 \le f_2 \le \dotsc $ \gls{fü} auf $M$ \\ + Seien $f_k:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ integrierbar auf $M\subset D$ $\forall k\in\mathbb{N}$ mit $f_1 \le f_2 \le \dotsc $ \gls{fue} auf $M$ \\ \ $\Rightarrow$ $f$ ist integrierbar auf $M$ und \begin{align*} \left( \int_M f \D x = \right) \int_M \lim\limits_{k\to\infty} f_k(x) \D x &= \lim\limits_{k\to\infty} \int_M f_k \D x \end{align*} @@ -512,7 +512,7 @@ Keine Gleichheit hat man z.B. für $\{ h_k\}$ aus \propref{integral_funktion_bei \end{theorem} \begin{remark} - \propref{integral_grenzwertsatz_monotone_konvergenz} bleibt richtig, falls man $f_1 \ge f_2 \ge \dotsc$ \gls{fü} auf $M$ hat. + \propref{integral_grenzwertsatz_monotone_konvergenz} bleibt richtig, falls man $f_1 \ge f_2 \ge \dotsc$ \gls{fue} auf $M$ hat. Ferner ist wegen der Monotonie die Beschränktheit der Folge $\{ \int_M f_k \D x \}$ für die Existenz des Grenzwertes ausreichend. \end{remark} @@ -529,7 +529,7 @@ Keine Gleichheit hat man z.B. für $\{ h_k\}$ aus \propref{integral_funktion_bei \begin{theorem}[Majorisierte Konvergenz] \proplbl{integral_grenzwertsatz_majorisierte_konvergenz} - Seien $f_k$, $g:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ messbar für $k\in\mathbb{N}$ und sei $g$ integrierbar auf $M\subset D$ mit $\vert f_k\vert \le g$ \gls{fü} auf $M$ $\forall k\in\mathbb{N}$ und $f_k\to:f$ \gls{fü} auf $M$ + Seien $f_k$, $g:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ messbar für $k\in\mathbb{N}$ und sei $g$ integrierbar auf $M\subset D$ mit $\vert f_k\vert \le g$ \gls{fue} auf $M$ $\forall k\in\mathbb{N}$ und $f_k\to:f$ \gls{fue} auf $M$ \begin{align} \proplbl{integral_grenzwertsatz_majorisierte_konvergenz_eq} \Rightarrow\;\;\lim\limits_{k\to\infty} \int_M \vert f_k - f\vert \D x = 0 @@ -541,7 +541,7 @@ Keine Gleichheit hat man z.B. für $\{ h_k\}$ aus \propref{integral_funktion_bei \end{theorem} \begin{proof} - Nach dem Majorantenkriterium sind alle $f_k$ \gls{fü} integrierbar auf $M$. + Nach dem Majorantenkriterium sind alle $f_k$ \gls{fue} integrierbar auf $M$. Nach \propref{integral_grenzwertsatz_fatou} gilt:\begin{align*} \int_M 2g \D x = \int_M \liminf\limits_{k\to\infty} \vert 2g - \vert f_k - f\vert \vert \D x \le \liminf\limits_{k\to\infty} \int_M 2g - \vert f_k - f \vert \D x diff --git a/2. Semester/ANAG/TeX_files/Integral_R.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Integral_R.tex similarity index 99% rename from 2. Semester/ANAG/TeX_files/Integral_R.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Integral_R.tex index 7794992..649b4e6 100644 --- a/2. Semester/ANAG/TeX_files/Integral_R.tex +++ b/2. Semester/ANAG 1+2 Semester/TeX_files/Integral_R.tex @@ -276,7 +276,7 @@ Nach \propref{messbarkeit_satz_grundlegende_messbare_mengen} \ref{messbarkeit_sa 0 & \text{auf $(a, \alpha_k)$} \end{cases} \end{align*} - Offenbar ist $\vert f_k\vert \le \vert f\vert$, $f_k\to f$, $\vert f_k\vert \to \vert f \vert$ \gls{fü} auf $(a,b)$. + Offenbar ist $\vert f_k\vert \le \vert f\vert$, $f_k\to f$, $\vert f_k\vert \to \vert f \vert$ \gls{fue} auf $(a,b)$. \begin{itemize} \item["`$\Rightarrow$"'] $f$ integrierbar auf $(a,b)$. Mit \propref{integral_grenzwertsatz_majorisierte_konvergenz} (Majorisierte Konvergenz) folgt \begin{align*} \lim\limits_{k\to\infty} \int_{\alpha_k}^b \vert f \vert \D x &= \lim\limits_{k\to\infty} \int_a^b \vert f_k\vert \D x = \int_a^b \vert f \vert \D x diff --git a/2. Semester/ANAG/TeX_files/Integration.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Integration.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Integration.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Integration.tex diff --git a/2. Semester/ANAG/TeX_files/Inverse_implizite_Funktionen.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Inverse_implizite_Funktionen.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Inverse_implizite_Funktionen.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Inverse_implizite_Funktionen.tex diff --git a/2. Semester/ANAG/TeX_files/Kompaktheit.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Kompaktheit.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Kompaktheit.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Kompaktheit.tex diff --git a/2. Semester/ANAG/TeX_files/Komplexe_Zahlen.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Komplexe_Zahlen.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Komplexe_Zahlen.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Komplexe_Zahlen.tex diff --git a/2. Semester/ANAG/TeX_files/Konvergenz.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Konvergenz.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Konvergenz.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Konvergenz.tex diff --git a/2. Semester/ANAG/TeX_files/Messbarkeit.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Messbarkeit.tex similarity index 98% rename from 2. Semester/ANAG/TeX_files/Messbarkeit.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Messbarkeit.tex index a07e15a..37a40bd 100644 --- a/2. Semester/ANAG/TeX_files/Messbarkeit.tex +++ b/2. Semester/ANAG 1+2 Semester/TeX_files/Messbarkeit.tex @@ -1,3 +1,4 @@ +\addtocounter{section}{20} \section{Messbarkeit}\setcounter{equation}{0} Wir führen zunächst das \lebesque-Maß ein und behandeln dann messbare Mengen und messbare Funktionen. @@ -120,7 +121,7 @@ Nach \eqref{messbarkeit_satz_teilmenge_kleineres_mass_eq} und \eqref{messbarkeit \end{proof} \begin{*definition} - Eine Eigenschaft gilt \gls{fü} auf $M\subset\mathbb{R}^n$, falls eine Nullmenge existiert, sodass die Eigenschaft $\forall x\in M\setminus N$ gilt. Man sagt auch, dass die Eigenschaft für \gls{fa} $x\in M$ gilt. + Eine Eigenschaft gilt \gls{fue} auf $M\subset\mathbb{R}^n$, falls eine Nullmenge existiert, sodass die Eigenschaft $\forall x\in M\setminus N$ gilt. Man sagt auch, dass die Eigenschaft für \gls{fa} $x\in M$ gilt. \end{*definition} \begin{example} @@ -130,7 +131,7 @@ Nach \eqref{messbarkeit_satz_teilmenge_kleineres_mass_eq} und \eqref{messbarkeit 1, &x\in\mathbb{Q} \\ 0,&x\in\mathbb{R}\setminus\mathbb{Q} \end{cases} \end{align*} - ist $f=0$ \gls{fü} auf $\mathbb{R}$. + ist $f=0$ \gls{fue} auf $\mathbb{R}$. \end{example} \subsection{Messbare Mengen} @@ -387,14 +388,14 @@ Man sieht leicht Es gilt:\begin{enumerate}[label={\alph*)}] \item Sei $f:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ messbar. Dann ist auch die Nullfortsetzung $\overline{f}:\mathbb{R}^n\to\overline{\mathbb{R}}$ messbar \item Sei $f:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ messbar und $D'\subset D$ messbar. Dann ist $f$ auf $D'$ messbar, d.h. insbesondere $\left. f\right|_{D'}$ ist messbar. - \item Seien $f,g:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$. Sei $f$ messbar und $f=g$ \gls{fü} auf $D$. Dann ist $g$ messbar. + \item Seien $f,g:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$. Sei $f$ messbar und $f=g$ \gls{fue} auf $D$. Dann ist $g$ messbar. \end{enumerate} \end{proposition} \begin{example} Die \person{Dirichlet}-Funktion ist auf $\mathbb{R}$ messbar. - $h=0$ ist messbare Treppenfunktion auf $\mathbb{R}$ und stimmt mit der \person{Dirichlet}-Funktion \gls{fü} überein. + $h=0$ ist messbare Treppenfunktion auf $\mathbb{R}$ und stimmt mit der \person{Dirichlet}-Funktion \gls{fue} überein. \end{example} \begin{proof}\hspace*{0pt} @@ -423,7 +424,7 @@ f:=\max(f_1, f_2):\mathbb{R}^n\to\mathbb{R},\;\;f(x) = \max \{ f_1(x), f_2(x) \} \end{align*} und analog: $\min(f_1, f_2)$, $\sup\limits_{k\in\mathbb{N}} f_k$, $\inf\limits_{k\in\mathbb{N}} f_k$, $\limsup\limits_{k\to\infty} f_k$, $\liminf\limits_{k\in\mathbb{N}} f_k$ -Bei punktweiser Konvergenz $f_k(x)\to f(x)$ für \gls{fa} $x\in D$ schreibt man auch $f_k\to f$ \gls{fü} auf $D$. +Bei punktweiser Konvergenz $f_k(x)\to f(x)$ für \gls{fa} $x\in D$ schreibt man auch $f_k\to f$ \gls{fue} auf $D$. \end{*definition} \begin{proposition}[zusammengesetzte messbare Funktionen] @@ -494,7 +495,7 @@ Bei punktweiser Konvergenz $f_k(x)\to f(x)$ für \gls{fa} $x\in D$ schreibt man Sei $f:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$, $D$ messbar. Dann \begin{center} \begin{tabularx}{\linewidth}{r@{\ \ }c@{\ \ }X} - \hspace*{0.19\linewidth} $f$ messbar & $\Leftrightarrow$ & $\exists$ Folge $\{ h_k\}$ von Treppenfunktionen mit $h_k\to f$ \gls{fü} auf $D$ + \hspace*{0.19\linewidth} $f$ messbar & $\Leftrightarrow$ & $\exists$ Folge $\{ h_k\}$ von Treppenfunktionen mit $h_k\to f$ \gls{fue} auf $D$ \end{tabularx} \end{center} \end{proposition} @@ -521,10 +522,10 @@ Bei punktweiser Konvergenz $f_k(x)\to f(x)$ für \gls{fa} $x\in D$ schreibt man \end{itemize} \item["`$\Leftarrow$"'] - Sei $\tilde{f}(x) := \limsup\limits_{k\to\infty} h_k(x)$ $\forall x\in D$ $\Rightarrow$ $f(x) = \tilde{f}(x)$ \gls{fü} auf $D$ \\ + Sei $\tilde{f}(x) := \limsup\limits_{k\to\infty} h_k(x)$ $\forall x\in D$ $\Rightarrow$ $f(x) = \tilde{f}(x)$ \gls{fue} auf $D$ \\ Nach \propref{messbarkeit_funktionen_komposition}: $h_k$ messbar $\Rightarrow$ $\tilde{f}$ messbar - Da $f=\tilde{f}$ \gls{fü} folgt $f$ messbar. + Da $f=\tilde{f}$ \gls{fue} folgt $f$ messbar. \end{itemize} \end{proof} @@ -532,7 +533,7 @@ Bei punktweiser Konvergenz $f_k(x)\to f(x)$ für \gls{fa} $x\in D$ schreibt man \proplbl{messbarkeit_funktion_existenz_monotone_treppenfunktionen} Sei $f:D\subset\mathbb{R}^n\to\overline{\mathbb{R}}$ messbar mit $f\ge 0$ - $\Rightarrow$ $\exists$ Folge $\{h_k\}$ von Treppenfunktionen mit $0 \le h_1 \le h_2 \le \dotsc \le f$ auf $D$ und $h_k\to f$ \gls{fü} auf $D$. + $\Rightarrow$ $\exists$ Folge $\{h_k\}$ von Treppenfunktionen mit $0 \le h_1 \le h_2 \le \dotsc \le f$ auf $D$ und $h_k\to f$ \gls{fue} auf $D$. \end{conclusion} \begin{proposition} @@ -557,7 +558,7 @@ Bei punktweiser Konvergenz $f_k(x)\to f(x)$ für \gls{fa} $x\in D$ schreibt man Folgende Funktionen sind messbar \begin{itemize} \item Stetige Funktionen auf offenen und abgeschlossenen Mengen (wähle $N=\emptyset$ im obigen Satz), insbesondere konstante Funktionen sind messbar - \item Funktionen auf offenen und abgeschlossenen Mengen, die \gls{fü} mit einer stetigen Funktion übereinstimmen + \item Funktionen auf offenen und abgeschlossenen Mengen, die \gls{fue} mit einer stetigen Funktion übereinstimmen \item $\tan$, $\cot$ auf $\mathbb{R}$ (setzte z.b. $\tan\left(\frac{\pi}{2}+k\pi\right) = \cot(k\pi) = 0$ $\forall k$) \item $x\to \sin\frac{1}{x}$ auf $[-1,1]$ (setzte beliebigen Wert in $x=0$) \item $\chi_M:\mathbb{R}\to\mathbb{R}$ ist für $\vert\partial M\vert = 0$ messbar auf $\mathbb{R}$ (dann ist $\chi$ auf $\inn M$, $\ext M$ stetig) @@ -565,7 +566,7 @@ Bei punktweiser Konvergenz $f_k(x)\to f(x)$ für \gls{fa} $x\in D$ schreibt man \end{example} \begin{underlinedenvironment}[Hinweis] - Die \person{Dirichlet}-Funktion ist stetig auf $\mathbb{R}\setminus\mathbb{Q}$ und somit nach \propref{messbarkeit_funktion_funktion_messbar} messbar. Man beachte aber, das dies nicht bedeutet, dass die \person{Dirichlet}-Funktion auf $\mathbb{R}$ \gls{fü} stetig ist! (sie ist nirgends stetig auf $\mathbb{R}$) + Die \person{Dirichlet}-Funktion ist stetig auf $\mathbb{R}\setminus\mathbb{Q}$ und somit nach \propref{messbarkeit_funktion_funktion_messbar} messbar. Man beachte aber, das dies nicht bedeutet, dass die \person{Dirichlet}-Funktion auf $\mathbb{R}$ \gls{fue} stetig ist! (sie ist nirgends stetig auf $\mathbb{R}$) \end{underlinedenvironment} \begin{lemma}[Egorov] @@ -599,5 +600,5 @@ Bei punktweiser Konvergenz $f_k(x)\to f(x)$ für \gls{fa} $x\in D$ schreibt man \begin{example} Betrachte $f_k(x) = x^k$ auf $[0,1]$. - Man hat $f_k(x) \to 0$ \gls{fü} auf $[0,1]$ und gleichmäßige Konvergenz auf $[0,\alpha]$ $\forall \alpha\in (0,1)$. + Man hat $f_k(x) \to 0$ \gls{fue} auf $[0,1]$ und gleichmäßige Konvergenz auf $[0,\alpha]$ $\forall \alpha\in (0,1)$. \end{example} diff --git a/2. Semester/ANAG/TeX_files/Metrische_Raeume.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Metrische_Raeume.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Metrische_Raeume.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Metrische_Raeume.tex diff --git a/2. Semester/ANAG/TeX_files/Mittelwertsatz.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Mittelwertsatz.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Mittelwertsatz.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Mittelwertsatz.tex diff --git a/2. Semester/ANAG/TeX_files/Natuerliche_Zahlen.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Natuerliche_Zahlen.tex similarity index 99% rename from 2. Semester/ANAG/TeX_files/Natuerliche_Zahlen.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Natuerliche_Zahlen.tex index cef1e32..4f156e7 100644 --- a/2. Semester/ANAG/TeX_files/Natuerliche_Zahlen.tex +++ b/2. Semester/ANAG 1+2 Semester/TeX_files/Natuerliche_Zahlen.tex @@ -1,3 +1,4 @@ +\addtocounter{section}{2} \section{Natürliche Zahlen} \begin{*definition}[Peano Axiome] $\mathbb{N}$ sei Menge, die die \begriff{\person{Peano}-Axiome} erfüllen, d.h. diff --git a/2. Semester/ANAG/TeX_files/Reelle_Zahlen.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Reelle_Zahlen.tex similarity index 72% rename from 2. Semester/ANAG/TeX_files/Reelle_Zahlen.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Reelle_Zahlen.tex index 2186301..a30e657 100644 --- a/2. Semester/ANAG/TeX_files/Reelle_Zahlen.tex +++ b/2. Semester/ANAG 1+2 Semester/TeX_files/Reelle_Zahlen.tex @@ -47,7 +47,7 @@ \end{proposition} \begin{proof} - ÜA + ÜA %TODO schreibe Beweis aus Übung ab! \end{proof} \begin{proposition} Sei $K$ angeordneter Körper. Dann gilt $\forall a,b,c,d\in K$: @@ -85,7 +85,7 @@ \end{*definition} \begin{proposition} - \proplbl{k_angeordneter_körper} + \proplbl{k_angeordneter_koerper} Sei $K$ angeordneter Körper. Dann gilt $\forall a,b\in K$: \begin{enumerate}[label={\arabic*)}] \item $\vert a\vert\ge 0, \vert a\vert\ge a$ @@ -115,7 +115,7 @@ \item[3)] Fallunterscheidung SeSt \item[4)] Fallunterscheidung SeSt \item[5)] $a = \frac{a}{b}\cdot a \overset{\text{4)}}{\Rightarrow} \vert a \vert = \vert \vert \frac{a}{b} \vert \cdot \vert b \vert \vert \overset{\cdot \vert b \vert^{-1}}{\Rightarrow} \frac{\vert a \vert}{\vert b \vert} = \vert \frac{a}{b} \vert$ - \item[6)] nach 1) $a \leq \vert a \vert, b \leq \vert b \vert \xRightarrow{\text{\propref{k_angeordneter_körper}}} a+b \leq \vert a \vert + \vert b \vert$ analog $-a-b \leq \vert a + \vert b\vert \Rightarrow$ Behauptung + \item[6)] nach 1) $a \leq \vert a \vert, b \leq \vert b \vert \xRightarrow{\text{\propref{k_angeordneter_koerper}}} a+b \leq \vert a \vert + \vert b \vert$ analog $-a-b \leq \vert a + \vert b\vert \Rightarrow$ Behauptung \item[7)] $\vert a \vert = \vert a+b-b \vert \overset{\text{6)}}{\leq} \vert a+ b \vert + \vert b \vert \Rightarrow \vert a \vert - \vert b \vert \leq \vert a + b \vert $ analog $\vert b \vert - \vert a \vert \leq \vert a + b \vert \Rightarrow$ Behauptung \item[8)] für $n = 0,1$, $a = 0$ klar\\ Zeige: $(1+a)^n > 1 + na \forall n \leq 2, a \neq 0$ durch voll. Induktion ÜA @@ -137,8 +137,8 @@ \begin{proof} \begin{itemize} - \item[a)] $0_K \overset{\text{\propref{k_angeordneter_körper}}}{<} 1 \overset{\text{voll. Ind.}}{\Rightarrow} 0_k < n 1_k \forall n \in \mathbb{N} - \xRightarrow[\text{Vielfache}]{\text{\propref{k_angeordneter_körper}}}(-n)1_K = -(n1_k) < 0_K \Rightarrow n 1_K \neq 0_K \forall n \in \mathbb{Z}_{\neq 0} \Rightarrow f$ auf $\mathbb{Q}$ definiert + \item[a)] $0_K \overset{\text{\propref{k_angeordneter_koerper}}}{<} 1 \overset{\text{voll. Ind.}}{\Rightarrow} 0_k < n 1_k \forall n \in \mathbb{N} + \xRightarrow[\text{Vielfache}]{\text{\propref{k_angeordneter_koerper}}}(-n)1_K = -(n1_k) < 0_K \Rightarrow n 1_K \neq 0_K \forall n \in \mathbb{Z}_{\neq 0} \Rightarrow f$ auf $\mathbb{Q}$ definiert \item[b)] Sei $f(\frac{m}{m^{'}}) = f(\frac{n}{n^{'}}) \Rightarrow \frac{m1_K}{m^{'}1_K} = \frac{n 1_K}{n^{'}1_K} \Rightarrow (m1_K)(n^{'}1_K) = (n 1_K)(m^{'}1_K)$\\ $\Rightarrow (mn^{'})1_K = (nm^{'})1_K \Rightarrow (mn^{'}-m^{'}n)1_K = 0_K \xRightarrow{\text{a)}} mn^{'} = m^{'}n =_{\mathbb{Z}} 0 \Rightarrow \frac{m}{m^{'}} =_{\mathbb{Q}} \frac{n}{n^{'}} \Rightarrow f$ injektiv \item[c)] $f(\frac{m}{m^{'}}+\frac{n}{n^{'}}) = f(\frac{mn^{'} + m^{'}n}{m{'}n^{'}}) = \frac{mn^{'} + m^{'}n}{m{'}n^{'}}\frac{1_K}{1_K} \overset{\text{b)}}{=} \frac{m1_K}{m^{'}1_K} + \frac{n1_K}{n^{'}1_K} \overset{f\text{ inj}}{=} f(\frac{m}{m^{'}}) + f(\frac{n}{n^{'}})$\\ @@ -172,7 +172,7 @@ Angeordneter Körper heißt \begriff[Körper!]{archimedisch}, falls $\forall a\in K\,\exists n\in\mathbb{N}\subset K: a < n$. \end{*definition} \begin{proposition} - \proplbl{k_archimedisch_angeordneter_körper} + \proplbl{k_archimedisch_angeordneter_koerper} Sei $K$ archimedisch angeordneter Körper. Dann\begin{enumerate}[label={\arabic*)}] \item $\forall a,b\in K$ mit $a,b>0\,\exists n\in\mathbb{N}: n\cdot a > b$ \item $\forall a\in K\,\exists!\,[a]\in\mathbb{Z}: [a]\le a \le [a] +1$, \mathsymbol{a}{$[a]$} heißt \begriff{ganzer Anteil} von $a$ @@ -237,10 +237,15 @@ Aussage gilt für \gls{fa} $n\in\mathbb{N}$, wenn höchstens für endlich viele \end{*definition} \begin{lemma} + \proplbl{intervallschacht_angeord_koerper} Sei $\mathcal{X} = \{X_n\}_{n\in\mathbb{N}}$ Intervallschachtelung im angeordneten Körper $K$\\ $\Rightarrow \bigcap_{n\in\mathbb{N}} X_n$ enthält höchstens ein Element. \end{lemma} +\begin{proof} + Angenommen $a,b \in \bigcap_{n\in\mathbb{N}} X_n$ mit $\epsilon := b-a > 0 \Rightarrow l(X_n) > \epsilon \forall n \Rightarrow $ Widerspruch. +\end{proof} + \begin{*definition} Archimedisch angeordneter Körper heißt \begriff[Körper]{vollständig}, falls $\bigcap_{n\in\mathbb{N}} X_n\neq \emptyset$ für jede Intervallschachtelung $\mathcal{X} = \{x_n\}$ in $K$. \end{*definition} @@ -253,6 +258,12 @@ Aussage gilt für \gls{fa} $n\in\mathbb{N}$, wenn höchstens für endlich viele $Q$ ist Äquivalenzrelation auf $I_\mathbb{Q}$. \end{proposition} +\begin{proof} + $Q$ offenbar reflexiv und symmetrisch. Sei nun $\{X_n\} \sim \{Y_n\}$, \\ + $\{Y_n\} \sim \{Z_n\}$, d.h. $X_n \cap Y_n \neq \emptyset$, $Y_n \cap Z_n \neq \emptyset \forall n$. + Angenommen $\exists m: X_m \cap Z_m = \emptyset$ und $[x_m, x_m^{'}], [z_m,z_m^{'}] \xRightarrow{o.B.d.A} l(Y_n) \Rightarrow$ Widerspruch $\Rightarrow [X_n] \sim [Z_n] \Rightarrow Q$ transitiv. +\end{proof} + \begin{*definition} setze $\mathbb{R} := \{ [\mathcal{X}] \mid \mathcal{X}\in I_\mathbb{Q} \}$ Menge der \begriff{reellen Zahlen}. @@ -287,24 +298,99 @@ Aussage gilt für \gls{fa} $n\in\mathbb{N}$, wenn höchstens für endlich viele \end{enumerate} \end{proposition} +\begin{proof} + \begin{enumerate}[label={\arabic*)}] + \item für Addition (Multiplikation, Inverse Analog (eventuell Fallunterscheidung)) ÜA/SeSt + \begin{enumerate}[label={\alph*)}] + \item Zeige $\{X_n + Y_n\} \in I_{\ratio}$: offenbar $X_n + Y_n \neq \emptyset$, $X_{n+1} + Y_{n+1} \subset X_n + Y_n \forall n \in \natur$ + + Sei $\epsilon > 0 \Rightarrow \exists m\colon l(X_n) < \frac{\epsilon}{2}, l(Y_n) <\frac{\epsilon}{2}$ (beachte: $l(X_{m+1}) \le l(X_m)$) + + $\Rightarrow l(X_m + Y_m) = x_m^{'} + y_m^{'} - x_m - y_m = l(X_m) + l(Y_m) < \epsilon \beha$ + \item Addition unabhängig vom Repräsentaten: $\mathcal{X} \sim \tilde{\mathcal{X}}, \mathcal{Y}\sim \tilde{\mathcal{Y}} \Rightarrow x_n \le \tilde{x}_n^{'}, \tilde{x}_n \le x_n^{'}$ und $y_n \le \tilde{y}_n^{'}, \tilde{y}_n^{'} \le y_n^{'}$ + + $\Rightarrow x_n + y_n \le \tilde{x}_n^{'}$, $\tilde{x}_n + \tilde{y}_n \le x_n^{'} + y_n^{'} \Rightarrow \mathcal{X} + \mathcal{Y} \sim \tilde{\mathcal{X}} + \tilde{\mathcal{Y}} \Rightarrow 1)$ + \end{enumerate} + \item + \begin{itemize} + \item offenbar $0_{\real}, 1_{\real}$ neutrale Elemente $0_{\real} \neq 1_{\real}$ + \item Addition, Multiplikation, Kommutativität, Distributivität, Assoziativität (Nachrechnenen für Intervalle SeSt) + \item $X = [x,x^{'}]$ für $x=x^{'}$ ist stets $0 \in [x-x^{'}, x^{'}-x], 1\in [\frac{x}{x^{'}}, \frac{x^{'}}{x}] \xRightarrow{SeSt} -[\mathcal{X}], [\mathcal{X}]^{-1}$ invers. + \end{itemize} + \end{enumerate} +\end{proof} + \subsection{Ordnung auf \texorpdfstring{$\mathbb{R}$}{R}} \begin{*definition} Betr. Relation "`$\le$"': $R:=\{ ([\{x_n\}],[\{y_n\}])\in\mathbb{R}\times\mathbb{R} | x_n \le y_n\,\forall n\in\mathbb{N}\}$ \end{*definition} \begin{proposition} - $\mathbb{R}$ ist mit "`$\le$"' angeordneter Körper. + $\mathbb{R}$ ist mit "`$\le$"' angeordneter Körper. (d.h Totalordnung $R$ ist verträglich mit Addition und Multiplikation.) \end{proposition} + +\begin{proof} + $R=$ ist offenbar reflexiv, antisymmetrisch, transitiv (ÜA/SeSt). + + Sei $\mathcal{X} \sim \tilde{\mathcal{X}}, \mathcal{Y} \sim \tilde{\mathcal{Y}} \Rightarrow $ insbesondere $\tilde{x}_n \le x_n^{'}, \tilde{y}_n \le y_n^{'}$. + Sei $[\mathcal{X}] \le [Y]$ d.h. $x_n \le y_n^{'} \forall n$ und angenommen $\exists m\colon \tilde{X}_m > \tilde{Y}_m$ + $\Rightarrow l(X_n) + l(Y_n) = x_n^{'} - \underset{\ge 0}{\tilde{x}_n \le x_n^{'}} - y_n \ge \tilde{x}_n - \tilde{y}_n^{'} \ge \tilde{x}_m - \tilde{y}_m^{'} > 0 \forall n \Rightarrow$ Widerspruch. + $\Rightarrow \tilde{x}_n \le \tilde{y}_n^{'} \forall n \Rightarrow R$ unabhängig vom Repräsentaten $\Rightarrow R$ Ordnung auf $\real$. + \begin{itemize} + \item Angenommen $[\mathcal{X}] \not \le [\mathcal{Y}] \Rightarrow \exists m\colon y_n \le y_m^{'} < x_n \le x_n^{'} \forall n$ + $\Rightarrow [\mathcal{Y}] \le [\mathcal{X}] \Rightarrow R$ Totalordnung + \item Ordnung verträglich mit Addition, Multiplikation ÜA/SeSt + \end{itemize} +\end{proof} + \begin{proposition} $\mathbb{R}$ ist archimedisch angeordneter Körper. \end{proposition} + +\begin{proof} + Sei $[\{X_n\}] = [\{ [x_n,x_n^{'}]\}] \in \real$. (beachte $x_n, x_n^{'} \in \ratio$) + $\xRightarrow[\text{angeordneter Körper}]{\ratio \text{ archimedisch}} \exists k \in \natur: k >_{\ratio} x_n^{'} >_{\ratio} > x_n \forall n$ + $\Rightarrow [\{X_n\}] < [\{[k,k]\}] \in \natur_{\real}.$ +\end{proof} + \begin{theorem} $\mathbb{R}$ ist vollständiger, archimedisch angeordneter Körper. \end{theorem} + +\begin{proof} + Sei $\{X_n\} = \{[x_n, x_n^{'}]\}$ Intervallschachtelung in $\real$, d.h. $x_n,x_n^{'} \in \real$ + (beachte $x_n, x_n^{'}$ sind Äquivalenzrelationen von Intervallverschachtelungen in $\ratio$!) + Zu zeigen: $\bigcap_{n\in\mathbb{N}} X_n \neq \emptyset:$ + Sei $x_n = \left[ \{ [p_{nk},q_{nk}]\}_k \right], x_n^{'} = \left[ \{ [p_{nk},q_{nk}]\}_k \right]$. + Setze $p_n := p_{nk^{'}}, q_n := q_{nn^{'}}, p^{'}_n := p_{nn}^{'}, q_n^{'} := q_{nn}$ + oBdA $l([p_n,q_n]), l([p_n^{'}, q_{n}^{'}]) < \frac{1}{n}$ + $p_{n-1} < p_n< q_n < q_{n-1} \Rightarrow x := \left[ \{[p_k,q_k^{'}]\}_k\right] \in \real$ (denn $\{Q_k\} \subset I_{\ratio}$), + da $Q_{k+1} < Q_k \neq \emptyset, l(Q_k) \le l([p_k,q_k]) + l([p_k^{'},q_k^{'}]) \overset{k \text{ groß}}{<} \epsilon)$ + $\Rightarrow x_n \le x \le x_{''}$ da $f(p_nk) \le_K{\real} x_n \le x_k^{'} \le f(q_{kk}^{'})$ + $\Rightarrow p_{nk} \le_K{\epsilon} q_{kk}^{'}$, analog $p_{kk} \le_{\ratio} q_{nk}^{'}$ + $\Rightarrow x \in \bigcap_{n\in\mathbb{N}} X_n \Rightarrow \real $ vollständig. +\end{proof} + \begin{theorem} Sei $K$ vollständiger, archimedisch angeordneter Körper\\ - $\Rightarrow K$ ist isomorph zu $\mathbb{R}$ bzgl. Körperstruktur und Ordnung. + $\Rightarrow K$ ist isomorph zu $\mathbb{R}$ bzgl. Körperstruktur und Ordnung. (d.h. $\real$ strukturell eindeutig) \end{theorem} +\begin{proof} + Sei $x \in K \xRightarrow[\ref{k_archimedisch_angeordneter_koerper}]{\ref{intervallschacht_angeord_koerper}} \exists$ Intervallverschatelung $\{X_n\} \in I_{\ratio}\colon \{x\} = \bigcap_{n\in\mathbb{N}} X_n$ + + Definiere Abbildung $I: K \to \real$ mit $I(x) = \left[ \{ X_n \}\right]$ ist injektiv (vergleiche Äquivalenzrelation Intervallschachtelung) und surjektiv da $K$ vollständig ist. + + $I$ erhält Körperstruktur und Ordnung (analoge Argumente zu bisherigen $\to$ SeSt!) +\end{proof} + +\underline{Notation in $\real$:} + +\begin{itemize} + \item Variable $x$ statt $\left[ \{x_n \} \right]$ bzw. $\left[\{[x_n,x_n^{'}]\}\right]$ (rationale Zahlen auch als $\frac{m}{m^{'}}$) + \item konkrete Zahl Dezimaldarstellung (Approximation analog zu Intervallschachtelungen in $I_{\ratio} \Rightarrow$ Reihen) + \item Brüche für rationale Zahlen $\frac{3}{5}$ (einige wenige Symbole für spezielle irrationale Zahlen ($\sqrt{2}, \pi, \dots$)) +\end{itemize} + \begin{*definition} Sei $M\subset K$, $K$ angeordneter Körper. \begin{itemize} @@ -335,11 +421,50 @@ Aussage gilt für \gls{fa} $n\in\mathbb{N}$, wenn höchstens für endlich viele \end{enumerate} \end{proposition} +\begin{proof} + \begin{enumerate}[label={\arabic*)}] + \item Sei $s,\tilde{s}$ Supremum von $M \Rightarrow s \le \tilde{s}, \tilde{s} \le s \Rightarrow s = \tilde{s}$ + \item Angenommen $\exists \epsilon > 0: \sup M > x + \epsilon \forall x \in M$ + + $\Rightarrow \sup M-\epsilon $ ist obere Schranke $< \sup M \Rightarrow$ Widerspruch $\beha$ + \end{enumerate} +\end{proof} + +\begin{example} + \begin{itemize} + \item $K=\real$: + \begin{itemize} + \item $b = \sup[a,b) = \sup[a,b] = \max[a,b] = \max[-\infty,b]$ + \item $a = \inf(a,b) = \inf(0,\infty)$ kein Minimum! + \item $M = \{\frac{1}{n} \in \real \mid n \in \natur_{\neq 0}\} \Rightarrow \inf M = 0, \max M = 1$ + \end{itemize} + \item $K = \ratio$: + $M = \{q \in \ratio \mid q^2 <2\} \Rightarrow \sup M$ existiert nicht in $\ratio$! + \end{itemize} +\end{example} + \begin{theorem} Sei $K$ archimedisch angeordneter Körper. Dann - \[ K \text{ vollständig } \Leftrightarrow \sup M \slash \inf M \text{ ex. }\forall M\in K, M\neq \emptyset \text{ nach oben \slash unten beschränkt} \] + \begin{align} + K \text{ vollständig } \Leftrightarrow \sup M \slash \inf M \text{ ex. }\forall M\in K, M\neq \emptyset \text{ nach oben \slash unten beschränkt}\notag + \end{align} \end{theorem} +\begin{proof} + $sup$ $\inf$ analog! + $\Rightarrow$: $M \subset K$ nach oben beschränkt, $\neq \emptyset \to \exists x_0 \in M$ und obere Schranke $x^{'} \in K$. Definiere $X_n = [x_n, x_n^{'}] \subset K$ rekursiv. + $Y_n := \frac{x_n + x_n^{'}}{2}$ (Mittelpunkt zwischen den zwei Schranken)$\begin{cases} + \text{obere Schranke }x_{n+1}:= x_n, x_{n+1}^{'} := y_n\\ + \text{sonst } x_{n+1}:= y_n, x_{n+1}^{'} := x_n^{'} + \end{cases}$ + + $\Rightarrow \forall n x_n^{'}$ obere Schranke, $x_n$ nicht, $l(X_n) = \frac{1}{2^n}(x_0^{'}-x_0)$ + + $\xRightarrow{\ref{k_archimedisch_angeordneter_koerper}} \{X_n\}$ ist Intervallschachtelung $\xRightarrow{\text{ vollst.}} x \in \bigcap_{n\in\mathbb{N}} X_n$. Angenommen $\exists y \in M\colon x < y \to \exists m: l(X_n) < y - x > 0$ + + $\xRightarrow{y \le x_m^{'}}$ Widerspruch $\Rightarrow$ obere Schranke von ... für später!!! +\end{proof} + \subsection{Anwendung: Wurzeln, Potenzen, Logarithmen in \texorpdfstring{$\mathbb{R}$}{R}} \begin{proposition}[Wurzeln] diff --git a/2. Semester/ANAG/TeX_files/Reihen.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Reihen.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Reihen.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Reihen.tex diff --git a/2. Semester/ANAG/TeX_files/Richtungsableitung.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Richtungsableitung.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Richtungsableitung.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Richtungsableitung.tex diff --git a/2. Semester/ANAG/TeX_files/Stammfunktion.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Stammfunktion.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Stammfunktion.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Stammfunktion.tex diff --git a/2. Semester/ANAG/TeX_files/Stetigkeit.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Stetigkeit.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Stetigkeit.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Stetigkeit.tex diff --git a/2. Semester/ANAG/TeX_files/Taylor.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Taylor.tex similarity index 99% rename from 2. Semester/ANAG/TeX_files/Taylor.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Taylor.tex index c30680e..badc64c 100644 --- a/2. Semester/ANAG/TeX_files/Taylor.tex +++ b/2. Semester/ANAG 1+2 Semester/TeX_files/Taylor.tex @@ -1,3 +1,4 @@ +\addtocounter{section}{24} \section{Höhere Ableitungen und \person{Taylor}-scher Satz} \proplbl{section_taylor} \setcounter{equation}{0} \begin{boldenvironment}[Vorbetrachtung] Sei $X$ endlich dimensionaler, normierter Raum über $K$ (d.. Vektorraum über $K$ mit Norm $\Vert \,\cdot \Vert$, $\dim X =l\in\mathbb{N}$). diff --git a/2. Semester/ANAG/TeX_files/Vollstaendigkeit.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Vollstaendigkeit.tex similarity index 100% rename from 2. Semester/ANAG/TeX_files/Vollstaendigkeit.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Vollstaendigkeit.tex diff --git a/2. Semester/ANAG/TeX_files/Wiederholung_und_Motivation.tex b/2. Semester/ANAG 1+2 Semester/TeX_files/Wiederholung_und_Motivation.tex similarity index 99% rename from 2. Semester/ANAG/TeX_files/Wiederholung_und_Motivation.tex rename to 2. Semester/ANAG 1+2 Semester/TeX_files/Wiederholung_und_Motivation.tex index c33df27..528acb4 100644 --- a/2. Semester/ANAG/TeX_files/Wiederholung_und_Motivation.tex +++ b/2. Semester/ANAG 1+2 Semester/TeX_files/Wiederholung_und_Motivation.tex @@ -1,3 +1,4 @@ +\addtocounter{section}{15} \section{Wiederholung und Motivation} Sei $K^n$ $n$-dim. \gls{vr} über Körper mit $K=\mathbb{R}$ oder $K=\mathbb{C}, n\in\mathbb{N}_{\ge 0}$. \begin{itemize} diff --git a/2. Semester/ANAG 1+2 Semester/Vorlesung ANAG.pdf b/2. Semester/ANAG 1+2 Semester/Vorlesung ANAG.pdf new file mode 100644 index 0000000..e740bcb Binary files /dev/null and b/2. Semester/ANAG 1+2 Semester/Vorlesung ANAG.pdf differ diff --git a/2. Semester/ANAG/Vorlesung ANAG.tex b/2. Semester/ANAG 1+2 Semester/Vorlesung ANAG.tex similarity index 98% rename from 2. Semester/ANAG/Vorlesung ANAG.tex rename to 2. Semester/ANAG 1+2 Semester/Vorlesung ANAG.tex index 2f812c4..51464fc 100644 --- a/2. Semester/ANAG/Vorlesung ANAG.tex +++ b/2. Semester/ANAG 1+2 Semester/Vorlesung ANAG.tex @@ -17,7 +17,7 @@ \newacronym{vr}{VR}{Vektorraum} \newacronym{diffbar}{diffbar}{differenzierbar} \newacronym{mws}{MWS}{Mittelwertsatz} -\newacronym{fü}{f.ü.}{fast überall} +%\newacronym{fü}{f.ü.}{fast überall} \title{\textbf{Analysis (WS2017/18 + SS2018)}} \author{Dozent: Prof. Dr. Friedemann Schuricht\\ diff --git a/2. Semester/ANAG/pictures/diff-definition.png b/2. Semester/ANAG 1+2 Semester/pictures/diff-definition.png similarity index 100% rename from 2. Semester/ANAG/pictures/diff-definition.png rename to 2. Semester/ANAG 1+2 Semester/pictures/diff-definition.png diff --git a/2. Semester/ANAG/README.md b/2. Semester/ANAG/README.md deleted file mode 100644 index 218340b..0000000 --- a/2. Semester/ANAG/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# TUD_MATH_BA -Skript zur Vorlesung ANAG. - -Wer mithelfen möchte, dieses Script zu vervollständigen, bitte melden. - -### Fortschritt Analysis - -### Analysis I - -1. Grundlagen der Mathematik ... fertig - - 1.1 Grundbegriffe der Mengenlehre und Logik ... fertig - - 1.2 Aufbau einer mathematischen Theorie ... fertig - - 1.3 Relationen und Funktionen ... fertig - - 1.4 Bemerkungen zum Fundament der Mathematik ... fertig - - -2. Zahlenbereiche ... fertig, Beweise fehlen noch - - 2.1 natürliche Zahlen ... fertig, Beweise fehlen noch - - 2.2 ganze und rationale Zahlen ... fertig - - 2.3 reelle Zahlen ... fertig, Beweise fehlen noch - - 2.4 komplexe Zahlen ... fertig, Beweise fehlen noch - -3. Metrische Raume und Konvergenz ... fertig, Beweise fehlen noch - - 3.1 grundlegende Ungleichungen ... fertig, Beweise fehlen noch - - 3.2 Metrische Raume ... fertig, Beweise fehlen noch - - 3.3 Konvergenz ... fertig, Beweise fehlen noch - - 3.4 Vollstandigkeit ... fertig, Beweise fehlen noch - - 3.5 Kompaktheit ... noch nicht berbeitet - - 3.6 Reihen ... fertig, Beweise fehlen noch - -4. Funktionen und Stetigkeit ... fertig, Beweise fehlen noch - - 4.1 Funktionen ... fertig, Beweise fehlen noch - - 4.2 Stetigkeit ... fertig, Beweise fehlen noch - - 4.3 Anwendung ... fertig, Beweise fehlen noch - -### Analysis II - -5. Differentiation ... wird bearbeitet - - 16. Wiederholung und Motivation ... fertig - - 17. Ableitung ... fertig - - 18. Richtungsableitung und partielle Ableitungen ... fertig - - 19. Mittelwertsatz und Anwendung ... fertig - - 20. Stammfunktionen ... fertig - -6. Integration ... fertig - - 21. Messbare Menge und messbare Funktion ... fertig - - 22. Integration ... fertig - - 23. Integration auf R ... fertig - - 24. Satz von Fubini und Mehrfachintegrale ... fertig - -7. Differentiation 2 ... fertig, Beweise fehlen noch - - 25. Höhere Ableitungen und Taylorscher Satz ... fertig - - 26. Extremwerte ... fertig - - 27. Funktionsfolgen ... fertig - - 28. Inverse und implizierte Funktionen ... fertig diff --git a/2. Semester/ANAG/Vorlesung ANAG.pdf b/2. Semester/ANAG/Vorlesung ANAG.pdf deleted file mode 100644 index f800615..0000000 Binary files a/2. Semester/ANAG/Vorlesung ANAG.pdf and /dev/null differ diff --git a/2. Semester/LAAG 1+2 Semester/Vorlesung LAAG.pdf b/2. Semester/LAAG 1+2 Semester/Vorlesung LAAG.pdf deleted file mode 100644 index 67bd845..0000000 Binary files a/2. Semester/LAAG 1+2 Semester/Vorlesung LAAG.pdf and /dev/null differ diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Abbildungen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Abbildungen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Abbildungen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Abbildungen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Basis_und_Dimension.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Basis_und_Dimension.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Basis_und_Dimension.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Basis_und_Dimension.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Bilinearformen_und_Sesquilinearformen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Bilinearformen_und_Sesquilinearformen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Bilinearformen_und_Sesquilinearformen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Bilinearformen_und_Sesquilinearformen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Das_Lemma_von_Zorn.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_Lemma_von_Zorn.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Das_Lemma_von_Zorn.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_Lemma_von_Zorn.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Das_Minimalpolynom.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_Minimalpolynom.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Das_Minimalpolynom.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_Minimalpolynom.tex diff --git a/2. Semester/LAAG/TeX_files/Das_Standardskalarprodukt.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_Standardskalarprodukt.tex similarity index 78% rename from 2. Semester/LAAG/TeX_files/Das_Standardskalarprodukt.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_Standardskalarprodukt.tex index e6f2717..328049d 100644 --- a/2. Semester/LAAG/TeX_files/Das_Standardskalarprodukt.tex +++ b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_Standardskalarprodukt.tex @@ -58,6 +58,33 @@ Sei zunächst $K=\real$. siehe Analysis, siehe VI.§3 \end{proof} +\begin{*anmerkung} + Der Beweis dieser Ungleichung wird im Skript später noch behandelt, war aber für mich nicht verständlich, deswegen hier noch mal ein einfach zu verstehender Beweis: Wir betrachten dazu das Skalarprodukt + \begin{align} + 0\le \skalar{x-\lambda y}{x-\lambda y}\notag + \end{align} + Mit dem Anwenden der Rechenregeln ergibt sich: + \begin{align} + \skalar{x-\lambda y}{x-\lambda y} &= \skalar{x-\lambda y}{x}-\skalar{x-\lambda y}{\lambda y}\notag \\ + &= \skalar{x-\lambda y}{x}-\overline{\lambda}\skalar{x-\lambda y}{y} \notag \\ + &= \skalar{x}{x}-\skalar{\lambda y}{x}-\overline{\lambda}\skalar{x}{y}+\overline{\lambda}\skalar{\lambda y}{y} \notag \\ + &= \skalar{x}{x}-\lambda\skalar{y}{x}-\overline{\lambda}\skalar{x}{y}+\lambda\overline{\lambda}\skalar{y} {y}\notag + \end{align} + Jetzt setzen wir + \begin{align} + \lambda = \frac{\skalar{x}{y}}{\skalar{y}{y}}=\frac{\skalar{x}{y}}{\Vert y\Vert^2}\notag + \end{align} + Also ergibt sich + \begin{align} + \skalar{x-\lambda y}{x-\lambda y} &= \skalar{x}{x}-\frac{\skalar{x}{y}}{\skalar{y}{y}}\skalar{y}{x}-\overline{\lambda}\skalar{x}{y}+\overline{\lambda}\frac{\skalar{x}{y}}{\skalar{y}{y}}\skalar{y}{y} \notag \\ + &= \Vert x\Vert^2 - \frac{\skalar{x}{y}}{\Vert y\Vert^2}\skalar{y}{y} \notag \\ + &\le \Vert x\Vert^2-\frac{\skalar{x}{y}}{\Vert y\Vert^2} \notag \\ + \frac{\skalar{x}{y}}{\Vert y\Vert^2} &\le \Vert x\Vert^2 \notag \\ + \skalar{x}{y} &\le \Vert x\Vert^2\cdot \Vert y\Vert^2 \notag \\ + \Rightarrow\vert\skalar{x}{y}\vert &\le \Vert x\Vert\cdot \Vert y\Vert\notag + \end{align} +\end{*anmerkung} + \begin{proposition} Die euklidische Norm erfüllt die folgenden Eigenschaften: \begin{itemize} diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Das_Vorzeichen_einer_Permutation.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_Vorzeichen_einer_Permutation.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Das_Vorzeichen_einer_Permutation.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_Vorzeichen_einer_Permutation.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Das_charakteristische_Polynom.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_charakteristische_Polynom.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Das_charakteristische_Polynom.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Das_charakteristische_Polynom.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Definition_und_Beispiele.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Definition_und_Beispiele.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Definition_und_Beispiele.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Definition_und_Beispiele.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Der_Dualraum.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Der_Dualraum.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Der_Dualraum.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Der_Dualraum.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Der_Elementarteilersatz.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Der_Elementarteilersatz.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Der_Elementarteilersatz.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Der_Elementarteilersatz.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Der_Spektralsatz.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Der_Spektralsatz.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Der_Spektralsatz.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Der_Spektralsatz.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Der_VR_der_linearen_Abbildungen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Der_VR_der_linearen_Abbildungen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Der_VR_der_linearen_Abbildungen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Der_VR_der_linearen_Abbildungen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Determinante_einer_Matrix.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Determinante_einer_Matrix.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Determinante_einer_Matrix.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Determinante_einer_Matrix.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Determinante_und_Spur_von_Endomorphismen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Determinante_und_Spur_von_Endomorphismen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Determinante_und_Spur_von_Endomorphismen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Determinante_und_Spur_von_Endomorphismen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Diagonalisierbarkeit.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Diagonalisierbarkeit.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Diagonalisierbarkeit.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Diagonalisierbarkeit.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Die_Jordan_Normalform.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Die_Jordan_Normalform.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Die_Jordan_Normalform.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Die_Jordan_Normalform.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Die_adjungierte_Abbildung.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Die_adjungierte_Abbildung.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Die_adjungierte_Abbildung.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Die_adjungierte_Abbildung.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Die_duale_Abbildung.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Die_duale_Abbildung.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Die_duale_Abbildung.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Die_duale_Abbildung.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Eigenwerte.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Eigenwerte.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Eigenwerte.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Eigenwerte.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Euklidische_und_unitaere_VR.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Euklidische_und_unitaere_VR.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Euklidische_und_unitaere_VR.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Euklidische_und_unitaere_VR.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Faktorielle_Ringe.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Faktorielle_Ringe.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Faktorielle_Ringe.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Faktorielle_Ringe.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Gruppen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Gruppen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Gruppen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Gruppen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Hauptachsentransformation.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Hauptachsentransformation.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Hauptachsentransformation.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Hauptachsentransformation.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Hauptidealringe.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Hauptidealringe.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Hauptidealringe.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Hauptidealringe.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Homomorphismen_von_Gruppen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Homomorphismen_von_Gruppen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Homomorphismen_von_Gruppen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Homomorphismen_von_Gruppen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Homomorphismen_von_Ringen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Homomorphismen_von_Ringen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Homomorphismen_von_Ringen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Homomorphismen_von_Ringen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Homomorphismen_von_VR.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Homomorphismen_von_VR.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Homomorphismen_von_VR.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Homomorphismen_von_VR.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Koerper.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Koerper.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Koerper.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Koerper.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Koordinatendarstellung_linearer_Abbildungen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Koordinatendarstellung_linearer_Abbildungen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Koordinatendarstellung_linearer_Abbildungen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Koordinatendarstellung_linearer_Abbildungen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Lineare_Gleichungssysteme.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Lineare_Gleichungssysteme.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Lineare_Gleichungssysteme.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Lineare_Gleichungssysteme.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Linearkombinationen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Linearkombinationen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Linearkombinationen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Linearkombinationen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Logik_und_Mengen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Logik_und_Mengen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Logik_und_Mengen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Logik_und_Mengen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Matrizen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Matrizen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Matrizen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Matrizen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Minoren.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Minoren.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Minoren.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Minoren.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Moduln.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Moduln.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Moduln.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Moduln.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Nilpotente_Endomorphismen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Nilpotente_Endomorphismen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Nilpotente_Endomorphismen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Nilpotente_Endomorphismen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Orthogonale_und_unitaere_Endomorphismen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Orthogonale_und_unitaere_Endomorphismen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Orthogonale_und_unitaere_Endomorphismen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Orthogonale_und_unitaere_Endomorphismen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Orthogonalitaet.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Orthogonalitaet.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Orthogonalitaet.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Orthogonalitaet.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Polynome.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Polynome.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Polynome.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Polynome.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Quadriken.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Quadriken.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Quadriken.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Quadriken.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Quotienten_von_Ringen_und_Moduln.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Quotienten_von_Ringen_und_Moduln.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Quotienten_von_Ringen_und_Moduln.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Quotienten_von_Ringen_und_Moduln.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Quotientenraeume.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Quotientenraeume.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Quotientenraeume.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Quotientenraeume.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Rang.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Rang.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Rang.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Rang.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Ringe.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Ringe.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Ringe.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Ringe.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Selbstadjungierte_Endomorphismen.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Selbstadjungierte_Endomorphismen.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Selbstadjungierte_Endomorphismen.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Selbstadjungierte_Endomorphismen.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Summen_von_VR.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Summen_von_VR.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Summen_von_VR.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Summen_von_VR.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Teilbarkeit.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Teilbarkeit.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Teilbarkeit.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Teilbarkeit.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Tensorprodukte.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Tensorprodukte.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Tensorprodukte.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Tensorprodukte.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Trigonalisierbarkeit.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Trigonalisierbarkeit.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Trigonalisierbarkeit.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Trigonalisierbarkeit.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Vorwort.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Vorwort.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Vorwort.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Vorwort.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Zyklische_Vektorraeume.tex b/2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Zyklische_Vektorraeume.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Zyklische_Vektorraeume.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/TeX_files/Zyklische_Vektorraeume.tex diff --git a/2. Semester/LAAG 1+2 Semester_Fehm/Vorlesung LAAG.pdf b/2. Semester/LAAG 1+2 Semester_Fehm/Vorlesung LAAG.pdf new file mode 100644 index 0000000..f613476 Binary files /dev/null and b/2. Semester/LAAG 1+2 Semester_Fehm/Vorlesung LAAG.pdf differ diff --git a/2. Semester/LAAG 1+2 Semester/Vorlesung LAAG.tex b/2. Semester/LAAG 1+2 Semester_Fehm/Vorlesung LAAG.tex similarity index 100% rename from 2. Semester/LAAG 1+2 Semester/Vorlesung LAAG.tex rename to 2. Semester/LAAG 1+2 Semester_Fehm/Vorlesung LAAG.tex diff --git a/2. Semester/LAAG/README.md b/2. Semester/LAAG_Fehm/README.md similarity index 100% rename from 2. Semester/LAAG/README.md rename to 2. Semester/LAAG_Fehm/README.md diff --git a/2. Semester/LAAG/TeX_files/Bilinearformen_und_Sesquilinearformen.tex b/2. Semester/LAAG_Fehm/TeX_files/Bilinearformen_und_Sesquilinearformen.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Bilinearformen_und_Sesquilinearformen.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Bilinearformen_und_Sesquilinearformen.tex diff --git a/2. Semester/LAAG/TeX_files/Das_Lemma_von_Zorn.tex b/2. Semester/LAAG_Fehm/TeX_files/Das_Lemma_von_Zorn.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Das_Lemma_von_Zorn.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Das_Lemma_von_Zorn.tex diff --git a/2. Semester/LAAG/TeX_files/Das_Minimalpolynom.tex b/2. Semester/LAAG_Fehm/TeX_files/Das_Minimalpolynom.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Das_Minimalpolynom.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Das_Minimalpolynom.tex diff --git a/2. Semester/LAAG 1+2 Semester/TeX_files/Das_Standardskalarprodukt.tex b/2. Semester/LAAG_Fehm/TeX_files/Das_Standardskalarprodukt.tex similarity index 78% rename from 2. Semester/LAAG 1+2 Semester/TeX_files/Das_Standardskalarprodukt.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Das_Standardskalarprodukt.tex index e6f2717..556f2f9 100644 --- a/2. Semester/LAAG 1+2 Semester/TeX_files/Das_Standardskalarprodukt.tex +++ b/2. Semester/LAAG_Fehm/TeX_files/Das_Standardskalarprodukt.tex @@ -58,6 +58,33 @@ Sei zunächst $K=\real$. siehe Analysis, siehe VI.§3 \end{proof} +\begin{*anmerkung} + Der Beweis dieser Ungleichung wird im Skript später noch behandelt, war aber für mich nicht verständlich, deswegen hier noch mal ein einfach zu verstehender Beweis: Wir betrachten dazu das Skalarprodukt + \begin{align} + 0\le \skalar{x-\lambda y}{x-\lambda y}\notag + \end{align} + Mit dem Anwenden der Rechenregeln ergibt sich: + \begin{align} + \skalar{x-\lambda y}{x-\lambda y} &= \skalar{x-\lambda y}{x}-\skalar{x-\lambda y}{\lambda y}\notag \\ + &= \skalar{x-\lambda y}{x}-\overline{\lambda}\skalar{x-\lambda y}{y} \notag \\ + &= \skalar{x}{x}-\skalar{\lambda y}{x}-\overline{\lambda}\skalar{x}{y}+\overline{\lambda}\skalar{\lambda y}{y} \notag \\ + &= \skalar{x}{x}-\lambda\skalar{y}{x}-\overline{\lambda}\skalar{x}{y}+\lambda\overline{\lambda}\skalar{y} {y}\notag + \end{align} + Jetzt setzen wir + \begin{align} + \lambda = \frac{\skalar{x}{y}}{\skalar{y}{y}}=\frac{\skalar{x}{y}}{\Vert y\Vert^2}\notag + \end{align} + Also ergibt sich + \begin{align} + \skalar{x-\lambda y}{x-\lambda y} &= \skalar{x}{x}-\frac{\skalar{x}{y}}{\skalar{y}{y}}\skalar{y}{x}-\overline{\lambda}\skalar{x}{y}+\overline{\lambda}\frac{\skalar{x}{y}}{\skalar{y}{y}}\skalar{y}{y} \notag \\ + &= \Vert x\Vert^2 - \frac{\skalar{x}{y}}{\Vert y\Vert^2}\skalar{y}{y} \notag \\ + &\le \Vert x\Vert^2-\frac{\skalar{x}{y}}{\Vert y\Vert^2} \notag \\ + \frac{\skalar{x}{y}}{\Vert y\Vert^2} &\le \Vert x\Vert^2 \notag \\ + \skalar{x}{y} &\le \Vert x\Vert^2\cdot \Vert y\Vert^2 \notag \\ + \Rightarrow\vert\skalar{x}{y}\vert &\le \Vert x\Vert\cdot \Vert y\Vert\notag + \end{align} +\end{*anmerkung} + \begin{proposition} Die euklidische Norm erfüllt die folgenden Eigenschaften: \begin{itemize} diff --git a/2. Semester/LAAG/TeX_files/Das_charakteristische_Polynom.tex b/2. Semester/LAAG_Fehm/TeX_files/Das_charakteristische_Polynom.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Das_charakteristische_Polynom.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Das_charakteristische_Polynom.tex diff --git a/2. Semester/LAAG/TeX_files/Der_Dualraum.tex b/2. Semester/LAAG_Fehm/TeX_files/Der_Dualraum.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Der_Dualraum.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Der_Dualraum.tex diff --git a/2. Semester/LAAG/TeX_files/Der_Elementarteilersatz.tex b/2. Semester/LAAG_Fehm/TeX_files/Der_Elementarteilersatz.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Der_Elementarteilersatz.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Der_Elementarteilersatz.tex diff --git a/2. Semester/LAAG/TeX_files/Der_Spektralsatz.tex b/2. Semester/LAAG_Fehm/TeX_files/Der_Spektralsatz.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Der_Spektralsatz.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Der_Spektralsatz.tex diff --git a/2. Semester/LAAG/TeX_files/Diagonalisierbarkeit.tex b/2. Semester/LAAG_Fehm/TeX_files/Diagonalisierbarkeit.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Diagonalisierbarkeit.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Diagonalisierbarkeit.tex diff --git a/2. Semester/LAAG/TeX_files/Die_Jordan_Normalform.tex b/2. Semester/LAAG_Fehm/TeX_files/Die_Jordan_Normalform.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Die_Jordan_Normalform.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Die_Jordan_Normalform.tex diff --git a/2. Semester/LAAG/TeX_files/Die_adjungierte_Abbildung.tex b/2. Semester/LAAG_Fehm/TeX_files/Die_adjungierte_Abbildung.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Die_adjungierte_Abbildung.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Die_adjungierte_Abbildung.tex diff --git a/2. Semester/LAAG/TeX_files/Die_duale_Abbildung.tex b/2. Semester/LAAG_Fehm/TeX_files/Die_duale_Abbildung.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Die_duale_Abbildung.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Die_duale_Abbildung.tex diff --git a/2. Semester/LAAG/TeX_files/Eigenwerte.tex b/2. Semester/LAAG_Fehm/TeX_files/Eigenwerte.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Eigenwerte.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Eigenwerte.tex diff --git a/2. Semester/LAAG/TeX_files/Euklidische_und_unitaere_VR.tex b/2. Semester/LAAG_Fehm/TeX_files/Euklidische_und_unitaere_VR.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Euklidische_und_unitaere_VR.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Euklidische_und_unitaere_VR.tex diff --git a/2. Semester/LAAG/TeX_files/Faktorielle_Ringe.tex b/2. Semester/LAAG_Fehm/TeX_files/Faktorielle_Ringe.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Faktorielle_Ringe.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Faktorielle_Ringe.tex diff --git a/2. Semester/LAAG/TeX_files/Hauptachsentransformation.tex b/2. Semester/LAAG_Fehm/TeX_files/Hauptachsentransformation.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Hauptachsentransformation.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Hauptachsentransformation.tex diff --git a/2. Semester/LAAG/TeX_files/Hauptidealringe.tex b/2. Semester/LAAG_Fehm/TeX_files/Hauptidealringe.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Hauptidealringe.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Hauptidealringe.tex diff --git a/2. Semester/LAAG/TeX_files/Moduln.tex b/2. Semester/LAAG_Fehm/TeX_files/Moduln.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Moduln.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Moduln.tex diff --git a/2. Semester/LAAG/TeX_files/Nilpotente_Endomorphismen.tex b/2. Semester/LAAG_Fehm/TeX_files/Nilpotente_Endomorphismen.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Nilpotente_Endomorphismen.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Nilpotente_Endomorphismen.tex diff --git a/2. Semester/LAAG/TeX_files/Orthogonale_und_unitaere_Endomorphismen.tex b/2. Semester/LAAG_Fehm/TeX_files/Orthogonale_und_unitaere_Endomorphismen.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Orthogonale_und_unitaere_Endomorphismen.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Orthogonale_und_unitaere_Endomorphismen.tex diff --git a/2. Semester/LAAG/TeX_files/Orthogonalitaet.tex b/2. Semester/LAAG_Fehm/TeX_files/Orthogonalitaet.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Orthogonalitaet.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Orthogonalitaet.tex diff --git a/2. Semester/LAAG/TeX_files/Quadriken.tex b/2. Semester/LAAG_Fehm/TeX_files/Quadriken.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Quadriken.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Quadriken.tex diff --git a/2. Semester/LAAG/TeX_files/Quotienten_von_Ringen_und_Moduln.tex b/2. Semester/LAAG_Fehm/TeX_files/Quotienten_von_Ringen_und_Moduln.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Quotienten_von_Ringen_und_Moduln.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Quotienten_von_Ringen_und_Moduln.tex diff --git a/2. Semester/LAAG/TeX_files/Selbstadjungierte_Endomorphismen.tex b/2. Semester/LAAG_Fehm/TeX_files/Selbstadjungierte_Endomorphismen.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Selbstadjungierte_Endomorphismen.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Selbstadjungierte_Endomorphismen.tex diff --git a/2. Semester/LAAG/TeX_files/Teilbarkeit.tex b/2. Semester/LAAG_Fehm/TeX_files/Teilbarkeit.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Teilbarkeit.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Teilbarkeit.tex diff --git a/2. Semester/LAAG/TeX_files/Tensorprodukte.tex b/2. Semester/LAAG_Fehm/TeX_files/Tensorprodukte.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Tensorprodukte.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Tensorprodukte.tex diff --git a/2. Semester/LAAG/TeX_files/Trigonalisierbarkeit.tex b/2. Semester/LAAG_Fehm/TeX_files/Trigonalisierbarkeit.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Trigonalisierbarkeit.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Trigonalisierbarkeit.tex diff --git a/2. Semester/LAAG/TeX_files/Zyklische_Vektorraeume.tex b/2. Semester/LAAG_Fehm/TeX_files/Zyklische_Vektorraeume.tex similarity index 100% rename from 2. Semester/LAAG/TeX_files/Zyklische_Vektorraeume.tex rename to 2. Semester/LAAG_Fehm/TeX_files/Zyklische_Vektorraeume.tex diff --git a/2. Semester/LAAG/Vorlesung LAAG.pdf b/2. Semester/LAAG_Fehm/Vorlesung LAAG.pdf similarity index 50% rename from 2. Semester/LAAG/Vorlesung LAAG.pdf rename to 2. Semester/LAAG_Fehm/Vorlesung LAAG.pdf index 97b2b0f..08dcfdf 100644 Binary files a/2. Semester/LAAG/Vorlesung LAAG.pdf and b/2. Semester/LAAG_Fehm/Vorlesung LAAG.pdf differ diff --git a/2. Semester/LAAG/Vorlesung LAAG.tex b/2. Semester/LAAG_Fehm/Vorlesung LAAG.tex similarity index 100% rename from 2. Semester/LAAG/Vorlesung LAAG.tex rename to 2. Semester/LAAG_Fehm/Vorlesung LAAG.tex diff --git a/2. Semester/PROG/TeX_files/3_einfache_Sortieralgorithmen.tex b/2. Semester/PROG/TeX_files/3_einfache_Sortieralgorithmen.tex new file mode 100644 index 0000000..592f922 --- /dev/null +++ b/2. Semester/PROG/TeX_files/3_einfache_Sortieralgorithmen.tex @@ -0,0 +1,115 @@ +\section{3 einfache Sortieralgorithmen} + +\begin{center} + \begin{tikzpicture}[scale=0.8] + \node at (1.5,1) (bubble) {Bubblesort}; + \draw (0,0) rectangle (3,-9); + \draw[fill=lightgray] (0,0) rectangle (3,-2); + \draw[decorate,decoration={brace,amplitude=8pt}] (3,0) -- (3,-2) node[midway, right, xshift=6pt]{sortiert}; + \draw (0,-2.5) -- (3,-2.5); + \draw[fill=black] (1.5,-3.5) circle (0.1); + \draw[fill=black] (1.5,-4.5) circle (0.1); + \draw[fill=black] (1.5,-5.5) circle (0.1); + \draw (0,-6.5) -- (3,-6.5); + \draw (0,-7) -- (3,-7); + \draw (0,-7.5) -- (3,-7.5); + \draw (0,-8) -- (3,-8); + \draw (0,-8.5) -- (3,-8.5); + + \node at (-0.4,0) (1) {1}; + \node at (-0.5,-2) (j-1) {$j-1$}; + \node at (-0.4,-2.5) (j) {$j$}; + \node at (-0.4,-9) (n) {$n$}; + + \node at (3,-6.75) (a) {}; + \node at (3,-7.25) (b) {}; + \node at (3,-7.75) (c) {}; + \node at (3,-8.25) (d) {}; + \node at (3,-8.75) (e) {}; + \draw[->, thick] (a) to [out=0, in=0] (b); + \draw[->, thick] (b) to [out=0, in=0] (c); + \draw[->, thick] (c) to [out=0, in=0] (d); + \draw[->, thick] (d) to [out=0, in=0] (e); + \draw[->, thick] (e) to [out=0, in=0] (d); + \draw[->, thick] (d) to [out=0, in=0] (c); + \draw[->, thick] (c) to [out=0, in=0] (b); + \draw[->, thick] (b) to [out=0, in=0] (a); + + \node at (7.5,1) (selection) {Selectionsort}; + \draw (6,0) rectangle (9,-9); + \draw[fill=lightgray] (6,0) rectangle (9,-2); + \draw[decorate,decoration={brace,amplitude=8pt}] (9,0) -- (9,-2) node[midway, right, xshift=6pt]{sortiert}; + \draw (6,-2.5) -- (9,-2.5); + \node at (5.7,-2.25) (j) {$j$}; + \draw (6,-6.5) -- (9,-6.5); + \node at (5.7,-6.25) (m) {$m$}; + \draw (6,-6) -- (9,-6); + \node at (7.5,-6.25) (min) {$min$}; + + \node at (9,-2.25) (g) {}; + \node at (9,-6.25) (h) {}; + \draw[->,thick] (h) to [out=0, in=0] (g); + \draw[->,thick] (g) to [out=0, in=0] (h); + + \node at (13.5,1) (insert) {Insertionsort}; + \draw (12,0) rectangle (15,-9); + \draw[decorate,decoration={brace,amplitude=8pt}] (15,0) -- (15,-4) node[midway, right, xshift=6pt]{teilsortiert}; + \draw (12,-4.5) -- (15,-4.5); + \node at (11.7,-4.25) (j) {$j$}; + \draw (12,-4) -- (15,-4); + \draw (12,-1) -- (15,-1); + \draw (12,-1.5) -- (15,-1.5); + \node at (12,-1.25) (k) {}; + \draw[->,thick] (j) to [out=150, in=180] (k); + + \draw[->] (12.5,-1.5) -- (12.5,-2); + \draw[->] (13,-2) -- (13,-2.5); + \draw[->] (13.5,-2.5) -- (13.5,-3); + \draw[->] (14,-3) -- (14,-3.5); + \draw[->] (14.5,-3.5) -- (14.5,-4); + \end{tikzpicture} +\end{center} + +\begin{tabular}{p{0.2\textwidth}|p{0.35\textwidth}|p{0.35\textwidth}} + \cellcolor{lightgray}\textbf{Sortierverfahren} & \cellcolor{lightgray}\textbf{Anzahl Vergleiche} & \cellcolor{lightgray}\textbf{Anzahl Kopier-/Tauschoperationen} \\ + \hline + \textbf{Bubblesort} & $\sum\limits_{j=1}^{n-1}(n-j) = \sum\limits_{j=1}^{n-1}\frac{n(n-1)}{2} = \mathcal{O}(n^2) = \Omega(n)$ & $\le\frac{1}{2}n(n-1)=\mathcal{O}(n^2)$ Tauschoperationen \\ + \hline + \textbf{Selectionsort} & $\sum\limits_{j=1}^{n-1}\frac{n(n-1)}{2}=\Theta(n^2)$ & $\le n-1=\mathcal{O}(n)$ Tauschoperationen \\ + \hline + \textbf{Insertionsort} & $\sum\limits_{j=1}^{n-1} j=\frac{n(n-1)}{2}=\mathcal{O}(n^2)$ & $\le\sum\limits_{j=1}^{n-1} j=\frac{n(n-1)}{2}=\mathcal{O}(n^2)$ \\ + mit binärer Suche im teilsortierten Teil & $\sum\limits_{j=1}^{n-1}\log_2 j=\mathcal{O}(n\log_2 n)$ & hier bleibt alles gleich \\ +\end{tabular} + +Allgemein kann man also sagen: +\begin{itemize} + \item best case: 0 Bewegungen/Kopier- und Tauschvorgänge, $\Omega(n)$ Vergleiche + \item worst case: $\mathcal{O}(n^2)$ Vergleiche und Kopier-/Tauschoperationen +\end{itemize} + +\begin{tabularx}{\textwidth}{p{0.2\textwidth}|p{0.35\textwidth}|X} + \cellcolor{lightgray} & \cellcolor{lightgray}\textbf{Vergleiche} & \cellcolor{lightgray}\textbf{Tauschoperationen} \\ + \hline + \textbf{Bubblesort}, \textcolor{red}{stabil} & $\mathcal{O}(n^2)$ & $\mathcal{O}(n^2)$ \\ + \hline + \textbf{Selectionsort}, \textcolor{red}{nicht stabil} & $\mathcal{O}(n^2)$ & $\mathcal{O}(n)$ \\ + \hline + \textbf{Insertionsort}, \textcolor{red}{stabil} & ohne binäre Suche: $\mathcal{O}(n^2)$, mit binärer Suche: $\mathcal{O}(n\log_2 n)$ & $\mathcal{O}(n^2)$ +\end{tabularx} +$\Rightarrow T(n)=\mathcal{O}(n^2)$ für alle 3 einfachen Sortierverfahren + +\begin{proposition} + Sortierverfahren, die auf dem Schlüsselvergleich ($<$) von jeweils 2 Elementen (und einer eventuell notwendigen Tauschoperation) beruhen, benötigen im worst case mindestens $\Omega(n\log_2 n)$ Vergleiche. +\end{proposition} +\begin{proof} + binärer Entscheidungsbaum der Höhe $h$ zum Sortieren von $n$ Elementen, da jeder Schlüsselwertvergleich eine binäre Entscheidung liefert. Es gibt $n!$ Permutationen der $n$ verschiedenen Schlüsselwerte, also $n!$ verschiedene Sortierfolgen, das heißt $n!$ Entscheidungspfade. $\Rightarrow$ binärer Entscheidungsbaum benötigt mindestens $n!$ Blätter, um alle Anfangszustände in den einen Sortierten zu überführen. Ein Binärbaum der Höhe $h$ hat $\le 2^h$ Blätter. Also muss gelten: + \begin{align} + n! &\le 2^h \notag \\ + h &\ge \log_2(n!) \notag \\ + \text{Stirling:} \quad n! &= \sqrt{2\pi n}\cdot \left(\frac{n}{e}\right)^n\cdot \left(1+\mathcal{O}\left(\frac{1}{n}\right) \right) \notag \\ + n! &> \left(\frac{n}{e}\right)^n \notag \\ + h &\ge \log_2 \left( \frac{n}{e}\right)^n=n(\log_2 n-\log_2 e) \notag \\ + &= \Theta(n\log_2 n) \notag + \end{align} + $\Rightarrow$ mindestens $\Omega(n\log_2 n)$ Vergleiche im worst case +\end{proof} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Addition.tex b/2. Semester/PROG/TeX_files/Addition.tex new file mode 100644 index 0000000..2cd270f --- /dev/null +++ b/2. Semester/PROG/TeX_files/Addition.tex @@ -0,0 +1,55 @@ +\begin{*anmerkung} + Der Inhalt dieses ganzen Kapitels ist eigentlich nicht prüfungsrelevant. +\end{*anmerkung} + +\section{Addition $n$-stelliger ganzer Zahlen} + +Wir werden im Folgenden folgende Notationen verwenden: +\begin{itemize} + \item OR: $x+y$ + \item AND: $x\cdot y$ + \item NOT: $\overline{x}$ + \item XOR: $x\oplus y$ +\end{itemize} + +Beim \begriff{Halbaddierer} ist die Summe $s=a\oplus b$ und der Übertrag (carry) $c=a\cdot b$. + +\begin{figure}[ht] + \centering + \includegraphics{images/Halbaddierer.png} + \caption{Halbaddierer} +\end{figure} + +Der \begriff{Volladdierer} besteht aus 2 Halbaddierern. Die Summe $s$ ist hier: $s=a\overline{b}\overline{c_{in}}+\overline{a}b\overline{c_{in}}+\overline{a}\overline{b}c_{in}+abc_{in}+a\oplus b\oplus c_{in}$. Der Übertrag ist $c_{out}=ab+ac_{in}+bc_{in}$. + +\begin{figure}[ht] + \centering + \includegraphics{images/Volladdierer.png} + \caption{Volladdierer} +\end{figure} + +Mit dem \begriff{Carry-Ripple-Adder} kann man dann endlich zwei $n$-stellige Zahlen addieren: +\begin{itemize} + \item $a=[a_{n-1}a_{n-2}...a_1a_0]_2$ + \item $b=[b_{n-1}b_{n-2}...b_1b_0]_2$ +\end{itemize} + +\begin{figure}[ht] + \centering + \includegraphics{images/Carry-Ripple-Adder.png} + \caption{Carry-Ripple-Adder} +\end{figure} +$\Rightarrow T(n)=\mathcal{O}(n\cdot T_{FA})$ + +Machen wir zum Schluss noch eine Übertragsanalyse: Eine Bitposition $i\in\{0,1,...,n-1\}$ kann 3 verschiedene Übertragsfälle annehmen: +\begin{enumerate} + \item kein Übertrag möglich, wenn $a_i=b_i=0$ + \item Übertrag wird weitergeleitet (\begriff{carry propergate}) $p=a_i\oplus b_i$ + \item Übertrag wird auf jeden Fall generiert (\begriff{generate bit}) $g=a_i\cdot b_i$ +\end{enumerate} + +Rekursionsbeziehung: +\begin{align} + c_{i+1} &= g_i+p_i\cdot c_i=a_ib_i+(a_i\oplus b_i)c_i=a_ib_i+(a_i+b_i)c_i \notag \\ + c_{i+1} &= \underbrace{g_i+p_ig_{i-1}+p_ip_{i-1}g_{i-2}+...+p_ip_{i-1}...p_1g_0}_{G_{0,i}} + \underbrace{p_ip_{i-1}...p_1p_0}_{P_{0,i}}\cdot c_0\notag +\end{align} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Allgemeines.tex b/2. Semester/PROG/TeX_files/Allgemeines.tex new file mode 100644 index 0000000..9d089cc --- /dev/null +++ b/2. Semester/PROG/TeX_files/Allgemeines.tex @@ -0,0 +1,84 @@ +\section{Allgemeines über Pointer} + +Pointer nennt man auch \begriff{Zeiger}, \begriff{Verweise} oder \begriff{Datenreferenzen}. Ein Pointer ist ein Verweis bzw. eine Referenz auf ein Zielobjekt/Zeigerziel/Target eines festgelegten Datentyps. In den folgenden Darstellungen ist: +\begin{center} + \begin{tikzpicture}[scale=0.2] + \draw (0,0) -- (2,0); + \draw (0,0) -- (0,2); + \draw (2,0) -- (2,2); + \draw (0,2) -- (2,2); + \draw[fill = black] (1,1) circle (0.3); + \draw[->, thick] (1,1) -- (10,1); + \draw (10,-4) -- (10,6); + \draw (10,-4) -- (20,-4); + \draw (10,6) -- (20,6); + \draw (20,-4) -- (20,6); + \node at (15,1) (n) {Objekt}; + \node at (30,1) (n2) {Pointer}; + + \draw (0,-10) -- (2,-10); + \draw (0,-10) -- (0,-8); + \draw (2,-10) -- (2,-8); + \draw (0,-8) -- (2,-8); + \draw[fill = black] (1,-9) circle (0.3); + \draw[->, thick] (1,-9) -- (10,-9); + \draw (10,-7) -- (10,-11); + \draw (10.6,-7) -- (10.6,-11); + \node at (30,-9) (n2) {Nullpointer}; + \end{tikzpicture} +\end{center} + +Ein Pointer hat zu Beginn der Programmausführung einen undefinierten Zustand, der nicht als solcher erkannt werden kann. Die Verwendung eines solchen Pointers kann große Probleme verursachen. + +Zeiger sind kein eigenständiger Typ, sondern nur mit dem Attribut \texttt{pointer} gekennzeichnet: +\begin{lstlisting} +! eine normale Variable +integer :: variable +! ein Pointer +integer, pointer :: ptr +\end{lstlisting} + +Zeiger sind streng typisiert, das heißt man kann nur auf Objekte zeigen, deren Typ identisch mit dem Zeigertyp ist. Es gibt also keine Universalpointer. Der Pointer im oberen Quelltext kann also nur auf Variablen mit dem Typ \texttt{integer} zeigen. + +Jedes beliebige Objekt vom passenden Objekttyp kann als Ziel eines Zeigers dieses Typs verwendet werden, wenn die Zielvariable das Attribut \texttt{target} trägt oder das Objekt ein dynamisches im Heap erzeugtes Objekt ist. +\begin{lstlisting} +integer, target :: ziel +integer, pointer :: ptr +\end{lstlisting} + +Jede Pointer-Variable kann als Zeigerziel dienen. Ohne \texttt{target}-Attribut. + +Implizit werden Pointer immer automatisch dereferenziert, außer in den Anweisungen \texttt{nullify()}, \texttt{allocate()}, \texttt{deallocate()}, der Pointer-Zuweisung \texttt{pointer => ziel} sowie in der \texttt{associated}-Abfragefunktion. + +Pointer sind in Fortran in der Regel mehr als nur Adressen. + +Werfen wir nun nochmal einen Blick auf die Pointer-Kontexte, in denen Pointer automatisch dereferenziert werden. + +\begin{*anmerkung} + Wird gerne in der Klausur abgefragt, steht aber auch in dem zur Klausur zugelassenen Buch des Rechenzentrums Niedersachsen über den Fortran-Standard. +\end{*anmerkung} + +\begin{itemize} + \item Die Funktion \texttt{nullify(p1, p2, ...)} versetzt die Pointer \texttt{p1}, \texttt{p2} und so weiter in den definierten Zustand Null = nicht assoziiert. + \item \texttt{allocate(p1, p2, ...)} legt Speicherblöcke im Heap für die Zielobjekte der Pointer an und setzt die Pointer als Referenzen auf ihren jeweiligen Speicherblock. Alle Pointer sind im definierten Zustand assoziiert. + \item Mit \texttt{deallocate(p1, p2, ...)} werden die Speicherblöcke, auf die die Pointer zeigen freigegeben und die Pointer auf Null gesetzt. Der Pointer muss dafür assoziiert und ein ganzen Objekt, also kein Subarray, Substring oder ähnliches, sein. + \item Pointer werden mit \texttt{ptr => tgt} oder \texttt{ptr1 => ptr2} zugewiesen. + \item Die Abfragefunktion \texttt{associated()} kann auf recht unterschiedliche Weisen eingesetzt werden: + \begin{itemize} + \item \texttt{associated(ptr)} $\to$ \texttt{.true.}, wenn auf ein Ziel gezeigt wird; \texttt{.false.}, wenn \texttt{ptr} auf Null zeigt. + \item \texttt{associated(ptr, tgt)} $\to$ \texttt{.true.}, wenn \texttt{ptr} auf \texttt{tgt} zeigt, sonst \texttt{.false.} + \item \texttt{associated(ptr1, ptr2)} $\to$ \texttt{.true.}, wenn beide Pointer denselben Zustand (nicht Null) haben, sonst \texttt{.false.} + \end{itemize} +\end{itemize} + +Wie schon oben angesprochen, ist der Umgang mit Pointern nicht ganz ungefährlich, es gibt einige Gefahren für den Hauptspeicher, insbesondere den Heap. + +\begin{*anmerkung} + auch wichtig in der Klausur, steht aber leider nicht im Buch, muss also auswendig gelernt werden +\end{*anmerkung} + +\begin{itemize} + \item Verwendung eines nicht definierten oder nicht gültigen Pointers in \texttt{deallocate}, \texttt{=>}, \texttt{associated}-Abfragen und normalen (nicht Pointer-) Kontext, das heißt in Expressions, in denen alle Pointer automatisch dereferenziert werden. + \item \begriff{Dangling Pointer} entstehen, wenn das Zeigerziel verloren geht, z.B. durch \texttt{deallocate} über anderen Pointern oder eines \texttt{allocatable}-Feldes oder wenn das Zielobjekt "'out of scope"' geht, zum Beispiel durch Verlassen seiner Prozedur. + \item \begriff{Speicherleichen}, Garbage, memory leaks: haben im Prinzip das ewige Leben im Heap, wenn keine Referenzen mehr auf ein Heap-Objekt existiert, über die man es freigeben könnte. +\end{itemize} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Aufwand_fuer_Rechenoperationen.tex b/2. Semester/PROG/TeX_files/Aufwand_fuer_Rechenoperationen.tex new file mode 100644 index 0000000..b2d1537 --- /dev/null +++ b/2. Semester/PROG/TeX_files/Aufwand_fuer_Rechenoperationen.tex @@ -0,0 +1,31 @@ +\section{Rechenaufwand für Grundoperationen} + +\begin{longtable}{p{0.17\textwidth}|p{0.16\textwidth}p{0.16\textwidth}|p{0.17\textwidth}p{0.2\textwidth}} + \rowcolor{lightgray}& einfach verkettet & & doppelt verkettet & \\ + \hline + \rowcolor{lightgray}Grundoperationen & linear & zyklisch & linear & zyklisch \\ + \hline\hline + \texttt{access\_head} & konstant & konstant & konstant & konstant \\ + \hline + \texttt{push} & konstant & konstant & konstant & konstant \\ + \hline + \texttt{pop} & konstant & konstant & konstant & konstant \\ + \hline + \texttt{access\_tail} [mit tail-Pointer] & $\mathcal{O}(n)$ [konstant] & konstant & $\mathcal{O}(n)$ [konstant] & konstant \\ + \hline + \texttt{inject} [mit tail-Pointer] & $\mathcal{O}(n)$ [konstant] & konstant & $\mathcal{O}(n)$ [konstant] & konstant \\ + \hline + \texttt{eject} [mit tail-Pointer] & $\mathcal{O}(n)$ & $\mathcal{O}(n)$ & $\mathcal{O}(n)$ [konstant] & konstant \\ + \hline + \texttt{insert\_before} & $\mathcal{O}(n)$ & $\mathcal{O}(n)$ & konstant & konstant \\ + \hline + \texttt{insert\_after} & konstant & konstant & konstant & konstant \\ + \hline + \texttt{del\_elem} & $\mathcal{O}(n)$ & $\mathcal{O}(n)$ & konstant & konstant \\ + \hline + \texttt{del\_after} & konstant & konstant & konstant & konstant \\ + \hline + \texttt{trav\_forward} & konstant (pro Element) & konstant (pro Element) & konstant (pro Element) & konstant (pro Element) \\ + \hline + \texttt{trav\_backward} & $\mathcal{O}(n)$ (pro Element) & $\mathcal{O}(n)$ (pro Element) & $\mathcal{O}(n)$ (pro Element) & $\mathcal{O}(n)$ (pro Element) \\ +\end{longtable} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Baeume_Trees_und_Rekursion.tex b/2. Semester/PROG/TeX_files/Baeume_Trees_und_Rekursion.tex new file mode 100644 index 0000000..077bad0 --- /dev/null +++ b/2. Semester/PROG/TeX_files/Baeume_Trees_und_Rekursion.tex @@ -0,0 +1,76 @@ +Ein \begriff{Baum} ist entweder leer oder besteht aus einer endlichen Menge von Knoten mit einem speziell ausgezeichneten Wurzelknoten (\begriff{root}) und einer endlichen Anzahl von Teilbäumen. + +Ein Baum ist also rekursiv definiert und besitzt eine rekursive Datenstruktur. Wir brauchen deswegen rekursive Algorithmen zur Bearbeitung. + +Der \begriff[Baum!]{Grad} ist die Anzahl der Verzweigungen nach unten. \\ +Das \begriff[Baum!]{Level} ist die Anzahl der Ebenen, beginnend bei der Wurzel mit 0. \\ +Die \begriff[Baum!]{Höhe} eines Baums ist die Weglänge zum weitest entfernten Knoten. + +Wir wollen die Wechselbeziehung zwischen einer rekursiven Datenstruktur und einem rekursiven Algorithmus untersuchen. Dazu ist es notwendig zu wissen, dass man die Ausführung rekursiver Algorithmen als Baum darstellen kann, so zum Beispiel die \person{Fibonacci}-Zahlen. Sei dazu $F_n$ die $n$-te \person{Fibonacci}-Zahl: +\begin{center} + \begin{tikzpicture}[level/.style={sibling distance=60mm/#1}] + \node[circle, draw] (root) {$F_5$} + child {node[circle,draw] (a) {$F_4$} + child {node[circle,draw] (b) {$F_3$} + child {node[circle,draw] (c) {$F_2 = 1$}} + child {node[circle,draw] (d) {$F_1 = 1$}}} + child {node[circle,draw] (e) {$F_2 = 1$}}} + child {node[circle,draw] (f) {$F_3$} + child {node[circle,draw] (g) {$F_2 = 1$}} + child {node[circle,draw] (h) {$F_1 = 1$}}}; + \end{tikzpicture} +\end{center} + +Man unterscheidet dabei in die \begriff{Rechtsrekursion} und die \begriff{Linksrekursion}. +\begin{center} + \begin{tabularx}{\textwidth}{l|l} %TODO: Tabelle bearbeiten + \textbf{Rechtsrekursion} & \textbf{Linksrekursion} \\ + \hline + Ein Problem $P_n$ lässt sich durch Ausführen eines Tasks $T_n$ das betrachten des Problems $P_{n-1}$ lösen. & Ein Problem $P_n$ lässt sich durch betrachten des Problems $P_{n-1}$ und anschließendes Ausführen eines Tasks $T_n$ lösen. \\ + Also lässt sich $P_n$ durch Ausführung von $T_nT_{n-1}\dots T_1T_0$ lösen. Diese Rekursion ist leicht auflösbar. Das Problem lässt sich iterativ lösen. & Also lässt sich $P_n$ durch Ausführung von $T_0T_1\dots T_{n-1}T_n$ lösen. Diese Rekursion ist nicht leicht auflösbar; sie benötigt einen Stack, da man den Speicherzustand von $T_0$ nicht aus $T_n$ vorhersagen kann. + \end{tabularx} +\end{center} + +Bei einer \begriff{allgemeinen Rekursion} sieht das Problem $P_{n,j}$ so aus. +\begin{align} + P_{n,j} = \begin{cases} + T_0 & n=0 \\ T_0P_{n-1,1}T_1P_{n-1,2}\dots T_{k-1}P_{n-1,k}T_k & n>0 + \end{cases} 1\le i \le k\notag +\end{align} +Auch hier genügt die Abarbeitung einem Stack! + +Ein \begriff{Binärbaum} ist ein Baum mit maximalem Knotengrad 2. +\begin{itemize} + \item maximale Anzahl an Knoten auf dem Level $l$: $2^l$ + \item maximale Anzahl Knoten auf dem gesamten Baum: $N=\sum\limits_{l=0}^h 2^l = 2^{h+1}-1$ + \item minimale Höhe eines Baums mit $N$ Knoten: $h_{min}=\lfloor\log_2 N\rfloor$ +\end{itemize} + +\section{Binäre Suchbäume} + +Ein \begriff{binärer Suchbaum} ist ein Binärbaum, bei dem im linken Teilbaum eines Knotens nur "'kleinere'" Elemente und im rechten Teilbaum nur "'größere'" Elemente gespeichert sind. Dabei gibt es immer eine besondere Datenkomponente, die als Schlüssel (Key) dient und deren Werte eine vollständige Ordnung ermöglichen (Ordnungsrelation, typischerweise $<$). + +Die elementaren Operationen auf Binärbäumen sind: +\begin{itemize} + \item Traversieren: + \begin{itemize} + \item \begriff{Preorder}: $P(B)=T(B)P(B_L)P(B_R)$ + \item \begriff{Inorder}: $P(B)=P(B_L)T(B)P(B_R)$ + \item \begriff{Postorder}: $P(B)=P(B_L)P(B_R)T(B)$ + \item \begriff{Levelorder}: schichtweises Durchlaufen von oben nach unten, von links nach rechts + \end{itemize} + \item Einfügen und suchen: Beim Durchlaufen (Traversieren) in Inorder erhält man die in aufsteigender Schlüsselreihenfolge sortierten Elemente/Knoten(inhalte). + \item Löschen eines Knotens mit gesuchtem Schlüsselwert im Suchbaum: + \begin{itemize} + \item Blatt löschen ist einfach (keine Teilbäume) + \item Knoten hat genau einen Teilbaum: listenartige Reparatur + \item innerer Knoten mit 2 nichtleeren Teilbäumen: 2 Möglichkeiten + \begin{itemize} + \item größeres Element im linken Teilbaum (des zu löschenden Knotens) suchen, dieses hat rechten Teilbaum $\Rightarrow$ diesem Knoten durch seinen linken Teilbaum ersetzen, Inhalt dieses + (ersetzten) Elements in den „zu löschenden“ Knoten kopieren, sodann dieses größere Element (d.h. seinen Knoten) mittels 1 oder 2 löschen (Speicher freigeben!) + \item kleines Element im rechten Teilbaum (des zu löschenden Knotens) suchen, dieses hat linken Teilbaum $\Rightarrow$ diesem Knoten durch seinen rechten Teilbaum ersetzen, Inhalt dieses (ersetzten) Elements in den „zu löschenden“ Knoten kopieren, sodann dieses kleinere Element (d.h. seinen Knoten) mittels 1 oder 2 löschen (Speicher freigeben!) + \end{itemize} + \end{itemize} +\end{itemize} + +Ein \begriff{Sentinel} (Wachposten) ist ein Knoten, der den zu suchenden Schlüssel enthält. Alle Nullpointer eines Trees zeigen auf den Sentinel. Das sorgt dafür, dass, wenn man einen Schlüssel sucht, nach links (bei kleiner) bzw. nach rechts (bei größer) geht; ist der Wert gleich muss man nur noch schauen, ob der gefundene Wert der Sentinel ist, dann ist der gesuchte Wert nicht enthalten, andernfalls schon. \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Begriffe_und_Definitionen.tex b/2. Semester/PROG/TeX_files/Begriffe_und_Definitionen.tex new file mode 100644 index 0000000..20b60cd --- /dev/null +++ b/2. Semester/PROG/TeX_files/Begriffe_und_Definitionen.tex @@ -0,0 +1,67 @@ +\section{Begriffe und Definitionen} + +Beim \begriff{linearen Suchen} sucht man in einem unsortierten Feld mit $n$ Elementen. Der Aufwand liegt zwischen 1 und $n$, ist also linear abhängig von der Anzahl der Elemente. $T(n)=\mathcal{O}(n)$ + +Beim \begriff{binären Suchen} muss das Feld schon sortiert sein. Man fragt dabei den Schlüsselwert des mittleren Elements ab und kann so den zu durchsuchenden Bereich in jedem Schritt halbieren. $T(n)=\mathcal{O}(\log_2 n)$ + +\begin{*anmerkung} + Dieses Verfahren wurde im letzten Semester schon in der Aufgabe zum Zahlenraten verwendet. +\end{*anmerkung} + +Man kann Sortierverfahren nach ihrem Speicherplatzbedarf unterteilen: \begriff{in-situ Sortierverfahren} vs. \begriff{externes Sortierverfahren} +%\begin{center} +% \begin{tabularx}{\textwidth}{l|l} %TODO: Tabelle +% \textbf{in-situ} & \textbf{extern} \\ +% \hline +% \begin{itemize} +% \item alle $n$ Elemente sind schon zu Beginn (in beliebiger Anordnung) im Feld gespeichert +% \item die Elemente werden (bis auf eventuelle notwendige kurzzeitige Auslagerung eines Elements) +% immer in diesem Feld gehalten +% \item insbesondere wird nur eine sehr kleine Zahl zusätzlicher skalarer Varianten benötigt (und keine +% zusätzliche Datenstruktur mit $c \cdot n$ Elementen ($0 < c < 1$)) +% \end{itemize} & +% \begin{itemize} +% \item Sortierung erfolgt nicht nur im Originalfeld +% \item benötigt typischerweise $\mathcal{O}(n)$ zusätzlichen Speicherplatz +% \end{itemize} \\ +% \end{tabularx} +%\end{center} + +Ein Sortierverfahren ist \begriff{stabil}, wenn es die relative Ordnung von Elementen mit dem selben Schlüsselwert nicht ändert. + +Ein \begriff{Mikroschritt} bzw. eine \begriff{Elementaroperation} besteht in der Regel aus einem Vergleich von 2 Schlüsselwerten und einer Kopier- oder Tauschoperation. Ein \begriff{Makroschritt} bzw. \begriff{Durchlauf} besteht aus $\mathcal{O}(n)$ Mikroschritten, zum Beispiel der Durchlauf durch alle noch zu sortierenden Elemente. + +Die Zeitkomplexität von Algorithmen $T(n)$ wird mit den \person{Landau}-Operatoren angegeben: +\begin{itemize} + \item $\mathcal{O}(g(n))=\{f(n):\exists c>0, n_0\in\natur_0\mid 0\le f(n)\le c\cdot g(n)\quad\forall n\ge n_0\}$ (Obergrenze) + \item $\Omega(g(n)) = \{f(n):\exists c>0, n_0\in\natur_0\mid 0\le c\cdot g(n)\le f(n)\quad\forall n\ge n_0\}$ (Untergrenze) + \item $\Theta(g(n)) = \{f(n):\exists c_1,c_2>0,n_0\in\natur_0\mid 0\le c_1\cdot g(n)\le f(n)\le c_2\cdot g(n)\quad\forall n\ge n_0\}$ (Sandwich) +\end{itemize} + +Also gilt: $T(n) = \mathcal{O}(n^2) = \mathcal{O}(n^2\cdot\log n) = \mathcal{O}(n^2\cdot\sqrt{n}) = \mathcal{O}(n^3) = \dots = \mathcal{O}(2^n) = \mathcal{O}(n^n)$. + +\begin{*anmerkung} + Die Schreibweise kann ziemlich verwirren; es hilft sich $\mathcal{O}(n^2)$ als Menge vorzustellen, die alle Funktionen enthält, die maximal so schnell wie $n^2$ wachsen. Die Schreibweise $\mathcal{O}(n^2)=\mathcal{O}(n^2\cdot\log n)$ bedeutet dann nicht, dass diese Mengen gleich sind, sondern dass die eine Menge in der anderen enthalten ist: Es gilt also $\mathcal{O}(n^2)\in\mathcal{O}(n^2\cdot\log n)$, denn $x^2 \le x^2\cdot\log x$ für alle $x$. +\end{*anmerkung} + +Sortieralgorithmen bekommen in der Regel 3 Komplexitätsangaben: +\begin{itemize} + \item \begriff{worst case}: $\mathcal{O}(\dots)$ oder $\Theta(\dots)$ + \item \begriff{average case}: $\mathcal{O}(\dots)$, $\Omega(\dots)$ oder $\Theta(\dots)$ + \item \begriff{best case}: $\Omega(\dots)$ +\end{itemize} + +Im folgenden wird die \textbf{allgemeine Annahme} gelten: Sortiert wird immer in einem eindimensionalen Feld $A$ mit Indexmenge $I$ mit der Relation $\le$ bezüglich des Schlüssels in aufsteigender Reihenfolge. + +Es gibt mindestens 2 Möglichkeiten, Datenelemente im Feld $A$ zu sortieren: +\begin{enumerate} + \item \begriff{direktes Sortieren}: Bewegen der Datenelemente inklusive key + \item \begriff{indirektes Sortieren}: Erzeugen einer Sortierpermutation $\sigma$ der Indizes, wobei nur die Indizes in einem eigenen Feld und nicht die Datenelemente bewegt werden +\end{enumerate} +Im sortierten Zustand gilt für alle $i,j\in I$: +\begin{itemize} + \item direktes Sortieren: $i < j \Rightarrow A(i) \le A(j)$ + \item indirektes Sortieren: $i < j \Rightarrow A(\sigma(i)) \le A(\sigma(j))$ +\end{itemize} + +Eine \begriff{Sortierpermutation} $\sigma$ einer Liste $A$ auf einer Indexmenge $I=\{1,\dots,n\}$ ist eine Permutation von $I$, das heißt $\{\sigma(1),\dots,\sigma(n)\}$ mit $\sigma(i)\neq\sigma(j)$ für $i\neq j$. \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Beispiele.tex b/2. Semester/PROG/TeX_files/Beispiele.tex new file mode 100644 index 0000000..b32bfc1 --- /dev/null +++ b/2. Semester/PROG/TeX_files/Beispiele.tex @@ -0,0 +1,390 @@ +\section{Beispiele} + +Neben der Zeitkomplexität $T(n)$ werden wir uns nun auch mit der Speicherkomplexität $S(n)$ beschäftigen. + +\begin{*anmerkung} + Es nicht unbedingt entscheidend, alle Komplexitäten auswendig zu lernen. Vielmehr sollte man wissen, wie die Algorithmen dahinter arbeiten und sich so die Komplexitäten herleiten. +\end{*anmerkung} + +\subsection{Fakultät} +\begin{lstlisting} +recursive function fac (n) result (res) + integer :: n + integer :: res + + if (n == 1) then + res = 1 + else + res = n*fac(n-1) + end if +end function fac +\end{lstlisting} +$\Rightarrow T(n) = \Theta(n)$, $S(n)=\Theta(n)$ + +\begin{lstlisting} +function fac_iterativ (n) + integer :: n, fac_iterativ, i + + fac_iterativ = 1 + + do i = 1, n + fac_iterativ = fac_iterativ * i + end do +end function fac_iterativ +\end{lstlisting} +$\Rightarrow T(n)=\Theta(n)$, $S(n)=\Theta(1)$ + +\subsection{Reverse String} +\begin{lstlisting} +recursive function reverse (string) result (res) + character (*), intent (in) :: string + character (len (string)) :: res + + if (len (string) == 0) then + res = "" + else + res = string(len(string):)//reverse(string(:len(string)-1)) + end if +end function reverse +\end{lstlisting} +$\Rightarrow T(n) = \Theta(n)$, $S(n)=\Theta(n)$ + +\begin{lstlisting} +program reverse_iterativ + character(80) :: str = "This is a string" + character :: temp + integer :: i, length + + write(*,*) str + length = len_trim(str) + ! Ignores trailing blanks. + ! Use len(str) to reverse those as well + + do i = 1, length/2 + temp = str(i:i) + str(i:i) = str(length+1-i:length+1-i) + str(length+1-i:length+1-i) = temp + end do + + write(*,*) str +end program reverse_iterativ +\end{lstlisting} +$\Rightarrow T(n) = \Theta(n)$, $S(n)=\Theta(n)$ + +\subsection{Primzahl} + +Um zu überprüfen, ob eine Zahl eine Primzahl ist, muss man immer bis zur Wurzel dieser Zahl auf Teiler prüfen. Egal ob man das rekursiv oder iterativ macht, $T(n)=\mathcal{O}(\sqrt{n})$. Die Speicherkomplexität ist beim rekursiven schwer vorher zu sagen, beim iterativen Algorithmus ist die $S(n)=\Theta(1)$. + +\subsection{\person{Fibinacci}-Zahlen} +\begin{lstlisting} +recursive function fibR(n) result(fib) + integer, intent(in) :: n + integer :: fib + + select case (n) + case (:0); fib = 0 + case (1); fib = 1 + case default; fib = fibR(n-1) + fibR(n-2) + end select +end function fibR +\end{lstlisting} +$\Rightarrow T(n) = \Theta(\Phi^n)$, $S(n)=\mathcal{O}(2^n)$ + +\begin{lstlisting} +function fibI(n) + integer, intent(in) :: n + integer, parameter :: fib0 = 0, fib1 = 1 + integer :: fibI, back1, back2, i + + select case (n) + case (:0); fibI = fib0 + case (1); fibI = fib1 + case default + fibI = fib1 + back1 = fib0 + do i = 2, n + back2 = back1 + back1 = fibI + fibI = back1 + back2 + end do + end select +end function fibI +\end{lstlisting} +$\Rightarrow T(n) = \Theta(n)$, $S(n)=\Theta(1)$ + +Man kann die $n$-te \person{Fibonacci}-Zahl $F_n$ auch direkt berechnen: +\begin{align} + F_n = \frac{\Phi^n-(1-\Phi^n)}{\sqrt{5}}\notag +\end{align} +Hier wird eine ganzzahlige Potenzierung benötigt, die eine Komplexität von $T(n)=\Theta(\log_2 n)$ hat. + +\subsection{Ganzzahliges Potenzieren} + +Wenn man naiv vorgeht, ist Potenzieren nichts anderes als Multiplikation $n$ mal mit sich selbst. Dann sind die Komplexitäten: $T(n)=\Theta(n)$, $S_{iter}(n)=\Theta(1)$ und $S_{rek}(n)=\Theta(n)$. + +Man kann den Prozess aber noch deutlich verbessern. Soll man zum Beispiel $5^{10}=5^8\cdot 5^2$ berechnen, so berechnet man $5^2=25$, $5^4=5^2\cdot 5^2=625$, $5^8=5^4\cdot 5^4=390.625$ und abschließend $5^{10}=5^2\cdot 5^8=9.765.625$. +\begin{itemize} + \item rekursiv: $T(n)=\Theta(\log_2 n)$, $S(n)=\Theta(\log_2 n)$ + \item iterativ: $T(n)=\Theta(\log_2 n)$, $S(n)=\Theta(1)$ +\end{itemize} + +Man kann das Potenzieren auch direkter machen: $x^n=e^{\ln x^n}=e^{n\cdot\ln x}$. Allerdings braucht man hier die Funktionen $e^x$ und $\ln$, die insgesamt langsamer als die iterative Methode sind. + +\subsection{Größter gemeinsamer Teiler} +Es gilt: +\begin{align} + \ggT(a,b) &= \ggT(a-b,b) = \ggT(a-2b,b) = ... \notag \\ + &= \ggT(a\text{ mod } b,b) = \ggT(b, a\text{ mod } b) \notag +\end{align} + +\begin{proposition}[von Lamé] + $\forall k\ge 1,k\in\natur$, wenn $a>b\ge 0$ und $b 7\cdot 10^{12}$ +\end{itemize} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Counting_Sort.tex b/2. Semester/PROG/TeX_files/Counting_Sort.tex new file mode 100644 index 0000000..ee25331 --- /dev/null +++ b/2. Semester/PROG/TeX_files/Counting_Sort.tex @@ -0,0 +1,48 @@ +\section{Counting Sort} + +Der Counting Sort-Algorithmus ist dann besonders gut, wenn alle möglichen Schlüsselwerte aus der Menge $S=\{0,1,2,...,k-1\}$ kommen. Wenn $k=\mathcal{O}(n)$, dann können wir mit Counting Sort in der Zeit $T(n)=\mathcal{O}(n)$ sortieren. Benötigt werden 3 eindimensionale Felder: +\begin{itemize} + \item \texttt{A(1:n)} Originaldaten/-schlüsselwerte + \item \texttt{B(1:n)} für sortierte Werte + \item \texttt{C(0:k-1)} Feld von Zählern +\end{itemize} +Der Algorithmus zählt, wie oft jeder Wert in der Eingabe vorkommt. Diese Anzahlen speichert er in einem zusätzlichen Array mit $k$ Feldern ab. Mit Hilfe dieses Arrays wird anschließend für jeden Schlüsselwert die Zielposition in der Ausgabe berechnet. + +\begin{*anmerkung} + Der Counting Sort ist also dann besonders gut, wenn man alle Einwohner Deutschlands ($\sim$ 81 Millionen) nach ihrem Alter ($S=\{0,...,150\}$) sortieren möchte. \\ + Der Counting Sort eignet sich nicht dafür die Studenten der PROG-Vorlesung ($\sim$ 30 \smiley{}) nach ihrem Nachnamen (40 Zeichen $\Rightarrow S=\{0,...,26^{40}\}$) zu sortieren. +\end{*anmerkung} + +\begin{lstlisting} +subroutine counting_sort_a(array) + integer, dimension(:), intent(inout) :: array + + call counting_sort_mm(array, minval(array), maxval(array)) +end subroutine counting_sort_a + +subroutine counting_sort_mm(array, tmin, tmax) + integer, dimension(:), intent(inout) :: array + integer, intent(in) :: tmin, tmax + integer, dimension(tmin:tmax) :: cnt + integer :: i, z + + cnt = 0 ! Initialize to zero to prevent false counts + + forall (i=1:z) + ! Not sure that this gives any benefit over a DO loop. + cnt(array(i)) = cnt(array(i))+1 + end forall + + ! ok - cnt contains the frequency of every value + ! let's unwind them into the original array + + z = 1 + do i = tmin, tmax + do while ( cnt(i) > 0 ) + array(z) = i + z = z + 1 + cnt(i) = cnt(i) - 1 + end do + end do +end subroutine counting_sort_mm +\end{lstlisting} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Heapsort.tex b/2. Semester/PROG/TeX_files/Heapsort.tex new file mode 100644 index 0000000..e78e18d --- /dev/null +++ b/2. Semester/PROG/TeX_files/Heapsort.tex @@ -0,0 +1,76 @@ +\section{Heapsort} + +\begin{*anmerkung} + Das folgende Kapitel ist ziemlich durcheinander; ich glaube Prof. Walter wusste selber nicht so richtig, was er wollte. Es empfiehlt sich ein Youtube-Tutorial anzuschauen, um zu verstehen, wie Heapsort funktioniert. +\end{*anmerkung} + +Ein binärer \begriff{Heap} ist ein vollständiger Binärbaum mit der sogenannten \begriff{Heap-Eigenschaft}: Ein vollständiger Binärbaum hat alle Schichten ab der Wurzel voll besetzt bis auf eventuell die letzte, die von links nach rechts bis zum letzten Knoten besetzt ist. Die Vollständigkeit garantiert, dass ein eindimensionales Feld \texttt{A(1:n)} mit den Elementen des Heaps in Levelorder abgespeichert keine Lücken aufweist. Außerdem gilt: +\begin{lstlisting} +! Index des linken Kindknotens des Knotens mit Index i +Left(i) = 2*i +! Index des rechten Kindknotens des Knotens mit Index i +Right(i) = 2*i+1 +! i/2 ist Index des Elternknotens +Parent(i) = i/2 +\end{lstlisting} +$\Rightarrow$ Dualität eines Heaps und eines vollständigen Binärbaums; außerdem Höhe $h=\Theta(\log_2 n)$. + +\textbf{Zusätzliche Heap-Eigenschaft}: $A_{\texttt{Parent(i)}} \ge A_\texttt{i}$, das heißt Schlüsselwert des Elternelements $\ge$ Schlüsselwerte der beiden Kindknoten. + +Um aus einem Feld $A$ einen Heap zu machen, brauchen wir eine Subroutine \texttt{Heapify}. Die folgenden Quelltexte sind nur ein Konzept, soweit ich weiß, muss man sie nirgendwo reproduzieren. +\begin{lstlisting} +n = size(A) + +subroutine Heapify(A,i) + r = Right(i) + l = Left(i) + maxix = i + + if(l <= size .and. A_l > A_i) then + maxix = l + end if + if(r <= size .and. A_r > A_maxix) then + maxix = r + end if + if(maxix /= i) then + tausche(A_i,A_maxix) + Heapify(A,maxix) + end if +end subroutine Heapify +\end{lstlisting} + +Der Zeitaufwand für \texttt{Heapify(A,i)} ist proportional zur Höhe des Knotens mit Index $i$: \\ +$T_\texttt{Heapify}=\mathcal{O}(h)$ mit $h=$\texttt{height(A,i)}$=\mathcal{O}(\log_2 n)$. + +\begin{lstlisting} +subroutine BuildHeap(A) + size = n + + do i = n/2, 1, -1 + Heapify(A,i) + end do +end subroutine BuildHeap +\end{lstlisting} + +Versuchen wir uns an einer Komplexitätsanalyse: $T_\texttt{BuildHeap}(n) = \mathcal{O}\left(\frac{n}{2}\log_2 n\right) = \mathcal{O}(n\log_2 n)$. Eine bessere Analyse bekommen wir, wenn die Höhe der Knoten betrachten: In einem Heap haben höchstens $\left\lceil\frac{n}{2^{n+1}}\right\rceil$ Knoten die Höhe $h$. \\ +$\Rightarrow$ Gesamtaufwand für \texttt{BuildHeap}: +\begin{align} + \sum_{h=0}^{\lfloor\log_2 n\rfloor}\left\lceil\frac{n}{2^{h+1}}\right\rceil\cdot\mathcal{O}(h) &= \mathcal{O}\left( n\cdot\sum_{h=0}^{\lfloor\log_2 n\rfloor} h\cdot \left( \frac{1}{2}\right)^h\right) \notag \\ + \sum_{k=0}^n x^k &= \frac{x^{n+1}-1}{x-1} \notag \\ + 0, thick] (-3.5,-2.5) -- (-2,-1.5); + \draw (-6,-1) -- (-5,-1); + \draw (-6,-3) -- (-5,-3); + \draw (-6,-1) -- (-6,-3); + \draw (-5,-1) -- (-5,-3); + \draw (-6,-2) -- (-5,-2); + \draw[fill=black] (-5.5,-2.5) circle (0.1); + \draw[->, thick] (-5.5,-2.5) -- (-4,-1.5); + \draw (-2,-1) -- (-1,-1); + \draw (-2,-3) -- (-1,-3); + \draw (-2,-1) -- (-2,-3); + \draw (-1,-1) -- (-1,-3); + \draw (-2,-2) -- (-1,-2); + \draw[fill=black] (-1.5,-2.5) circle (0.1); + \draw[->, thick] (-1.5,-2.5) -- (-0.8,-2.5); + \draw (-0.8,-2.2) -- (-0.8,-2.8); + \draw (-0.7,-2.2) -- (-0.7,-2.8); + + \draw[thick] (0,-1) -- (0,-3); + + \draw (4,-1) -- (3,-1); + \draw (4,-3) -- (3,-3); + \draw (4,-1) -- (4,-3); + \draw (3,-1) -- (3,-3); + \draw (4,-2) -- (3,-2); + \draw[fill=black] (3.5,-2.5) circle (0.1); + \draw[->, thick] (1.5,-2.5) -- (3,-1.5); + \draw (6,-1) -- (5,-1); + \draw (6,-3) -- (5,-3); + \draw (6,-1) -- (6,-3); + \draw (5,-1) -- (5,-3); + \draw (6,-2) -- (5,-2); + \draw[fill=black] (5.5,-2.5) circle (0.1); + \draw[->, thick] (3.5,-2.5) -- (5,-1.5); + \draw (2,-1) -- (1,-1); + \draw (2,-3) -- (1,-3); + \draw (2,-1) -- (2,-3); + \draw (1,-1) -- (1,-3); + \draw (2,-2) -- (1,-2); + \draw[fill=black] (1.5,-2.5) circle (0.1); + \draw[thick] (5.5,-2.5) -- (5.5,-3.5); + \draw[thick] (5.5,-3.5) -- (0.5,-3.5); + \draw[thick] (0.5,-3.5) -- (0.5,-1.5); + \draw[->, thick] (0.5,-1.5) -- (1,-1.5); + \end{tikzpicture} +\end{center} + +\begin{center} + \begin{tikzpicture} + \node at (0,0) (lz) {einfach verkettet vs. doppelt verkettet}; + \draw (-4,-1) -- (-3,-1); + \draw (-4,-3) -- (-3,-3); + \draw (-4,-1) -- (-4,-3); + \draw (-3,-1) -- (-3,-3); + \draw (-4,-2) -- (-3,-2); + \draw[fill=black] (-3.5,-2.5) circle (0.1); + \draw[->, thick] (-3.5,-2.5) -- (-2,-1.5); + \draw (-6,-1) -- (-5,-1); + \draw (-6,-3) -- (-5,-3); + \draw (-6,-1) -- (-6,-3); + \draw (-5,-1) -- (-5,-3); + \draw (-6,-2) -- (-5,-2); + \draw[fill=black] (-5.5,-2.5) circle (0.1); + \draw[->, thick] (-5.5,-2.5) -- (-4,-1.5); + \draw (-2,-1) -- (-1,-1); + \draw (-2,-3) -- (-1,-3); + \draw (-2,-1) -- (-2,-3); + \draw (-1,-1) -- (-1,-3); + \draw (-2,-2) -- (-1,-2); + \draw[fill=black] (-1.5,-2.5) circle (0.1); + \draw[->, thick] (-1.5,-2.5) -- (-0.8,-2.5); + \draw (-0.8,-2.2) -- (-0.8,-2.8); + \draw (-0.7,-2.2) -- (-0.7,-2.8); + + \draw[thick] (0,-1) -- (0,-4); + + \draw (4,-1) -- (3,-1); + \draw (4,-3) -- (3,-3); + \draw (4,-1) -- (4,-3); + \draw (3,-1) -- (3,-3); + \draw (4,-2) -- (3,-2); + \draw[fill=black] (3.5,-2.5) circle (0.1); + \draw[->, thick] (1.5,-2.5) -- (3,-1.5); + \draw (4,-3) -- (4,-4); + \draw (4,-4) -- (3,-4); + \draw (3,-4) -- (3,-3); + \draw[fill=black] (3.5,-3.5) circle (0.1); + \draw[->, thick] (3.5,-3.5) -- (2,-1.5); + \draw (6,-1) -- (5,-1); + \draw (6,-3) -- (5,-3); + \draw (6,-1) -- (6,-3); + \draw (5,-1) -- (5,-3); + \draw (6,-2) -- (5,-2); + \draw[fill=black] (5.5,-2.5) circle (0.1); + \draw[->, thick] (3.5,-2.5) -- (5,-1.5); + \draw (2,-1) -- (1,-1); + \draw (2,-3) -- (1,-3); + \draw (2,-1) -- (2,-3); + \draw (1,-1) -- (1,-3); + \draw (2,-2) -- (1,-2); + \draw (1,-3) -- (1,-4); + \draw (1,-4) -- (2,-4); + \draw (2,-4) -- (2,-3); + \draw[fill=black] (1.5,-3.5) circle (0.1); + \draw[->, thick] (1.5,-3.5) -- (0.8,-3.5); + \draw (0.8,-3.2) -- (0.8,-3.8); + \draw (0.7,-3.2) -- (0.7,-3.8); + \draw[fill=black] (1.5,-2.5) circle (0.1); + \draw[->, thick] (5.5,-2.5) -- (6.2,-2.5); + \draw (6.2,-2.2) -- (6.2,-2.8); + \draw (6.3,-2.2) -- (6.3,-2.8); + \draw (6,-3) -- (6,-4); + \draw (5,-4) -- (6,-4); + \draw (5,-4) -- (5,-3); + \draw[fill=black] (5.5,-3.5) circle (0.1); + \draw[->, thick] (5.5,-3.5) -- (4,-1.5); + \end{tikzpicture} +\end{center} + +Eine Liste hat immer gewisse Einfüge- und Löschoperationen. Wenn diese an beiden Enden der Liste notwendig sind, spricht man von einer \begriff{Deque} = double-ended-queue. + +\subsection{Grundoperationen auf einer Liste} + +\begin{longtable}{p{0.25\textwidth}|p{0.4\textwidth}|p{0.25\textwidth}} + \texttt{init(L)} & Initalisierung der Liste, Anfangszustand "'leer"' & \\ + \hline + \texttt{empty(L)} & als Abfragefunktion $\to$ \texttt{.true.} falls \texttt{L} leer, sonst \texttt{.false.} & \\ + \hline + \texttt{access\_head(L,e)} & als Subroutine, gibt in \texttt{e} den Wert des head-Elements & head = Beginn einer Liste \\ + \hline + \texttt{val\_head(L)} & als Funktion $\to$ Ergebnis ist Inhalt des head-Elements & \\ + \hline + \texttt{access\_tail(L,e)} & als Subroutine, gibt in \texttt{e} den Wert des tail-Elements & tail = Ende einer Liste \\ + \hline + \texttt{val\_tail(L)} & als Funktion $\to$ Ergebnis ist Inhalt des tail-Elements & \\ + \hline + \texttt{val\_elem(L,p)} & liefert Inhalt des durch \texttt{p} referenzierten Elements & \\ + \hline + \multicolumn{3}{p{\textwidth}}{\cellcolor{lightgray}\textbf{insert}} \\ + \hline + \texttt{insert\_head(L,e)} & Einfügen des Elements \texttt{e} am Anfang der Liste \texttt{L} & anderer Name: \texttt{push} \\ + \hline + \texttt{insert\_tail(L,e)} & Einfügen des Elements \texttt{e} am Ende der Liste \texttt{L} & anderer Name: \texttt{inject} \\ + \hline + \texttt{insert\_after(L,p,e)} & Einfügen des Elements \texttt{e} nach dem von \texttt{p} referenzierten Element & \\ + \hline + \texttt{insert\_before(L,p,e)} & Einfügen des Elements \texttt{e} vor dem von \texttt{p} referenzierten Element & \\ + \hline + \multicolumn{3}{p{\textwidth}}{\cellcolor{lightgray}\textbf{delete}} \\ + \hline + \texttt{del\_head(L,e)} & Löschen des Elements \texttt{e} am Anfang der Liste \texttt{L} & anderer Name: \texttt{pop} \\ + \hline + \texttt{del\_tail(L,e)} & Löschen des Elements \texttt{e} am Ende der Liste \texttt{L} & anderer Name: \texttt{eject} \\ + \hline + \texttt{del\_after(L,p,e)} & Löschen des Elements \texttt{e} nach dem von \texttt{p} referenzierten Element & \\ + \hline + \texttt{del\_elem(L,p,e)} & Löschen eines Elements \texttt{e}, welches von \texttt{p} referenziert wird & \\ + \hline + \multicolumn{3}{p{\textwidth}}{\cellcolor{lightgray}\textbf{Traversieren (Durchlaufen aller Elemente) der Liste \texttt{L} und Ausführen einer Task \texttt{T} auf jedem Element}} \\ + \hline + \texttt{trav\_forward(L,T[,p])} & vorwärts, optional ab dem von \texttt{p} referenzierten Element \\ + \hline + \texttt{trav\_backward(L,T[,p])} & rückwärts, optional ab dem von \texttt{p} referenzierten Element \\ + \hline + \multicolumn{3}{p{\textwidth}}{\cellcolor{lightgray}\textbf{Suchen eines Elements mit dem Inhalt \texttt{e}}} \\ + \hline + \texttt{find\_forward(L,e[,p])} & vorwärts, optional ab dem von \texttt{p} referenzierten Element \\ + \hline + \texttt{find\_backward(L,e[,p])} & rückwärts, optional ab dem von \texttt{p} referenzierten Element \\ +\end{longtable} + +\subsection{Grundoperationen auf einer Deque} + +Der einfachste Fall ist der einer linearen, nicht zyklischen, einfach verketteten, endogenen Liste mit \texttt{s} als head-Pointer. + +\subsubsection*{\texttt{push(s,elem)}} + +\begin{center} + \begin{tikzpicture} + \draw (0,-1) -- (1,-1); + \draw (0,-2) -- (1,-2); + \draw (0,-1) -- (0,-2); + \draw (1,-1) -- (1,-2); + \draw[fill=black] (0.5,-1.5) circle (0.1); + \draw[->, thick, dashed] (0.5,-1.5) -- (0.5,-3); + \draw[->, thick] (0.5,-1.5) -- (-3.5,-3); + \node at (0.5,-0.5) (s) {\texttt{s}}; + + \draw (0,-3) -- (0,-5); + \draw (0,-3) -- (1,-3); + \draw (1,-3) -- (1,-5); + \draw (0,-5) -- (1,-5); + \draw (0,-4) -- (1,-4); + \draw[fill=black] (0.5,-4.5) circle (0.1); + \draw[->, thick] (0.5,-4.5) -- (2,-3.5); + \node at (0.5,-5.5) (alt) {alter head}; + + \draw (2,-3) -- (2,-5); + \draw (2,-3) -- (3,-3); + \draw (3,-3) -- (3,-5); + \draw (2,-5) -- (3,-5); + \draw (2,-4) -- (3,-4); + \draw[fill=black] (2.5,-4.5) circle (0.1); + \draw[->, thick] (2.5,-4.5) -- (4,-3.5); + \node at (4.4,-3.5) (n) {...}; + + \draw[red] (-2,-1) -- (-1,-1); + \draw[red] (-2,-2) -- (-1,-2); + \draw[red] (-2,-1) -- (-2,-2); + \draw[red] (-1,-1) -- (-1,-2); + \draw[fill=red, red] (-1.5,-1.5) circle (0.1); + \draw[->, thick, red] (-1.5,-1.5) -- (0.5,-3); + \node[red] at (-1.5,-0.5) (s) {\texttt{p}}; + + \draw[blue] (-4,-3) -- (-3,-3); + \draw[blue] (-4,-3) -- (-4,-5); + \draw[blue] (-3,-3) -- (-3,-5); + \draw[blue] (-4,-4) -- (-3,-4); + \draw[blue] (-4,-5) -- (-3,-5); + \draw[fill=blue, blue] (-3.5,-4.5) circle (0.1); + \draw[->, thick, red] (-3.5,-4.5) -- (0,-3.5); + \node[blue] at (-3.5,-5.5) (neu) {neues Element}; + \end{tikzpicture} +\end{center} + +Zuerst haben wir die schwarze Liste mit \texttt{s} als heap-Pointer. Für spätere Verwendung setzen wir noch den Nachfolger eines \textcolor{red}{\texttt{p}}-Pointer auf den head. Jetzt wird das \textcolor{blue}{neue Element} eingefügt und der \texttt{s}-Pointer zeigt auf den neuen head. Der Nachfolger des neuen head muss nun noch auf \textcolor{red}{\texttt{p}} zeigen, was ja auf den alten head zeigt. Schon ist das \textcolor{blue}{neue Element} eingebunden. + +\subsubsection*{\texttt{pop(s,elem)}} + +\begin{center} + \begin{tikzpicture} + \draw (0,-1) -- (1,-1); + \draw (0,-2) -- (1,-2); + \draw (0,-1) -- (0,-2); + \draw (1,-1) -- (1,-2); + \draw[fill=black] (0.5,-1.5) circle (0.1); + \draw[->, thick, dashed] (0.5,-1.5) -- (0.5,-3); + \draw[->, thick] (0.5,-1.5) -- (2.5,-3); + \node at (0.5,-0.5) (s) {\texttt{s}}; + + \draw (0,-3) -- (0,-5); + \draw (0,-3) -- (1,-3); + \draw (1,-3) -- (1,-5); + \draw (0,-5) -- (1,-5); + \draw (0,-4) -- (1,-4); + \draw[fill=black] (0.5,-4.5) circle (0.1); + \draw[->, thick] (0.5,-4.5) -- (2,-3.5); + \node at (0.5,-5.5) (alt) {alter head}; + + \draw (2,-3) -- (2,-5); + \draw (2,-3) -- (3,-3); + \draw (3,-3) -- (3,-5); + \draw (2,-5) -- (3,-5); + \draw (2,-4) -- (3,-4); + \draw[fill=black] (2.5,-4.5) circle (0.1); + \draw[->, thick] (2.5,-4.5) -- (4,-3.5); + \node at (2.5,-5.5) (neu) {neuer head}; + \node at (4.4,-3.5) (n) {...}; + + \draw[red] (-2,-1) -- (-1,-1); + \draw[red] (-2,-2) -- (-1,-2); + \draw[red] (-2,-1) -- (-2,-2); + \draw[red] (-1,-1) -- (-1,-2); + \draw[fill=red, red] (-1.5,-1.5) circle (0.1); + \draw[->, thick, red] (-1.5,-1.5) -- (0.5,-3); + \node[red] at (-1.5,-0.5) (s) {\texttt{p}}; + \end{tikzpicture} +\end{center} + +Wir haben wieder die schwarze Liste mit \texttt{s}-Pointer. Um auf den alten head zugreifen zu können, benutzen wir wieder den Hilfspointer \textcolor{red}{\texttt{p}}. Den \texttt{s}-Pointer setzen wir dann auf den Nachfolger des alten heads. + +\subsubsection*{\texttt{inject(t,elem)}} + +Der Nachfolger des alten tails zeigt nun auf das neue Element. Dann muss nur noch der tail-Pointer angepasst werden und der Nachfolger des neuen tails muss mit \texttt{nullify} auf Null gesetzt werden. + +\subsubsection*{\texttt{eject(t,elem)}} + +Hier bekommen wir ein Problem! Nicht das es nicht möglich wäre das letzte Element zu löschen, aber der Vorgänger des tail-Elements kann nur gefunden werden, indem man die ganze Liste durchläuft. Das heißt die Laufzeitkomplexität dieser Operation beträgt $T(n)=\mathcal{O}(n)$. Die Dauer dieser Operation ist also von der Listenlänge abhängig! \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Mergesort.tex b/2. Semester/PROG/TeX_files/Mergesort.tex new file mode 100644 index 0000000..c062904 --- /dev/null +++ b/2. Semester/PROG/TeX_files/Mergesort.tex @@ -0,0 +1,99 @@ +\section{Mergesort} + +\subsection{2-Wege-Mergesort} + +Den Mergesort-Algorithmus gibt es in 2 Varianten: rekursiv und iterativ. Schauen wir uns zuerst die rekursive Variante an: +\begin{enumerate} + \item falls $L$ leer oder nur 1 Element enthält $\to$ ok, return + \item divide: Teile $L$ in 2 möglichst gleich lange Teillisten $L_1$ und $L_2$ und mache darauf rekursive Aufrufe \texttt{Mergesort(L\_1)} und \texttt{Mergesort(L\_2)}. + \item conquer: Merge von $L_1$ und $L_2$ +\end{enumerate} + +\begin{lstlisting} +! kann nur 10 Elemente sortieren, kann man aber anpassen + +subroutine _merge(lst, a, middle, b) + integer a + integer b + integer middle + integer lst(10) + integer tmp(10) + integer ai + integer bi + integer ti + integer x + ai = a + bi = middle + ti = a + + do while ((ai < middle) .or. (bi < b)) + if (ai == middle) then + tmp(ti+1) = lst(bi+1) + bi = bi + 1 + else if (bi == b) then + tmp(ti+1) = lst(ai+1) + ai = ai + 1 + else if (lst(ai+1) < lst(bi+1)) then + tmp(ti+1) = lst(ai+1) + ai = ai + 1 + else + tmp(ti+1) = lst(bi+1) + bi = bi + 1 + end if + + ti = ti + 1 + end do + do x = a, b - 1 + lst(x + 1) = tmp(x + 1) + end do +end subroutine _merge + +recursive subroutine mergesort(lst, a, b) + integer a + integer b + integer lst(10) + integer diff + diff = b - a + + if (diff < 2) then + return + else + diff = diff / 2 + call mergesort(lst, a, a + diff) + call mergesort(lst, a + diff, b) + call _merge(lst, a, a + diff, b) + endif +end subroutine mergesort +\end{lstlisting} + +Mergesort ist nicht in situ. $T(n)=\mathcal{O}(n\log_2 n)$. All Lese- und Schreiboperationen sind streng sequenziell. + +Die iterative Variante verläuft ähnlich, verwendet aber 4 Listen $L_1$, $L_2$, $L_3$ und $L_4$. +\begin{enumerate} + \item Init: Teile $L$ in 2 möglichst gleich große Teillisten $L_1$ und $L_2$ + \item Erzeuge 2 Listen sortierter Paare, $L_3$ und $L_4$, indem positionell sich entsprechende Elemente von $L_1$ und $L_2$ jeweils zu einem sortierten Paar gemacht werden und in die zuletzt nicht benutzte Liste $L_3$ bzw. $L_4$ (immer abwechselnd) geschrieben werden + \item Erzeuge 2 Listen sortierter Quadrupel in $L_1$ und $L_2$ + \item Erzeuge 2 Listen sortierter Oktupel in $L_3$ und $L_4$ + \item ... +\end{enumerate} + +Die Komplexität ist auch hier $T(n)=\mathcal{O}(n\log_2 n)$, tatsächlich ist die Zeit $T(n)=\Theta(n\log_2 n)$ immer die selbe, egal ob best- oder worst case. + +\subsection{$k$-Wege-Mergesort} + +Hier existiert nur eine rekursive Variante, in der die Liste in $k$ Teillisten aufgeteilt wird. Man kann aber auch mit $k$ Input-Listen und $k$ Output-Listen arbeiten. Noch einige Bemerkungen: +\begin{itemize} + \item Für den Mergeschritt wird ein $k$-elementiger Vektor von Schlüsselwerten benötigt, um die jeweils aktuellen Kopfelemente der $k$ zu verschmelzenden Listen sortiert zu speichern. + \item Die Anzahl der Durchläufe reduziert sich gegenüber dem 2-Wege-Mergesort von $\lceil\log_2 n\rceil$ auf $\lceil\log_k n\rceil$, also um den Faktor $\frac{1}{\log_2 k}=\log_k 2$, zum Beispiel bei $k=1024=2^{10}$ Teillisten auf $\frac{1}{10}$. +\end{itemize} + +\begin{tabularx}{\textwidth}{X|p{0.13\textwidth}p{0.1\textwidth}p{0.09\textwidth}p{0.1\textwidth}p{0.08\textwidth}|p{0.17\textwidth}} + \rowcolor{lightgray} \textbf{Markoschritt} & \textbf{produziert} & \textbf{$k$-Tupel sortieren} & \textbf{Anzahl Elemente} & \textbf{Aufwand Insertion-Schritt} & \textbf{Anzahl Tupel} & \textbf{Aufwand} \\ + \hline + \textbf{1} & $k$-Tupel: $\mathcal{O}($ & $(k\log_2 k+$ & $0\cdot$ & $\mathcal{O}(k))$ & $\cdot\frac{n}{k})$ & $\mathcal{O}(n\log_2 k)$ \\ + \textbf{2} & $k^2$-Tupel: $\mathcal{O}($ & $(k\log_2 k+$ & $k(k-1)\cdot$ & $\mathcal{O}(k))$ & $\cdot\frac{n}{k^2})$ & $\mathcal{O}(nk)$ \\ + \textbf{3} & $k^3$-Tupel: $\mathcal{O}($ & $(k\log_2 k+$ & $(k^3-k)\cdot$ & $\mathcal{O}(k))$ & $\cdot\frac{n}{k^3})$ & $\mathcal{O}(nk)$ \\ + \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ + \hline + &&&&&& $\Sigma = \mathcal{O}(kn\log_2 n)$ \\ +\end{tabularx} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Multiplikation.tex b/2. Semester/PROG/TeX_files/Multiplikation.tex new file mode 100644 index 0000000..adeb3f6 --- /dev/null +++ b/2. Semester/PROG/TeX_files/Multiplikation.tex @@ -0,0 +1,239 @@ +\section{Multiplikation $n$-stelliger ganzer Zahlen} + +Zuerst müssen wir uns mit dem sogenannten \begriff{Shifting} beschäftigen. Shifting ist ein Vorgang, der das Bitmuster einer Zahl verschiebt. Man unterscheidet 4 Arten des Shifting: +\begin{itemize} + \item \begriff[Shifting!]{logischer Links-Shift} $\texttt{LSHIFT}_1(a)$: verschiebt das Bitmuster von $a$ um 1 Zeichen nach links, $a_k$ fliegt raus, es werden Nullen eingefügt. + \item \begriff[Shifting!]{logischer Rechts-Shift} $\texttt{RSHIFT}_1(a)$: verschiebt das Bitmuster von $a$ um 1 Zeichen nach rechts, $a_0$ fliegt raus, es werden Nullen eingefügt. + \item \begriff[Shifting!]{arithmetischer Links-Shift} $\texttt{ALSHIFT}_1(a)$: verschiebt das Bitmuster von $a$ um 1 Zeichen nach links, $a_k$ fliegt raus, es wird der Wert des rechtesten Bits eingefügt. + \item \begriff[Shifting!]{arithmetischer Rechts-Shift} $\texttt{ARSHIFT}_1(a)$: verschiebt das Bitmuster von $a$ um 1 Zeichen nach rechts, $a_0$ fliegt raus, es wird der Wert des linkesten Bits eingefügt. +\end{itemize} + +Man kann die Multiplikation $a\cdot b$ auch als wiederholte Summation auffassen: $\sum\limits_{i=0}^{n-1} a_i\cdot 2^i\cdot b$. In heutigen Rechnern sind allerdings Addition und Multiplikation gleich schnell. Man kann diese wiederholte Addition aber auch deutlich verbessern: +\begin{itemize} + \item Gruppe von $k$ Nullen in $a$: sofortiger $\texttt{ARShift}_k(a)$ + \item Gruppe von $k$ Einsen in $a$: $a=[\dots 0\underbrace{\overbrace{1}^{i}\dots\overbrace{1}^{j}}_k0\dots]$. Dann + \begin{align} + \sum_{i=j}^{l} 2^i = 2^{l+1}-2^j=2^{j+k}-2^j\notag + \end{align} +\end{itemize} + +Der \begriff{\person{Booth}-Algorithmus} ist eine andere Art der Optimierung. Die Idee ist, dass $a\cdot b$ mit $b=c-d$ $a\cdot b=a\cdot c-a\cdot d$ ergibt. Dazu muss der erste Faktor kodiert werden: Dazu sei $Y=[y_{n-1}\dots y_0]_2$ der zu kodierende Operand. An diesen fügt man eine weitere Stelle $y_{-1}=0$ ein. Der kodierte Operand $Y'=[y'_{n-1}\dots y'_0y_{-1}]_2$ und wir mit $y'_i=y_{i-1}-y_i$ berechnet. + +Um den \person{Booth}-Algorithmus zu zeigen, wollen wir $[44]_{10}=[00101100]_2$ mit $[17]_{10}=[00010001]_2$ multiplizieren: \\ +\begin{tabularx}{\textwidth}{XXXXXXXXXXXXXXXXX|p{3.2cm}} + & + & + \cellcolor{lightgray} & \cellcolor{lightgray} & \cellcolor{lightgray} & \cellcolor{lightgray} & \cellcolor{lightgray} & \cellcolor{lightgray} & \cellcolor{lightgray} & + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \cellcolor{gray} 1 & + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \cellcolor{gray} 1 & + \tiny 2. Faktor \\ + $\cdot$ & + & + \cellcolor{lightgray} & \cellcolor{lightgray} & \cellcolor{lightgray} & \cellcolor{lightgray} & \cellcolor{lightgray} & \cellcolor{lightgray} & \cellcolor{lightgray} & + \cellcolor{gray} 0 & + \cellcolor{gray} 1 & + \cellcolor{gray} -1 & + \cellcolor{gray} 1 & + \cellcolor{gray} 0 & + \cellcolor{gray} -1 & + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \tiny Kodierung 1. Faktor \\ + \hline + + & + & + \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + \tiny keine Addition \\ + + & + & + \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + \cellcolor{lightgray} & + \tiny keine Addition \\ + + & + & + \cellcolor{lightgray} 1& \cellcolor{lightgray} 1& \cellcolor{lightgray} 1& \cellcolor{lightgray} 1& \cellcolor{lightgray} 1& + 1 & + 1 & + 1 & + 1 & + 1 & + 1 & + 1 & + 1 & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \tiny 2er Komplement (2. Faktor) \\ + + & + & + \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \tiny keine Addition \\ + + & + & + \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& \cellcolor{lightgray} 0& + 0 & + 0 & + 0 & + 1 & + 0 & + 0 & + 0 & + 1 & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \tiny 2. Faktor \\ + + & + & + \cellcolor{lightgray} 1& \cellcolor{lightgray} 1& + 1 & + 1 & + 1 & + 1 & + 1 & + 1 & + 1 & + 1 & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \tiny 2er Komplement (2. Faktor) \\ + + & + & + \cellcolor{lightgray} 0& + 0 & + 0 & + 0 & + 1 & + 0 & + 0 & + 0 & + 1 & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \tiny 2. Faktor \\ + + & + & + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + 0 & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \cellcolor{lightgray} & + \tiny keine Addition \\ + \hline + \cellcolor{lightgray} 1 & + \cellcolor{lightgray} 0& + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \cellcolor{gray} 1 & + \cellcolor{gray} 0 & + \cellcolor{gray} 1 & + \cellcolor{gray} 1 & + \cellcolor{gray} 1 & + \cellcolor{gray} 0 & + \cellcolor{gray} 1 & + \cellcolor{gray} 1 & + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \tiny Ergebnis ohne Überlauf \\ + \hline + = & + & + \cellcolor{gray} & + \cellcolor{gray} & + \cellcolor{gray} & + \cellcolor{gray} & + \cellcolor{gray} & + \cellcolor{gray} 1 & + \cellcolor{gray} 0 & + \cellcolor{gray} 1 & + \cellcolor{gray} 1 & + \cellcolor{gray} 1 & + \cellcolor{gray} 0 & + \cellcolor{gray} 1 & + \cellcolor{gray} 1 & + \cellcolor{gray} 0 & + \cellcolor{gray} 0 & + \tiny Ergebnis mit Überlauf \\ +\end{tabularx} + +Dazu noch ein paar Bemerkungen: +\begin{itemize} + \item Statt also mit $[0100000]_2$, $[0001000]_2$ und $[0000100]_2$ zu multiplizieren und die Ergebnisse zu addieren, wird nun also mit $[1000000]_2$, $[0100000]_2$, $[0010000]_2$ und $[0000100]_2$ multipliziert und die Ergebnisse addiert bzw. subtrahiert. + \item Wie man am Beispiel sieht, kann sich die Anzahl der Additionen auch erhöhen (im Beispiel von 3 auf 4), was aber eigentlich nicht gewünscht ist. Im statistischen Durchschnitt werden im \person{Booth}-Verfahren genauso viele Additionen gebraucht wie ohne \person{Booth}-Verfahren. Der Vorteil liegt aber darin, dass in der Informatik keine Gleichverteilung von Zahlen vorliegt. Vielmehr gibt es häufig Zahlen mit vielen Nullen und durch das Zweierkomplement bei negativen Zahlen häufig viele Einsen am Anfang. Nur durch diese Tatsache hat das \person{Booth}-Verfahren Vorteile gegenüber einer normalen Multiplikation. + \item Das Verfahren produziert das richtige Ergebnis: $44\cdot 17=[748]_{10}=[1011101100]_2$. +\end{itemize} + +Die 3. Möglichkeit die Multiplikation zu verbessern, ist der \begriff{\person{Wallace}-Tree}. Die Idee dahinter ist folgende: +\begin{align} + \underbrace{\left(\sum_{k=0}^{n} a_k2^k\right)}_{\text{Binärdarstellung }a}\cdot \underbrace{\left(\sum_{k=0}^{n} b_k2^k\right)}_{\text{Binärdarstellung }b} = \sum_{k=0}^{2n}\sum_{i+j=k} a_ib_j2^k\notag +\end{align} + +Der \person{Wallace}-Tree-Multiplizierer geht in 3 Schritten vor: +\begin{enumerate} + \item Berechne für jedes Paar $(i,j)$ mit $1\le i\le n$ und $1\le j\le k$ das Partialprodukt $a_ib_j2^{i+j}$. + \item Addiere die Resultate dieser Berechnung innerhalb der für den \person{Wallace}-Tree-Multiplizierer spezifischen Baumstruktur stufenweise mithilfe von Voll- und Halbaddierern, bis nur noch 2 Zahlen übrig sind, die addiert werden müssen. + \item Addiere diese beiden Zahlen mit einem normalen Addierwerk (Carry-Lookahead-Adder). +\end{enumerate} + +Der \person{Wallace}-Tree benutzt den Carry-Save-Adder (CSA), der 3 Zahlen addieren kann und 2 Zahlen ausgibt: Die Sequenz der Partialsummen und die Sequenz der Übertragsbits $\to$ 2 gleich lange Zahlen + +\begin{figure}[ht] + \centering + \includegraphics[width=10cm]{images/Wallace-Tree.png} + \caption{\person{Wallace}-Tree} +\end{figure} + +Die Komplexität des \person{Wallace}-Tree ist $T(n)=\mathcal{O}(\log n)$, also in etwa genau so lange wie die Addition! \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Priority_Queue.tex b/2. Semester/PROG/TeX_files/Priority_Queue.tex new file mode 100644 index 0000000..a8c98a9 --- /dev/null +++ b/2. Semester/PROG/TeX_files/Priority_Queue.tex @@ -0,0 +1,65 @@ +\section{Priority Queue} + +Eine Priority Queue ist eine Art von Warteschlange, die nicht nach dem FIFO-Prinzip arbeitet, sondern die Elemente entsprechend ihrer Priorität (ein spezieller Key) behandelt. Implementiert wird dies durch einen Heap in einem eindimensionalen Feld. + +\begin{*anmerkung} + Die Grundoperationen einer Priority Queue und deren Komplexitäten werden gerne in Klausuren abgefragt. +\end{*anmerkung} + +Die Grundoperationen einer Priority Queue sind wie folgt: +\begin{itemize} + \item \texttt{init(A)} $\to$ initiiert eine leeres Feld \texttt{A} + \item \texttt{empty(A)} $\to$ ist Feld leer? + \item \texttt{HeapInsert(A,key)} $\to$ neues Element mit \texttt{key} einfügen in \texttt{A} + \item \texttt{HeapExtractMax(A,key)} $\to$ key des Wurzelknotens wird in 2. Parameter (oder als Funktionswert) zurückgegeben und dieses Element aus \texttt{A} herausgenommen + \item \texttt{HeapUpdate(A,key,max)} $\to$ Kombination aus \texttt{HeapExtractMax} und \texttt{HeapInsert}: liefert in \texttt{max} den Key der Wurzel und ersetzt diesen Wert durch \texttt{key} + \item \texttt{Maximum(A)} $\to$ Funktion, liefert den key der Wurzel +\end{itemize} + +\begin{lstlisting} +subroutine HeapExtractMax(A, max) + if (size <= 0) error("empty heap") + + max = A_1 + A_1 = A_size + size = size - 1 + Heapify(A,1) +end subroutine HeapExtractMax +\end{lstlisting} +$\Rightarrow T(n)=\mathcal{O}(\log_2 n)$ + +\begin{lstlisting} +subroutine HeapUpdate(A, key, max) + if (size <= 0) error("empty heap") + + max = A_1 + A_1 = key + Heapify(A,1) +end subroutine HeapUpdate +\end{lstlisting} +$\Rightarrow T(n)=\mathcal{O}(\log_2 n)$ + +\begin{lstlisting} +subroutine HeapInsert(A, key) + size = size + 1 + i = size + + do while (i > 1 .and. A_Parent(i) < key) + A_i = A_Parent(i) + i = Parent(i) + end do + A_i = key +end subroutine HeapInsert +\end{lstlisting} +$\Rightarrow T(n)=\mathcal{O}(\log_2 n)$ + +\begin{lstlisting} +subroutine BuildHeapNew(A) + size = 1 + + do i = 2, n + HeapInsert(A,A_i) + end do +end subroutine BuildHeapNew +\end{lstlisting} +$\Rightarrow T(n)=\mathcal{O}(\log_2 n)$ \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Queues.tex b/2. Semester/PROG/TeX_files/Queues.tex new file mode 100644 index 0000000..17b139a --- /dev/null +++ b/2. Semester/PROG/TeX_files/Queues.tex @@ -0,0 +1,67 @@ +\section{Queues} + +Eine \begriff{Queue} ist eine Warteschlange und sollte mit \texttt{pop} und \texttt{inject} implementiert werden. Es ist dabei in 2 verschiedene Prinzipien zu unterscheiden: +\begin{itemize} + \item Beim \begriff{FIFO-Prinzip} (first-in-first-out) wird das erste Element, was in die Warteschlange kommt, bearbeitet und verlässt die Warteschlange (so wie bei der Kassenschlange in der Mensa). + \item Beim \begriff{LIFO-Prinzip} (last-in-first-out) wird das Element, was zuletzt in die Warteschlange kommt, bearbeitet (nach dem Prinzip bearbeite ich Mails: die neuste beantworte ich zuerst). +\end{itemize} + +\smiley{} Professor Walter bevorzugt übrigens das LIFO-Prinzip in der Mensa. Er kommt zuletzt, hat aber als Erster sein Essen. \smiley{} + +Weiterhin gibt es noch Output-resticted-queues bzw. Input-restricted-queues. Das sind deques mit \texttt{push}, \texttt{pop}, \texttt{inject}, aber ohne \texttt{eject} bzw. eine deque mit \texttt{pop} und \texttt{eject} oder \texttt{push} und \texttt{inject}. + +\subsection{Grundoperationen auf einer Queue} + +Eine Queue hat 4 wichtige Funktionen: +\begin{itemize} + \item \texttt{init(Q,n)} + \item \texttt{empty(Q)} bzw. \texttt{full(Q)} + \item \texttt{enqueue(Q,neu)}: \texttt{inject} am tail + \item \texttt{dequeue(Q)}: \texttt{pop} am head +\end{itemize} + +Implementiert wird dies mit einem eindimensionalen Feld mit \texttt{maxlengh}, \texttt{index\_head}, \texttt{index\_tail} und \texttt{elems} (Pointer auf Feld \texttt{Q}). Hier sind die notwendigen Funktionen nur angedeutet, Details kann sich jeder selber denken. + +\begin{lstlisting} +subroutine init(Q,n) + type(queue) :: Q + integer :: n + + allocate(Q(0:n-1)) + maxlengh = n + index_head = 0 + index_tail = n-1 +end subroutine init + +function empty(Q) + type(queue) :: Q + logical :: empty + + empty = mod(index_tail+1,n) == index_head + +end function empty + +function full(Q) +type(queue) :: Q +logical :: full + + full = mod(index_tail+2,n) == index_head + ! ein Element bleibt ungenutzt + +end function full + +subroutine enqueue(Q,neu) + type(queue) :: Q + type(element) :: neu + + ! ... + index_tail = mod(index_tail+1,n) +end subroutine enqueue + +subroutine dequeue(Q) +type(queue) :: Q + +! ... +index_head = mod(index_head+1,n) +end subroutine dequeue +\end{lstlisting} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Quicksort.tex b/2. Semester/PROG/TeX_files/Quicksort.tex new file mode 100644 index 0000000..4815eed --- /dev/null +++ b/2. Semester/PROG/TeX_files/Quicksort.tex @@ -0,0 +1,77 @@ +\section{Quicksort} + +Der Quicksort ist ein rekursiver Algorithmus zum Sortieren einer Liste $L$ im Indexbereich $a:e$. Erfunden wurde dieser von \person{Sir Charles Antony Richard Hoare}. Der Algorithmus läuft wie folgt ab: +\begin{enumerate} + \item Wähle beliebiges Element aus $L$, dieses habe den key $W$ (sogenanntes \begriff{Pivotelement}). Ideal wäre, wenn $W$ der Median aller keys wäre. Der schlechteste Fall wäre, wenn $W$ ein Extremum wäre. + \item Bilde Partition $L_L\mid L_R$ der Liste $L$ mit: + \begin{itemize} + \item alle Elemente von $L_L$ haben keys $\le W$ + \item alle Elemente von $L_R$ haben keys $\ge W$ + \end{itemize} + \item Sortieren der beiden Listen mittels rekursivem Aufruf von Quicksort +\end{enumerate} + +Als Quellcode sieht Quicksort dann so aus: +\begin{lstlisting} +recursive subroutine QsortC(A) + real, intent(in out), dimension(:) :: A + integer :: iq + + if(size(A) > 1) then + call Partition(A, iq) + call QsortC(A(:iq-1)) + call QsortC(A(iq:)) + endif +end subroutine QsortC + +subroutine Partition(A, marker) + real, intent(inout), dimension(:) :: A + integer, intent(out) :: marker + integer :: i, j + real :: temp + real :: x ! pivot point + + x = A(1) + i= 0 + j= size(A) + 1 + + do + j = j-1 + do + if (A(j) <= x) exit + j = j-1 + end do + + i = i+1 + + do + if (A(i) >= x) exit + i = i+1 + end do + + if (i < j) then ! exchange A(i) and A(j) + temp = A(i) + A(i) = A(j) + A(j) = temp + elseif (i == j) then + marker = i+1 + return + else + marker = i + return + endif + end do +end subroutine Partition +\end{lstlisting} + +Im worst case, das heißt das Pivotelement ist ein Extremum, wird immer nur 1 Element abgespalten. Dann hat Quicksort die Komplexität $T(n)=\mathcal{O}(n^2)$. Im average case gilt: $T(n)=\mathcal{O}(n\log_2 n)$ und im best case hat Quicksort die Komplexität $T(n)=\Omega(n\log_2 n)$. + +Zuletzt noch ein Blick auf die Eigenschaften: +\begin{itemize} + \item in situ + \item nicht stabil + \item hat nur sehr einfache Operationen + \item für große $n$ sehr schnell + \item pro Durchlauf $\mathcal{O}(n)$ + \item für kleine $n$ eher schlecht +\end{itemize} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Radix_Distribution_Sort.tex b/2. Semester/PROG/TeX_files/Radix_Distribution_Sort.tex new file mode 100644 index 0000000..d57b5bb --- /dev/null +++ b/2. Semester/PROG/TeX_files/Radix_Distribution_Sort.tex @@ -0,0 +1,11 @@ +\section{Radix-/Distribution Sort} + +Wenn wir annehmen, dass der Schlüssel $z$ sich als Zahl mit $d$ Ziffern zur Basis $k$ darstellen lässt, also $z=[z_{d-1}z_{d-2}...z_1z_0]_k=\sum_{i=0}^{d-1}z_ik^i$, dann lässt sich mit Radix-/Distribution Sort in $T(n)=\Theta(d(n+k))$ sortieren. Falls $k=\mathcal{O}(n)$, dann $T(n)=\Theta(dn)$ und falls $d$ relativ klein ist, dann $T(n)=\Theta(n)$. + +\begin{lstlisting} +subroutine RadixSort (A,B,k) + do i = 0, d-1 + CountingSort(A,B,i,k) + end do +end subroutine RadixSort +\end{lstlisting} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Subtraktion.tex b/2. Semester/PROG/TeX_files/Subtraktion.tex new file mode 100644 index 0000000..26dd774 --- /dev/null +++ b/2. Semester/PROG/TeX_files/Subtraktion.tex @@ -0,0 +1,22 @@ +\section{Subtraktion $n$-stelliger ganzer Zahlen} + +Wir wollen möglichst die gleiche Hardware für die Subtraktion wie für die Addition verwenden. Dabei können wir uns zu Nutze machen, dass gilt: +\begin{align} + a-b=a+\underbrace{(-b)}_{\text{2er Komplement}}=a+\underbrace{(\overline{b})}_{\text{1er Komplement}}+1\notag +\end{align} +Damit wird auch in der hinteren Postion ein Volladdierer benötigt und Addition und Subtraktion laufen über die gleiche Hardware. + +Zugleich optimieren wir noch die Addierer. Vom Carry-Ripple-Adder zum \begriff{Carry-Lookahead-Adder} und dann zum \begriff{Carry-Skip-Adder}. Während der Carry-Ripple-Adder eine Komplexität von $T(n)=\mathcal{O}(n)$ hat, hat der Carry-Lookahead-Adder eine Komplexität von $T(n)=\mathcal{O}(\log_2 n)$ + +\begin{figure}[ht] + \centering + \includegraphics[width=10cm]{images/Carry-Lookahead-Adder_2.png} + \includegraphics[width=10cm]{images/Carry-Lookahead-Adder.png} + \caption{Carry-Lookahead-Adder} +\end{figure} + +\begin{figure}[ht] + \centering + \includegraphics[width=10cm]{images/Carry-Skip-Adder.png} + \caption{Carry-Skip-Adder} +\end{figure} \ No newline at end of file diff --git a/2. Semester/PROG/TeX_files/Vorwort.tex b/2. Semester/PROG/TeX_files/Vorwort.tex new file mode 100644 index 0000000..6a14c3b --- /dev/null +++ b/2. Semester/PROG/TeX_files/Vorwort.tex @@ -0,0 +1,19 @@ +Schön, dass du unser Skript für die Vorlesung \textit{Programmieren für Mathematiker 2} bei Prof. Dr. Wolfgang Walter im SS2018 gefunden hast! + +Wir verwalten dieses Skript mittels Github \footnote{Github ist eine Seite, mit der man Quelltext online verwalten kann. Dies ist dahingehend ganz nützlich, dass man die Quelltext-Dateien relativ einfach miteinander synchronisieren kann, wenn man mit mehren Leuten an einem Projekt arbeitet.}, d.h. du findest den gesamten \LaTeX-Quelltext auf \url{https://github.com/henrydatei/TUD_MATH_BA}. Unser Ziel ist, für alle Pflichtveranstaltungen von \textit{Mathematik-Bachelor} ein gut lesbares Skript anzubieten. Für die Programme, die in den Übungen zur Vorlesung \textit{Programmieren für Mathematiker} geschrieben werden sollen, habe ich ein eigenes Repository eingerichtet; es findet sich bei \url{https://github.com/henrydatei/TU_PROG}. + +Es lohnt sich auf jeden Fall während des Studiums die Skriptsprache \LaTeX{} zu lernen, denn Dokumente, die viele mathematische oder physikalische Formeln enthalten, lassen sich sehr gut mittels \LaTeX{} darstellen, in Word oder anderen Office-Programmen sieht so etwas dann eher dürftig aus. + +\LaTeX{} zu lernen ist gar nicht so schwierig, ich habe dafür am Anfang des ersten Semesters wenige Wochen benötigt, dann kannte ich die wichtigsten Befehle und konnte mein erstes Skript schreiben (\texttt{1. Semester/LAAG}, Vorsicht: hässlich, aber der Quelltext ist relativ gut verständlich). Inzwischen habe ich das Skript überarbeitet, lasse es aber noch für Interessenten online. + +Es sei an dieser Stelle darauf hingewiesen (wie in jedem anderem Skript auch \smiley{}), dass dieses Skript nicht den Besuch der Vorlesungen ersetzen kann. Prof. Walter hat nicht wirklich eine Struktur in seiner Vorlesung, ich habe deswegen einiges umstrukturiert und ergänzt, damit es überhaupt lesbar wird. Wenn du Pech hast, ändert Prof. Walter seine Vorlesung grundlegend, aber egal wie: Wenn du noch nicht programmieren kannst, wirst du es durch die Vorlesung auch nicht lernen, sondern nur durch die Übungen; die Vorlesung ist da wenig hilfreich. + +Wir möchten deswegen ein Skript bereitstellen, dass zum einen übersichtlich ist, zum anderen \textit{alle} Inhalte aus der Vorlesung enthält, das sind insbesondere Diagramme, die sich nicht im offiziellen Skript befinden, aber das Verständnis des Inhalts deutlich erleichtern. Ich denke, dass uns dies erfolgreich gelungen ist. + +Trotz intensivem Korrekturlesen können sich immer noch Fehler in diesem Skript befinden. Es wäre deswegen ganz toll von dir, wenn du auf unserer Github-Seite \url{https://github.com/henrydatei/TUD_MATH_BA} ein neues Issue erstellst und damit auch anderen hilfst, dass dieses Skript immer besser wird. + +Und jetzt viel Spaß bei \textit{Programmieren für Mathematiker}! + +\begin{flushright} + Henry, Pascal und Daniel +\end{flushright} \ No newline at end of file diff --git a/2. Semester/PROG/Vorlesung PROG alt.pdf b/2. Semester/PROG/Vorlesung PROG alt.pdf new file mode 100644 index 0000000..1b1bf46 Binary files /dev/null and b/2. Semester/PROG/Vorlesung PROG alt.pdf differ diff --git a/2. Semester/PROG/Vorlesung PROG.pdf b/2. Semester/PROG/Vorlesung PROG.pdf new file mode 100644 index 0000000..64811af Binary files /dev/null and b/2. Semester/PROG/Vorlesung PROG.pdf differ diff --git a/2. Semester/PROG/Vorlesung PROG.tex b/2. Semester/PROG/Vorlesung PROG.tex new file mode 100644 index 0000000..78372c0 --- /dev/null +++ b/2. Semester/PROG/Vorlesung PROG.tex @@ -0,0 +1,59 @@ +\documentclass[ngerman,a4paper,order=firstname]{../../texmf/tex/latex/mathscript/mathscript} +\usepackage{../../texmf/tex/latex/mathoperators/mathoperators} + +\title{\textbf{Programmieren für Mathematiker SS2018}} +\author{Dozent: Prof. Dr. Wolfgang Walter} + +\begin{document} +\pagenumbering{roman} +\pagestyle{plain} + +\maketitle + +\hypertarget{tocpage}{} +\tableofcontents +\bookmark[dest=tocpage,level=1]{Inhaltsverzeichnis} + +\pagebreak +\pagenumbering{arabic} +\pagestyle{fancy} + +\chapter*{Vorwort} +\input{./TeX_files/Vorwort} + +\chapter{Pointer} +\input{./TeX_files/Allgemeines} +\include{./TeX_files/Listen} +\include{./TeX_files/Queues} +\include{./TeX_files/Aufwand_fuer_Rechenoperationen} + +\chapter{Bäume/Trees und Rekursion} +\input{./TeX_files/Baeume_Trees_und_Rekursion} + +\chapter{Suchen und Sortieren} +\input{./TeX_files/Begriffe_und_Definitionen} +\include{./TeX_files/3_einfache_Sortieralgorithmen} +\include{./TeX_files/Quicksort} +\include{./TeX_files/Mergesort} +\include{./TeX_files/Heapsort} +\include{./TeX_files/Priority_Queue} +\include{./TeX_files/Counting_Sort} +\include{./TeX_files/Radix_Distribution_Sort} + +\chapter{Rekursion, Iteration, Komplexität} +\input{./TeX_files/Beispiele} + +\chapter{Grundrechenarten in Rechnern} +\input{./TeX_files/Addition} +\include{./TeX_files/Subtraktion} +\include{./TeX_files/Multiplikation} + +\part*{Anhang} +\addcontentsline{toc}{part}{Anhang} +\appendix + +%\printglossary[type=\acronymtype] + +\printindex + +\end{document} diff --git a/2. Semester/PROG/images/Carry-Lookahead-Adder.png b/2. Semester/PROG/images/Carry-Lookahead-Adder.png new file mode 100644 index 0000000..6b06d39 Binary files /dev/null and b/2. Semester/PROG/images/Carry-Lookahead-Adder.png differ diff --git a/2. Semester/PROG/images/Carry-Lookahead-Adder.svg b/2. Semester/PROG/images/Carry-Lookahead-Adder.svg new file mode 100644 index 0000000..42b96b5 --- /dev/null +++ b/2. Semester/PROG/images/Carry-Lookahead-Adder.svg @@ -0,0 +1,4684 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ≥1 + + + + & + + + + =1 + + + =1 + + & + + =1 + + & + + =1 + + & + + =1 + + & + + =1 + + + + =1 + + =1 + + & + + & + + & + + & + + & + + + + ≥1 + + ≥1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + & + + & + + & + + ≥1 + + & + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + C + 0 + A + 0 + B + 0 + A + 1 + B + 1 + A + 2 + B + 2 + C + 1 + C + 2 + S + 0 + S + 1 + S + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + S + 3 + C + 3 + A + 3 + B + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + C + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 +EFo8ZYCnbky/WJs0o8fWwTSQye2fwyR2dwJR+s8zbza8nRbPuttpY5NtB+/w4ePZ5PPZT8vJlZ3d +5fTe7nx3GRHE9TMek4Ib08WD4+mD2eTW/kG3hTkN+Hz/ICUBnSvwtfn+ven89uzgeH6UHVXy7W1w +6OnXtj/8W7PDo4MZCci1sHV3P9wP57O/+DDl6ut+T0wxud/RrUMe54XHM3iFTcI0povtEe0YfBMQ +Zb67mE2OJNvnCtRa1XoZNjVuZHI+SkJBtz47nmK3Jzdmj5HySaizcRvFRpE8dY8uXb96PJ/H7dds +pOGvT5n19nz3ICAB1CU/BSx8ED466i7SSVu5NZvPtwI/tHxK5wcRdfYfzw4PYO+IffumbeJ7Ouwd +j8Jmf6QQfOoTml6d7+8f3u7uTnni4WPGyetmKxZ+PnH4a8ltOLFPDi7Zzp51qsmyTkZUcsIH0+3k +ivmmPmm67Dedr2+e2POVn5Y923PyJGRx2Sye0DHvYdZzccJ0k+fx+mJn9tPV3cOj7jbWgYA0pjWj +R3XVQr6cLnaPHgbk791Wn33YO7Pt/UVEGw7ZOPf0ce8sp93z+dwfY9K3AiUJogQEnlEndfs8nQSy +mfbgTrys+OLqdHvWJ2QDH+PDpEtTPft4uEHZCTdV/YynpVR6xXGdPGt+M5z2s+81P//Fm933Mtzt +k6/Cl7uzH8MqA7O3TB6Nky8ax8gv2olIjKYJCWlc+Yyn2C9kdIxPoln87NoJbMTKxrdTpu1E8sqZ +0J2ZjARu1VACWEmPXuC7fuUnfXfBR47uSRuoSQg5jZWobE+YwOe9FIvde8Ku9Hs3Vq7m+o47s/mH +02V462/sb0/nEFmOUpb9pNbX4a5x/XLWNv3757AHYOiVvJZcpFXS2nAxQe7qOYNnIKrwpu+mczH1 +ZB9sxcjTPRXKw9tx5dadyc0hq/HECGv395tvfvvWe1+9/5d3p1+//VH55s0Lmx8cXtt7+M6Dxesf +XX397XN/2dqdbhz9ufriwyvVn9754Itrf/vE/f2dG9/95ZMPDo+366tX7CfNG8a5PxXF0eUfLj94 +u/jzB+/+c+OvH7z39sHRB0cf24thmA/evfH6YWz10XLzwYef3fjgPTe7s7X7/t+2L29s/OXBaKwb +O9+EAevLV994p/7HteXlH77fdP+48Palvf0bR5eu31k+fOtv1Z+Or152f/5q84f5Xw== + + + vgrDXL5ffHRvZW9/rtv79Zefffvdpc+3Nr48edS03Tvff/Deo6vff/DO0cbeW5fffuP46rlrO/fD +MNyvq/+6e/P48v3vv6o35x/Mv37n/ubD5dbD+h8m25F/vXl529z49wfv/f0vX0lHYdJHW/988M/9 +8NOb/758fef665sXmh/+fOnOhT8tZBJfT3eOwzDtD+fe2r6y7T87t/XQ3X33HXvvT99vmA+/fDt8 +ef6Hrdmbn9y5dnzx5h8vLbb/svfW+zde/8vl64/qt2Ifs4v13j//vHd59t4//3jp46+2Nt+9On3j +sLn5j9fPF/fvXvjk4iff/duHYfouL3/0w2Zdv/uPG1cvua2PP7966bO9+eaj81dsUb57583LH73/ ++p9lXaa4PP3g8I/XPrl8cfreXz949/vbO29t7rf/fOu9L3duFPbv1/4iB7T19pV/YbPgD3R5dvR3 +548Wtze58dXyYOOzt/7+5fTfmG8Vxm+mH7z7+fKPlz7/aHnMYdibOff+bc+f3vrb1fec/PTeV5sf +yWfh139q468PXw/DxN7uhHO7ubW88o+dNx7Yf73398vF1e8+KNH+2/f+9d7Vy1febv/6dj/p0OWV +j7suv+/HL+798bqO+rebmzKTMMzfFm+8/a+3/v7w6Fi2+x/Vzj+u/PPmvbvX3rj2fQOMuH/1irlf +XrpTtWH7/nrufLW8cfOLD/59yd+4VH//z0fh4N87vPpBsbx7+f5n7T53iVvU3Pn33seXbpoPv8Om +TRfXvrq6df+jR0lvZv/Non74p9lHYZl//VOPy2GE9/+x+eGd+ffxlL7Zv3z/zpUdIN7fwkFWF/S6 +Y13m+z/x+N4Mw1x9/a1/HI42dLD6ZPfjVsn58sy/sdcDPfi6eOtvf7vytr389wfvay9fvf/euzs/ +fPrPMAyvx9/qrf1/DjY0P9Dvx6c/c4T51zcv3x1t1Y0Pv7v88Wb1l3Ck5++FYTY/++Dbv25+9sb3 +y7f+du3jt4qPrpl61Y5cfnDh/N8F5z4r/70f7sjXfw4U5K1/J0d617z15ab7+taHW7s/VBfDhpd/ +wl0GCly+/u3n/46EKD2H9tHsY590fvPGXz++evn8zs0Vk7i2Oa8efHv1/K35u1cv+3/YMON/Xejb +kaad0PSd3a2L00BgzSfvfGQvnBtuy2evn/8u/PrZe0DGsrj/zlf7ybr+Vd18FHr56q9X3ygefRuG +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 + + + \ No newline at end of file diff --git a/2. Semester/PROG/images/Carry-Lookahead-Adder_2.png b/2. Semester/PROG/images/Carry-Lookahead-Adder_2.png new file mode 100644 index 0000000..23a82d1 Binary files /dev/null and b/2. Semester/PROG/images/Carry-Lookahead-Adder_2.png differ diff --git a/2. Semester/PROG/images/Carry-Lookahead-Adder_2.svg b/2. Semester/PROG/images/Carry-Lookahead-Adder_2.svg new file mode 100644 index 0000000..b24110a --- /dev/null +++ b/2. Semester/PROG/images/Carry-Lookahead-Adder_2.svg @@ -0,0 +1,800 @@ + + + + + + + 1-bitfulladder + + + + 1-bitfulladder + + + + 1-bitfulladder + + + + 1-bitfulladder + + + + + C0 + + + + + C4 + + + + + A3 + + + + + B3 + + + + + A2 + + + + + B2 + + + + + A1 + + + + + B1 + + + + + A0 + + + + + B0 + + + + + S3 + + + + + S2 + + + + + S1 + + + + + S0 + + + + + + 4-bit carry look-ahead + C3 + C2 + C1 + + + + + + + + + p0 + g0 + PG + GG + + + + + + + + + + + + + + + + + + + + + + p1 + g1 + + + + + + + + + p2 + g2 + + + + + + + + + p3 + g3 + + + + + + + + + + + + diff --git a/2. Semester/PROG/images/Carry-Ripple-Adder.png b/2. Semester/PROG/images/Carry-Ripple-Adder.png new file mode 100644 index 0000000..d244c36 Binary files /dev/null and b/2. Semester/PROG/images/Carry-Ripple-Adder.png differ diff --git a/2. Semester/PROG/images/Carry-Ripple-Adder.svg b/2. Semester/PROG/images/Carry-Ripple-Adder.svg new file mode 100644 index 0000000..1e24240 --- /dev/null +++ b/2. Semester/PROG/images/Carry-Ripple-Adder.svg @@ -0,0 +1,520 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + Voll-addierer + + Voll-addierer + + Voll-addierer + + Voll-addierer + + + + + + + + + + + + + + + + + a + b + 0 + 0 + a + b + 1 + 1 + a + b + 2 + 2 + a + b + 3 + 3 + s + 0 + s + 1 + s + 2 + s + 3 + + carry out + carry in + + diff --git a/2. Semester/PROG/images/Carry-Skip-Adder.png b/2. Semester/PROG/images/Carry-Skip-Adder.png new file mode 100644 index 0000000..747e57b Binary files /dev/null and b/2. Semester/PROG/images/Carry-Skip-Adder.png differ diff --git a/2. Semester/PROG/images/Carry-Skip-Adder.svg b/2. Semester/PROG/images/Carry-Skip-Adder.svg new file mode 100644 index 0000000..7c6efa0 --- /dev/null +++ b/2. Semester/PROG/images/Carry-Skip-Adder.svg @@ -0,0 +1,202 @@ + + + + + + + + + image/svg+xml + + + + + + + Voll-addierer + + Voll-addierer + + Voll-addierer + + Voll-addierer + + Voll-addierer + + Voll-addierer + + Voll-addierer + + Voll-addierer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + & + >1 + + >1 + + >1 + + >1 + + + + + + + + + + + + >1 + + + + + + + + + + + + + + + + + + + + + + + + carry in + a + b + 0 + 0 + a + b + 1 + 1 + a + b + 2 + 2 + a + b + 3 + 3 + + a + b + 4 + 4 + a + b + 5 + 5 + a + b + 6 + 6 + a + b + 7 + 7 + + s + 0 + s + 1 + s + 2 + s + 3 + s + 4 + s + 5 + s + 6 + s + 7 + + carry out + + \ No newline at end of file diff --git a/2. Semester/PROG/images/Halbaddierer.png b/2. Semester/PROG/images/Halbaddierer.png new file mode 100644 index 0000000..89134f8 Binary files /dev/null and b/2. Semester/PROG/images/Halbaddierer.png differ diff --git a/2. Semester/PROG/images/Halbaddierer.svg b/2. Semester/PROG/images/Halbaddierer.svg new file mode 100644 index 0000000..d9b99a4 --- /dev/null +++ b/2. Semester/PROG/images/Halbaddierer.svg @@ -0,0 +1,239 @@ + + + + + + + + + image/svg+xml + + + + + + + + + =1 + + & + + + + + + x + + y + + + + + s + + c + + + diff --git a/2. Semester/PROG/images/Volladdierer.png b/2. Semester/PROG/images/Volladdierer.png new file mode 100644 index 0000000..df17fb1 Binary files /dev/null and b/2. Semester/PROG/images/Volladdierer.png differ diff --git a/2. Semester/PROG/images/Volladdierer.svg b/2. Semester/PROG/images/Volladdierer.svg new file mode 100644 index 0000000..c561c2f --- /dev/null +++ b/2. Semester/PROG/images/Volladdierer.svg @@ -0,0 +1,415 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + x + + y + + + s + + + c + + + c + IN + OUT + ≥1 + + + + =1 + + & + + + + =1 + + + + & + + + + + + + + + HA + HA + + diff --git a/2. Semester/PROG/images/Wallace-Tree.png b/2. Semester/PROG/images/Wallace-Tree.png new file mode 100644 index 0000000..db60f6d Binary files /dev/null and b/2. Semester/PROG/images/Wallace-Tree.png differ diff --git a/2. Semester/Readme.md b/2. Semester/Readme.md deleted file mode 100644 index 5dfaba2..0000000 --- a/2. Semester/Readme.md +++ /dev/null @@ -1,5 +0,0 @@ -## 2. Semester (SS2018) - -Hausaufgaben LAAG: - -Hausaufgaben ANAG: diff --git a/2. Semester/Summary LAAG/Ubungsaufgaben LAAG.pdf b/2. Semester/Summary LAAG/Ubungsaufgaben LAAG.pdf new file mode 100644 index 0000000..01bf405 Binary files /dev/null and b/2. Semester/Summary LAAG/Ubungsaufgaben LAAG.pdf differ diff --git a/2. Semester/Summary LAAG/Ubungsaufgaben LAAG.tex b/2. Semester/Summary LAAG/Ubungsaufgaben LAAG.tex new file mode 100644 index 0000000..aa9aa94 --- /dev/null +++ b/2. Semester/Summary LAAG/Ubungsaufgaben LAAG.tex @@ -0,0 +1,78 @@ +\documentclass[ngerman,a4paper]{article} + +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{enumitem} +\usepackage[left=2.1cm,right=3.1cm,bottom=3cm,top=1cm]{geometry} +\usepackage[ngerman]{babel} + + +\title{\textbf{\"Ubungsaufgaben f\"ur Lineare Algebra}} +\author{} +\date{} + +\begin{document} +\maketitle + +\renewcommand{\arraystretch}{1.5} + +\section{Eigenwerte und Eigenvektoren} +\begin{align} + \begin{pmatrix} + 3 & -1 & 0 \\ 2 & 0 & 0 \\ -2 & 2 & -1 + \end{pmatrix}, + \begin{pmatrix} + 1 & 2 & 3 \\ 4 & 3 & -2 \\ 0 & 0 & 5 + \end{pmatrix}, + \begin{pmatrix} + 8 & 12 & -4 \\ -40 & -60 & 20 \\ -100 & -150 & 50 + \end{pmatrix}\notag +\end{align} + +\section{Diagonalisierung} +\begin{align} + \begin{pmatrix} + 3 & 4 & -3 \\ 2 & 7 & -4 \\ 3 & 9 & -5 + \end{pmatrix}, + \begin{pmatrix} + 3 & 0 & 0 \\ 1 & 2 & 2 \\ 1 & 0 & 4 + \end{pmatrix}, + \begin{pmatrix} + 1 & 0 & 1 \\ 0 & 2 & 0 \\ 1 & 0 & 1 + \end{pmatrix}\notag +\end{align} + +\section{Trigonalisierung} +\begin{align} + \begin{pmatrix} + 3 & 4 & 3 \\ -1 & 0 & -1 \\ 1 & 2 & 3 + \end{pmatrix}, + \begin{pmatrix} + 3 & 0 & -2 \\ -2 & 0 & 1 \\ 2 & 1 & 0 + \end{pmatrix}, + \begin{pmatrix} + 2 & 1 & 0 \\ 0 & 1 & 0 \\ 1 & 1 & 2 + \end{pmatrix}\notag +\end{align} + +\section{Jordan-Normalform} +\begin{align} + \begin{pmatrix} + 1 & 1 & 6 & -2 \\ 0 & 1 & -3 & 2 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & -2 & 2 + \end{pmatrix}, + \begin{pmatrix} + 1 & 1 & 0 & 0 \\ -1 & 3 & 0 & 0 \\ -1 & 1 & 1 & 1 \\ -1 & 1 & -1 & 3 + \end{pmatrix}, + \begin{pmatrix} + 1 & 1 & -3 \\ 0 & 1 & 1 \\ 1 & 0 & 4 + \end{pmatrix}\notag +\end{align} + +\section{Gram-Schmidt-Verfahren} +\begin{align} + B = \left(\begin{pmatrix}3\\1\end{pmatrix}, \begin{pmatrix}2\\2\end{pmatrix}\right), + C = \left(\begin{pmatrix}1\\1\\1\end{pmatrix}, \begin{pmatrix}1\\1\\0\end{pmatrix}, \begin{pmatrix}1\\0\\0\end{pmatrix}\right), + D = \left(\begin{pmatrix}1\\1\\0\\0\end{pmatrix}, \begin{pmatrix}1\\0\\1\\0\end{pmatrix}, \begin{pmatrix}0\\1\\0\\1\end{pmatrix}, \begin{pmatrix}0\\0\\1\\-1\end{pmatrix}\right)\notag +\end{align} + +\end{document} \ No newline at end of file diff --git a/2. Semester/Summary LAAG/Wichtige Methoden der Linearen Algebra.pdf b/2. Semester/Summary LAAG/Wichtige Methoden der Linearen Algebra.pdf index 47cc3f1..f40845f 100644 Binary files a/2. Semester/Summary LAAG/Wichtige Methoden der Linearen Algebra.pdf and b/2. Semester/Summary LAAG/Wichtige Methoden der Linearen Algebra.pdf differ diff --git a/2. Semester/Summary LAAG/Wichtige Methoden der Linearen Algebra.tex b/2. Semester/Summary LAAG/Wichtige Methoden der Linearen Algebra.tex index 37af737..29dbf38 100644 --- a/2. Semester/Summary LAAG/Wichtige Methoden der Linearen Algebra.tex +++ b/2. Semester/Summary LAAG/Wichtige Methoden der Linearen Algebra.tex @@ -67,11 +67,11 @@ Matrix in Zeilenstufenform bringen mit folgenden Methoden \chi = \det(A-\lambda\mathbb{1}_n)\notag \end{align} \item Das charakteristische Polynom 0 setzen und die $\lambda_i$'s ausrechnen. - \item Für jedes $\lambda_i$ die Eigenräume berechnen + \item F\"ur jedes $\lambda_i$ die Eigenr\"aume berechnen \begin{align} \Eig(A,\lambda_i) = \Ker(A-\lambda_i\mathbb{1}_n)\notag \end{align} - \item Die $\lambda_i$ sind dann die Eigenwerte und die Eigenräume sind alle Vielfachen des Eigenvektors zum Eigenwert $\lambda_i$. + \item Die $\lambda_i$ sind dann die Eigenwerte und die Eigenr\"aume sind alle Vielfachen des Eigenvektors zum Eigenwert $\lambda_i$. \end{enumerate} \section{Diagonalisierung und Trigonalisierung} @@ -81,7 +81,7 @@ Matrix in Zeilenstufenform bringen mit folgenden Methoden \begin{align} D = \diag(\underbrace{\lambda_1, ..., \lambda_1}_{\mu(\chi,\lambda_1)}, ..., \underbrace{\lambda_n, ..., \lambda_n}_{\mu(\chi,\lambda_n)})\notag \end{align} - Allerdings ist $A$ nur dann diagonalisierbar, wenn für jeden Eigenwert gilt + Allerdings ist $A$ nur dann diagonalisierbar, wenn f\"ur jeden Eigenwert gilt \begin{align} \dim(\Eig(A,\lambda)) = \mu(\chi,\lambda)\notag \end{align} @@ -119,6 +119,12 @@ Matrix in Zeilenstufenform bringen mit folgenden Methoden &&&& \end{array}\right)\notag \end{align} + \item Hat $A$ die Dimension $n$, so muss man die Prozedur genau $n-1$-mal wiederholen. Da man für jede weitere $S$-Matrix die vorherige $S$-Matrix braucht, "'verfeinert"' man die $S$-Matrizen immer weiter. + \item Ist dieser "'Verfeinerungsprozess"' mit den Matrizen $S_{n-1}$ und $S_{n-1}^{-1}$ abgeschlossen, so gilt: + \begin{align} + T = S_{n-1}\cdot A \cdot S_{n-1}^{-1}\notag + \end{align} + \textbf{Achtung!} Im letzten Schritt der Diagonalisierung multipliziert man mit $A$, nicht mit $A_{n-1}$! \end{enumerate} \subsection{Minimalpolynom} @@ -141,7 +147,7 @@ Matrix in Zeilenstufenform bringen mit folgenden Methoden \section{Jordan-Normalform} \begin{enumerate}[label=\textbf{\arabic*.}] \item Eigenwerte und deren Vielfachheit bestimmen - \item zu jedem Eigenwert den Jordan-Block mit Größe = Vielfachheit des Eigenwertes bestimmen + \item zu jedem Eigenwert den Jordan-Block mit Gr\"o{\ss}e = Vielfachheit des Eigenwertes bestimmen \item Die Jordan-Normalform besteht aus den Jordan-Blocken auf der Hauptdiagonalen \item Will man noch die Transformationsmatrizen bestimmen, muss man noch zu jedem Eigenwert einen Eigenvektor bestimmen. \item Kommt ein Eigenwert mehrfach (z.B. $d$-fach) vor, so muss man noch $\Ker\big((A-\lambda\mathbb{1}_n)^2\big)$, $\Ker\big((A-\lambda\mathbb{1}_n)^3\big)$, ..., $\Ker\big((A-\lambda\mathbb{1}_n)^{d-1}\big)$ bestimmen. @@ -158,7 +164,7 @@ Matrix in Zeilenstufenform bringen mit folgenden Methoden \section{Gram-Schmidt-Verfahren} \begin{enumerate}[label=\textbf{\arabic*.}] - \item Eine orthogonale Basis ist gegeben $(w_1,...,w_n)$. Die Basis $(v_1,...,v_n)$ lässt sich dann so orthgonalisieren: + \item Eine orthogonale Basis ist gegeben $(w_1,...,w_n)$. Die Basis $(v_1,...,v_n)$ l\"asst sich dann so orthgonalisieren: \begin{align} v_1 &= w_1 \notag \\ v_2 &= w_2 - \frac{\langle v_1,w_2 \rangle}{\langle v_1,v_1 \rangle}v_1 \notag \\ @@ -172,6 +178,4 @@ Matrix in Zeilenstufenform bringen mit folgenden Methoden \end{align} \item Dann ist $(v'_1,...,v'_n)$ eine Orthonormalbasis. \end{enumerate} - -\section{Smith-Normalform} \end{document} \ No newline at end of file diff --git a/3. Semester/GDIM/TeX_files/1.tex b/3. Semester/GDIM/TeX_files/1.tex new file mode 100644 index 0000000..e69de29 diff --git a/3. Semester/GDIM/TeX_files/2.tex b/3. Semester/GDIM/TeX_files/2.tex new file mode 100644 index 0000000..e69de29 diff --git a/3. Semester/GDIM/TeX_files/Vorwort.tex b/3. Semester/GDIM/TeX_files/Vorwort.tex new file mode 100644 index 0000000..e69de29 diff --git a/3. Semester/GDIM/Vorlesung GDIM.pdf b/3. Semester/GDIM/Vorlesung GDIM.pdf new file mode 100644 index 0000000..f1af465 Binary files /dev/null and b/3. Semester/GDIM/Vorlesung GDIM.pdf differ diff --git a/3. Semester/GDIM/Vorlesung GDIM.tex b/3. Semester/GDIM/Vorlesung GDIM.tex new file mode 100644 index 0000000..96862d1 --- /dev/null +++ b/3. Semester/GDIM/Vorlesung GDIM.tex @@ -0,0 +1,36 @@ +\documentclass[ngerman,a4paper,order=firstname]{../../texmf/tex/latex/mathscript/mathscript} +\usepackage{../../texmf/tex/latex/mathoperators/mathoperators} + +\title{\textbf{Gewöhnliche Differentialgleichungen und Integration auf Mannigfaltigkeiten WS2018/19}} +\author{Dozent: Prof. Dr. Friedemann Schuricht} + +\begin{document} +\pagenumbering{roman} +\pagestyle{plain} + +\maketitle + +\hypertarget{tocpage}{} +\tableofcontents +\bookmark[dest=tocpage,level=1]{Inhaltsverzeichnis} + +\pagebreak +\pagenumbering{arabic} +\pagestyle{fancy} + +\chapter*{Vorwort} +\input{./TeX_files/Vorwort} + +\chapter{1} +\input{./TeX_files/1} +\include{./TeX_files/2} + +\part*{Anhang} +\addcontentsline{toc}{part}{Anhang} +\appendix + +%\printglossary[type=\acronymtype] + +\printindex + +\end{document} diff --git a/3. Semester/GEO/TeX_files/2.tex b/3. Semester/GEO/TeX_files/2.tex new file mode 100644 index 0000000..e69de29 diff --git a/3. Semester/GEO/TeX_files/Erinnerung_und_Beispiele.tex b/3. Semester/GEO/TeX_files/Erinnerung_und_Beispiele.tex new file mode 100644 index 0000000..366d5c2 --- /dev/null +++ b/3. Semester/GEO/TeX_files/Erinnerung_und_Beispiele.tex @@ -0,0 +1,142 @@ +\section{Erinnerung und Beispiele} + +\begin{erinnerung} + Eine \begriff{Gruppe} ist ein Paar $(G,\ast)$ bestehend aus einer Menge $G$ und einer Verknüpfung $\ast: G\times G\to G$, dass die Axiome Assoziativität, Existenz eines neutralen Elements und Existenz von Inversen erfüllt, und wir schreiben auch $G$ für die Gruppe $(G,\ast)$. Die Gruppe $G$ ist \begriff[Gruppe!]{abelsch}, wenn $g\ast h=h\ast g$ für alle $g,h\in G$. Eine allgemeine Gruppe schreiben wir multiplikativ mit neutralem Element 1, abelsche Gruppen auch additiv mit neutralem Element 0. + + Eine Teilmenge $H\subseteq G$ ist eine \begriff{Untergruppe} von $G$, in Zeichen $H\le G$, wenn $H\neq\emptyset$ und $H$ abgeschlossen ist unter der Verknüpfung und den Bilden von Inversen. Wir schreiben 1 (bzw. 0) auch für die triviale Untergruppe $\{1\}$ (bzw. $\{0\}$) von $G$. + + Eine Abbildung $\phi:G\to G'$ zwischen Gruppen ist ein \begriff{Gruppenhomomorphismus}, wenn + \begin{align} + \phi(g_1\cdot g_2) = \phi(g_1)\cdot\phi(g_2)\quad\forall g_1,g_2\in G\notag + \end{align} + und in diesem Fall ist + \begin{align} + \Ker(\phi) = \phi^{-1}(\{1\})\notag + \end{align} + der \begriff{Kern} von $\phi$. Wir schreiben $\Hom(G,G')$ für die Menge der Gruppenhomomorphismen $\phi:G\to G'$. +\end{erinnerung} + +\begin{example} + Sei $n\in\natur$, $K$ ein Körper und $X$ eine Menge. + \begin{enumerate}[label=(\alph*)] + \item $\Sym(X)$, die \begriff{symmetrische Gruppe} aller Permutationen der Menge $X$ mit $f\cdot g=g\circ f$, insbesondere $S_n=\Sym(\{1,...,n\})$ + \item $\whole$ sowie $\whole/n\whole=\{a+n\whole\mid a\in\whole\}$ mit der Addition + \item $\GL_n(K)$ mit der Matrizenmultiplikation, Spezialfall $\GL_1(K)=K^\times=K\backslash\{0\}$ + \item Für jeden Ring $R$ bilden die Einheiten $R^\times$ eine Gruppe unter der Multiplikation, zum Beispiel $\Mat_n(K)^\times=\GL_n(K)$, $\whole^\times=\mu_2=\{1,-1\}$ + \end{enumerate} +\end{example} + +\begin{example} + Ist $(G,\cdot)$ eine Gruppe, so ist auch $(G^{op},\cdot^{op})$ mit $G=G^{op}$ und $g\cdot^{op}h=h\cdot g$ eine Gruppe. +\end{example} + +\begin{remark} + Ist $G$ eine Gruppe und $h\in G$, so ist die Abbildung + \begin{align} + \tau_h=\begin{cases} + G\to G \\ g\mapsto gh + \end{cases}\notag + \end{align} + eine Bijektion (also $\tau_h\in\Sym(G)$) mit Umkehrabbildung $\tau_{h^{-1}}$. +\end{remark} + +\begin{proposition} + Sei $G$ eine Gruppe. Zu jeder Menge $X\subseteq G$ gibt es eine kleinste Untergruppe $\langle X\rangle$ von $G$, die $X$ enthält, nämlich + \begin{align} + \langle X\rangle = \bigcap_{X\subseteq H\le G} H\notag + \end{align} +\end{proposition} + +\begin{remark} + Man nennt $\langle X\rangle$ die von $X$ \begriff[Untergruppe!]{erzeugte} von $G$. Die Gruppe $G$ heißt \begriff[Gruppe!]{endlich erzeugt}, wenn $G=\langle X\rangle$ für eine endliche Menge $X\subseteq G$. +\end{remark} + +\begin{proposition} + Ein Gruppenhomomorphismus $\phi:G\to G'$ ist genau dann ein Isomorphismus, wenn es einen Gruppenhomomorphismus $\phi':G'\to G$ mit $\phi'\circ\phi=\id_G$ und $\phi\circ\phi'=\id_{G'}$ gibt. +\end{proposition} + +\begin{example} + Ist $G$ eine Gruppe, so bilden die \begriff{Automorphismen} $\Aut(G)\subseteq\Hom(G,G)$ eine Gruppe unter $\phi\circ\phi'=\phi'\circ\phi$. Für $\phi\in\Aut(G)$ und $g\in G$ schreiben wir $g^\phi=\phi(g)$. +\end{example} + +\begin{proposition} + Einen Gruppenhomomorphismus $\phi:G\to G'$ ist genau dann injektiv, wenn $\Ker(\phi)=1$. +\end{proposition} + +\begin{example} + Sei $n\in\natur$, $K$ ein Körper. + \begin{enumerate}[label=(\alph*)] + \item $\sgn:S_n\to\mu_2$ ist ein Gruppenhomomorphismus mit Kern die \begriff{alternierende Gruppe} $A_n$. + \item $\det:\GL_n(K)\to K^\times$ ist ein Gruppenhomomorphismus mit Kern $\SL_n(K)$. + \item $\pi_{n\whole}:\whole\to\whole/n\whole$, $a\mapsto a+n\whole$ ist ein Gruppenhomomorphismus mit Kern $n\whole$ + \item Ist $A$ eine abelsche Gruppe, so ist + \begin{align} + [n]:\begin{cases} + A\to A \\ x\to nx + \end{cases}\notag + \end{align} + ein Gruppenhomomorphismus mit Kern $A[n]$, die $n$-Torsion von $A$ und Bild $nA$. + \item Ist $G$ eine Gruppe, so ist + \begin{align} + \begin{cases} + G\to G^{op} \\ g\mapsto g^{-1} + \end{cases}\notag + \end{align} + ein Isomorphismus. + \end{enumerate} +\end{example} + +\begin{definition}[Zykel, disjunkte Zykel] + Seien $n,k\in\natur$. Für paarweise verschiedene Elemente $i_1,...,i_k\in\{1,...,n\}$ bezeichnen wir mit $(i_1...i_k)$ das $\sigma\in S_n$ gegeben durch + \begin{align} + \sigma(i_j) &= i_{j+1} \quad \text{für } j=1,...,k-1 \notag \\ + \sigma(i_k) &= i_1 \notag \\ + \sigma(i) &= i \quad \text{für } i\in\{1,...,n\}\backslash\{i_1,...,i_k\}\notag + \end{align} + Wir nennen $(i_1...i_k)$ eine $k$-\begriff{Zykel}. Zwei Zykel $(i_1...i_k)$ und $(j_1...j_l)\in S_n$ heißen \begriff[Zykel!]{disjunkt}, wenn $\{i_1,...,i_k\}\cap\{j_1,...,j_l\}=\emptyset$. +\end{definition} + +\begin{proposition} + Jedes $\sigma\in S_n$ ist das Produkt von Transpositionen (das heißt 2-Zykeln). +\end{proposition} + +\begin{lemma} + Disjunkte Zykel kommutieren, das heißt sind $\tau_1,\tau_2\in S_n$ disjunkte Zykel, so ist $\tau_1\tau_2 = \tau_2\tau_1$. +\end{lemma} +\begin{proof} + Sind $\tau_1=(i_1...i_k)$ und $\tau_2=(j_1...j_l)$ so ist + \begin{align} + \tau_1\tau_2(i)=\tau_2\tau_1(i)=\begin{cases} + \tau_1(i) & i\in\{i_1...i_k\} \\ + \tau_2(i) & i\in\{j_1...j_l\} \\ + i & \text{sonst} + \end{cases}\notag + \end{align} +\end{proof} + +\begin{proposition} + Jedes $\sigma\in S_n$ ist ein Produkt von paarweise disjunkten $k$-Zykeln mit $k\ge 2$ eindeutig bis auf Reihenfolge (sogenannte \begriff{Zykelzerlegung} von $\sigma$). + \begin{center} + \begin{tikzpicture} + \node at (0,0) (1) {1}; + \node at (1,0) (2) {2}; + \node at (2,0) (3) {3}; + \node at (3,0) (4) {4}; + \node at (4,0) (5) {5}; + + \draw[red,->] (1) to [bend right=45] (2); + \draw[red,->] (2) to [bend right=45] (4); + \draw[red,->] (4) to [bend right=30] (1); + + \draw[blue,->] (3) to [bend right=45] (5); + \draw[blue,->] (5) to [bend right=45] (3); + \end{tikzpicture} + \end{center} + Also ein \textcolor{red}{3-Zykel} und ein \textcolor{blue}{2-Zykel}. +\end{proposition} +\begin{proof} + Induktion nach $N=\vert \{i\mid \sigma(i)\neq i\}\vert$. \\ + \emph{$N=0$:} $\sigma=\id$ \\ + \emph{$N>0$:} Wähle $i_1$ mit $\sigma(i_1)\neq i_1$, betrachte $i_1,\sigma(i_1),\sigma^2(i_1),...$. Da $\{1,...,n\}$ endlich und $\sigma$ bijektiv ist, existiert ein minimales $k\ge 2$ mit $\sigma^k(i_1)=i_1$. Setze $\tau_1=(i_1\,\sigma(i_1)...\sigma^{k-1}(i_1))$. Dann ist $\sigma=\tau_1\circ\tau_1^{-1}\sigma$, und nach Induktionshypothese ist $\tau_1^{-1}\sigma=\tau_2\circ...\circ\tau_m$ mit disjunkten Zyklen $\tau_2,...,\tau_m$. \\ + Eindeutigkeit ist klar, denn jedes $i$ kann nur in einem Zykel $(i\,\sigma(i)...\sigma^{k-1}(i))$ vorkommen. +\end{proof} diff --git a/3. Semester/GEO/TeX_files/Vorwort.tex b/3. Semester/GEO/TeX_files/Vorwort.tex new file mode 100644 index 0000000..e69de29 diff --git a/3. Semester/GEO/Vorlesung GEO.pdf b/3. Semester/GEO/Vorlesung GEO.pdf new file mode 100644 index 0000000..0673322 Binary files /dev/null and b/3. Semester/GEO/Vorlesung GEO.pdf differ diff --git a/3. Semester/GEO/Vorlesung GEO.tex b/3. Semester/GEO/Vorlesung GEO.tex new file mode 100644 index 0000000..37eb31e --- /dev/null +++ b/3. Semester/GEO/Vorlesung GEO.tex @@ -0,0 +1,40 @@ +\documentclass[ngerman,a4paper,order=firstname]{../../texmf/tex/latex/mathscript/mathscript} +\usepackage{../../texmf/tex/latex/mathoperators/mathoperators} + +\title{\textbf{Geometrie WS2018/19}} +\author{Dozent: Prof. Dr. Arno Fehm} + +\begin{document} +\pagenumbering{roman} +\pagestyle{plain} + +\maketitle + +\hypertarget{tocpage}{} +\tableofcontents +\bookmark[dest=tocpage,level=1]{Inhaltsverzeichnis} + +\pagebreak +\pagenumbering{arabic} +\pagestyle{fancy} + +\chapter*{Vorwort} +\input{./TeX_files/Vorwort} + +\chapter{Endliche Gruppen} +\input{./TeX_files/Erinnerung_und_Beispiele} +\include{./TeX_files/2} + +\chapter{Kommutative Ringe} + +\chapter{Körpererweiterungen} + +\part*{Anhang} +\addcontentsline{toc}{part}{Anhang} +\appendix + +%\printglossary[type=\acronymtype] + +\printindex + +\end{document} diff --git a/3. Semester/MINT/TeX_files/1.tex b/3. Semester/MINT/TeX_files/1.tex new file mode 100644 index 0000000..e69de29 diff --git a/3. Semester/MINT/TeX_files/2.tex b/3. Semester/MINT/TeX_files/2.tex new file mode 100644 index 0000000..e69de29 diff --git a/3. Semester/MINT/TeX_files/Vorwort.tex b/3. Semester/MINT/TeX_files/Vorwort.tex new file mode 100644 index 0000000..e69de29 diff --git a/3. Semester/MINT/Vorlesung MINT.pdf b/3. Semester/MINT/Vorlesung MINT.pdf new file mode 100644 index 0000000..2f4adc4 Binary files /dev/null and b/3. Semester/MINT/Vorlesung MINT.pdf differ diff --git a/3. Semester/MINT/Vorlesung MINT.tex b/3. Semester/MINT/Vorlesung MINT.tex new file mode 100644 index 0000000..53f6fab --- /dev/null +++ b/3. Semester/MINT/Vorlesung MINT.tex @@ -0,0 +1,36 @@ +\documentclass[ngerman,a4paper,order=firstname]{../../texmf/tex/latex/mathscript/mathscript} +\usepackage{../../texmf/tex/latex/mathoperators/mathoperators} + +\title{\textbf{Maß und Integral WS2018/19}} +\author{Dozent: Prof. Dr. Rene Schilling} + +\begin{document} +\pagenumbering{roman} +\pagestyle{plain} + +\maketitle + +\hypertarget{tocpage}{} +\tableofcontents +\bookmark[dest=tocpage,level=1]{Inhaltsverzeichnis} + +\pagebreak +\pagenumbering{arabic} +\pagestyle{fancy} + +\chapter*{Vorwort} +\input{./TeX_files/Vorwort} + +\chapter{1} +\input{./TeX_files/1} +\include{./TeX_files/2} + +\part*{Anhang} +\addcontentsline{toc}{part}{Anhang} +\appendix + +%\printglossary[type=\acronymtype] + +\printindex + +\end{document} diff --git a/3. Semester/NUM/TeX_files/2.tex b/3. Semester/NUM/TeX_files/2.tex new file mode 100644 index 0000000..e69de29 diff --git a/3. Semester/NUM/TeX_files/Interpolation_Grundlagen.tex b/3. Semester/NUM/TeX_files/Interpolation_Grundlagen.tex new file mode 100644 index 0000000..b8fe645 --- /dev/null +++ b/3. Semester/NUM/TeX_files/Interpolation_Grundlagen.tex @@ -0,0 +1,52 @@ +\section{Grundlagen} + +\textbf{Aufgabe:} \\ +Gegeben sind $n+1$ Datenpaare $(x_0,f_0),\dots, (x_n,f_n)$, alles reelle Zahlen und paarweise verschieden. \\ +Gesucht ist eine Funktion $F:\real\to\real$, die die \begriff{Interpolationsbedingungen} +\begin{align} + \label{interpolationsbedingung} + F(x_0) = f_0, \, \dots, \, F(x_n)=f_n +\end{align} +genügt. + +\begin{*definition}[Stützstellen, Stützwerte] + Die $x_0$ bis $x_n$ werden \begriff{Stützstellen} genannt. + + Die $f_0$ bis $f_n$ werden \begriff{Stützwerte} genannt. +\end{*definition} + +Die oben gestellte Aufgabe wird zum Beispiel durch +\begin{align} + F(x) = \begin{cases} + 0 & x\notin \{x_0,\dots,x_n\} \\ + f_i & x=x_i + \end{cases}\notag +\end{align} +gelöst. Weitere Möglichkeiten sind: Polygonzug, Treppenfunktion, Polynom, \dots +\begin{itemize} + \item In welcher Menge von Funktionen soll $F$ liegen? + \item Gibt es im gewählten \begriff{Funktionenraum} für beliebige Datenpaare eine Funktion $F$, die den Interpolationsbedingungen genügt (eine solche Funktion heißt \begriff{Interpolierende})? + \item Ist die Interpolierende in diesem Raum eindeutig bestimmt? + \item Welche weiteren Eigenschaften besitzt die Interpolierende, zum Beispiel hinsichtlich ihrer Krümmung oder der Approximation einer Funktion $f:\real\to\real$ mit $f_k=f(x_k)$ für $k=0, \dots, n$ + \item Wie sollte man die Stützstellen wählen, falls nicht vorgegeben? + \item Wie lässt sich die Interpolierende effizient bestimmen, gegebenenfalls auch unter der Berücksichtigung, dass neue Datenpaare hinzukommen oder dass sich nur die Stützwerte ändern? +\end{itemize} + +\begin{example} + \hspace*{1.5em} + \begin{center} + \begin{tabular}{c|cccccc} + $k$ & 0 & 1 & 2 & 3 & 4 & 5 \\ + \hline + $x_k$ in s & 0 & 1 & 2 & 3 & 4 & 5 \\ + \hline + $f_k$ in °C & 80 & 85,8 & 86,4 & 93,6 & 98,3 & 99,1 + \end{tabular} + \end{center} +Interpolation im +\begin{itemize} + \item Raum der stetigen stückweise affinen Funktionen + \item Raum der Polynome höchstens 5. Grades + \item Raum der Polynome höchstens 4. Grades (Interpolation im Allgemeinen nicht lösbar, Regression nötig) +\end{itemize} +\end{example} diff --git a/3. Semester/NUM/TeX_files/Interpolation_durch_Polynome.tex b/3. Semester/NUM/TeX_files/Interpolation_durch_Polynome.tex new file mode 100644 index 0000000..fc4c66f --- /dev/null +++ b/3. Semester/NUM/TeX_files/Interpolation_durch_Polynome.tex @@ -0,0 +1,153 @@ +\section{Interpolation durch Polynome} + +$\Pi_n$ bezeichne den Vektorraum der Polynome von Höchstgrad $n$ mit der üblichen Addition und Skalarmultiplikation. Für jedes $p\in\Pi_n$ gibt es $a_0,\dots,a_n\in\real$, sodass +\begin{align} + \label{1.2} + p(x) = a_nx^n+a_{n-1}x^{n-1}+\dots+a_1x+a_0 +\end{align} +und umgekehrt. + +\subsection{Existenz und Eindeutigkeit} + +\begin{proposition} + Zu $n+1$ Datenpaaren $(x_0,f_0),\dots,(x_n,f_n)$ mit paarweise verschiedenen Stützstellen existiert genau ein Polynom $p\in\Pi_n$, dass die Interpolationsbedingung \cref{interpolationsbedingung} erfüllt. +\end{proposition} +\begin{proof} + \begin{itemize} + \item Existenz: Sei $j\in\{0,\dots,n\}$ und $L_j:\real\to\real$ mit + \begin{align} + L_j(x) := \prod_{\substack{i=0\\ i\neq j}}^{n} \frac{x-x_i}{x_j-x_i}= \frac{(x-x_0)\cdot\dots\cdot(x-x_{j-1})(x-x_{j+1})\cdot\dots\cdot(x-x_n)} {(x_j-x_0)\cdot\dots\cdot(x_j-x_{j-1})(x_j-x_{j+1})\cdot\dots\cdot(x_j-x_n)}\notag + \end{align} + das \begriff[Basispolynom!]{\person{Lagrange}-Basispolynom} vom Grad $n$. Offenbar gilt $L_j\in\Pi_n$ und + \begin{align} + \label{1.3} + L_j(x_k)=\begin{cases} + 1 & k=j \\ 0 & k\neq j + \end{cases} = \delta_{jk} + \end{align} + Definiert man $p:\real\to\real$ durch + \begin{align} + \label{1.4} + p(x) := \sum_{j=0}^{n} f_j\cdot L_j(x) + \end{align} + so ist $p\in\Pi_n$ und außerdem erfüllt $p$ wegen \cref{1.3} die Interpolationsbedingung \cref{interpolationsbedingung} + \item Eindeutigkeit: Angenommen es gibt Interpolierende $p,\tilde{p}\in\Pi_n$ mit $p\neq\tilde{p}$. Dann folgt $p-\tilde{p}\in\Pi_n$ und $(p-\tilde{p})(x_k)=p(x_k)-\tilde{p}(x_k)=0$ für $k=0,\dots,n$. Also hat $(p-\tilde{p})$ mindestens $n+1$ Nullstellen, hat aber Grad $n$. Das heißt, dass $(p-\tilde{p})$ das Nullpolynom sein muss. + \end{itemize} +\end{proof} + +\begin{*definition}[Interpolationspolynom] + Das Polynom, dass die Interpolationsbedingung erfüllt, heißt \begriff{Interpolationspolynom} zu $(x_0,f_0),\dots,(x_n,f_n)$. +\end{*definition} + +\begin{remark} + \begin{itemize} + \item Die Darstellung \cref{1.4} heißt \begriff{\person{Lagrange}-Form} des Interpolationspolynoms. + \item Um mittels \cref{1.4} einen Funktionswert $p(x)$ zu berechnen, werden $\mathcal{O}(n^2)$ Operationen genötigt; bei gleichabständigen Stützstellen kann man diesen Aufwand auf $\mathcal{O}(n)$ verringern. Ändern sich die Stützwerte, kann man durch Wiederverwendung von den $L_j(x)$ das $p(x)$ in $\mathcal{O}(n)$ Operationen berechnen. + \item Man kann zeigen, dass $L_0$ bis $L_n$ eine Basis von $\Pi_n$ bilden. + \end{itemize} +\end{remark} + +\subsection{\person{Newton}-Form des Interpolationspolynoms} + +\begin{align} + \label{1.5} + p(x) = c_0 + c_1(x-x_0)+c_2(x-x_0)(x-x_1)+\dots+c_n(x-x_0)\dots(x-x_{n-1}) +\end{align} +mit Koeffizienten $c_0,\dots,c_n\in\real$. Die Berechnung des Koeffizienten $c_j$ kann rekursiv durch Ausnutzen der Interpolationsbedingung \cref{interpolationsbedingung} erfolgen. Für $c_0$ erhält man +\begin{align} + f_0 \overset{!}{=} p(x_0) = c_0 \notag +\end{align} +Seien $c_0$ bis $c_{j-1}$ bereits ermittelt. Dann folgt: +\begin{align} + f_j \overset{!}{=} p(x_j) = \underbrace{c_0 + \sum_{k=1}^{j-1} c_k(x_j-x_0)\dots(x_j-x_{k-1})}_{\text{bekannt}} + c_j \underbrace{(x_j-x_0)\dots(x_j-x_{j-1})}_{\text{bekannt}}\notag +\end{align} + +\begin{remark} + \begin{itemize} + \item Der Aufwand um die Koeffizienten $c_0,\dots,c_n$ zu ermitteln ist $\mathcal{O}(n^2)$. Kommt ein Datenpaar hinzu, kann man \cref{1.5} um einen Summanden erweitern und mit $\mathcal{O}(n)$ Operationen $c_{n+1}$ bestimmen. + \item Sind die Koeffizienten $c_0,\dots,c_n$ in \cref{1.5} bekannt, dann benötigt man zur Berechnung von $p(x)$ $\mathcal{O}(n)$ Operationen. + \item Die Polynome $N_0,\dots,N_n:\real\to\real$ mit + \begin{align} + N_0 = 1\quad\text{und}\quad N_j=(x-x_0)\dots(x-x_{j-1})\notag + \end{align} + heißen \begriff[Basispolynom!]{\person{Newton}-Basispolynome} und bilden eine Basis von $\Pi_n$. + \end{itemize} +\end{remark} + +Die Koeffizienten $c_0,\dots,c_n$ ergeben sich wegen \cref{1.2} auch als Lösung des folgenden linearen Gleichungssystems: +\begin{align} + \begin{pmatrix} + 1 & & & & \\ + 1 & (x_1-x_0) & & & \\ + 1 & (x_2-x_0) & (x_2-x_0)(x_2-x_1) & & \\ + \vdots & \vdots & \vdots & \ddots & \\ + 1 & (x_n-x_0) & (x_n-x_0)(x_n-x_1) & \dots & \prod\limits_{i=0}^{n-1} (x_n-x_i) + \end{pmatrix}\cdot + \begin{pmatrix} + c_0 \\ c_1 \\ c_2 \\ \vdots \\ c_n + \end{pmatrix} = + \begin{pmatrix} + f_0 \\ f_1 \\ f_2 \\ \vdots \\ f_n + \end{pmatrix}\notag +\end{align} +Die Systemmatrix dieses linearen Gleichungssystems ist eine reguläre untere Dreiecksmatrix. + +Zu effizienten Berechnung eines Funktionswertes $p(x)$ nach \cref{1.5} mit gegebenen Koeffizienten $c_0,\dots,c_n$ kann man das \begriff{\person{Horner}-Schema} anwenden. Überlegung für $n=3$. +\begin{align} + p(x) &= c_0 + c_1(x-x_0) + c_2(x-x_0)(x-x_1) + c_3(x-x_0)(x-x_1)(x-x_2) \notag \\ + &= c_0 + (x-x_0)\Big[ c_1 + (x-x_1)\left[ c_2 + (x-x_2)c_3\right]\Big]\notag +\end{align} +Für beliebiges $n$ liefert das den folgenden Algorithmus: + +\begin{algorithm}[\person{Horner}-Schema für \person{Newton}-Form] + Input: $n$, $x$, $c_0$,..., $c_n$, $x_0$,..., $x_n$ +\begin{lstlisting} +p = %$c_n$% +do j = n-1, 0, -1 + p = %$c_j$% + (x - %$x_j$%)p +end do +\end{lstlisting} +\end{algorithm} + +\subsection{Interpolationsfehler} + +\begin{*definition}[Maximum-Norm] + Die Norm + \begin{align} + \Vert g\Vert_\infty := \max\limits_{x\in[a,b]}\vert g(x)\vert\quad\text{für } g\in C[a,b]\notag + \end{align} + definiert die \begriff{Maximum-Norm} in $C[a,b]$. +\end{*definition} + +\begin{proposition} + Sei $f\in C[a,b]$. Dann existiert zu jedem $\varepsilon>0$ ein Polynom $p_\varepsilon$ mit $\Vert f-p_\varepsilon\Vert\le\varepsilon$. +\end{proposition} + +Also liegt die Menge aller Polynome (beliebig hohen Grades) direkt in $C[a,b]$. + +\begin{definition}[Stützstellensystem] + \begriff{Stützstellensystem}: $a\le x_0^{(n)} < ... < x_n^{(n)} \le b$. Weiterhin bezeichne $p_n\in\Pi_n$ das zu den Datenpaaren $(x_k^{(n)},f(x_k^{(n)}))$ gehörende eindeutig bestimmte Interpolationspolynom. +\end{definition} + +\begin{proposition}[Satz von \person{Faber} 1914] + Zu jedem Stützstellensystem gibt es $f\in C[a,b]$, sodass $(p_n)$ nicht gleichmäßig gegen $f$ konvergiert. \\ + $\Vert p_n-f\Vert_\infty\to 0$ bedeutet, dass $(p_n)$ gleichmäßig gegen $f$ konvergiert. +\end{proposition} + +Nach einem Resultat von \person{Erdös}/\person{Vertesi} (1980) gilt sogar, dass $(p_n(x))$ fast überall divergiert. + +\begin{example}[\person{Runge}] + $f:\real\to\real$, $f(x)=\frac{1}{1+25x^2}$ \\ + äquidistante Stützstellen $x_0,...,x_n$, $p\in\Pi_n$ als Interpolationspolynom + \begin{center}\begin{tikzpicture} + \begin{axis}[ + xmin=-1.5, xmax=1.5, xlabel=$x$, + ymin=-1.5, ymax=1.5, ylabel=$y$, + samples=400, + axis y line=middle, + axis x line=middle, + ] + \addplot+[mark=none] {1/(1+25*x^2)}; + \end{axis} + \end{tikzpicture}\end{center} +\end{example} \ No newline at end of file diff --git a/3. Semester/NUM/TeX_files/Vorwort.tex b/3. Semester/NUM/TeX_files/Vorwort.tex new file mode 100644 index 0000000..e69de29 diff --git a/3. Semester/NUM/Vorlesung NUM.pdf b/3. Semester/NUM/Vorlesung NUM.pdf new file mode 100644 index 0000000..3588596 Binary files /dev/null and b/3. Semester/NUM/Vorlesung NUM.pdf differ diff --git a/3. Semester/NUM/Vorlesung NUM.tex b/3. Semester/NUM/Vorlesung NUM.tex new file mode 100644 index 0000000..a73e6ea --- /dev/null +++ b/3. Semester/NUM/Vorlesung NUM.tex @@ -0,0 +1,46 @@ +\documentclass[ngerman,a4paper,order=firstname]{../../texmf/tex/latex/mathscript/mathscript} +\usepackage{../../texmf/tex/latex/mathoperators/mathoperators} + +\title{\textbf{Numerik WS2018/19}} +\author{Dozent: Prof. Dr. Andreas Fischer} + +\begin{document} +\pagenumbering{roman} +\pagestyle{plain} + +\maketitle + +\hypertarget{tocpage}{} +\tableofcontents +\bookmark[dest=tocpage,level=1]{Inhaltsverzeichnis} + +\pagebreak +\pagenumbering{arabic} +\pagestyle{fancy} + +\chapter*{Vorwort} +\input{./TeX_files/Vorwort} + +\chapter{Interpolation} +\input{./TeX_files/Interpolation_Grundlagen} +\include{./TeX_files/Interpolation_durch_Polynome} + +\chapter{numerische Quadratur und Integration} + +\chapter{Lineare Gleichungssysteme} + +\chapter{Kondition} + +\chapter{Verfahren für nichtlineare Gleichungssysteme} + +\chapter{lineare Optimierung} + +\part*{Anhang} +\addcontentsline{toc}{part}{Anhang} +\appendix + +%\printglossary[type=\acronymtype] + +\printindex + +\end{document} diff --git a/Material/Grundoperationen_Deque.pdf b/Material/Grundoperationen_Deque.pdf new file mode 100644 index 0000000..819a743 Binary files /dev/null and b/Material/Grundoperationen_Deque.pdf differ diff --git a/Material/Grundoperationen_Deque.tex b/Material/Grundoperationen_Deque.tex new file mode 100644 index 0000000..0e15083 --- /dev/null +++ b/Material/Grundoperationen_Deque.tex @@ -0,0 +1,89 @@ +\documentclass{article} + +\usepackage{tikz} + +\begin{document} + \begin{tikzpicture} + \draw (0,-1) -- (1,-1); + \draw (0,-2) -- (1,-2); + \draw (0,-1) -- (0,-2); + \draw (1,-1) -- (1,-2); + \draw[fill=black] (0.5,-1.5) circle (0.1); + \draw[->, thick, dashed] (0.5,-1.5) -- (0.5,-3); + \draw[->, thick] (0.5,-1.5) -- (-3.5,-3); + \node at (0.5,-0.5) (s) {\texttt{s}}; + + \draw (0,-3) -- (0,-5); + \draw (0,-3) -- (1,-3); + \draw (1,-3) -- (1,-5); + \draw (0,-5) -- (1,-5); + \draw (0,-4) -- (1,-4); + \draw[fill=black] (0.5,-4.5) circle (0.1); + \draw[->, thick] (0.5,-4.5) -- (2,-3.5); + \node at (0.5,-5.5) (alt) {alter head}; + + \draw (2,-3) -- (2,-5); + \draw (2,-3) -- (3,-3); + \draw (3,-3) -- (3,-5); + \draw (2,-5) -- (3,-5); + \draw (2,-4) -- (3,-4); + \draw[fill=black] (2.5,-4.5) circle (0.1); + \draw[->, thick] (2.5,-4.5) -- (4,-3.5); + \node at (4.4,-3.5) (n) {...}; + + \draw[red] (-2,-1) -- (-1,-1); + \draw[red] (-2,-2) -- (-1,-2); + \draw[red] (-2,-1) -- (-2,-2); + \draw[red] (-1,-1) -- (-1,-2); + \draw[fill=red, red] (-1.5,-1.5) circle (0.1); + \draw[->, thick, red] (-1.5,-1.5) -- (0.5,-3); + \node[red] at (-1.5,-0.5) (s) {\texttt{p}}; + + \draw[blue] (-4,-3) -- (-3,-3); + \draw[blue] (-4,-3) -- (-4,-5); + \draw[blue] (-3,-3) -- (-3,-5); + \draw[blue] (-4,-4) -- (-3,-4); + \draw[blue] (-4,-5) -- (-3,-5); + \draw[fill=blue, blue] (-3.5,-4.5) circle (0.1); + \draw[->, thick, red] (-3.5,-4.5) -- (0,-3.5); + \node[blue] at (-3.5,-5.5) (neu) {neues Element}; + \end{tikzpicture} + + \begin{tikzpicture} + \draw (0,-1) -- (1,-1); + \draw (0,-2) -- (1,-2); + \draw (0,-1) -- (0,-2); + \draw (1,-1) -- (1,-2); + \draw[fill=black] (0.5,-1.5) circle (0.1); + \draw[->, thick, dashed] (0.5,-1.5) -- (0.5,-3); + \draw[->, thick] (0.5,-1.5) -- (2.5,-3); + \node at (0.5,-0.5) (s) {\texttt{s}}; + + \draw (0,-3) -- (0,-5); + \draw (0,-3) -- (1,-3); + \draw (1,-3) -- (1,-5); + \draw (0,-5) -- (1,-5); + \draw (0,-4) -- (1,-4); + \draw[fill=black] (0.5,-4.5) circle (0.1); + \draw[->, thick] (0.5,-4.5) -- (2,-3.5); + \node at (0.5,-5.5) (alt) {alter head}; + + \draw (2,-3) -- (2,-5); + \draw (2,-3) -- (3,-3); + \draw (3,-3) -- (3,-5); + \draw (2,-5) -- (3,-5); + \draw (2,-4) -- (3,-4); + \draw[fill=black] (2.5,-4.5) circle (0.1); + \draw[->, thick] (2.5,-4.5) -- (4,-3.5); + \node at (2.5,-5.5) (neu) {neuer head}; + \node at (4.4,-3.5) (n) {...}; + + \draw[red] (-2,-1) -- (-1,-1); + \draw[red] (-2,-2) -- (-1,-2); + \draw[red] (-2,-1) -- (-2,-2); + \draw[red] (-1,-1) -- (-1,-2); + \draw[fill=red, red] (-1.5,-1.5) circle (0.1); + \draw[->, thick, red] (-1.5,-1.5) -- (0.5,-3); + \node[red] at (-1.5,-0.5) (s) {\texttt{p}}; + \end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/Material/Quelltext.pdf b/Material/Quelltext.pdf new file mode 100644 index 0000000..b0a2c4f Binary files /dev/null and b/Material/Quelltext.pdf differ diff --git a/Material/Quelltext.tex b/Material/Quelltext.tex new file mode 100644 index 0000000..8326c70 --- /dev/null +++ b/Material/Quelltext.tex @@ -0,0 +1,36 @@ +\documentclass{article} +\usepackage{xcolor} +\usepackage{lmodern} +\usepackage{listings} + +\definecolor{lightlightgray}{rgb}{0.95,0.95,0.95} +\definecolor{lila}{rgb}{0.8,0,0.8} +\definecolor{mygray}{rgb}{0.5,0.5,0.5} +\definecolor{mygreen}{rgb}{0,0.8,0.26} + +\lstset{language=[95]Fortran, + basicstyle=\ttfamily, + keywordstyle=\color{lila}, + commentstyle=\color{lightgray}, + morecomment=[l]{!\ },% Comment only with space after ! + stringstyle=\color{mygreen}\ttfamily, + backgroundcolor=\color{white}, + showstringspaces=false, + numbers=left, + numbersep=10pt, + numberstyle=\color{mygray}\ttfamily, + identifierstyle=\color{blue} +} +\begin{document} + +\begin{lstlisting} +! Der folgende Fortran-Code ist bei Wikipedia geklaut. +SUBROUTINE test( Argument1, Argument2, Argument3 ) + REAL, INTENT(IN) :: Argument1 + CHARACTER(LEN= *), INTENT(IN) :: Argument2 + INTEGER, INTENT(IN), OPTIONAL :: Argument3 + ! This makes sense + write(*,*) "Hallo Welt!" +END SUBROUTINE test +\end{lstlisting} +\end{document} \ No newline at end of file diff --git a/Material/prog_tree.pdf b/Material/prog_tree.pdf new file mode 100644 index 0000000..589cbb9 Binary files /dev/null and b/Material/prog_tree.pdf differ diff --git a/Material/prog_tree.tex b/Material/prog_tree.tex new file mode 100644 index 0000000..cbf1154 --- /dev/null +++ b/Material/prog_tree.tex @@ -0,0 +1,33 @@ +\documentclass{article} + +\usepackage{tikz} + +\begin{document} + \begin{tikzpicture}[level/.style={sibling distance=60mm/#1}] + \node[circle,draw] (root) {\texttt{.OR.}} + child {node[circle,draw] (a) {\texttt{>=}} + child {node[circle,draw] (b) {\texttt{/}} + child {node[circle,draw] (c) {\texttt{/}} + child {node[] (d) {$i$}} + child {node[] (e) {$j$}}} + child {node[] (f) {$x$}}} + child {node[] (g) {$y$}}} + child {node[circle,draw] (h) {\texttt{.AND.}} + child {node[circle,draw] (i) {\texttt{<}} + child {node[circle,draw] (j) {\texttt{-}} + child {node[circle,draw] (k) {\texttt{/}} + child {node[] (l) {$y$}} + child {node[] (m) {$z$}}}} + child {node[circle,draw] (q) {\texttt{-}} + child {node[circle,draw] (p) {\texttt{**}} + child {node[] (n) {$x$}} + child {node[circle,draw] (o) {\texttt{**}} + child {node[] (w) {3}} + child {node[] (x) {2}}}}}} + child {node[circle,draw] (r) {\texttt{<=}} + child {node[] (s) {$char$}} + child {node[circle,draw] (t) {\texttt{//}} + child {node[] (u) {'p'}} + child {node[] (v) {'eter'}}}}}; + \end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/Material/sortieralgorithmen.pdf b/Material/sortieralgorithmen.pdf new file mode 100644 index 0000000..bb5c5f6 Binary files /dev/null and b/Material/sortieralgorithmen.pdf differ diff --git a/Material/sortieralgorithmen.tex b/Material/sortieralgorithmen.tex new file mode 100644 index 0000000..5ad824d --- /dev/null +++ b/Material/sortieralgorithmen.tex @@ -0,0 +1,73 @@ +\documentclass{article} +\usepackage{tikz} +\usetikzlibrary{decorations.pathreplacing} + +\begin{document} + \begin{tikzpicture} + \node at (1.5,1) (bubble) {Bubblesort}; + \draw (0,0) rectangle (3,-9); + \draw[fill=lightgray] (0,0) rectangle (3,-2); + \draw[decorate,decoration={brace,amplitude=8pt}] (3,0) -- (3,-2) node[midway, right, xshift=6pt]{sortiert}; + \draw (0,-2.5) -- (3,-2.5); + \draw[fill=black] (1.5,-3.5) circle (0.1); + \draw[fill=black] (1.5,-4.5) circle (0.1); + \draw[fill=black] (1.5,-5.5) circle (0.1); + \draw (0,-6.5) -- (3,-6.5); + \draw (0,-7) -- (3,-7); + \draw (0,-7.5) -- (3,-7.5); + \draw (0,-8) -- (3,-8); + \draw (0,-8.5) -- (3,-8.5); + + \node at (-0.4,0) (1) {1}; + \node at (-0.4,-2) (j-1) {$j-1$}; + \node at (-0.4,-2.5) (j) {$j$}; + \node at (-0.4,-9) (n) {$n$}; + + \node at (3,-6.75) (a) {}; + \node at (3,-7.25) (b) {}; + \node at (3,-7.75) (c) {}; + \node at (3,-8.25) (d) {}; + \node at (3,-8.75) (e) {}; + \draw[->, thick] (a) to [out=0, in=0] (b); + \draw[->, thick] (b) to [out=0, in=0] (c); + \draw[->, thick] (c) to [out=0, in=0] (d); + \draw[->, thick] (d) to [out=0, in=0] (e); + \draw[->, thick] (e) to [out=0, in=0] (d); + \draw[->, thick] (d) to [out=0, in=0] (c); + \draw[->, thick] (c) to [out=0, in=0] (b); + \draw[->, thick] (b) to [out=0, in=0] (a); + + \node at (7.5,1) (selection) {Selectionsort}; + \draw (6,0) rectangle (9,-9); + \draw[fill=lightgray] (6,0) rectangle (9,-2); + \draw[decorate,decoration={brace,amplitude=8pt}] (9,0) -- (9,-2) node[midway, right, xshift=6pt]{sortiert}; + \draw (6,-2.5) -- (9,-2.5); + \node at (5.7,-2.25) (j) {$j$}; + \draw (6,-6.5) -- (9,-6.5); + \node at (5.7,-6.25) (m) {$m$}; + \draw (6,-6) -- (9,-6); + \node at (7.5,-6.25) (min) {$min$}; + + \node at (9,-2.25) (g) {}; + \node at (9,-6.25) (h) {}; + \draw[->,thick] (h) to [out=0, in=0] (g); + \draw[->,thick] (g) to [out=0, in=0] (h); + + \node at (13.5,1) (insert) {Insertionsort}; + \draw (12,0) rectangle (15,-9); + \draw[decorate,decoration={brace,amplitude=8pt}] (15,0) -- (15,-4) node[midway, right, xshift=6pt]{teilsortiert}; + \draw (12,-4.5) -- (15,-4.5); + \node at (11.7,-4.25) (j) {$j$}; + \draw (12,-4) -- (15,-4); + \draw (12,-1) -- (15,-1); + \draw (12,-1.5) -- (15,-1.5); + \node at (12,-1.25) (k) {}; + \draw[->,thick] (j) to [out=150, in=180] (k); + + \draw[->] (12.5,-1.5) -- (12.5,-2); + \draw[->] (13,-2) -- (13,-2.5); + \draw[->] (13.5,-2.5) -- (13.5,-3); + \draw[->] (14,-3) -- (14,-3.5); + \draw[->] (14.5,-3.5) -- (14.5,-4); + \end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/Material/walters_lochkarte.pdf b/Material/walters_lochkarte.pdf new file mode 100644 index 0000000..10394c1 Binary files /dev/null and b/Material/walters_lochkarte.pdf differ diff --git a/Material/walters_lochkarte.tex b/Material/walters_lochkarte.tex new file mode 100644 index 0000000..3ef5e4b --- /dev/null +++ b/Material/walters_lochkarte.tex @@ -0,0 +1,41 @@ +\documentclass{report} + +\usepackage{tikz} + +\begin{document} +\begin{tikzpicture} + \draw (0,0) -- (10,0); + \draw (0,0) -- (0,4); + \draw (0,4) -- (1,5); + \draw (1,5) -- (10,5); + \draw (10,0) -- (10,5); + + \node at (10,-0.3) (ende) {80}; + \node at (8,-0.3) (mitte) {$72\vert73$}; + \node at (0.2,-0.3) (1) {1}; + \node at (0.4,-0.3) (2) {2}; + \node at (0.6,-0.3) (3) {3}; + \node at (0.8,-0.3) (4) {4}; + \node at (1,-0.3) (5) {5}; + \node at (1.3,-0.3) (6) {$\vert 6\vert$}; + + \draw (1.16,0) -- (1.16,5); + \draw (1.43,0) -- (1.43,5); + \draw (8,0) -- (8,5); + + \node at (0.2,3.5) (c) {\texttt{C}}; + \node at (0.85,3.5) (Com) {\texttt{Com}}; + \node at (1.3,3.47) (m) {\texttt{m}}; + \node at (1.82,3.488) (ents) {\texttt{ents}}; + + \node at (0.2,3) (stern) {\texttt{*}}; + \node at (0.85,3) (Kom) {\texttt{Kom}}; + \node at (1.3,2.97) (m2) {\texttt{m}}; + \node at (2,2.99) (entare) {\texttt{entare}}; + + \node at (0.84,2.5) (123) {\texttt{123}}; + \node at (2.75,2.5) (myprog) {\texttt{PROGRAM MYPROG}}; + \node at (0.65,2) (99999) {\texttt{99999}}; + \node at (2.75,2) (product) {\texttt{PRODUC = X * Y}}; +\end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/README.md b/README.md index cba62e0..f7f2efc 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,14 @@ # TU Dresden: Mathematik - Bachelor -Skript zu den Vorlesungen **Grundlagen der Analysis** (Prof. Dr. Friedemann Schuricht), **Lineare Algebra und analytische Geometrie** (Prof. Dr. Arno Fehm), **Programmieren für Mathematiker** (Prof. Dr. Wolfgang Walter), **Gewöhnliche Differentialgleichungen und Integration auf Mannigfaltigkeiten** (Prof. Dr. ??), **Maß und Integral** (Prof. Dr. ??), **Geometrie** (Prof. Dr. ??) und **Numerik** (Prof. Dr. ??) der TU Dresden +Skript zu den Vorlesungen **Grundlagen der Analysis** (Prof. Dr. Friedemann Schuricht), **Lineare Algebra und analytische Geometrie** (Prof. Dr. Arno Fehm, Prof. Dr. Ulrich Krähmer), **Programmieren für Mathematiker** (Prof. Dr. Wolfgang Walter), **Gewöhnliche Differentialgleichungen und Integration auf Mannigfaltigkeiten** (Prof. Dr. Friedemann Schuricht), **Maß und Integral** (Prof. Dr. Rene Schilling), **Geometrie** (Prof. Dr. Arno Fehm) und **Numerik** (Prof. Dr. Andreas Fischer) der TU Dresden -### Lineare Algebra und analytische Geometrie (WS2017/18 + SS2018) +### [Fehm] Lineare Algebra und analytische Geometrie (WS2017/18 + SS2018) - Aufgabenblätter LAAG 1: [https://drive.google.com/open?id=1hNMVAKpV9sRSbxDKy5ip1qxs27v6nl_k](https://drive.google.com/open?id=1hNMVAKpV9sRSbxDKy5ip1qxs27v6nl_k) - Aufgabenblätter LAAG 2: [https://drive.google.com/open?id=17OHpTrVX_ndNjS_Ml86IYKG2rilGh5HX](https://drive.google.com/open?id=17OHpTrVX_ndNjS_Ml86IYKG2rilGh5HX) -- Lösungen zu den Aufgaben LAAG 1: +- Lösungen zu den Aufgaben LAAG 1: [https://drive.google.com/open?id=1jBB1ygEvdAEJzJ_mnwIfZBfrwA6Ks4CA](https://drive.google.com/open?id=1jBB1ygEvdAEJzJ_mnwIfZBfrwA6Ks4CA) - Lösungen zu den Aufgaben LAAG 2: [https://drive.google.com/open?id=1LKlGFgX6iF6NZfDfbA-icA2GeUtrho6l](https://drive.google.com/open?id=1LKlGFgX6iF6NZfDfbA-icA2GeUtrho6l) +### [Krähmer] Lineare Algebra und analytische Geometrie (WS2018/19 + SS2019) + ### Einführung in die Analysis (WS2017/18 + SS2018) - Aufgabenblätter ANAG 1: [https://drive.google.com/open?id=1iZOk2PVgI4I3_chZ7cUN_vJgWoO_zPIM](https://drive.google.com/open?id=1iZOk2PVgI4I3_chZ7cUN_vJgWoO_zPIM) - Aufgabenblätter ANAG 2: [https://drive.google.com/open?id=1PuHKdDc9gfLg5GhORT75F4TedaxXFn-d](https://drive.google.com/open?id=1PuHKdDc9gfLg5GhORT75F4TedaxXFn-d) @@ -14,6 +16,9 @@ Skript zu den Vorlesungen **Grundlagen der Analysis** (Prof. Dr. Friedemann Schu - Lösungen zu den Aufgaben ANAG 2: [https://drive.google.com/open?id=15OhQHHOEGEf-oO-K6hMFMz3AgnV797eW](https://drive.google.com/open?id=15OhQHHOEGEf-oO-K6hMFMz3AgnV797eW) - Tafel-Bilder gibt es [hier](https://photos.app.goo.gl/ssEPX9AZkWuSExo3A). Alle! :smile: +### Programmieren für Mathematiker (WS2017/18 + SS2018) +- Eigenes Repository mit meinen Programmen: [https://github.com/henrydatei/TU_PROG](https://github.com/henrydatei/TU_PROG) + ### Gewöhnliche Differentialgleichungen und Integration auf Mannigfaltigkeiten (WS2018/19) ### Maß und Integral (WS2018/19) @@ -21,3 +26,21 @@ Skript zu den Vorlesungen **Grundlagen der Analysis** (Prof. Dr. Friedemann Schu ### Geometrie (WS2018/19) ### Numerik (WS2018/19) + +# TU Dresden: Nebenfach Volkswirtschaftslehre +Skript zu den Volesungen **Einführung in die Volkswirtschaftslehre** (Prof. Dr. Marcel Thum), **Einführung in die Mikroökonomie** (Prof. Dr. Marco Lehmann-Waffenschmidt) und **Einführung in die Makroökonomie** (Prof. Dr. Stefan Eichler) der TU Dresden + +### Einführung in die Volkswirtschaftslehre (WS2017/18) +- Vorlesungsfolien: [https://drive.google.com/open?id=1Fvw9n3POEbsTNGVMdCoDq6zU8b9-e-zM](https://drive.google.com/open?id=1Fvw9n3POEbsTNGVMdCoDq6zU8b9-e-zM) +- Übungsaufgaben: [https://drive.google.com/open?id=1zj6mK0_1GKS_7HK3nYFKuMlOJAR104CH](https://drive.google.com/open?id=1zj6mK0_1GKS_7HK3nYFKuMlOJAR104CH) +- Lösungen zu den Übungsaufgaben: [https://drive.google.com/open?id=1-rz5EFHl1z9QTSCdKAZLI9cT_sJJOr0-](https://drive.google.com/open?id=1-rz5EFHl1z9QTSCdKAZLI9cT_sJJOr0-) + +### Einführung in die Mikroökonomie (SS2018) +- Vorlesungsfolien: [https://drive.google.com/open?id=1Qk6LVrcglHQD4FMTwe9mHemgGgr1setb](https://drive.google.com/open?id=1Qk6LVrcglHQD4FMTwe9mHemgGgr1setb) +- Übungsaufgaben: [https://drive.google.com/open?id=16cOVAsbDz_ScfLXDXVh4pwMel5bEg8u4](https://drive.google.com/open?id=16cOVAsbDz_ScfLXDXVh4pwMel5bEg8u4) +- Lösungen zu den Übungsaufgaben: [https://drive.google.com/open?id=1l3B9Tfvxvp6dzxStuL4V7e7iSMkTGDH_](https://drive.google.com/open?id=1l3B9Tfvxvp6dzxStuL4V7e7iSMkTGDH_) +- Tutoriumsaufgaben: [https://drive.google.com/open?id=1INV-P6hB2I1eNUtoXyydHhlnPf1chNYc](https://drive.google.com/open?id=1INV-P6hB2I1eNUtoXyydHhlnPf1chNYc) + +### Einführung in die Makroökonomie (WS2018/19) +- Vorlesungsfolien: +- Tutoriumsaufgaben: [https://drive.google.com/open?id=1QeKbJUPVIlJVJTOxm3eAIVPN0YCIdvHN](https://drive.google.com/open?id=1QeKbJUPVIlJVJTOxm3eAIVPN0YCIdvHN) diff --git a/texmf/tex/latex/mathscript/mathscript.cls b/texmf/tex/latex/mathscript/mathscript.cls index 5c6e35f..692b3b8 100644 --- a/texmf/tex/latex/mathscript/mathscript.cls +++ b/texmf/tex/latex/mathscript/mathscript.cls @@ -16,13 +16,14 @@ \let\tempa\@empty \IfEq{#1}{firstnumber}{\def\tempa{changebreak}}{% \IfEq{#1}{firstname}{\def\tempa{break}}{% - \PackageWarning{mathscript}{Unknown Value} + \PackageWarning{mathscript}{Unknown Value for key `order'} } } \edef\theoremheader@order@val{\tempa} } -%possible values: all you can imagine. usefull values: in this class predefined theorem-environment-names +%possible values: all you can imagine. +%usefull values: theorem-names defined in this class, new theorems defined by \newmdtheoremenv \listadd{\theorem@disable}{\@empty} \DeclareOptionX{disable}{% \listadd{\theorem@disable}{#1} @@ -60,8 +61,10 @@ %tabulars \RequirePackage{tabularx} %tabularx-environment (explicitly set width of columns) +\RequirePackage{longtable} %Tabellen mit Seitenumbrüchen \RequirePackage{multirow} \RequirePackage{booktabs} %improved rules +\usepackage{colortbl} %einfärben von Spalten, Zeilen und Zellen \RequirePackage[title,titletoc]{appendix} @@ -86,7 +89,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Graphics-related packages -\RequirePackage[table]{xcolor} +\RequirePackage[table,dvipsnames]{xcolor} \RequirePackage{graphicx} \RequirePackage{tcolorbox} @@ -95,7 +98,7 @@ \usepgfplotslibrary{fillbetween} \RequirePackage{pgf} \RequirePackage{tikz} -\usetikzlibrary{patterns,arrows,calc,decorations.pathmorphing,backgrounds, positioning,fit,petri} +\usetikzlibrary{patterns,arrows,calc,decorations.pathmorphing,backgrounds, positioning,fit,petri,decorations.fractals} \usetikzlibrary{matrix} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -110,6 +113,35 @@ \RequirePackage{enumerate} \RequirePackage{enumitem} %customize label +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Pakete für Programmierung + +\RequirePackage{lmodern} +\RequirePackage{listings} + +%Konfiguration dazu +\definecolor{lightlightgray}{rgb}{0.95,0.95,0.95} +\definecolor{lila}{rgb}{0.8,0,0.8} +\definecolor{mygray}{rgb}{0.5,0.5,0.5} +\definecolor{mygreen}{rgb}{0,0.8,0.26} + +\lstset{language=[95]Fortran, + basicstyle=\ttfamily, + keywordstyle=\color{lila}, + commentstyle=\color{lightgray}, + morecomment=[l]{!\ },% Comment only with space after ! + stringstyle=\color{mygreen}\ttfamily, + backgroundcolor=\color{white}, + showstringspaces=false, + numbers=left, + numbersep=10pt, + numberstyle=\color{mygray}\ttfamily, + identifierstyle=\color{blue}, + xleftmargin=.2\textwidth, + xrightmargin=.2\textwidth, + escapechar=\% +} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Index related packages \RequirePackage[texindy]{imakeidx} @@ -139,6 +171,7 @@ % End Packages % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%tweak \newmdtheoremenv to create an empty environment if this very enviroment is disabled \RenewDocumentCommand{\newmdtheoremenv}{O{} m o m o}{% \ifinlist{#2}{\theorem@disable}{% \IfStrEq{#2}{theorem}{\newtheorem{#2}{}[section]}{\newtheorem{#2}{}[theorem]} @@ -246,12 +279,26 @@ innerleftmargin=10pt,% ]{remark}[theorem]{\hspace*{-10pt}$\blacktriangleright$\hspace*{\dimexpr 10pt - \blacktrianglewidth\relax}Bemerkung} +\newmdtheoremenv[% +hidealllines=true,% +frametitlefont=\normalfont\bfseries\color{black},% +innerleftmargin=0pt,% +skipabove=5pt,% +innerleftmargin=10pt,% +]{erinnerung}[theorem]{\hspace*{-10pt}$\blacktriangleright$\hspace*{\dimexpr 10pt - \blacktrianglewidth\relax}Erinnerung} + \newmdtheoremenv[% hidealllines=true,% frametitlefont=\normalfont\bfseries\color{black},% innerleftmargin=10pt,% ]{example}[theorem]{\hspace*{-10pt}\rule{5pt}{5pt}\hspace*{5pt}Beispiel} +\newmdtheoremenv[% +hidealllines=true,% +frametitlefont=\normalfont\bfseries\color{black},% +innerleftmargin=10pt,% +]{algorithm}[theorem]{\hspace*{-10pt}\rule{5pt}{5pt}\hspace*{5pt}Algorithmus} + %unnumbered theorems \theoremstyle{nonumberbreak} \theoremindent0cm @@ -645,4 +692,4 @@ \titlespacing{\chapter}{0pt}{-0.75cm}{0pt}% } -\endinput +\endinput \ No newline at end of file