Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

121 řádky
4.8KB

  1. \documentclass[uebung]{../../../lecture}
  2. \usepackage{listings}
  3. \usepackage{enumerate}
  4. \usepackage{array}
  5. \lstset{
  6. frame=tb,
  7. tabsize=4
  8. }
  9. \title{Übungsblatt Nr. 4}
  10. \author{Samuel Weidemeier, Christian Merten}
  11. \begin{document}
  12. \begin{tabular}{|c|m{1cm}|m{1cm}|m{1cm}|m{1cm}|m{1cm}|@{}m{0cm}@{}}
  13. \hline
  14. Aufgabe & \centering A1 & \centering A2 & \centering A3 & \centering A4 & \centering $\sum$ & \\[5mm] \hline
  15. Punkte & & & & & & \\[5mm] \hline
  16. \end{tabular}
  17. \begin{aufgabe}
  18. Zahlendarstellung
  19. \begin{enumerate}[a)]
  20. \item Berechnung der Determinante einer $2\times 2 $ Matrix.
  21. \begin{lstlisting}[language=C++, title=Berechnung der Determinante, captionpos=b]
  22. double determinante_double(double a, double b, double c, double d) {
  23. return a*d - b*c;
  24. }
  25. float determinante(float a, float b, float c, float d) {
  26. return a*d - b*c;
  27. }
  28. \end{lstlisting}
  29. Das Ergebnis bei Verwendung von \verb+float+ ist $10000$ und damit nicht exakt.
  30. Das liegt an der zu geringen Größe eines \verb+float+'s, der nur rund $7$ Dezimalstellen exakt
  31. speichern kann, danach wird gerundet. Das führt in diesem Fall zum Verlust aller
  32. Nachkommastellen. Bei Verwendung des Datentyps \verb+double+ reichen die rund $16$ Stellen aus, um
  33. das Ergebnis exakt darzustellen.
  34. \item Assoziativität bei \verb+float+s
  35. \begin{lstlisting}[language=C++, title=Vergleich der zwei Versionen, captionpos=b]
  36. float testAssoziativitaet() {
  37. for (int n = 6; n <= 14; n++) {
  38. // (a+b)+c
  39. float vers1 = (pow(10, n) + pow(-10, n)) + pow(10,-n);
  40. // a+(b+c)
  41. float vers2 = pow(10, n) + (pow(-10, n) + pow(10,-n));
  42. print(n, vers1, vers2, 0);
  43. }
  44. }
  45. \end{lstlisting}
  46. Das Ergebnis ist bereits ab $n = 5$ nicht mehr assoziativ. Das liegt daran, dass
  47. bei $(a+b)+c$ zunächst $10^{n} - 10^{n}$ berechnet wird, das aber immer null ist und danach
  48. einfach $10^{-n}$ ausgewertet wird. Dabei kann die gesamte Präzision des \verb+float+'s
  49. für die Nachkommastellen von $10^{-n}$ verwendet werden. Bei $a + (b+c)$ wird erst
  50. $-10^{n} + 10^{-n}$ berechnet. Hierbei reicht die Präzision nicht aus, um die Nachkommastellen
  51. darzustellen, da jetzt die Zahl bereits vor dem Komma sehr groß ist. Dadurch wird
  52. $-10^{n} + 10^{-n}$ auf $-10^{n}$ gerundet und dann mit $10^{n}$ addiert, was dann null ergibt.
  53. \end{enumerate}
  54. \end{aufgabe}
  55. \begin{aufgabe} Effektiver Zinssatz
  56. Programm siehe \verb+uebung4.cpp+
  57. Die Ergebnisse erleiden durch Runden und den begrenzten Speicherplatz des \verb+float+'s einige
  58. Ungenauigkeiten. Die Differenz zum Grenzwert wird wie erwartet immer geringer.
  59. Die Genauigkeit der \verb+double+ Werte ist höher.
  60. \end{aufgabe}
  61. \begin{aufgabe} Multiplikation im Zweierkomplement
  62. Zeigen Sie, dass für $n \in \N$ mit
  63. \[
  64. a, b, a \cdot b \in \left[ -2^{n-1}, 2^{n-1}- 1 \right]
  65. .\] für die Multiplikation im Zweierkomplement folgendes gilt:
  66. \[
  67. d_n(a\cdot b) = s_n(d_n(a)\cdot d_n(b))
  68. .\]
  69. \begin{proof}
  70. Seien $a, b \in \left[ -2^{n-1}, 2^{n-1}-1 \right] $ mit $-2^{n-1} \le a\cdot b \le 2^{n-1}-1$ beliebig.
  71. Fallunterscheidung:
  72. \begin{enumerate}[(i)]
  73. \item $a, b \ge 0$. Dann ist $a \cdot b \ge 0$. Damit
  74. \[
  75. s_n(d_n(a)\cdot d_n(b)) = s_n(a\cdot b) = a\cdot b = d_n(a\cdot b)
  76. .\]
  77. \item $a < 0, b > 0$ (analog $a > 0, b <0)$. Dann ist $a \cdot b < 0$.
  78. \begin{align*}
  79. s_n(d_n(a)\cdot d_n(b)) &= s_n((2^{n} - |a|) \cdot b) \\
  80. &= s_n((2^{n} + a) \cdot b) \\
  81. &= s_n(2^{n} \cdot b + a\cdot b) \\
  82. &= s_n(2^{n} \cdot b - |a+b|) \\
  83. &= 2^{n} - |a+b| \\
  84. &= d_n(a\cdot b)
  85. .\end{align*}
  86. \item $a < 0, b < 0$. Dann ist $a \cdot b > 0$.
  87. \begin{align*}
  88. s_n(d_n(a)\cdot d_n(b)) &= s_n((2^{n} - |a|)(2^{n} - |b|) \\
  89. &= s_n((2^{n} \cdot 2^{n} + 2^{n} \cdot b + a\cdot 2^{n} + a\cdot b) \\
  90. &= a \cdot b \\
  91. &= d_n(a\cdot b)
  92. .\end{align*}
  93. \item $a < 0, b = 0$ (analog $a = 0, b < 0$). Dann ist $a \cdot b = 0$.
  94. \begin{align*}
  95. s_n(d_n(a) \cdot d_n(b)) = s_n(\left( 2^{n} - |a| \right) \cdot 0) = s_n(0) = 0 = d_n(0) = d_n(a\cdot b)
  96. .\end{align*}
  97. \end{enumerate}
  98. \end{proof}
  99. \end{aufgabe}
  100. \end{document}