From 72e31ef355c56c4c426410fe767f8b0af305f76a Mon Sep 17 00:00:00 2001 From: alexander Date: Sun, 1 Feb 2026 23:56:11 +0100 Subject: [PATCH] Added alot of linAlg --- src/cheatsheets/Analysis1.typ | 3 +- src/cheatsheets/LinearAlgebra.typ | 328 ++++++++++++++++++-------- src/cheatsheets/Schaltungstheorie.typ | 8 +- src/lib/common_rewrite.typ | 15 ++ 4 files changed, 247 insertions(+), 107 deletions(-) diff --git a/src/cheatsheets/Analysis1.typ b/src/cheatsheets/Analysis1.typ index 8a899f2..f742bb5 100644 --- a/src/cheatsheets/Analysis1.typ +++ b/src/cheatsheets/Analysis1.typ @@ -106,9 +106,8 @@ // Complex Zahlen #bgBlock(fill: colorAllgemein)[ #subHeading(fill: colorAllgemein)[Complexe Zahlen] - $z = r dot e^(phi i) = r (cos(phi) + i sin(phi))$ - $z^n = r^n dot e^(phi i dot n) = r^n (cos(n phi) + i sin(n phi))$ + #ComplexNumbersSection() #grid( columns: (1fr, 1fr), diff --git a/src/cheatsheets/LinearAlgebra.typ b/src/cheatsheets/LinearAlgebra.typ index 4b047dc..ee46336 100644 --- a/src/cheatsheets/LinearAlgebra.typ +++ b/src/cheatsheets/LinearAlgebra.typ @@ -1,5 +1,8 @@ #import "@preview/biceps:0.0.1" : * #import "@preview/mannot:0.3.1" +#import "@preview/fletcher:0.5.8" +#import "@preview/cetz:0.4.2" + #import "../lib/styles.typ" : * #import "../lib/common_rewrite.typ" : * @@ -23,11 +26,22 @@ )) #let colorAllgemein = color.hsl(105.13deg, 92.13%, 75.1%) +#let colorMatrixVerfahren = color.hsl(330.19deg, 100%, 68.43%) #let colorMatrix = color.hsl(202.05deg, 92.13%, 75.1%) -#let colorReihen = color.hsl(280deg, 92.13%, 75.1%) +#let colorVR = color.hsl(280deg, 92.13%, 75.1%) #let colorAbbildungen = color.hsl(356.92deg, 92.13%, 75.1%) #let colorGruppen = color.hsl(34.87deg, 92.13%, 75.1%) +// Math macors +#let kern(x) = $op("kern")(#x)$ +#let alg(x) = $op("alg")(#x)$ +#let geo(x) = $op("geo")(#x)$ +#let spann(x) = $op("spann")(#x)$ +#let Bild(x) = $op("Bild")(#x)$ +#let Rang(x) = $op("Rang")(#x)$ +#let Eig(x) = $op("Eig")(#x)$ + +#let ip(x, y) = $lr(angle.l #x, #y angle.r)$ #let SeperatorLine = line(length: 100%, stroke: (paint: black, thickness: 0.3mm)) #let MathAlignLeft(e) = { @@ -35,11 +49,19 @@ } #columns(4, gutter: 2mm)[ #bgBlock(fill: colorAllgemein)[ - #subHeading(fill: colorAllgemein)[Notation] + #subHeading(fill: colorAllgemein)[Algemein] ] + #bgBlock(fill: colorAllgemein)[ + #subHeading(fill: colorAllgemein)[Komplexe Zahlen] + + #ComplexNumbersSection() + + #sinTable + ] + #bgBlock(fill: colorGruppen)[ #subHeading(fill: colorGruppen)[Gruppen] @@ -75,8 +97,6 @@ - $(R, dot)$ Halbgruppe - $(a + b) dot c = (a dot c) + (a dot b) space$ (Distributiv Gesetz) - #colbreak() - *Körper:* Menge $K$ mit: - $(K, +), (K without {0} , dot)$ kommutativ Gruppe \ ($0$ ist Neutrales Element von $+$) @@ -84,8 +104,8 @@ _Beweiß durch Überprüfung der Eigneschaften_ ] - #bgBlock(fill: colorReihen)[ - #subHeading(fill: colorReihen)[Vektorräume (VR)] + #bgBlock(fill: colorVR)[ + #subHeading(fill: colorVR)[Vektorräume (VR)] $(V, plus.o, dot.o)$ ist ein über Körper $K$ - $+: V times V -> V, (v,w) -> v + w$ - $dot: K times V -> V, (lambda,v) -> lambda v$ @@ -102,8 +122,8 @@ - $(U inter W) subset V$ ] - #bgBlock(fill: colorReihen)[ - #subHeading(fill: colorReihen)[Basis und Dim] + #bgBlock(fill: colorVR)[ + #subHeading(fill: colorVR)[Basis und Dim] *Linear Abbildung:* $Phi: V -> V$ - $Phi(0) = 0$ - $Phi(lambda v + w) = lambda Phi(v) + Phi(w)$ @@ -154,6 +174,7 @@ *Vektorraum-Homomorphismus:* linear Abbildung zwischen VR ] + // Spann und Bild, Kern #bgBlock(fill: colorAbbildungen)[ #subHeading(fill: colorAbbildungen)[Spann und Bild] *Spann:* @@ -173,131 +194,242 @@ *Rang* $op("Rang") f := dim op("Bild") f$ + + *Dimensionssatz:* Sei $A$ lineare Abbildung \ + $dim(V) = dim(kern(A)) + dim(Bild(A))$ \ + $dim(V) = dim(kern(A)) + Rang(A)$ \ + + $dim(V) = dim(Bild(A)) "oder" dim(kern(A)) = 0 \ <=> A "bijektiv" <=> "invertierbar"$ ] + #bgBlock(fill: colorAbbildungen)[ + #subHeading(fill: colorAbbildungen)[Determinate und Bilinearform] + ] + + #bgBlock(fill: colorVR)[ + #subHeading(fill: colorVR)[Eukldische Vektorräume] + ] + + #bgBlock(fill: colorVR)[ + #subHeading(fill: colorVR)[Unitair Vektorräume ] + ] + + + // Matrix Typem #bgBlock(fill: colorMatrix)[ + #let colred(x) = text(fill: red, $#x$) + #let colblue(x) = text(fill: blue, $#x$) + #subHeading(fill: colorMatrix)[Matrix Typen] + #align(center, scale($colred(m "Zeilen") colblue(n "Splate")\ A in KK^(colred(m) times colblue(n))$, 120%)) #grid(columns: (1fr, 1fr), + $quad mat( + a_11, a_12, ..., a_(1n); + a_21, a_22, ..., a_(2n); + dots.v, dots.v, dots.down, dots.v; + a_(m 1), a_(m 2), ..., a_(m n) + ) + $, + + cetz.canvas({ + import cetz.draw : * - *Einheits Matrix* $I,E$ + rect((0, 0), (1, 1), fill: rgb("#9292926b")) - *Diagonalmatrix* + set-style(mark: (end: (symbol: "straight"))) + line((0, -0.2), (1, -0.2), stroke: (paint: blue, thickness: 0.3mm)) + line((-0.2, 1), (-0.2, 0), stroke: (paint: red, thickness: 0.3mm)) - *Symetrisch* $S$: \ - $A A^T$ ist symetrisch - - *Orthogonal* $O$: + content((-0.45, 0.5), $colred(bold(m))$) + content((0.5, -0.35), $colblue(bold(n))$) + content((0.5, 0.5), $A$) + }) + ) - *Unitair:* + #table( + columns: (auto, 1fr), + inset: 2mm, + fill: (x, y) => if (calc.rem(y, 2) == 0) { tableFillLow } else { tableFillHigh }, + [*Einheits Matrix*\ $I,E$], [], + [*Diagonalmatrix* \ $Sigma,D$], [ + Nur Einträger auf Hauptdiagonalen \ + $det(D) = d_00 dot d_11 dot d_22 dot ...$ + ], + [*Symetrisch*\ $S$], [ + $S = S^T$, $S in KK^(n times n)$\ + $A A^T$, $A^T A$ ist symetrisch \ + $S$ immer diagonaliserbar \ + EW immer $in RR$, EV orthogonal + ], + [*Invertierbar*], [ + $exists A^(-1) : A A^(-1) = A^(-1) A = E$ \ - *postiv-semi-definit* \ - $forall$ Eigenwerte $>= 0$ + *Invertierbar wenn:* \ + $A$ bijektiv, $det(A) = 0$ \ + $"Spalten Vekoren lin. unabhänig"$ \ + $det(A) = 0$ \ + + *Nicht Invertierbar wenn:*\ + $exists$ EW $!= 0 => not "invertierbar"$ + Keine Qudratische Matrix + ], + [*Orthogonal*\ $O$], [ + $O^T = O^(-1)$ \ + $ip(O v, O w) = ip(v, w)$ + ], + [*Unitair*], [ + + ], + [*Diagonaliserbar*], [ + $exists A = B D B^(-1)$, $D$ diagonal, + + $B$: Splaten sind EV von $A$ + + - Selbst-Adujunkte diagonalisierbar + - Symetrisch Matrix + - $A in KK^(n times n) "AND" alg(lambda) = geo(lambda)$ + ], + [*postiv-semi-definit*], [ + $forall$ EW $>= 0$ + ], + ) ] - #colbreak() + #bgBlock(fill: colorMatrixVerfahren)[ - #bgBlock(fill: colorMatrix)[ - - #subHeading(fill: colorMatrix)[Eigenwert und Eigenvektoren ] + #subHeading(fill: colorMatrixVerfahren)[Eigenwert und Eigenvektoren ] $A in CC^(n times n):$ $n$ Complexe Eigenwerte \ $A in RR^(n times n)$ - *Eigentwete bestimmen* + *1. Eigentwete bestimmen* - $A v = lambda v$ + $A v = lambda v => det(A-E lambda) = 0$ - Lösen: $0 = det mat(#mannot.markhl($x_11 - lambda_1$, color: red), x_12, ..., x_(1n); + $0 = det mat(#mannot.markhl($x_11 - lambda_1$, color: red), x_12, ..., x_(1n); x_21, #mannot.markhl($x_22 - lambda_2$, color: red), ..., x_(2n); dots.v, dots.v, dots.down, dots.v; x_(n 1), x_(n 2), ..., #mannot.markhl($x_(n n) -lambda_n$, color: red) )$ - Charakteristisches Polynom: $chi_(A)$ + $--> chi_A = (lambda_0 - lambda)^(n_0) dot (lambda_1 - lambda)^(n_1) ... $ - *Eigenvektor bestimmen* + $lambda_0, lambda_1, ... = $ Nst von $chi_A$ + + + *2. Eigenvektor bestimmen* - Eigentwerte einsetzen: $lambda in {lambda_1, lambda_2, ... lambda}$ + $Eig(lambda_k) = kern(A - lambda_k E)$ + + $mat(#mannot.markhl($x_11 - lambda_k$, color: red), x_12, ..., x_(1n); + x_21, #mannot.markhl($x_22 - lambda_k$, color: red), ..., x_(2n); + dots.v, dots.v, dots.down, dots.v; + x_(n 1), x_(n 2), ..., #mannot.markhl($x_(n n) -lambda_k$, color: red) + ) vec(v_1, v_2, dots.v, v_n) = vec(0, 0, dots.v, 0)$ - *Algebrasche Vielfacheit:* \ - $sum$ Häufikeit der Nsts von $chi_A$ - *Geometrische Vielfacheit:*\ - $dim(op("spann")(v_lambda_1, v_lambda_2 ..., v_lambda_n))$ \ + *Algebrasche Vielfacheit:* $alg(lambda) = n_0 + n_1 + ...$ \ + *Geometrische Vielfacheit:* $geo(lambda) = dim("Eig"_A (lambda))$ \ - Anzahl der linearunabhänige $v_lambda_i$ + $1 <= geo(lambda) <= alg(lambda)$ - $"Geometrische" <= "Algebrasche"$ + ] + + #bgBlock(fill: colorMatrixVerfahren)[ + #subHeading(fill: colorMatrixVerfahren)[Gram-Schmit ONB] + + + + ] + + #bgBlock(fill: colorMatrixVerfahren)[ + #subHeading(fill: colorMatrixVerfahren)[Diagonalisierung] + $A = R D R^(-1)$ + + #grid( + columns: (1fr, 1fr), + $D = mat( + lambda_1, 0, 0,...; + 0, lambda_1, 0, ...; + 0, 0, lambda_2, ...; + dots.v, dots.v, dots.v, dots.down + )$, + + $D^n = mat( + lambda_1^n, 0, 0,...; + 0, lambda_1^n, 0, ...; + 0, 0, lambda_2^n, ...; + dots.v, dots.v, dots.v, dots.down + )$ + ) \ + + *Rezept Diagonalisierung* + + 1. *EW* bestimmen + 2. $chi_A$ bestimmen und in $(lambda_0 - lambda)^(n_0) dot (lambda_1 - lambda)^(n_1) ...$ Form bringen \ + $chi_A$ nicht vollstandig zerfällt (in $RR$), $=>$ NICHT diagonalisierbar + 3. *EV* bestimmen + 4. $R = mat( bar, bar, ..; v_(lambda 0), v_(lambda 1), ...; bar, bar, ...)$ + 5. $R^(-1)$ bestimmen + ] + + + #bgBlock(fill: colorMatrixVerfahren)[ + #subHeading(fill: colorMatrixVerfahren)[Schur-Zerlegung] + immer anwendbar; + ] + + #bgBlock(fill: colorMatrixVerfahren)[ + #subHeading(fill: colorMatrixVerfahren)[SVD] + + $A in RR^(m times n)$ zerlegbar in $A = U Sigma V^T$ \ + + + $U in RR^(m times m)$ Orthogonal \ + $Sigma in RR^(m times n)$ Diagonal \ + $V in RR^(n times n)$ Orthogonal + + + 1. $A^T A$ berechnen $A^T A in RR^(k times k), k = min(n, m)$ + + 2. Eigenwerte bestimmen $det(A^T A - E lambda) = 0$ \ + $lambda_0, lambda_1 ... lambda_k$ nach Größe sortieren \ + Singulärewerte: $sigma_i = sqrt(lambda_i)$ + + 3. Eigenvekoren von $A^T A$ bestimmen und *Normalisieren* + $v_(lambda 0), v_(lambda 1), ... v_(lambda k)$ + + 4. $V = mat( |, |, ..., |; v_0, v_1, ..., v_n; |, |, ..., |) --> V^T$ \ + (Evt. zu ONB ergenze mit Gram-Schmit/Kreuzprodukt) + + 5. $u_i = 1/sigma_i A v_(lambda i) quad quad L = mat( |, |, ..., |; u_0, u_1, ..., u_m; |, |, ..., |)$ \ + (Evt. zu ONB ergenze mit Gram-Schmit/Kreuzprodukt) + + 6. $S in RR^(n times m)$ (wie $A$): + + $S = mat(sigma_0, 0; 0, sigma_1; dots.v, dots.v; 0, 0) quad quad quad S = mat(sigma_0, 0, dots, 0; 0, sigma_1, ..., 0)$ + ] + + #bgBlock(fill: colorMatrix)[ + #subHeading(fill: colorMatrix)[Matrix Normen] + ] + + #bgBlock(fill: colorMatrix)[ + #subHeading(fill: colorMatrix)[Rekursive Folgen] + + E.g: $a_1 x_(n-1) + a_2 x_(n) = x_(n+1)$ + + 1. Als Matrix Schreiben $F: vec(x_(n-1), x_(n)) = vec(x_n, x_(n+1))$ \ + $F s_(n-1) = s_(n)$ + + 2. Diagonaliseren: $F = R D R^(-1) $ \ + 3. Wiederholte Anwendung: $F^n = R D^n R^(-1)$ ] #bgBlock(fill: colorMatrix)[ - #subHeading(fill: colorMatrix)[Diagonalisierung] - - $A = R D R^T$ - - $D$: Diagonalmatrix + #subHeading(fill: colorMatrix)[Differenzialgleichungen] ] - - #bgBlock(fill: colorMatrix)[ - #subHeading(fill: colorMatrix)[Schur-Zerlegung] - immer anwendbar; - - $A in RR^(n times n)\/CC^(n times n)$ zerlegbar in $O^T R O$ - - Orthogonal $O,O^T$, Dreiecksmatrix $R$ - - $R = mat(lambda_1, *, *,..., *; - 0, lambda_2, *, ..., *; - 0, 0, lambda_3, ..., *; - dots.v, dots.v, dots.v, dots.down, dots.v; - 0, 0, 0, ..., lambda_n; - )$ - - 1. Eigenwerte bestimmen $lambda_1, lambda_2, ... lambda_n$ - 2. Eigenvektor $v_lambda_1, v_lambda_2 ..., v_lambda_n$ - 3. - ] - - #colbreak() - #bgBlock(fill: colorMatrix)[ - #subHeading(fill: colorMatrix)[SVD] - - $A in RR^(n times m)$ zerlegbar in $A = L S R^T$ \ - $L$ Orthogonal, $S$ Diagonalmatrix, $R$ Orthogonal \ - $A^T = R S^T L^T$ - - - *1. $A A^T$ berechnen* $A A^T in RR^(n times n) $ - - *2. Eigenwerte von $A A^T$ bestimmen* $lambda_1, lambda_2, ... lambda_n$ - - *3. $S$ aufstellen* ($S$ hat gleiche Form wie $A$) - - $sigma_i = sqrt(lambda_i) = S in RR^(n x m) =\ mat( - sigma_1, 0, 0, ..., 0, 0, ..., 0; - 0, sigma_2, 0, ..., 0, 0, ..., 0; - 0, 0, sigma_3, ..., 0, 0, ..., 0; - dots.v, dots.v, dots.v, dots.down, dots.v, dots.v, dots.down, dots.v; - 0, 0, 0, ..., sigma_m, 0, ... , 0 - )$ - - *4. $R$ bestimmen* - - $op("Eig")(lambda_i) = op("kern")(A A^T - lambda_i) ->$ - - $A A^T - lambda_i = 0$ (Gaußverfahren) - - $R = 1/sqrt(lambda_i)$ - - *5. $L$ bestimmen* - - $L = 1/sqrt(lambda_i) $ - ] - - - - ] diff --git a/src/cheatsheets/Schaltungstheorie.typ b/src/cheatsheets/Schaltungstheorie.typ index a4460f5..720899e 100644 --- a/src/cheatsheets/Schaltungstheorie.typ +++ b/src/cheatsheets/Schaltungstheorie.typ @@ -977,13 +977,7 @@ #bgBlock(fill: colorAllgemein)[ #subHeading(fill: colorAllgemein)[Komplexe Zahlen] - #grid( - columns: (auto, auto), - row-gutter: 2mm, - column-gutter: 3mm, - [Euler-Darstellung], $A e^(j phi)$, - [Catesiche-Darstellung], $a + b j$ - ) + #ComplexNumbersSection(i: $j$) ] diff --git a/src/lib/common_rewrite.typ b/src/lib/common_rewrite.typ index 71d53be..a501c8a 100644 --- a/src/lib/common_rewrite.typ +++ b/src/lib/common_rewrite.typ @@ -53,4 +53,19 @@ }, table.hline(stroke: (thickness: 0.3mm)), ) +] + +#let ComplexNumbersSection(i: $i$) = [ + $1/#i = #i^(-1) = -#i quad quad #i^2=-1 quad quad sqrt(#i) = 1/sqrt(2) + 1/sqrt(2)#i$ + + $z in CC = a + b #i quad quad quad z = r dot e^(phi #i)$ \ + $z_0 + z_1 = (a_0 + a_1) + (b_0 + b_1) #i$\ + $z_0 dot z_1 = (a_1 a_2 - b_1 b_2) + #i (a_1b_2 + a_2 b_1) = r_0 r_1 e^(#i (phi_0 + phi_1))$\ + $z^x = r^x dot e^(phi #i dot x) quad x in RR$ \ + $z_0/z_1 = r_0/r_1 e^(#i (phi_0 - phi_1)) quad quad quad$ + + $r = abs(z) quad phi = cases( + + arccos(a/r) space : space b >= 0, + - arccos(a/r) space : space b < 0, + )$ ] \ No newline at end of file