#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" : *
#import "../lib/mathExpressions.typ" : *

#set page(
  paper: "a4", 
  margin: (
    bottom: 10mm,
    top: 5mm,
    left: 5mm,
    right: 5mm
  ),
  flipped:true,
  numbering: "— 1 —",
  number-align: center
)

#set text(size: 8pt)

#place(top+center, scope: "parent", float: true, heading(
  [Linear Algebra EI]
))

#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 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%)


#let SeperatorLine = line(length: 100%, stroke: (paint: black, thickness: 0.3mm))
#let MathAlignLeft(e) = {
  align(left, block(e))
}
#columns(4, gutter: 2mm)[
    #bgBlock(fill: colorAllgemein)[
        #subHeading(fill: colorAllgemein)[Komplexe Zahlen]
        
        #ComplexNumbersSection()
        
        #sinTable
    ]

    #bgBlock(fill: colorGruppen)[
         #subHeading(fill: colorGruppen)[Gruppen]

        *Halbgruppe:* $(M, compose): M times M arrow M$
        - Assoziativgesetz: $a dot (b dot c) = (a dot b) dot c$
        *Monoid* Halbgruppe $M$ mit:
        - Identitätselment: $e in M : a e = e a = a$
        *Kommutativ/abelsch:* Halbgruppe/Monoid mit
        - Kommutativgesetz; $a dot b = b dot a$

        #SeperatorLine

        *Gruppe:* Monoid mit
        - Inverse: $forall a in G : exists space a a^(-1) = a^(-1)a = e$
        - Eindeutig Lösung für Gleichungen 
        Zusatz:
        - Inverseregel: $(a dot b)^(-1) = b^(-1) dot a^(-1)$
        *Untergruppe:*
        - Gruppe: $(G, dot)$, $U subset G$
        - $a,b in U <=> a dot b in U$
        - $a in U <=> a^(-1) in U$
        - $e in U$ (Neutrales Element)

        *Direktes Produkt:*\
        $(G_1,dot_1) times (G_2,dot_2) times ... $ \
        $(a_1,b_1,...)(a_2,b_2,...)= (a_1 dot_1 b_1, a_2 dot_2 b_2, ...)$


        #SeperatorLine

        *Ring:* (auch Schiefkörper) Menge $R$ mit:
        - $(R, +)$ kommutativ Gruppe
        - $(R, dot)$ Halbgruppe
        - $(a + b) dot c = (a dot c) + (a dot b) space$ (Distributiv Gesetz)

        *Körper:* Menge $K$ mit:
        - $(K, +), (K without {0} , dot)$ kommutativ Gruppe \
            ($0$ ist Neutrales Element von $+$)
        - $(a + b) dot c = (a dot c) + (a dot b) space$ (Distributiv Gesetz)
        _Beweiß durch Überprüfung der Eigneschaften_
    ]

    #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$
        Es gilt: $lambda,mu in K, space v,w in V$ 
        - $(lambda mu)v = lambda (mu v)$
        - $lambda(v + w) = lambda v + lambda w$\
            $(lambda + mu)v = lambda v + lambda mu$
        - $1v = v$, $arrow(0) in V$
        Bsp: $KK^n$ ($RR^n, CC^n$)

        *Untervektorraum:* $U subset V$ \
        $v,w in U, lambda in K$ \
        $ <=> v + w in U$, $arrow(0) in U$ UND $lambda v in U$
        - $(U inter W) subset V$
    ]

    #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)$
        - Menge aller linearen Abbildung: $L(V,W)$

        *Basis:*\
        linear unabhänige Menge $B$ an $v in V$, sodass $op("spann")(v_1, ..., v_n) = op("spann")(V)$
        - $B$ ist Erzeugerssystem von $V$
        - Endliche Erzeugerssystem: $abs(B_1)=abs(B_2)...$

        *Linear unabhänige:*
        Linearkombintation in welcher $lambda_0 = 0, ..., lambda_n = 0$ die EINZIEGE Lösung für $lambda_0 v_0 + ... + lambda_1 v_1 = 0$

        *Basisergänzungssatz:* \
        Sei ${v_1, ... v_n}$ lin. unabhänig und $M$ kein Basis. Dann $exists v_(n+1)$ sodass ${v_1, ... v_n, v_(n+1)}$ lin unabhänig (aber evt. eine Basis ist)

        *Dimension:* $dim V = \#$Vektoren der Basis
        - $dim V = infinity$, wenn $V$ nicht endlich erzeugt ist
    ]

    #bgBlock(fill: colorAbbildungen)[
        #subHeading([Abbildungen], fill: colorAbbildungen)
        
        $f(x)=y, f: A -> B$

        *Injectiv (Monomorphismus):*\
        _one to one_ \
        $f(x) = f(y) <=> x = y$

        *Surjectiv (Epimorhismis):* \
        _Output space coverered_ \
        - Zeigen das $f(f^(-1)(x)) = x$ für $x in DD$
        - $forall y in B: exists x in A : f(x) = y$
        NICHT surjektiv wenn $abs(a) < abs(b)$

        *Bijektiv (Isomorphismus):* \
        _Injectiv und Surjectiv_ \
        - In einer Gruppe ist $f(x) = x c$ für $c,x in G$ bijektiv
        - isomorph: $V,W$ VRs, $f$ bijektiv $f(V) = W => V tilde.equiv W$

        Beweiß durch Wiederspruch \
        für Gegenbeweiß

        *Endomorphismus:* $A -> B$ mit $A, B subset.eq C$ 

        *Automorphismus:* Endomorphismus und Bijektiv (Isomorphismus)
        
        *Vektorraum-Homomorphismus:* linear Abbildung zwischen VR
    ]

    // Spann und Bild, Kern
    #bgBlock(fill: colorAbbildungen)[
        #subHeading(fill: colorAbbildungen)[Spann und Bild]
        *Spann:* 
        - Vektorraum $V : op("spann")(V) = limits(inter)_(M subset V) U$
        - $B : op("spann")(U) = {lambda_0 v_0 + ... + lambda_n v_n, lambda_0, ... lambda_n in K}$
        - $op("spann")(Phi(M)) = Phi(op("spann")(M))$

        *Urbild:* $f^(-1)(I subset B) subset.eq A$

        *Bild:* Wertemenge $WW$ 
        - $f(I subset A) = B$ (Oft $I = A$)
        - Basis $B : op("spann")(B)$
        - $op("Bild") Phi := {Phi in W | v in V}$

        *Nullraum/Kern:* \
        $op("Kern") Phi := {v in V | Phi(v) = 0}$

        *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 : *

                    rect((0, 0), (1, 1), fill: rgb("#9292926b"))

                    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))

                    content((-0.45, 0.5), $colred(bold(m))$)
                    content((0.5, -0.35), $colblue(bold(n))$)
                    content((0.5, 0.5), $A$)
                })
        )

        #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$ \

                *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*], [
                $V^* )$
            ],
            [*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$
            ],
        )
    ]

    #bgBlock(fill: colorMatrixVerfahren)[

        #subHeading(fill: colorMatrixVerfahren)[Eigenwert und Eigenvektoren ]

        $A in CC^(n times n):$ $n$ Complexe Eigenwerte \
        $A in RR^(n times n)$

        *1. Eigentwete bestimmen*
        
        $A v = lambda v => det(A-E lambda) = 0$

        $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)
        )$

        $--> chi_A = (lambda_0 - lambda)^(n_0) dot (lambda_1 - lambda)^(n_1) ... $


        $lambda_0, lambda_1, ... = $ Nst von $chi_A$


        *2. Eigenvektor bestimmen*
        
        $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:* $alg(lambda) = n_0 + n_1 + ...$ \
        *Geometrische Vielfacheit:* $geo(lambda) = dim("Eig"_A (lambda))$ \

        $1 <= geo(lambda) <= alg(lambda)$

    ]

    #bgBlock(fill: colorMatrixVerfahren)[
        #subHeading(fill: colorMatrixVerfahren)[Gram-Schmit ONB]



    ]

    #bgBlock(fill: colorMatrixVerfahren)[
        #subHeading(fill: colorMatrixVerfahren)[Diagonalisierung]
        $A = R D R^(-1)$

        *Rezept Diagonalisierung*

        1. EW bestimmen: $det(A - lambda I) = 0$  \
            $=> chi_A = (lambda_1 - lambda)^(m 1) (lambda_2 - lambda)^(m 2) ...$ 
        2. EV bestimmen: $spann(kern(A - lambda_i I))$: $r_0, r_1, ...$
        3. \
            #grid(columns: (1fr, 1fr),
            [
                Diagnoalmatrix: $D$
                $mat(
                        lambda_1, 0, 0,...;
                        0, lambda_1, 0, ...;
                        0, 0, lambda_2, ...;
                        dots.v, dots.v, dots.v, dots.down
                    )
                $
            ],
            [
                Basiswechselmatrix: $R$
                $mat(
                    |, | , ..., |;
                    r_0, r_1, ..., r_n;
                    |, |, ..., |
                )$
            ]
        )
     ]


    #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 = L S R^T$ \


        $L in RR^(m times m)$ Orthogonal \
        $S in RR^(m times n)$ Diagonal \
        $R in RR^(n times n)$ Orthogonal


        1. $A A^T$ berechnen $A A^T in RR^(m times m)$

        2. $A A^T$ diagonalisieren in $R$, $D$

        3. Singulärwere berechen: $sigma_i = sqrt(lambda_i) $
        
        4. $l_i = 1/sigma_i A v_(lambda i) quad quad L = mat( |, |, ..., |; l_0, l_1, ..., l_m; |, |, ..., |)$ \
            (Evt. zu ONB ergenze mit Gram-Schmit/Kreuzprodukt)

        5. $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]

        $|| dot ||_M$ Matrix Norm, $|| dot ||_V$ Vektornorm

        Generisch Vektor Norm: $|| v ||_p = root(p, sum_(k=1)^n (x_k)^p)$

        - submultiplikativ: $||A B||_"M" <= ||A||||B||$
        - verträglich mit einer Vektornorm: $||A v||_"V" <= ||A||_"M" ||v||_"V"$

        *Frobenius-Norm* $||A||_"M" = sqrt(sum_(i=1)^m sum_(j=1)^n a_(m n)^2)$

        *Induzierte Norm* $||A||_"M" = sup_(v in V without {0}) (||A v||_V)/(||v||_V)$\
        $ = sup_(||v|| = 1) (||A v||_V)/(||v||_V)$
            - submultiplikativ
            - verträglich mit einer Vektornorm $||dot||_V$

        *maximale Spaltensumme* $||A||_r = max_(1<= i <= n) sum_(j=1)^n |a_(j)|$
    ]

    #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)[Differenzialgleichungen]
    ]
]

