\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 8^{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 #include 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}