\documentclass[uebung]{../../../lecture}

\title{Einführung in die Numerik: Übungsblatt 4}
\author{Leon Burgard, Christian Merten}

\begin{document}

\punkte

\begin{aufgabe}
    \begin{enumerate}[a)]
        \item Beh.:
            \[
                \Vert f \Vert_{\infty} = \max_{x \in [0,1]} |f(x)|, \quad f \in C^{0}([0,1], \R)
            .\] ist eine Norm auf $C^{0}([0,1], \R)$.
            \begin{proof}
                Seien $f, g \in C^{0}([0,1], \R)$.
                \begin{enumerate}[(N1)]
                    \item Es ist $\displaystyle \Vert f \Vert_{\infty} = \max_{x \in [0,1]} |f(x)| \ge 0$.
                        Außerdem ist
                        \[
                            \Vert f \Vert_{\infty} = 0 \implies \max_{x \in [0,1]} \underbrace{|f(x)|}_{\ge 0}
                            = 0 \implies f(x) = 0 \quad \forall x \in [0,1] \implies f = 0 \in C^{0}([0,1], \R)
                        .\] 
                    \item Sei $\alpha \in \R$. Dann folgt
                        \[
                            \Vert \alpha f \Vert_{\infty} = \max_{x \in [0,1]} |\alpha f(x)|
                            = \max_{x \in [0,1]} \underbrace{|\alpha|}_{\ge 0}
                            \underbrace{|f(x)|}_{\ge 0}
                            = |\alpha| \max_{x \in [0,1]} |f(x)|
                            = |\alpha| \Vert f \Vert_{\infty}
                        .\] 
                    \item Es ist
                        \[
                            \Vert f + g \Vert_{\infty} = \max_{x \in [0,1]} |f(x) + g(x)|
                            \le \max_{x \in [0,1]}
                            \left( \underbrace{|f(x)|}_{\ge 0} + \underbrace{|g(x)|}_{\ge 0} \right)
                            = \max_{x \in [0,1]} |f(x)| + \max_{x \in [0,1]} |g(x)|
                            = \Vert f \Vert_{\infty} + \Vert g \Vert_{\infty}
                        .\] 
                \end{enumerate}
            \end{proof}
        \item Beh.:
            \[
                \Vert f \Vert_{1} = \max_{x \in [0,1]} |f(x)|, \quad f \in C^{0}([0,1], \R)
            .\] ist eine Norm auf $C^{0}([0,1], \R)$.
            \begin{proof}
                Seien $f, g \in C^{0}([0,1], \R)$.
                \begin{enumerate}[(N1)]
                    \item Es ist $\displaystyle \Vert f \Vert_{1} =
                        \int_{0}^{1} \underbrace{|f(x)|}_{\ge 0} \d x \ge 0$.
                        Außerdem ist wegen der Monotonie des R.-Integrals:
                        \[
                            \Vert f \Vert_{1} = 0 \implies \int_{0}^{1} \underbrace{|f(x)|}_{\ge 0} \d x
                            = 0
                            \implies f(x) = 0 \quad \forall x \in [0,1] \implies f = 0 \in C^{0}([0,1], \R)
                        .\] 
                    \item Sei $\alpha \in \R$. Dann folgt mit der Linearität des R.-Integrals
                        \[
                            \Vert \alpha f \Vert_{1}
                            = \int_{0}^{1} |\alpha f(x)| \d x 
                            = \int_{0}^{1} |\alpha| |f(x)| \d x 
                            = |\alpha| \int_{0}^{1} |f(x)| \d x 
                            = |\alpha| \Vert f \Vert_{1}
                        .\] 
                    \item Es ist
                        \[
                            \Vert f + g \Vert_{1}
                            = \int_{0}^{1} |f(x) + g(x)| \d x 
                            \le \int_{0}^{1} |f(x)| \d x  + \int_{0}^{1} |g(x)| \d x 
                            = \Vert f \Vert_{1} + \Vert g \Vert_{1}
                        .\] 
                \end{enumerate}
            \end{proof}
        \item Für die gegebene Funktionenfolge gilt für $k \in \N$:
            \[
                \Vert u_k \Vert_{\infty} = \max_{x \in [0,1]} |u_k(x)|
                = \max_{x \in [x_{k+1}, x_k]} \sin\left( \frac{x_k - x}{x_{k} - x_{k+1}}\pi \right) = 1
            .\] Für die 1-Norm folgt
            \begin{align*}
                \Vert u_k \Vert_{1} &= \int_{0}^{1} u_k(x) \d x \\
                &= \int_{x_{k+1}}^{x_k} \sin\left( \frac{x_k - x}{ x_k - x_{k+1} } \pi\right)  \d x  \\
                &= \left[ \frac{x_k - x_{k+1}}{\pi} \cos\left( \frac{x_k - x}{x_k - x_{k+1}} \pi \right) \right]
                \Big|_{x_{k+1}}^{x_k} \\
                &= 2 \frac{x_k - x_{k+1}}{\pi}
                \intertext{Mit $x_k = \frac{1}{k}$ folgt}
                \Vert u_k \Vert_1 &= \frac{2}{\pi} \left( \frac{1}{k} - \frac{1}{k+1} \right) \\
                &= \frac{2}{\pi} \left( \frac{1}{k^2 +k} \right) \\
                &\xrightarrow{k \to \infty} 0
            .\end{align*}
            Beh.: $\Vert \cdot \Vert_1$ und $\Vert \cdot \Vert_\infty$ sind nicht äquivalent.

            \begin{proof}
                Ang.: $\Vert \cdot \Vert_1$ und $\Vert \cdot \Vert_\infty$ seien äquivalent, dann existiert
                ein $m \in \R$, s.d. $\forall f \in C^{0}([0,1], \R)$ gilt
                \[
                m \Vert f \Vert_{\infty} \le \Vert f \Vert_1
                \quad \text{also insbes.} \quad m \Vert u_{k} \Vert_{\infty} \le \Vert u_k \Vert_1
                \quad \forall k \in \N
                .\] 
                Wegen $\Vert u_k \Vert_{\infty} = 1$ $\forall k \in \N$, folgt also
                \[
                m \le \Vert u_k\Vert_1 \quad \forall k \in \N \quad \contr \text{ zu } \Vert u_k \Vert
                \xrightarrow{k \to \infty} 0
                .\] Also sind $\Vert \cdot \Vert_1$ und $\Vert \cdot \Vert_\infty$ nicht äquivalent.
            \end{proof}
    \end{enumerate}
