\documentclass[12pt,a4paper]{report}
\usepackage{latexsym,amssymb,german,a4wide,verbatim,xr}
\usepackage{fancyhdr} 
%\usepackage{pgffor}
\usepackage{enumitem}
\usepackage{amsmath}
\usepackage{verbatim}
\usepackage{mathtools}
\usepackage{algpseudocode}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Layout
%\addtolength{\topmargin}{-15ex}
%\addtolength{\textheight}{20ex}
\pagestyle{fancy}
\setlength{\headheight}{28pt}
\lhead{Technische Universität Berlin\\Numerische Mathematik I - WS 2019/2020}
\rhead{Prof.~V.~Mehrmann\\M.~Froidevaux}
\cfoot{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\CurrentWeekNb}{3}
\newcounter{taskNb}
\stepcounter{taskNb}

\begin{document}
\begin{center}
%{\LARGE Numerische Mathematik}\\[1.5ex]
%%{\large \CurrentWeekNb. \"Ubungsblatt}\\ 
{\Large \CurrentWeekNb. \"Ubungsblatt}\\ 
{Rechnerarithmetik}\\
%\\{Diese Aufgaben müßen spätestens am 24.10.19 in der Vorlesung abgegeben werden.}
%{Abgabe:} Spätestens am 24.10.19 in der Vorlesung\\[0.5cm]
\end{center}
\hfill {Abgabe: Spätestens am 7.11.19 am Anfang der Vorlesung}\\[0.5cm]
%
%%\def\exerciseList{001, 002, 003}
%\begin{enumerate}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%% Aufgabe 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textbf{Theorieaufgabe \arabic{taskNb} (4 Punkte):} \stepcounter{taskNb} 
Zu lösen sei die quadratische Gleichung $x^2-2px-q=0$ für $p=2$, $q=0.0005$ in vier- und fünfstelliger Gleitpunktarithmetik im Dezimalsystem. Dabei sollen die folgenden Algorithmen untersucht werden:
\begin{enumerate}
\item $d=p^2+q$, $x_1=p+\sqrt{d}$, $x_2=p-\sqrt{d}$,\hfill(p-q Formel)
\item $d=p^2+q$, $x_1=p+\sqrt{d}$, $x_2=-q/x_1$.\hfill(Vietascher Wurzelsatz) 
\end{enumerate}
Vergleichen Sie die Ergebnisse mit der exakten Lösung und erklären Sie die unterschiedlichen Resultate.\\[0.3cm]
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%% Aufgabe 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\textbf{Theorieaufgabe \arabic{taskNb} (? Punkte):} \stepcounter{taskNb}
%Bei exakter Arithmetik gilt für das arithmetische Mittel $\bar{x}=\frac{x_1+x_2}{2}$
%zweier reeller Zahlen $x_1$ und $x_2$ die Ungleichung
%\begin{equation}
%\label{eq:Mittel}
%\min{x_1,x_2}\leq \bar{x}\leq\max{x_1,x_2}.
%\end{equation}
%Für Gleitpunktzahlen und das gemäß $x=gl(gl(x_1+x_2)/2)$ berechnete Mittel gilt die Ungleichung \eqref{eq:Mittel} im Allgemeinen nicht.
%Finde Gleitpunktzahlen $x_1$, $x_2\in \mathbb{M}(10,2,-3,3)$ derart, dass \eqref{eq:Mittel} verletzt ist. Wie ist die Berechnungsvorschrift für das arithmetische Mittel zu modifizieren, damit die Ungleichung \eqref{eq:Mittel} auch für das berechnete Mittel gilt?\\[0.3cm]
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%% Aufgabe 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\textbf{Theorieaufgabe \arabic{taskNb} (? Punkte):} \stepcounter{taskNb}
%Man betrachte die folgende Tabelle mit jeweils mathematisch
%äquivalenten Ausdrücken unter a) und b)
%\begin{center}
%\begin{tabular}{c|c|c|c}
%&a) &b)&\\
%\hline
%1.)\rule{0cm}{0.5cm}&$(1+x)^2-1$ & $x^2+2x$ & $|x|\approx \epsilon$ \\
%\hline
%2.)\rule{0cm}{0.7cm}&$\dfrac{e^x-1}{x}$ & $1+x^2+x^6$ &$0<x\leq\epsilon$
%\end{tabular}\\
%\end{center}
%Bei welchen Ausdrücken tritt Auslöschung auf? Unterziehen sie
%sämtliche Ausdrücke einer Fehleranalyse.\\[0.3cm]
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%% Aufgabe 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textbf{Theorieaufgabe \arabic{taskNb} (2+2 Punkte):} \stepcounter{taskNb}
\begin{enumerate}
\item Bei exakter Arithmetik gilt für das arithmetische Mittel $\bar{x}=\frac{x_1+x_2}{2}$
zweier reeller Zahlen $x_1$ und $x_2$ die Ungleichung
\begin{equation}
\label{eq:Mittel}
\min\{x_1,x_2\}\leq \bar{x}\leq\max\{x_1,x_2\}.
\end{equation}
Für Gleitpunktzahlen und das gemäß $x=gl(gl(x_1+x_2)/2)$ berechnete Mittel gilt die Ungleichung \eqref{eq:Mittel} im Allgemeinen nicht.
Finden Sie Gleitpunktzahlen $x_1$, $x_2\in \mathbb{M}(10,2,3)$ derart, dass \eqref{eq:Mittel} verletzt ist. %Wie ist die Berechnungsvorschrift für das arithmetische Mittel zu modifizieren, damit die Ungleichung \eqref{eq:Mittel} auch für das berechnete Mittel gilt?
\item Zur Berechnung der Summe $\sum_{i=1}^n x_i$ wird folgender Algorithmus vorgeschlagen:
\begin{algorithmic}
\State{$S \gets 0$, $D \gets 0$}
\For{$i \gets 1$ to $n$}
\State{$S_{\text{alt}} \gets S$}
\State{$S\gets S + x_i$}
\State{$D\gets D + (x_i-(S-S_{\text{alt}}))$}
\EndFor
\State{$S \gets S + D$}
\end{algorithmic}
Warum ist dieser Algorithmus der einfachen Summation überlegen? Konstruieren Sie ein Beispiel.
\end{enumerate}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%% Aufgabe 4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textbf{Theorieaufgabe \arabic{taskNb} (2+1 Punkte):} \stepcounter{taskNb}
Stellen Sie ein Neuntel als Binärzahl dar. Stellen Sie dazu zunächst neun im Binärsystem dar und führen Sie dann die schriftliche Division im Binärsystem durch, um das Ergebnis zu erlangen. Benutzen Sie keine Software dafür sondern nur einen Divisionsalgorithmus, den Sie verstehen. 

