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

\begin{document}

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

\punkte

\begin{aufgabe}
    \begin{enumerate}[a)]
        \item Zur Basis 10 dargestellt:
            \[
                (0.5731 \times 10^{5})_{8} = (5\cdot 8^{-1} + 7 \cdot 8^{-2} + 3 \cdot 8^{-3} + 1 \cdot 8^{-4})
                \cdot 8^{5} = 24264 = 0.24264 \times 10^{5}
            .\] 
        \item Die Zahl $x_1 = (0.3)_{10} \in \R$
            in der normierten Fließkommadarstellung
            $\mathbb{F}(2,11,2)$ ergibt
            \[
                (0.10011001100 \times 2^{1})_{2}
            .\] 
            Zurück in $\mathbb{F}(10,r,1)$ ergibt
            \[
                (0.2998046875 \times 10^{0})_{10}
            .\] Das heißt für $r = 1$, $r = 2$ und $r = 3$ ergibt natürliche Rundung
            jeweils $(0.3)_{10}$. Größere $r$ ergeben andere Ergebnisse.
        \item Die größte positive Zahl in $\mathbb{F}(4, 6, 2)$ ergibt sich im Dezimalsystem dargestellt
            als:
            \[
                3 \cdot (4^{-1} + 4^{-2} + 4^{-3} + 4^{-4} + 4^{-5} + 4^{-6}) \cdot 4^{3\cdot 4^{0} + 3\cdot4^{1}}
                = 0.1073 \cdot 10^{10}
            .\] Die kleinste negative Zahl in $\mathbb{F}(3, 7, 1)$ ergibt sich im Dezimalsystem dargestellt
            als:
            \[
                - 2 \cdot (3^{-1} + 3^{-2} + \ldots + 3^{-7}) \cdot 3^{2 \cdot 3^{0}} \approx -0.8996 \cdot 10^{1}
            .\] Damit folgt für den maximalen Abstand zweier Zahlen aus $\mathbb{F}(4,6,2)$ und
            $\mathbb{F}(3,7,1)$:
            \[
            \max_{x_2, x_3} | x_2 - x_3 | \approx
            0.1073 \cdot 10^{10} + 0.8996 \cdot 10^{1} \approx 0.1073 \cdot 10^{10}
            .\] 
        \item Die Aussage ist falsch. Gegenbeispiel: $\mathbb{F}(2, 2, 1)$. Die Menge der darstellbaren
            Zahlen ist hier, analog zur Vorlesung:
            \[
                \mathbb{F}(2,2,1) = \left\{- \frac{3}{2}, -1, -\frac{3}{4}, -\frac{1}{2}, -\frac{3}{8},
                -\frac{1}{4}, 0, \frac{1}{4}, \frac{3}{8}, \frac{1}{2}, \frac{3}{4}, 1, \frac{3}{2}\right\} 
            .\] Hier ist sofort zu sehen, dass beispielsweise für $x_4 = 1$ gilt:
            \[
            \left| 1 - \frac{3}{4}\right| = \frac{1}{4} \neq \frac{1}{2} = \left| \frac{3}{2} - 1 \right| 
            .\] 
    \end{enumerate}
\end{aufgabe}

\begin{aufgabe}
    Die ersten zehn Folgenglieder in Dezimaldarstellung (nicht normiert):
    \begin{table}[h!]
        \centering
        \label{tab:label}
        \begin{tabular}{ccc}
            $n$ & Aufrunden & gerades Runden \\
            $0$ & $2.46$ & $2.46$ \\
            $1$ & $2.47$ & $2.46$ \\
            $2$ & $2.48$ & $2.46$ \\
            $3$ & $2.49$ & $2.46$ \\
            $4$ & $2.50$ & $2.46$ \\
            $5$ & $2.51$ & $2.46$ \\
            $6$ & $2.52$ & $2.46$ \\
            $7$ & $2.53$ & $2.46$ \\
            $8$ & $2.54$ & $2.46$ \\
            $9$ & $2.55$ & $2.46$ \\
           $10$ & $2.56$ & $2.46$ \\
        \end{tabular}
    \end{table}

    Beim Aufrunden ist deutlich zu sehen, dass, da nach jedem Rechenschritt die 4. Stelle
    auf $5$ steht, jedes mal aufgerundet wird. Da zwei Rundungen pro Folgenglied stattfinden,
    führt das zu einer Erhöhung um $2 \cdot 0.005 = 0.01$ pro Folgenglied.

    Beim geraden Runden wird zwar nach der ersten Operation aufgerundet, nach der zweiten jedoch nicht.
    Deshalb bleibt das Ergebnis exakt.
\end{aufgabe}

\begin{aufgabe}
    Programm zum Test der Nulladdition:
    \begin{lstlisting}[language=C++, title=nulladdition.cpp, captionpos=b]
#include<iostream>
#include<iomanip>

using namespace std;

int main() {
    // set output width and precision
    cout << setprecision(17);
    cout << setw(10);

    // float
    cout << "Enter a float > ";
    float x;
    cin >> x;
    x = x + 1;
    cout << x << endl;

    // double
    cout << "Enter a double > ";
    double y;
    cin >> y;
    y = y + 1;
    cout << y << endl;
}\end{lstlisting}
    \begin{enumerate}[a)]
        \item Bei Verwendung von \lstinline{float} muss $x$ als $5\cdot 10^{-8}$ gewählt werden, bei
            Verwendung von \lstinline{double} muss $x$ als $10^{-16}$ gewählt werden, damit
            exakt $1$ zurückgegeben wird.
        \item Das ist bei weitem nicht die kleinste positive Zahl, die \lstinline{float} bzw.
            \lstinline{double} darstellen können, da im Exponenten noch weit mehr Stellen zur Verfügung
            stehen, um sehr viel kleinere positive Zahlen darstellen zu können.

            Allerdings kann dies hier nicht genutzt werden, da durch die Addition mit $1$ gerundet werden
            muss.
    \end{enumerate}
\end{aufgabe}

\end{document}