\end{aufgabe}

\begin{aufgabe}
    \begin{enumerate}[(i)]
        \item Beh.: $\Vert \cdot \Vert_F$ ist eine Norm auf $\mathbb{K}^{n \times n}$.
            \begin{proof}
                Sei $A \in \mathbb{K}^{n \times n}$ beliebig.
                \begin{enumerate}[(N1)]
                    \item Es ist $\displaystyle \Vert A \Vert_F = \left( \sum_{i,j=1}^{n} \underbrace{|a_{ij}|^2}_{\ge 0} \right)^{\frac{1}{2}} \ge 0 $. Außerdem gilt
                        \[
                        \Vert A \Vert_F = 0 \implies
                        \left(\sum_{i,j=1}^{n} \underbrace{|a_{ij}|^2}_{\ge 0} \right)^{\frac{1}{2}}
                        \implies a_{ij} = 0 \quad \forall i,j=1,\ldots n
                        \implies A = 0
                        .\] 
                    \item Sei $\alpha \in \mathbb{K}$ beliebig. Dann ist
                        \[
                            \Vert \alpha A \Vert_F = \left( \sum_{i,j=1}^{n} |\alpha a_{ij}|^2 \right)^{\frac{1}{2}}
                            = \left( |\alpha|^2 \sum_{i,j=1}^{n} |a_{ij}|^2 \right)^{\frac{1}{2}}
                            = |\alpha| \Vert A \Vert_F
                        .\] 
                    \item Sei $B \in \mathbb{K}^{n\times n}$. Durch Identifikation
                        von Matrizen aus $\mathbb{K}^{n \times n}$ mit der Frobeniusnorm
                        und Vektoren aus $\mathbb{K}^{n \cdot n}$ mit der Euklidschen Norm, gilt die
                        Cauchy-Schwarz-Ungleichung. Dann folgt
                        \begin{salign*}
                            \Vert A + B \Vert_F^2 &= \sum_{i,j=1}^{n} |a_{ij} + b_{ij}|^2 \\
                            &= \sum_{i,j=1}^{n} |a_{ij}^2 + 2 a_{ij}b_{ij} + b_{ij}^2| \\
                            &\le \sum_{i,j=1}^{n} |a_{ij}|^2 + 2\sum_{i,j=1}^{n} |a_{ij} b_{ij}|
                            + \sum_{i,j=1}^{n} |b_{ij}|^2 \\
                            &\stackrel{\text{C.S.U.}}{\le } \Vert A \Vert_F^2
                            + 2 \Vert A \Vert_F \Vert B \Vert_F + \Vert B \Vert_F^2 \\
                            &= \left( \Vert A \Vert_F + \Vert B \Vert_F \right)^2
                        .\end{salign*}
                        Damit folgt die Behauptung.
                \end{enumerate}
            \end{proof}
        \item Beh.: $\forall A \in \mathbb{K}^{n \times n}$, $x \in \mathbb{K}^{n}$ gilt
            \[
            \Vert A x \Vert_{2} \le \Vert A \Vert_F \Vert x \Vert_2
            .\] 
            \begin{proof}
                Seien $A \in \mathbb{K}^{n \times n}$ und $x \in \mathbb{K}^{n}$ beliebig.
                $A_i$ bezeichne die $i$-te Zeile der Matrix $A$.
                Dann gilt
                \begin{salign*}
                    \Vert A x \Vert_{2}^2 &= \sum_{i=1}^{n} \left( \sum_{j=1}^{n} |a_{ij}x_j| \right)^2 \\
                    &= \sum_{i=1}^{n} (A_i, x)_2^2 \\
                    &\stackrel{\text{C.S.U.}}{\le } \sum_{i=1}^{n} \Vert A_i \Vert_2^2 \Vert x \Vert_2^2 \\
                    &= \Vert x \Vert_2^2 \sum_{i=1}^{n} \Vert A_i \Vert_{2}^2 \\
                    &= \Vert x \Vert_2^2 \sum_{i=1}^{n} \sum_{j=1}^{n} |a_i|^2 \\
                    &= \Vert x \Vert_2^2 \Vert A \Vert_F^2
                .\end{salign*}
                Damit folgt die Behauptung.
            \end{proof}
        \item Beh.: $\forall A, B \in \mathbb{K}^{n \times n}$ gilt
            \[
            \Vert A B \Vert_F \le \Vert A \Vert_F \Vert B \Vert_F
            .\] 
            \begin{proof}
                Seien $A \in \mathbb{K}^{n \times n}$ und $x \in \mathbb{K}^{n}$ beliebig.
                $A_i$ bezeichne die $i$-te Zeile der Matrix $A$, $B_j$ die $j$-te Spalte (!)
                der Matrix $B$.
                Dann gilt
                \begin{salign*}
                    \Vert A B \Vert_{F}^2 &= \sum_{i,j=1}^{n} \left| \sum_{k=1}^{n} a_{ik}b_{kj} \right|^2 \\
                    &= \sum_{i,j=1}^{n} (A_i, B_j)_2^2 \\
                    &\stackrel{\text{C.S.U.}}{\le } \sum_{i,j=1}^{n} \Vert A_i \Vert_2^2 \Vert B_j \Vert_2^2 \\
                    &= \sum_{i=1}^{n} \Vert A_i \Vert_2^2 \sum_{j=1}^{n} \Vert B_j \Vert_{2}^2 \\
                    &= \Vert A \Vert_F \Vert B \Vert_F
                .\end{salign*}
            \end{proof}
    \end{enumerate}