Schreiben Sie nun ein Neuntel im IEEE-754-Format für einfache Genauigkeit (single precision). Sie finden dazu Literatur auf der ISIS-Webseite des Kurses.
%
\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%% Programmieraufgabe 1 %%%%%%%%%%%%%%%%%%%%%%
\textbf{Programmieraufgabe (6+3 Punkte):}
\begin{enumerate}
\item Schreiben Sie Matlab- oder Python-Programme
\begin{center}
\texttt{e=meps()}, \texttt{m=minimum()}, \texttt{m=maximum()}, 
\end{center}
die die Maschinengenauigkeit \texttt{eps}, die kleinste darstellbare positive Zahl \texttt{xmin} bzw. die größte darstellbare Zahl \texttt{xmax} berechnen. Dabei ist \texttt{eps} als die kleinste Zahl definiert für die $1\oplus$\texttt{eps}$>1$ gilt. In den Programmen soll nur benutzt werden, dass intern eine Gleitpunktdarstellung basierend auf dem Dualsystem  verwendet  wird.  Vergleichen  Sie  ihre  Ergebnisse  mit  denen der entsprechenden Matlab-Funktionen (\texttt{eps}, \texttt{realmin}, \texttt{realmax}), bzw. die NumPy-Funktionen (\texttt{finfo(float).eps},  \\ \texttt{finfo(float).tiny}, \texttt{finfo(float).max}). Interpretieren Sie die Unterschiede. Hinterlassen Sie dafür eine Datei \texttt{interpretation.txt} in der zip-Datei, die sie dann hochladen werden (es sei denn, Sie benutzen Jupyter-Notebook, dann bitte die Interpretation direkt darein schreiben). 
%Schreiben Sie Matlab-Programmee=meps(),    m=minimum(),    m=maximum()die  den  maximalen  relativen  Rundungsfehlerε∗(siehe  Aufgaben  1  und  3),  die  kleinste  darstellbarepositive Zahlxminbzw. die gr ̈osste darstellbare Zahlxmaxberechnen. Dabei sollε∗als die kleinste Zahlεdefiniert werden, f ̈ur die 1⊕ε >1 gilt.In den Programmen soll nur benutzt werden, dass intern eine Gleitpunktdarstellung basierend auf demDualsystem verwendet wird, nicht jedoch die L ̈ange explizit im Code oder als Variable einfließen.Sie  k ̈onnen  zum  Beispiel  mitif(1+y==1)testen,  ob  auf  1  gerundet  wird  und  dannysystematischverkleinern.Erkennen Sie anhand der Ausgaben vonmeps()undmaximum()wie groß die Mantisse und der Exponentsind?Vergleichen Sie ihre Ergebnisse mit denen der entsprechendenMatlab-Funktionen (eps,realmin,realmax).Interpretieren Sie die Unterschiede.
\item Modifizieren Sie die Funktion \texttt{expeuler}, die Sie letzte Woche implementiert haben, sodass alle Variablen mit 32 bits anstatt 64 bits dargestellt werden.
Dafür können Sie die Matlab-Funktion \texttt{single($\cdot$)} oder die NumPy-Funktion \texttt{np.float32($\cdot$)} benutzen. Benennen Sie die neue Funktion z.B. \texttt{expeuler\_single}.\\
Lösen Sie das Anfangswertproblem $\dot{y}(t)=-\tan(t)y(t)$, $y(0)=1$ bis $t_e=3$ mit \texttt{expeuler\_single} und erstellen Sie 2 Plots analog zur Abbildung des Beispieles (2.47) aus der Vorlesung (oder äquivalent Abbildung (3.9) aus dem Buch). Benutzen Sie dafür 7 verschiedene Anzahlen von Schritten $N$, die zwischen $10^{1}$ und $10^{7}$ logarithmisch gleichverteilt sind, d.h. $N$ wird mit \texttt{N=logspace(1,7,7)} definiert (in Python ist die \texttt{logspace}-Funktion Teil vom NumPy-Package). \\
Eine richtige Version der Funktion \texttt{expeuler} von letzter Woche finden Sie auf der ISIS-Seite des Kurses.
\end{enumerate}
\end{document}


