This commit is contained in:
2026-02-12 15:43:35 +01:00
commit 5dbb792f9d
3 changed files with 422 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
build/

44
build.sh Executable file
View File

@@ -0,0 +1,44 @@
#!/bin/bash
# Define ANSI Color Codes
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color (Reset)
SOURCE="./src/mathe_2_merkblatt.typ"
BUILD_DIR="./build"
# Check if Build Directory exists
if [ ! -d "$BUILD_DIR" ]; then
echo -e "${BLUE}[INFO]${NC} Creating build directory: $BUILD_DIR"
mkdir -p "$BUILD_DIR"
fi
# Check if Source File exists
if [ ! -f "$SOURCE" ]; then
echo -e "${RED}[ERROR]${NC} Source file '$SOURCE' not found!"
exit 1
fi
echo -e "${YELLOW}Starting compilation...${NC}"
# Compile Dark Mode
typst compile --input dark-mode=true "$SOURCE" "${BUILD_DIR}/mathe_2_merkblatt_dark.pdf"
if [ $? -eq 0 ]; then
echo -e "${GREEN}[SUCCESS]${NC} Darkmode build: ${CYAN}${BUILD_DIR}/mathe_2_merkblatt_dark.pdf${NC}"
else
echo -e "${RED}[FAIL]${NC} Error compiling Darkmode target"
fi
# Compile Light Mode
typst compile --input dark-mode=false "$SOURCE" "${BUILD_DIR}/mathe_2_merkblatt_light.pdf"
if [ $? -eq 0 ]; then
echo -e "${GREEN}[SUCCESS]${NC} Lightmode build: ${CYAN}${BUILD_DIR}/mathe_2_merkblatt_light.pdf${NC}"
else
echo -e "${RED}[FAIL]${NC} Error compiling Lightmode target"
fi
echo -e "${YELLOW}Build process finished!${NC}"

377
src/mathe_2_merkblatt.typ Normal file
View File