\end{aufgabe}

\begin{aufgabe}
    \begin{enumerate}[a)]
        \item Auszug aus \textit{rohrleitungsnetzwerk.cc}
    \begin{lstlisting}[language=C++, title=Funktion zum Aufstellen der Matrix, captionpos=b]
// Funktion zum Aufstellen der Matrix
template<class NumberType>
void flussMatrix( hdnum::DenseMatrix<NumberType> &A ) {
    int M( A.rowsize() );
    int N( A.colsize() );
    if(M!=N)
        HDNUM_ERROR("Matrix muss quadratisch sein!");

    // Numerierung wie auf Zettel 3 nur mit 0 beginnend
    // also v_0, ... ,v_(N^2-1)
    // der Referenzknoten v_r hat Druck 0

    // berechnung der kantenlaenge
    int n = floor(sqrt(N+1));

    for(int i = 0; i < N; i++) {
        int edges = 0;
        if ((i+1)%n != 0) { // nicht linker rand
            edges++;
            if (i-1 >= 0) A(i, i-1) = -1; // falls nicht der referenzknoten
        }
        if ((i+2)%n != 0) { // nicht rechter rand
            edges++;
            A(i, i+1) = -1;
        }
        if (i+n < N) { // nicht unterer rand
            edges++;
            A(i, i+n) = -1;
        }
        if (i-n >= -1) { // nicht oberer rand
            edges++;
            if (i-n >= 0) A(i, i-n) = -1; // falls nicht der referenzknoten
        }
        A(i, i) = edges;
    }
}\end{lstlisting}
        \item In \lstinline{DenseMatrix} sind schon die Zeilen- und Spaltensummennorm definiert.
            Auszug aus \textit{rohrleitungsnetzwerk.cc}

    \begin{lstlisting}[language=C++, title=Frobeniusnorm, captionpos=b]
