diff --git a/programming/exercises/vectors_matrices.tex b/programming/exercises/vectors_matrices.tex index 89add8a..f0dee59 100644 --- a/programming/exercises/vectors_matrices.tex +++ b/programming/exercises/vectors_matrices.tex @@ -50,28 +50,65 @@ benannt werden (z.B. variablen\_datentypen\_meier.m). \question Erzeuge Vektoren mit folgendem Inhalt: \begin{parts} - \part Von 1 bis 10 in ganzzahligen Schritten. - \part Von 0 bis 20 in 2er Schritten. - \part Mit \textbf{absteigendem} Inhalt von 100 bis 0. - \part In 10 Schritten von 0 bis 1. - \part In 11 Schritten von 0 bis 1. - \part In 50 Schritten von 0 bis $2\pi$ ($\pi$ ist als Konstante \verb+pi+ - in Matlab definiert). + \part Von 1 bis 10 in ganzzahligen Schritten. + \part Von 0 bis 20 in 2er Schritten. + \part Mit \textbf{absteigendem} Inhalt von 100 bis 0. + \part In 10 Schritten von 0 bis 1. + \part In 11 Schritten von 0 bis 1. + \part In 50 Schritten von 0 bis $2\pi$ ($\pi$ ist als Konstante + \code{pi} in Matlab definiert). \end{parts} - \question Indizieren: + \question Rechnen mit Vektoren: \begin{parts} - \part Erzeuge einen Vektor mit 100 Zufallszahlen (z.B. mit der - Funktion \verb+rand+). -XXX Problem: rand(100) macht matrix. Also doch lieber 0:100:0.1 ? XXX - \part Gib jeweils den ersten, den letzten, den 5., 24. und den vorletzten Wert aus. - \part Gib die ersten 10 Werte aus. - \part Gib die letzten 10 Werte aus. - \part Gib die Werte an den Stellen 3, 15, und 42 zusammen als Vektor aus. - \part Gib 10 zuf\"allig ausgew\"ahlte Werte aus (benutze + \part Definiere einen Vektor \code{x = [3 2 6 8];} + \part Wie gro{\ss} ist der Vektor? Benutze die Funktionen + \code{size} und \code{length}. Was ist der Unterschied zwischen + den beiden Funktionen? + \part Wie \"andern sich \code{size} und \code{length} des + Vektors wenn er transponiert wird? + \part Addiere 5 zu jedem Element von \verb+x+. + \part Multipliziere jedes Element von \code{x} mit 2; + \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}. + \part Subtrahiere beide Vektoren \code{x - y}. + \part Multipliziere beide Vektoren \code{x * y}. + \part Erkl\"are die Fehlermeldung. + \part Was m\"usste man machen, damit \code{mtimes} bzw. der + \code{*} Operator funktionieren? + \part Multipliziere die Vektoren elementweise (\code{x .* y}) + und weise das Ergebnis eine neuen Variablen zu. + \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? + \part Erstelle einen 100 Elemente langen Vektor mit der Funktion + \code{zeros}. Was macht diese? + \part Erstelle einen 100 Elemente langen Vektor in dem jedes + Element den Wert 4.5 hat. + \part Erzeuge einen Vektor mit 100 Zufallszahlen (\code{rand}, + siehe Hilfe). + \part Erzeuge einen Vektor mit 100 Werten zwischen 0 und 1 + mithilfe der Funktion \code{linspace}. + \end{parts} + + \question Indizieren in Vektoren: + \begin{parts} + \part Erzeuge einen Vektor mit 100 Elementen (0 - 100). + \part Gib jeweils den ersten, den letzten, den 5., 24. und den + vorletzten Wert aus. + \part Gib die ersten 10 Werte aus. + \part Gib die letzten 10 Werte aus. + \part Versuche den Wert an der Stelle 0 auszugeben. + \part Versuche den Wert an der Stelle 110 auszugeben. + \part Gib die Werte an den Stellen 3, 15, und 42 zusammen als + Vektor aus. + \part Gib 10 zuf\"allig ausgew\"ahlte Werte aus (benutze \verb+randi+ um die Indizes zu erstellen). -XXX wieder das matrix Problem von randi XXX - \end{parts} \question Erzeuge eine Variable und speichere etwas Text in ihr, @@ -79,90 +116,84 @@ XXX wieder das matrix Problem von randi XXX text'}). Benutze die Indizierung um die W\"orter einzeln auszugeben. - \question Definiere zwei Vektoren: \verb+x = [3 2 6 8];+ und - \verb+y = [4; 1; 3; 5];+ - \begin{parts} - \part Was sind die Gr\"o{\ss}en von \verb+x+ und \verb+y+ (siehe - \verb+size+)? - \part ... addiere 5 zu jedem Element von \verb+x+. - \part ... addiere 3 zu jedem Element von y, das einen ungeraden - Index hat. - \part ... multipliziere jedes Element von \verb+x+ mit dem - entsprechenden Element in \verb+y+ und weise das Ergebnis der - Variable \verb+z+ zu. -XXX Vorher noch eine Aufgabe, bei der man nicht transponieren muss! XXX - \end{parts} - \newpage \section*{Matrizen} \question Erstelle folgende Matrix - \[ A = \left( \begin{array}{ccc} 7 & 3 & 5 \\ 1 & 8 & 3 \\ 8 & 6 & 4 \end{array} \right) \] - \begin{parts} - \part Gib das Element in der 3. Zeile und 2. Spalte aus. - \part Gib jeweils alle Elemente der 1., 2. und 3. Zeile aus. - \part Gib jeweils alle Elemente der 1., 2., und 3. Spalte aus. - \part Erh\"ohe das Element in der 2. Zeile und 3. Spalte um Eins. - \part Ziehe von allen Elementen der 1. Zeile 5 ab. - \part Multipliziere alle Elementen der 3. Spalte mit 2. - \end{parts} - - \question Erstelle eine $5 \times 5$ Matrix die Zufallszahlen enth\"alt (nutze die - MATLAB Funktion \verb+randn()+. Benutze die Hilfe: Was macht die Funktion?). - \begin{parts} - \part Gib das Element in der 2. Zeile und 3. Spalte aus. - \part Gib jeweils alle Elemente der 1., 3. und letzten Zeile aus. - \part Gib jeweils alle Elemente der 2. und 4. Spalte aus. - \part Greife mit einem einzigen Kommando auf die Elemente jeder - zweiten Spalte zu und speichere die Daten in einer neuen Variable. - \end{parts} - + \[ A = \left( \begin{array}{ccc} 7 & 3 & 5 \\ 1 & 8 & 3 \\ 8 & 6 & + 4 \end{array} \right) \] + \begin{parts} + \part Gib das Element in der 3. Zeile und 2. Spalte aus. + \part Gib jeweils alle Elemente der 1., 2. und 3. Zeile aus. + \part Gib jeweils alle Elemente der 1., 2., und 3. Spalte aus. + \part Erh\"ohe das Element in der 2. Zeile und 3. Spalte um Eins. + \part Ziehe von allen Elementen der 1. Zeile 5 ab. + \part Multipliziere alle Elementen der 3. Spalte mit 2. + \end{parts} + + \question Erstelle eine $5 \times 5$ Matrix \code{M} die + Zufallszahlen enth\"alt (nutze die MATLAB Funktion + \verb+randn()+. Benutze die Hilfe: Was macht die Funktion?). + \begin{parts} + \part Gib das Element in der 2. Zeile und 3. Spalte aus. + \part Gib jeweils alle Elemente der 1., 3. und letzten Zeile aus. + \part Gib jeweils alle Elemente der 2. und 4. Spalte aus. + \part Greife mit einem einzigen Kommando auf die Elemente jeder + zweiten Spalte zu und speichere die Daten in einer neuen Variable. + \part Berechne jeweils den Mittelwert der 1., 3. und 5. Zeile + (Funktion \code{mean}, siehe Hilfe). + \part Berechne die Summe aller Werte der 2. und 4. Spalte + (Funktion \code{sum}, siehe Hilfe). + \part Berechne die Summer aller Elemente der Matrize. + \part Ersetze die Elemente der 2. Zeile mit denen der 4. + \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? + \end{parts} + + \question Matrizen k\"onnen neben der ``normalen'' + \textit{subscript} Indizierung auch \textit{linear} indiziert werden + (siehe Hilfe \"uber Indexing oder Funktionen \verb+sub2ind+ oder + \verb+ind2sub+). + \begin{parts} + \part Erstelle eine 2-D Matrix mit Zufallszahlen mit der Dimensionalit\"at + \verb+[10,10]+. + \part Wie viele Werte enth\"alt sie? + \part Benutze das lineare Indizieren um 50 zuf\"allige Werte + auszuw\"ahlen. + \part Wo liegt der Vorteil gegen\"uber der \textit{subscript} + Indizierung? + \part Berechne die Summe aller Werte mit einem Funktionsaufruf.. + \end{parts} + \question Erstelle folgende Variablen \verb+x = [1 5 9]+ and - \verb+y = [7 1 5]+ und \verb+M = [3 1 6; 5 2 7]+. Welche der - folgenden Operationen funktionieren? Wenn nicht, warum - funktionieren sie nicht? Teste Deine Vorhersagen. - \begin{parts} + \verb+y = [7 1 5]+ und \verb+M = [3 1 6; 5 2 7]+. Welche der + folgenden Operationen funktionieren? Wenn nicht, warum funktionieren + sie nicht? Teste Deine Vorhersagen. + \begin{parts} \part \code{x + y} \part \code{x * M} \part \code{x + y'} \part \code{M - [x y]} \part \code{[x; y]} \part \code{M - [x; y]} - \end{parts} - - \question Erstelle eine 3-D Matrix aus drei 2-D Matrizen. Benutze die - \verb+cat()+ Funktion f\"ur diesen Zweck (schaue in der Hilfe - nach, wie sie benutzt wird). - \begin{parts} + \end{parts} + + \question Erstelle eine 3-D Matrix aus drei 2-D Matrizen. Benutze + die \verb+cat()+ Funktion f\"ur diesen Zweck (schaue in der Hilfe + nach, wie sie benutzt wird). + \begin{parts} \part Gib alle Elemente des ersten ``Blattes'' aus (Index 1 der 3. Dimension). - \end{parts} - - \question Erstelle eine 3-D Matrix der Gr\"o{\ss}e \verb+[5, 5, 3]+ - mithilfe der Funktion \code{ones()}. Multipliziere alle Elemente - des ersten Blattes mit 1, die des zweiten mit 2, des dritten mit - 3. + \end{parts} + + \question Erzeuge eine $5 \times 5 \times 5$ Matrix die mit + ganzzahligen, gleichverteilten Zufallszahlen zwischen 0 und 100 + gef\"ullt ist. + \begin{parts} + \part Berechne den Mittelwert aller Bl\"atter dieser Matrix + (benutze \verb+mean()+, siehe Hilfe). + \end{parts} - \question Erzeuge eine $5 \times 5 \times 5$ Matrix die mit ganzzahligen, gleichverteilten - Zufallszahlen zwischen 0 und 100 gef\"ullt ist. - \begin{parts} - \part Berechne den Mittelwert aller Bl\"atter dieser Matrix (benutze \verb+mean()+, siehe Hilfe). - \end{parts} - XXX Das geht auch in 2D: Mittelwerte der Zeilen, bzw. Spalten! Das waere sehr wichtig! Auch um den Anschluss an excel zu machen! XXXX - - \question Matrizen k\"onnen neben der ``normalen'' \textit{subscript} -XXX Das wuerde ich mit einer 2D Matrize machen! XXX - Indizierung auch \textit{linear} indiziert werden (siehe Hilfe - \"uber Indexing oder Funktionen \verb+sub2ind+ oder - \verb+ind2sub+). - \begin{parts} - \part Erstelle eine 3-D Matrix mit Zufallszahlen mit der Dimensionalit\"at - \verb+[10,10,10]+. - \part Wie viele Werte enth\"alt sie? - \part Benutze das lineare Indizieren um 500 zuf\"allige Werte - auszuw\"ahlen. - \part Wo liegt der Vorteil gegen\"uber der \textit{subscript} - Indizierung? - \end{parts} \end{questions} \end{document} \ No newline at end of file