add solutions to Uebung1
This commit is contained in:
parent
fb9008f571
commit
8bd0e7d775
@ -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}
|
||||||
|
Reference in New Issue
Block a user