add solutions to Uebung1

This commit is contained in:
Jan Grewe 2015-10-21 11:30:48 +02:00
parent fb9008f571
commit 8bd0e7d775

View File

@ -1,4 +1,4 @@
\documentclass[12pt,a4paper,pdftex]{exam} \documentclass[12pt,a4paper,pdftex, answers]{exam}
\usepackage[german]{babel} \usepackage[german]{babel}
\usepackage{natbib} \usepackage{natbib}
@ -8,6 +8,7 @@
\usepackage{pslatex} \usepackage{pslatex}
\usepackage{amsmath} \usepackage{amsmath}
\usepackage{amssymb} \usepackage{amssymb}
\usepackage{lipsum}
\setlength{\marginparwidth}{2cm} \setlength{\marginparwidth}{2cm}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref} \usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
@ -25,7 +26,7 @@ jan.grewe@uni-tuebingen.de}
\renewcommand{\baselinestretch}{1.15} \renewcommand{\baselinestretch}{1.15}
\newcommand{\code}[1]{\texttt{#1}} \newcommand{\code}[1]{\texttt{#1}}
\renewcommand{\solutiontitle}{\noindent\textbf{L\"osung:}\par\noindent}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document} \begin{document}
@ -52,27 +53,73 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
\part Erzeuge zwei Variablen \code{a}, \code{b} und weise ihnen \part Erzeuge zwei Variablen \code{a}, \code{b} und weise ihnen
unterschiedliche Werte zu. Schlie{\ss}e die Zeilen mit einem unterschiedliche Werte zu. Schlie{\ss}e die Zeilen mit einem
Semikolon ab. Erstelle eine Variable \code{c} die leer ist. Semikolon ab. Erstelle eine Variable \code{c} die leer ist.
\begin{solution}
\code{a = 1;}, \code{b = 2;}, \code{c = [];}
\end{solution}
\part Lass die Werte der Variablen ausgeben. \part Lass die Werte der Variablen ausgeben.
\begin{solution}
\code{disp(a)}, \code{disp(b)}, \code{disp(c)}
\end{solution}
\part Benuzte die Kommandozeile um herauszufinden, welche Variablen \part Benuzte die Kommandozeile um herauszufinden, welche Variablen
es im Workspace gibt. es im Workspace gibt.
\begin{solution}
\code{who}
\end{solution}
\part Benuzte die Kommandozeile um herauszufinden, welche Datentypen sie haben. \part Benuzte die Kommandozeile um herauszufinden, welche Datentypen sie haben.
\begin{solution}
\code{whos} oder \code{class(a)}, \code{class(b)}, \code{class(c)}
\end{solution}
\part Finde in der Hilfe mehr Information \"uber das \code{clear} Kommando. \part Finde in der Hilfe mehr Information \"uber das \code{clear} Kommando.
\begin{solution}
\code{help clear}
\end{solution}
\part L\"osche eine Variable. \part L\"osche eine Variable.
\begin{solution}
\code{clear a}
\end{solution}
\part L\"osche alle \"ubrigen Variablen. \part L\"osche alle \"ubrigen Variablen.
\begin{solution}
\code{clear all} oder einfach \code{clear}
\end{solution}
\end{parts} \end{parts}
\question Operationen auf Variablen: \question Operationen auf Variablen:
\begin{parts} \begin{parts}
\part Erstelle die Variablen \code{a} und \code{b} und weise ihnen \part Erstelle die Variablen \code{a} und \code{b} und weise ihnen
beliebige Werte zu. beliebige Werte zu.
\begin{solution}
\code{a = 5; b = 3.14;}
\end{solution}
\part Addiere beliebige andere Zahlen zu den Variablen \code{a} und \code{b}. \part Addiere beliebige andere Zahlen zu den Variablen \code{a} und \code{b}.
\begin{solution}
\code{a + 5}, \code{b + 7.28}
\end{solution}
\part Addiere die Variablen. \part Addiere die Variablen.
\begin{solution}
\code{a + b}
\end{solution}
\part Mulipliziere die Variablen miteinander. \part Mulipliziere die Variablen miteinander.
\begin{solution}
\code{a * b}
\end{solution}
\part \"Andern sich die urspr\"unglichen Werte der Variablen? \part \"Andern sich die urspr\"unglichen Werte der Variablen?
\begin{solution}
Nein, die Operationen benutzen die Werte der Variablen. Die
Variablen bleiben unver\"andert.
\end{solution}
\part F\"uhre eine beliebige Berechnungen mit den Variablen aus und \part F\"uhre eine beliebige Berechnungen mit den Variablen aus und
weise die Ergebnisse einer neuen Variable \code{x} zu. weise die Ergebnisse einer neuen Variable \code{x} zu.
\begin{solution}
\code{x = a * b;}
\end{solution}
\part Weise \code{a} und \code{b} neue Werte zu. Hat sich etwas am \part Weise \code{a} und \code{b} neue Werte zu. Hat sich etwas am
Wert von \code{x} ge\"andert? Wert von \code{x} ge\"andert?
\begin{solution}
Nein, der Variablen \code{x} wird ein Wert zugewiesen, der sich
nicht \"andert bis der Variablen ein neuer Wert zugewiesen
wird. Die Variable 'x' speichert das Resultat der Rechnung
\textbf{nicht} die Anweisung.
\end{solution}
\end{parts} \end{parts}
\question Berechne die Fakult\"at von 5: \question Berechne die Fakult\"at von 5:
@ -83,37 +130,90 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
\part Fahre schrittweise fort, bis die Fakult\"at von 5 berechnet ist. \code{x} \part Fahre schrittweise fort, bis die Fakult\"at von 5 berechnet ist. \code{x}
sollte nun das Endergebnis enthalten. sollte nun das Endergebnis enthalten.
\end{parts} \end{parts}
\begin{solution}
\code{x = 1;} \\ \code{x = x * 2;}\\ \code{x = x * 3;} \\ \code{x = x * 4;} \\ \code{x = x * 5;}\\ code{disp(x)}\\
\code{ 120}
\end{solution}
\question Erstelle eine Variable, die einen beliebigen Text enth\"alt. Was \question Erstelle eine Variable, die einen beliebigen Text enth\"alt. Was
ist ihr Datentyp? ist ihr Datentyp?
\begin{solution}
\code{x = 'einfacher Text'}\\ \code{class(x)\\ char}
\end{solution}
\question Was sind die gr\"o{\ss}ten Zahlen, die in den Integer 8, 16, 32 \question Was sind die gr\"o{\ss}ten Zahlen, die in den Integer 8, 16, 32
und 64 bit Datentypen abgelegt werden k\"onnen? und 64 bit Datentypen abgelegt werden k\"onnen?
\begin{solution}
\verb+2^8 / 2 - 1+\\
\verb+2^16 / 2 - 1+\\
\verb+2^32 / 2 - 1+\\
\verb+2^64 / 2 - 1+
\end{solution}
\question Erstelle eine Variable des 8 Bit Integer Datentyps und weise \question Erstelle eine Variable des 8 Bit Integer Datentyps und weise
ihr einen Wert zu. Addiere \code{300}. Welchen Wert enth\"alt nun die ihr einen Wert zu. Addiere \code{300}. Welchen Wert enth\"alt nun die
Variable? Warum? Variable? Warum?
\begin{solution}
\code{x = int8(35);\\x = x + 300;\\ disp(x)\\ 127}\\
Der Datentype int8 kann nur Werte von -128 bis 127 speichern.
\end{solution}
\question Erkl\"are die Ausgaben von \code{int8(1024)} und \code{uint8(1024)}. \question Erkl\"are die Ausgaben von \code{int8(1024)} und \code{uint8(1024)}.
\begin{solution}
Der int8 Datentyp kann Werte von -128 bis maximal 127 ablegen. Der
uint8 Typ ist \textit{unsigned}, er speichert Werte zwischen 0 und
255.
\end{solution}
\question Typkonvertierung: \question Typkonvertierung:
\begin{parts} \begin{parts}
\part F\"uhre aus: \code{x = 131.333}. Welchen Datentyp hat die \part F\"uhre aus: \code{x = 131.333}. Welchen Datentyp hat die
Variable \code{x}? Variable \code{x}?
\begin{solution}
Sie hat den Typ \textit{double}.
\end{solution}
\part Wandle \code{x} in den speichereffizientesten Integer Datentypen um. \part Wandle \code{x} in den speichereffizientesten Integer Datentypen um.
\begin{solution}
\code{x = uint8(x);}\\Ben\"otigt 8 bit anstelle der 64 bit f\"ur
den double.
\end{solution}
\part Welchen Wert hat nun \code{x} ? \part Welchen Wert hat nun \code{x} ?
\begin{solution}
131
\end{solution}
\end{parts} \end{parts}
\question Flie{\ss}kommazahlen 1: Endliche Pr\"azision bei Addition \question Flie{\ss}kommazahlen 1: Endliche Pr\"azision bei Addition
\begin{parts} \begin{parts}
\part Weise der Variablen \code{a} eine Zahl mit Nachkommastellen zu. \part Weise der Variablen \code{a} eine Zahl mit Nachkommastellen zu.
\begin{solution}
\code{a = 3.14;}
\end{solution}
\part Eine weitere Variable \code{b} soll den Wert \code{a+0.001} \part Eine weitere Variable \code{b} soll den Wert \code{a+0.001}
haben. Was ist das Ergebnis von \code{b-a} ? haben. Was ist das Ergebnis von \code{b-a} ?
\begin{solution}
\code{b = a + 0.001;}\\ \code{disp(b - a)\\0.001}\\
Alles ok, Ergebnis wie erwartet.
\end{solution}
\part Einer dritte Variable \code{c} soll der Wert \code{a+1e-16} \part Einer dritte Variable \code{c} soll der Wert \code{a+1e-16}
zugewiesen werden. Was ist das Ergebnis von \code{c-a} ? Warum? zugewiesen werden. Was ist das Ergebnis von \code{c-a} ? Warum?
\begin{solution}
Das Ergebnis ist 0! Auch die doble Werte haben nur eine endliche
P\"azision in den Nachkommastellen.
\end{solution}
\part Berechne \verb=(2^52 + 1) - 2^52= sowie \part Berechne \verb=(2^52 + 1) - 2^52= sowie
\verb=(2^53 + 1) - 2^53=. \verb=(2^53 + 1) - 2^53=.
\begin{solution}
Im Ersten Fall ist das Ergebnis = 1, im Zweiten = 0. Bei so
gro{\ss}en Zahlen k\"onnen so kleine Unterschiede nicht mehr
aufgel\"ost werden.
\end{solution}
\part Berechne \code{sqrt(1+1e-16)-1} . Ist das richtig? Warum? \part Berechne \code{sqrt(1+1e-16)-1} . Ist das richtig? Warum?
\begin{solution}
Die Wurzel von 1 + etwas sollte nicht 1 sein! Das Ergebnis
sollte nicht 0 sein. Vergleiche beim Addieren einer etwas
gr\"o{\ss}eren Zahl (z.B. 1e-8).
\end{solution}
\end{parts} \end{parts}
\question Flie{\ss}kommazahlen 2: Endliche Pr\"azision bei Multiplikation \question Flie{\ss}kommazahlen 2: Endliche Pr\"azision bei Multiplikation
@ -121,8 +221,20 @@ Variable? Warum?
\part Weise der Variablen \code{a} die Zahl \code{4/3} zu. \part Weise der Variablen \code{a} die Zahl \code{4/3} zu.
\part Die Variable \code{b} soll den Wert \code{3*(a-1)} erhalten. \part Die Variable \code{b} soll den Wert \code{3*(a-1)} erhalten.
\part Welches Ergebnis erwartest du f\"ur \code{b-1} ? \part Welches Ergebnis erwartest du f\"ur \code{b-1} ?
\begin{solution}
\code{a = 4/3;}\\ \code{b = 3 * (a-1)}\\
b sollte nun 1 sein. d.h., \code{b-1} sollte 0 sein.
\end{solution}
\part Berechne mit matlab \code{b-1} ! \part Berechne mit matlab \code{b-1} !
\begin{solution}
\code{disp(b - 1)\\ -2.2204e-16}\\ Aufgrund von Rundungsfehlern
kommt es zu diesem Ergebnis.
\end{solution}
\part Was sollte \code{sin(pi)} ergeben ? Was sagt matlab? \part Was sollte \code{sin(pi)} ergeben ? Was sagt matlab?
\begin{solution}
Sollte 0 sein, ist es aber nicht. Wie oben, Rundungsfehler
f\"uhren zu diesen Abweichungen.
\end{solution}
\end{parts} \end{parts}
\end{questions} \end{questions}