// Funktion zur Berechnung der Frobenius-Norm einer Matrix
template<class NumberType>
NumberType frobeniusNorm(const hdnum::DenseMatrix<NumberType> &A) {
    // Error checking
    int M(A.rowsize());
    int N(A.colsize());
    if(M!=N)
        HDNUM_ERROR("Matrix muss quadratisch sein!");

    NumberType result=0.0;

    // iteriere ueber alle zeilen und spalten, quadriere die elemente und summiere
    for (int i=0; i < N; i++) {
        for (int j=0; j < N; j++) {
            result += pow(A(i,j), 2);
        }
    }

    // ziehe wurzel aus summe
    return sqrt(result);
}\end{lstlisting}

        \item Auszug aus \textit{rohrleitungsnetzwerk.cc}
    \begin{lstlisting}[language=C++, title=Eigenwertberechnung, captionpos=b]
// Funktion zur Berechnung des betragsgroessten Eigenwertes mit Potenzmethode
template<class NumberType>
NumberType maxEigenwert(const hdnum::DenseMatrix<NumberType> &A) {
    // Error checking
    int M(A.rowsize());
    int N(A.colsize());
    if(M!=N)
        HDNUM_ERROR("Matrix muss quadratisch sein!");

    // start vektor
    hdnum::Vector<NumberType> r(N);
    r[0] = 0;
    // work copy
    hdnum::Vector<NumberType> r_tmp(N);
    // finde vektor mit Ar != 0
    for (int i = 0;;i++) {
        A.mv(r_tmp, r); // r_tmp = Ar
        if (r_tmp.two_norm() > 0) {
            // Ar != 0
            break;
        } else if (i >= 100) {
            // breche ab, wenn kein passender startvektor gefunden werden kann
            HDNUM_ERROR("Kann keinen Vektor mit Ax != 0 finden. Ist A = 0?");
        }
        // Ar = 0, modifiziere start vektor
        r[i % N] += 1;
    }
    // fuehre iterationsschritt maximal 10000 mal aus
    for (int k=0; k<10000; k++) {
        A.mv(r_tmp, r); // r_tmp = Ar
        r_tmp /= r_tmp.two_norm(); // normiere r_tmp
        if ((r-r_tmp).two_norm() == 0)
            // breche ab ab, wenn maximale genauigkeit erreicht wurde
            break;
        r = r_tmp;
    }
    // berechne eigenwert mit rayleigh quotient
    A.mv(r_tmp, r); // r_tmp = Ar
    return (r * r_tmp)/r.two_norm_2();
}\end{lstlisting}
    \end{enumerate}
\end{aufgabe}

\end{document}