@@ -0,0 +1,377 @@
// THEME SETUP
#let dark-mode = sys.inputs.at("dark-mode", default: "true") == "true"
// Catppuccin Farben Definition
#let palette = if dark-mode {
(
bg: rgb("#1e1e2e"),
fg: rgb("#cdd6f4"),
base: rgb("#181825"),
blue: rgb("#89b4fa"),
red: rgb("#f38ba8"),
teal: rgb("#94e2d5"),
subtext: rgb("#a6adc8"),
surface: rgb("#313244"),
line: rgb("#45475a")
)
} else {
(
bg: rgb("#FFFFFF"),
fg: rgb("#232634"),
base: rgb("#303446"),
blue: rgb("#8caaee"),
red: rgb("#e78284"),
teal: rgb("#81c8be"),
subtext: rgb("#b5bfe2"),
surface: rgb("#414559"),
line: rgb("#bcc0cc")
)
}
// SETUP & DESIGN
#set page(
paper: "a4",
flipped: true,
margin: (top: 1cm, left: 1cm, right: 1cm, bottom: 1.5cm),
fill: palette.bg,
footer: [
#set text(fill: palette.fg, size: 7pt)
#block(width: 100%, inset: (top: 0.5em))[
#line(length: 100%, stroke: 0.5pt + palette.line)
#v(0.2em)
#grid(
columns: (1fr, 2fr, 1fr),
align: (left, center, right),
[Nils Pukropp],
[
#link("mailto:nils@narl.io") #h(1em) | #h(1em)
#link("https://git.narl.io/nvrl/Mathe-II-f-r-Informatiker-Merkblatt")[#underline[https://git.narl.io/nvrl/Mathe-II-f-r-Informatiker-Merkblatt]]
],
[Stand: WS2026]
)
]
],
footer-descent: 0.3cm
)
#set text(
font: "FiraCode Nerd Font",
size: 7pt,
lang: "de",
fill: palette.fg
)
// Spalten-Layout
#show: columns.with(3, gutter: 1.5em)
#set heading(numbering: none)
#show heading.where(level: 1): it => block(
width: 100%,
above: 1.5em,
below: 0.8em,
fill: palette.blue,
inset: (x: 4pt, y: 3pt),
radius: 2pt,
text(fill: palette.bg, weight: "bold", 10pt, upper(it.body))
)
#show heading.where(level: 2): it => block(
width: 100%,
above: 1.2em,
below: 0.6em,
sticky: true,
{
text(fill: palette.red, weight: "bold", it.body)
v(0.1em)
line(length: 100%, stroke: 0.5pt + palette.line)
}
)
// HILFSFUNKTIONEN
#let defbox(title, body) = block(
width: 100%,
fill: palette.teal.lighten(if dark-mode { 60% } else { 90% }),
stroke: (left: 2pt + palette.teal),
inset: 5pt,
radius: (right: 2pt),
above: 1em,
below: 1em,
breakable: false,
[#text(fill: if dark-mode { palette.bg } else { palette.fg })[#strong(title): #body]]
)
#let alertbox(body) = block(
width: 100%,
fill: palette.surface.lighten(if dark-mode { 10% } else { 50% }),
stroke: 0.5pt + palette.line,
inset: 5pt,
radius: 3pt,
above: 1em,
below: 1em,
breakable: false,
[#text(fill: palette.fg)[#body]]
)
// Operatoren & Symbole
#let rang = math.op("Rang")
#let ker = math.op("Kern")
#let bild = math.op("Bild")
#let span = math.op("span")
#let dim = math.op("dim")
#let spur = math.op("Spur")
#let id = math.bb("1")
#let grad = math.op("grad")
#let div = math.op("div")
#let rot = math.op("rot")
#let Hess = math.op("Hess")
#let ggT = math.op("ggT")
// Zahlbereiche
#let RR = math.bb("R")
#let ZZ = math.bb("Z")
#let NN = math.bb("N")
#let QQ = math.bb("Q")
#let CC = math.bb("C")
#let FF = math.bb("F")
// CONTENT
= Analysis (Mehrdimensional)
#defbox[Gradient & Hesse-Matrix][
Für $f: RR^n -> RR$:
- *Gradient:* $nabla f(x) = (partial_1 f, ..., partial_n f)^T$
- *Hesse-Matrix:* $H_f (x) = ( (partial^2 f) / (partial x_i partial x_j) )_(i,j)$
(Symmetrisch nach Satz von Schwarz)
]
== Stationäre Punkte & Extrema
1. *Notwendig:* Berechne $nabla f(x) = 0$. Löse LGS.
2. *Hinreichend:* Prüfe Definitheit von $H_f(x_0)$.
#alertbox[
*Definitheit der Hesse-Matrix $H_f(x_0)$*:
- *Positiv definit* ($>0$): *Lokales Minimum*
- *Negativ definit* ($<0$): *Lokales Maximum*
- *Indefinit:* *Sattelpunkt*
]
== Hurwitz-Kriterium (Definitheit)
Für symmetrische Matrix $A in RR^(n times n)$. Betrachte Hauptminoren $D_k$ (Det. der oberen linken $k times k$ Untermatrix).
- *Pos. Def.:* Alle $D_k > 0$ ($D_1 > 0, D_2 > 0, ...$)
- *Neg. Def.:* Vorzeichenwechsel beginnend mit Minus ($- + - + ...$), d.h. $D_1 < 0, D_2 > 0, D_3 < 0 ...$
- *Indefinit:* $det(A) != 0$, aber kein Muster oben passt.
- *Semidefinit:* Wenn $det(A)=0$ (Eigenwerte prüfen!).
*Spezialfall $2 times 2$:* $H_f = mat(f_(x x), f_(x y); f_(y x), f_(y y))$
- $det(H) > 0$ und $f_(x x) > 0 =>$ Minimum.
- $det(H) > 0$ und $f_(x x) < 0 =>$ Maximum.
- $det(H) < 0 =>$ Sattelpunkt.
== Richtungsableitung
Ableitung in Punkt $x$ in Richtung $v$ ($v$ muss normiert sein! $||v||=1$):
$ (partial f) / (partial v) (x) = nabla f(x) dot v / ||v|| $
== Konvexität
- $f$ konvex $<=> H_f(x)$ positiv (semi-)definit für alle $x$.
- $f$ konkav $<=> H_f(x)$ negativ (semi-)definit für alle $x$.
- $S$ konvex: Verbindungslinie zweier Punkte liegt in $S$.
#colbreak()
= Zahlentheorie
== Modulo-Rechnung
$\ZZ_n = \{0, ..., n-1\}$. Rechnen mit Rest.
- *Einheiten* $\ZZ_n^*$: Elemente $a in \ZZ_n$ mit $ggT(a, n) = 1$.
- *Euler $phi(n)$*: Anzahl der Einheiten.
- $p$ prim: $phi(p) = p-1$.
- $n = p dot q$: $phi(n) = (p-1)(q-1)$.
- $n = p^k$: $phi(p^k) = p^k - p^(k-1)$.
== Wichtige Sätze
#alertbox[
*Kleiner Fermat:* $p$ prim, $a$ kein Vielfaches:
$ a^(p-1) equiv 1 mod p $
*Satz von Euler:* $ggT(a, n) = 1$:
$ a^phi(n) equiv 1 mod n $
]
- *Anwendung (Inverse):* In $\ZZ_n$ ist $a^(-1) = a^(phi(n)-1) mod n$.
- *Schnelle Exponentiation:*
Berechne $b^e mod m$.
1. Exponent $e$ binär schreiben.
2. Quadrieren und bei 1 multiplizieren (Square & Multiply).
3. Oder: $e$ reduzieren modulo $phi(m)$ (falls Basis $b$ teilerfremd zu $m$!).
== Euklidischer Algorithmus (ggT)
Zur Berechnung von $ggT(a, b)$ und $s, t$ mit $ggT(a,b) = s dot a + t dot b$.
Beispiel $ggT(12, 7)$:
$12 = 1 dot 7 + 5 => 5 = 12 - 1 dot 7$
$7 = 1 dot 5 + 2 => 2 = 7 - 1 dot 5 = 7 - (12-7) = 2 dot 7 - 1 dot 12$
$5 = 2 dot 2 + 1 => 1 = 5 - 2 dot 2 = (12-7) - 2(2 dot 7 - 12) = 3 dot 12 - 5 dot 7$
$=> 1 = 3 dot 12 + (-5) dot 7$. Inverse von 7 mod 12 ist -5 (=7).
== Chinesischer Restsatz (CRT)
Löse System: $x equiv a_i mod m_i$ (moduli $m_i$ paarweise teilerfremd).
$M = product m_i, quad M_i = M / m_i$.
Löse $M_i y_i equiv 1 mod m_i$ (Inverse von $M_i$).
Lösung: $x = sum_(i) a_i M_i y_i mod M$.
#colbreak()
= Lineare Algebra: Matrizen
== Matrizen & LGS
$A in K^(m times n)$. LGS $A x = b$.
*Gauß-Verfahren:* Auf Zeilenstufenform bringen.
- Rang $r$: Anzahl der Stufen (Nicht-Null-Zeilen).
- $r = n$: Eindeutige Lsg. (bei hom. nur 0).
- $r < n$: Unendlich viele Lsg. ($n-r$ Parameter frei).
- $r < m$: Lösbar nur wenn Nullzeilen rechts 0 sind.
== Determinante (nur $n times n$)
- $det(A) != 0 <=> A$ invertierbar $<=> rang(A)=n$.
- $2 times 2$: $det mat(a, b; c, d) = a d - b c$.
- $3 times 3$: Sarrus (Jägerzaun).
- $n times n$: Laplace (Entwicklung nach Zeile/Spalte mit vielen 0).
- Regeln: $det(A B) = det A det B$, $det(A^T) = det A$.
- $det(lambda A) = lambda^n det A$.
== Inverse Matrix
$A^(-1)$ existiert nur wenn $det A != 0$.
- $2 times 2$: $A^(-1) = 1/(det A) mat(d, -b; -c, a)$.
- Allgemein: Gauß $(A | I_n) -> (I_n | A^(-1))$.
= Lineare Abbildungen
$phi: V -> W$ linear ($phi(v+w)=phi(v)+phi(w), phi(c v)=c phi(v)$).
- *Bild:* Spaltenraum der Matrix $A$. $dim(bild) = rang(A)$.
- *Kern:* Lösungsraum von $A x = 0$.
#alertbox[
*Dimensionssatz:*
$ dim(V) = dim(ker(phi)) + dim(bild(phi)) $
$ n = "Anzahl freie Parameter" + rang(A) $
]
- *Injektiv:* $ker(phi) = \{0\}$.
- *Surjektiv:* $bild(phi) = W$ (Rang = Zeilenzahl).
- *Bijektiv:* $n=m$ und Determinante $!= 0$.
== Abbildungsmatrix
$M_B^C(phi)$: Matrix bzgl. Basis $B$ (Start) und $C$ (Ziel).
Spalten sind Bilder der Basisvektoren von $B$, dargestellt in $C$.
$ "Spalte" j = phi(b_j)_C $
*Basiswechsel:* $M_B^C(id)$ transformiert von $B$ nach $C$.
$A' = T^(-1) A T$ (wenn $T$ Transformationsmatrix).
#colbreak()
= Eigenwerte (EW) & Diagonalisierung
1. *Charakteristisches Polynom:* $P_A(lambda) = det(A - lambda I) = 0$.
2. Nullstellen sind EW $lambda_i$.
- *Alg. Vielfachheit:* Potenz im Polynom.
- *Geom. Vielfachheit:* $dim(ker(A - lambda_i I)) = n - rang(A - lambda_i I)$.
3. *Eigenraum:* $E_lambda = ker(A - lambda I)$ (LGS lösen).
#alertbox[
*Diagonalisierbar gdw:*
1. $P_A$ zerfällt komplett in Linearfaktoren.
2. Für jeden EW gilt: *Alg. VFH = Geom. VFH*.
Symmetrische Matrizen sind *immer* diagonalisierbar!
]
Matrix $D = S^(-1) A S$ (Diagonalmatrix mit EW).
$S$: Spalten sind die Eigenvektoren.
== Spektralsatz (Symmetrische Matrizen)
Ist $A = A^T$, dann:
- Alle EW sind reell.
- $A$ ist orthogonal diagonalisierbar: $D = Q^T A Q$ mit $Q^T = Q^(-1)$.
- Eigenvektoren zu versch. EW sind *orthogonal*.
= Euklidische Vektorräume
== Skalarprodukt & Norm
Standard $\RR^n$: $chevron.l u, v chevron.r = u^T v = sum u_i v_i$.
- Norm: $||u|| = sqrt(chevron.l u\, u chevron.r)$.
- Winkel: $cos alpha = chevron.l u, v chevron.r / (||u|| dot ||v||)$.
- Orthogonal: $chevron.l u, v chevron.r = 0$.
== Gram-Schmidt (ONB)
Aus Basis $v_1, ..., v_n$ mache Orthonormalbasis $b_1, ..., b_n$.
1. $u_1 = v_1$, dann $b_1 = u_1 / ||u_1||$.
2. $u_2 = v_2 - chevron.l v_2, b_1 chevron.r b_1$, dann $b_2 = u_2 / ||u_2||$.
3. $u_k = v_k - sum_(j=1)^(k-1) chevron.l v_k, b_j chevron.r b_j$.
4. $b_k = u_k / ||u_k||$.
== Orthogonale Matrizen $Q$
$Q^T Q = I$ ($Q^(-1) = Q^T$). Spalten bilden ONB.
Längentreu ($||Q x|| = ||x||$) und winkeltreu.
Determinante ist $\pm 1$.
*Drehmatrix (2D):* $mat(cos alpha, -sin alpha; sin alpha, cos alpha)$.
*Drehmatrix (3D):* Drehung um Achse $a$. Ein EW ist 1 (Achse). Spur ist $1 + 2 cos(alpha)$.
#colbreak()
= Kodierungstheorie
Lineare Codes $C subset RR^n$ (meist $\FF_2, \FF_3, \FF_5$).
Parameter $[n, k, d]$: Länge $n$, Dimension $k$, Minimaldistanz $d$.
== Erzeugermatrix $G$ ($k times n$)
Zeilen bilden Basis von $C$. $G$ in Stufenform bringen um Dimension zu sehen.
Standardform: $G = (I_k | A)$.
Codierung: $x -> x G$.
== Prüfmatrix $H$ ($(n-k) times n$)
Es gilt: $G H^T = 0$.
Wenn $G = (I_k | A)$, dann $H = (-A^T | I_(n-k))$.
(Im Binären ist $-A = A$, also $H = (A^T | I_(n-k))$).
Code ist Kern von $H$: $c in C <=> H c^T = 0$.
== Minimaldistanz & Fehler
- *Hamming-Gewicht* $w(x)$: Anzahl Einträge $!= 0$.
- *Minimaldistanz* $d_(min) = min \{w(c) | c in C, c != 0\}$.
- $d_(min)$ ist auch das minimale Gewicht der Spalten von $H$, die linear abhängig sind (oft die kleinste Anzahl linear abh. Spalten).
#alertbox[
*Erkennung:* $d-1$ Fehler erkennbar.
*Korrektur:* $e = floor((d-1)/2)$ Fehler korrigierbar.
($d=3 => 1$ Fehler, $d=5 => 2$ Fehler)
]
== Dekodierung (Syndrom)
Empfangenes Wort $r = c + e$ (Code + Fehler).
1. Berechne *Syndrom* $S = H r^T$.
2. Wenn $S = 0 =>$ kein Fehler.
3. Wenn $S != 0$: Suche Spalte in $H$, die Vielfaches von $S$ ist.
- Position der Spalte = Position des Fehlers.
- Wert des Fehlers aus Faktor bestimmen.
#colbreak()
= Algebraische Strukturen
#defbox[Gruppen $(G, dot)$][
Assoziativ, Neutrales $e$, Inverses $a^(-1)$.
- *Abelsch:* + Kommutativ.
- *Zyklisch:* Ein Erzeuger $g$ generiert ganze Gruppe ($g^k$). $\ZZ_n$ ist zyklisch (Erzeuger 1).
- *Ordnung:* $|G|$ Anzahl Elemente. Satz von Lagrange: $|U|$ teilt $|G|$.
]
*Untergruppen:* Teilmenge, abgeschlossen bzgl. Op. und Inverse.
*Isomorphie:* $\ZZ_(n m) tilde.eq \ZZ_n times \ZZ_m$ gdw. $ggT(n,m)=1$.
#defbox[Körper $(K, +, dot)$][
$(K, +)$ abelsche Grp, $(K without \{0\}, dot)$ abelsche Grp, Distributiv.
Beispiele: $\RR, \QQ, \CC, \ZZ_p$ ($p$ prim).
$\ZZ_n$ ist kein Körper wenn $n$ nicht prim (Nullteiler!).
]
*Polynomring $K[x]$:* Division mit Rest möglich.
= Diverses & Tipps
- *LGS lösen:* Immer Gauß. Nie Cramer (zu langsam).
- *Komplexe Zahlen:* $i^2 = -1$. $z = a+b i$. $overline{z} = a-b i$. $|z|^2 = z overline{z} = a^2+b^2$. Polarkoordinaten $r e^(i phi)$.
- *Nilpotent:* $A^k = 0$. Einziger EW ist 0. Spur ist 0. Nicht invertierbar.
- *Äquivalenzrelation:* Reflexiv ($x tilde x$), Symmetrisch ($x tilde y => y tilde x$), Transitiv ($x tilde y, y tilde z => x tilde z$). Äquivalenzklassen bilden Partition.
- *Injektiv:* Kern = $\{0\}$. *Surjektiv:* Bild = Zielraum.