add solutions for vectors and matrices

This commit is contained in:
Jan Grewe 2015-10-21 13:56:36 +02:00
parent 8bd0e7d775
commit 198cc173cc

View File

@ -1,4 +1,4 @@
\documentclass[12pt,a4paper,pdftex]{exam}
\documentclass[12pt,a4paper,pdftex, answers]{exam}
\usepackage[german]{babel}
\usepackage{natbib}
@ -24,6 +24,7 @@
\renewcommand{\baselinestretch}{1.15}
\newcommand{\code}[1]{\texttt{#1}}
\renewcommand{\solutiontitle}{\noindent\textbf{L\"osung:}\par\noindent}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
@ -51,12 +52,30 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
\question Erzeuge Vektoren mit folgendem Inhalt:
\begin{parts}
\part Von 1 bis 10 in ganzzahligen Schritten.
\begin{solution}
\code{a = 1:10;}
\end{solution}
\part Von 0 bis 20 in 2er Schritten.
\begin{solution}
\code{a = 0:2:20;}
\end{solution}
\part Mit \textbf{absteigendem} Inhalt von 100 bis 0.
\begin{solution}
\code{a = 100:-1:0;}
\end{solution}
\part In 10 Schritten von 0 bis 1.
\begin{solution}
\code{a = 0:0.1:1;}
\end{solution}
\part In 11 Schritten von 0 bis 1.
\begin{solution}
\code{a = 0:1/11:1;}
\end{solution}
\part In 50 Schritten von 0 bis $2\pi$ ($\pi$ ist als Konstante
\code{pi} in Matlab definiert).
\begin{solution}
\code{a = 0:2*pi/50:2*pi;}
\end{solution}
\end{parts}
\question Rechnen mit Vektoren:
@ -65,56 +84,132 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
\part Wie gro{\ss} ist der Vektor? Benutze die Funktionen
\code{size} und \code{length}. Was ist der Unterschied zwischen
den beiden Funktionen?
\begin{solution}
\code{x = [3 2 6 8]; \\ disp(length(x));\\ 4\\ disp(size(x))\\ 1 4}
\end{solution}
\part Wie \"andern sich \code{size} und \code{length} des
Vektors wenn er transponiert wird?
\begin{solution}
L\"ange \"andert sich nicht. R\"uckgabewert von size ist invertiert.
\end{solution}
\part Addiere 5 zu jedem Element von \verb+x+.
\begin{solution}
\code{disp(x + 5)}
\end{solution}
\part Multipliziere jedes Element von \code{x} mit 2;
\begin{solution}
\code{disp(x * 2)}
\end{solution}
\part Definiere einen zweiten Vektor (\verb+y = [4 1 3 5];+).
Stelle sicher, dass \code{x} wieder in seiner urspr\"unglichen
Form ist.
\part Addiere beide Vektoren \code{x + y}.
\begin{solution}
\code{y = [4 1 3 5]; \\disp(x + y)\\7 3 9 13}
\end{solution}
\part Subtrahiere beide Vektoren \code{x - y}.
\begin{solution}
\code{disp(x - y)\\-1 1 3 3}
\end{solution}
\part Multipliziere beide Vektoren \code{x * y}.
\begin{solution}
\code{disp(x * y)\\Error using *. Inner matrix dimension must agree.}
\end{solution}
\part Erkl\"are die Fehlermeldung.
\begin{solution}
* ist der Operator f\"ur die Matrixmultiplikation. Bei dieser
muessen die inneren Dimensionen \"uebereinstimmen.
\code{disp(size(x))\\1 4 \\disp(size(y)) \\ 1 4}\\
(m,n)*(n,o) w\"are ok.
\end{solution}
\part Was m\"usste man machen, damit \code{mtimes} bzw. der
\code{*} Operator funktionieren?
\begin{solution}
y m\"usste transponiert werden: \code{x * y'}
\end{solution}
\part Multipliziere die Vektoren elementweise (\code{x .* y})
und weise das Ergebnis eine neuen Variablen zu.
\begin{solution}
\code{z = x .* y;}
\end{solution}
\end{parts}
\question Erzeugen von Vektoren mit Helferfunktionen:
\begin{parts}
\part Erstelle einen 100 Elemente langen Vektor mit der Funktion
\code{ones} (siehe Hilfe). Was macht sie?
\begin{solution}
\code{ones(100,1)} erzeugt einen Vektor bei dem alle Elemente mit 1 gef\"ullt sind.
\end{solution}
\part Erstelle einen 100 Elemente langen Vektor mit der Funktion
\code{zeros}. Was macht diese?
\begin{solution}
\code{zeros(100,1)} erzeugt einen Vektor bei dem alle Elemente mit 0 gef\"ullt sind.
\end{solution}
\part Erstelle einen 100 Elemente langen Vektor in dem jedes
Element den Wert 4.5 hat.
\begin{solution}
\code{ones(100,1) * 4.5}
\end{solution}
\part Erzeuge einen Vektor mit 100 Zufallszahlen (\code{rand},
siehe Hilfe).
\begin{solution}
\code{x = rand(100,1)}
\end{solution}
\part Erzeuge einen Vektor mit 100 Werten zwischen 0 und 1
mithilfe der Funktion \code{linspace}.
\begin{solution}
\code{x = linspace(0,1,100)}
\end{solution}
\end{parts}
\question Indizieren in Vektoren:
\begin{parts}
\part Erzeuge einen Vektor mit 100 Elementen (0 - 100).
\begin{solution}
\code{x = linspace(0,100,100);}
\end{solution}
\part Gib jeweils den ersten, den letzten, den 5., 24. und den
vorletzten Wert aus.
\begin{solution}
\code{disp(x(1))\\ disp(x(end))\\ disp(x(5))\\ disp(x(24))\\ disp(x(end-1))}
\end{solution}
\part Gib die ersten 10 Werte aus.
\begin{solution}
\code{x(1:10)}
\end{solution}
\part Gib die letzten 10 Werte aus.
\begin{solution}
\code{disp(x(end-10:end))}
\end{solution}
\part Versuche den Wert an der Stelle 0 auszugeben.
\begin{solution}
\code{x(0)\\ Subscript indices must either be real positive integers or logicals.}
\end{solution}
\part Versuche den Wert an der Stelle 110 auszugeben.
\begin{solution}
\code{x(110)\\ Index exceeds matrix dimensions.}
\end{solution}
\part Gib die Werte an den Stellen 3, 15, und 42 zusammen als
Vektor aus.
\begin{solution}
\code{disp(x([3 15 42]))}
\end{solution}
\part Gib 10 zuf\"allig ausgew\"ahlte Werte aus (benutze
\verb+randi+ um die Indizes zu erstellen).
\begin{solution}
\code{x(randi(100,10,1))}
\end{solution}
\end{parts}
\question Erzeuge eine Variable und speichere etwas Text in ihr,
so dass mindestens 2 Worte vorhanden sind. (z.B. \code{x = 'some
text'}). Benutze die Indizierung um die W\"orter einzeln
auszugeben.
\begin{solution}
\code{x = 'some text'; \\ disp(x(1:4))\\disp(x(6:end))}
\end{solution}
\newpage
\section*{Matrizen}
@ -124,11 +219,29 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
4 \end{array} \right) \]
\begin{parts}
\part Gib das Element in der 3. Zeile und 2. Spalte aus.
\begin{solution}
\code{x = [7 3 5; 1 8 3; 8 6 4];\\x(3,2)}
\end{solution}
\part Gib jeweils alle Elemente der 1., 2. und 3. Zeile aus.
\begin{solution}
\code{x([1 2 3],:);}
\end{solution}
\part Gib jeweils alle Elemente der 1., 2., und 3. Spalte aus.
\begin{solution}
\code{disp(x(:, 1))\\ disp(x(:, 2))\\ disp(x(:, 3))}
\end{solution}
\part Erh\"ohe das Element in der 2. Zeile und 3. Spalte um Eins.
\begin{solution}
\code{x(2,3) = x(2,3) + 1;}
\end{solution}
\part Ziehe von allen Elementen der 1. Zeile 5 ab.
\begin{solution}
\code{x(1,:) = x(1,:) - 5;}
\end{solution}
\part Multipliziere alle Elementen der 3. Spalte mit 2.
\begin{solution}
\code{x(:,3) = x(:,3) * 2;}
\end{solution}
\end{parts}
\question Erstelle eine $5 \times 5$ Matrix \code{M} die
@ -136,19 +249,57 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
\verb+randn()+. Benutze die Hilfe: Was macht die Funktion?).
\begin{parts}
\part Gib das Element in der 2. Zeile und 3. Spalte aus.
\begin{solution}
\code{disp(M(2,3))}
\end{solution}
\part Gib jeweils alle Elemente der 1., 3. und letzten Zeile aus.
\begin{solution}
\code{disp(M(1,:)) \\ disp(M(3,:))\\ disp(M(size(M,1), :))}
\end{solution}
\part Gib jeweils alle Elemente der 2. und 4. Spalte aus.
\begin{solution}
\code{disp(M(:,2))\\ disp(M(:,4))}
\end{solution}
\part Greife mit einem einzigen Kommando auf die Elemente jeder
zweiten Spalte zu und speichere die Daten in einer neuen Variable.
\begin{solution}
\code{y = M(:, [2:2:size(M,2)])}
\end{solution}
\part Berechne jeweils den Mittelwert der 1., 3. und 5. Zeile
(Funktion \code{mean}, siehe Hilfe).
\begin{solution}
\code{mean(M([1 3 5],:), 2)}
\end{solution}
\part Berechne die Summe aller Werte der 2. und 4. Spalte
(Funktion \code{sum}, siehe Hilfe).
\part Berechne die Summer aller Elemente der Matrize.
\begin{solution}
\code{sum(M(:, [2 4]), 1)}
\end{solution}
\part Berechne die Summe aller Elemente der Matrize.
\begin{solution}
\code{sum(M(:))}
\end{solution}
\part Ersetze die Elemente der 2. Zeile mit denen der 4.
\begin{solution}
\code{M(2,:) = M(4,:)}
\end{solution}
\part F\"uhre folgendes Kommando aus: \code{M(1:2,1) = [1, 2,
3]}. Was k\''onnte die Absicht dieses Codes gewesen sein? Was
bedeutet die Fehlermeldung?
\begin{solution}
\code{M(1:2,1) = [1, 2,3];\\ Subscripted assignment dimension
mismatch.} \\ Der einzuf\"ugende Vektor hat 3 Elemente, die
Auswahl von M in die geschrieben werden soll hat nur die
Gr\"o{\ss}e 2;
\end{solution}
\end{parts}
\question Matrizen k\"onnen neben der ``normalen''
@ -158,12 +309,28 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
\begin{parts}
\part Erstelle eine 2-D Matrix mit Zufallszahlen mit der Dimensionalit\"at
\verb+[10,10]+.
\begin{solution}
\code{x = randn(10, 10)}
\end{solution}
\part Wie viele Werte enth\"alt sie?
\begin{solution}
100
\end{solution}
\part Benutze das lineare Indizieren um 50 zuf\"allige Werte
auszuw\"ahlen.
\begin{solution}
\code{x(randi(100, 50, 1)])}
\end{solution}
\part Wo liegt der Vorteil gegen\"uber der \textit{subscript}
Indizierung?
\part Berechne die Summe aller Werte mit einem Funktionsaufruf..
\begin{solution}
\code{sum(x(:))} oder \code{sum(sum(x))}
\end{solution}
\end{parts}
\question Erstelle folgende Variablen \verb+x = [1 5 9]+ and
@ -172,11 +339,35 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
sie nicht? Teste Deine Vorhersagen.
\begin{parts}
\part \code{x + y}
\begin{solution}
Funktioniert!
\end{solution}
\part \code{x * M}
\begin{solution}
Matrixmultiplikation Funktioniert nicht! Inner dimensions must agree!
\end{solution}
\part \code{x + y'}
\begin{solution}
Funktioniert nicht! Die Dimensionalit\"aten passen nicht.
\end{solution}
\part \code{M - [x y]}
\begin{solution}
Funktioniert nicht! \code{[x y] ist ein Zeilenvektor der L\"ange
6, M ist eine Martix.}
\end{solution}
\part \code{[x; y]}
\begin{solution}
Funktioniert! Gr\"o{\ss}e: 2 3
\end{solution}
\part \code{M - [x; y]}
\begin{solution}
Funktioniert!
\end{solution}
\end{parts}
\question Erstelle eine 3-D Matrix aus drei 2-D Matrizen. Benutze
@ -184,6 +375,9 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
nach, wie sie benutzt wird).
\begin{parts}
\part Gib alle Elemente des ersten ``Blattes'' aus (Index 1 der 3. Dimension).
\begin{solution}
\code{x = randn(5,5); \\y = randn(5, 5);\\ z = cat(3, x, y);\\disp(z(:,:,1))}
\end{solution}
\end{parts}
\question Erzeuge eine $5 \times 5 \times 5$ Matrix die mit
@ -192,6 +386,10 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
\begin{parts}
\part Berechne den Mittelwert aller Bl\"atter dieser Matrix
(benutze \verb+mean()+, siehe Hilfe).
\begin{solution}
\code{x = rand(5,5,5) .* 100;\\ disp(mean(mean(x(:,:,1))))\\ disp(mean(mean(x(:,:,2)))) \\ disp(mean(mean(x(:,:,3))))}
\end{solution}
\end{parts}
\end{questions}