improved functions exercise

This commit is contained in:
Jan Benda 2016-11-22 15:14:06 +01:00
parent 8af349e9cb
commit 0e1aa7814d
7 changed files with 70 additions and 40 deletions

View File

@ -0,0 +1,6 @@
n = 5;
x = 1;
for i = 1:n
x = x * i;
end
fprintf('Factorial of %i is: %i\n', n, x)

View File

@ -0,0 +1 @@
printfaculty(5);

View File

@ -0,0 +1,3 @@
n = 5
a = myfactorial(n);
fprintf('Factorial of %i is: %i\n', n, x)

View File

@ -0,0 +1,8 @@
function printfaculty(n)
% compute the faculty of n and print it
x = 1;
for i = 1:n
x = x * i;
end
fprintf('Factorial of %i is: %i\n', n, x)
end

View File

@ -1,7 +1,7 @@
p = 0.5;
thresh = 50.0;
hold on
for k = 1:30
for k = 1:10
x = randomwalkthresh(p, thresh);
plot(x)
end

View File

@ -5,7 +5,7 @@ for sp = 1:4
p = probs(sp);
subplot(2, 2, sp);
hold on
for k = 1:30
for k = 1:10
x = randomwalkthresh(p, thresh);
if maxt < length(x)
maxt = length(x);

View File

@ -1,5 +1,5 @@
%\documentclass[12pt,a4paper,pdftex]{exam}
\documentclass[answers,12pt,a4paper,pdftex]{exam}
\documentclass[12pt,a4paper,pdftex]{exam}
%\documentclass[answers,12pt,a4paper,pdftex]{exam}
\usepackage[german]{babel}
\usepackage{natbib}
@ -68,22 +68,26 @@ also als zip-Archiv auf ILIAS hochladen. Das Archiv sollte nach dem Muster:
\begin{questions}
\question Implementiere die Fakult\"at als Funktion.
\question Berechne die Fakult\"at einer Zahl.
\begin{parts}
\part Version 1: berechnet die Fakult\"at von 5 und gib das
Resultat auf dem Bildschirm aus.
\part Version 1: Schreibe eine Skript, das die Fakult\"at von 5 berechnet und das
Resultat auf dem Bildschirm ausgibt.
\begin{solution}
\lstinputlisting{factorialscripta.m}
\end{solution}
\part Version 2: Wie 1 aber die Funktion \"ubernimmt als Argument
die Zahl, von der die Fakult\"at berechnet werden soll.
\part Version 2: Wie Version 1, aber als Funktion, die als
Argument die Zahl, von der die Fakult\"at berechnet werden soll,
\"ubernimmt.
\begin{solution}
\lstinputlisting{printfactorial.m}
\lstinputlisting{factorialscriptb.m}
\end{solution}
\part Version 3: Wie 2 aber mit R\"uckgabe des berechneten Wertes.
\part Version 3: Wie Version 2, die Funktion soll den berechneten
Wert nicht ausgeben, sondern als Funktionswert zur\"uckgeben. Das
aufrufende Skript soll dann den berechneten Wert auf dem
Bildschirm ausgeben.
\begin{solution}
\lstinputlisting{myfactorial.m}
\lstinputlisting{factorialscriptc.m}
@ -91,29 +95,38 @@ also als zip-Archiv auf ILIAS hochladen. Das Archiv sollte nach dem Muster:
\end{parts}
\question Implementiere eine Funktion, die einen Sinus mit der
Amplitude 1 und der Frequenz $f = $ 50\,Hz plottet ($sin(2\pi \cdot
f \cdot t)$):
\begin{solution}
\lstinputlisting{plotsine50.m}
\lstinputlisting{plotsinea.m}
\end{solution}
\question Grafische Darstellung einer Sinuswelle.
\begin{parts}
\part Erweitere die Funktion sodass die L\"ange der Zeitachse, die
Schrittweite, Amplitude, Frequenz als Argumente
\"ubergeben werden k\"onnen.
\part Implementiere eine Funktion, die einen Sinus mit der
Amplitude 1 und der Frequenz $f = $ 50\,Hz plottet ($\sin(2\pi \cdot
f \cdot t)$). Rufe die Funktion auf.
\begin{solution}
\lstinputlisting{plotsine50.m}
\lstinputlisting{plotsinea.m}
\end{solution}
\part Erweitere die Funktion so, dass die L\"ange der Zeitachse,
die Amplitude, und die Frequenz als Argumente \"ubergeben werden
k\"onnen. Die Schrittweite soll in der Funktion aus der Frequenz
berechnet werden.
\begin{solution}
\lstinputlisting{plotsine.m}
\lstinputlisting{plotsineb.m}
\end{solution}
\part Gib sowohl den Sinus als auch die Zeitachse zur\"uck.
\part Verlagere alle plot Befehle in das aufrufende Skript
und ver\"andere die Funktion so, dass sie sowohl den Sinus als
auch die Zeitachse zur\"uckgibt.
\begin{solution}
\lstinputlisting{sinewave.m}
\lstinputlisting{plotsinec.m}
\end{solution}
\part Extra plot Funktion.
\part Schreibe eine zweite Funktion, die den Sinus plotted und
daf\"ur die Zeitachse und den Sinus als Argument erh\"alt. Diese
Funktion soll die Achsen richtig beschriften. Schreibe ein kleines
Skript, dass beide Funktionen aufruft, um einen Sinus von 5\,Hz
mit der Amplitude 2 \"uber 1.5 Sekunden zu plotten.
\begin{solution}
\lstinputlisting{plotsinewave.m}
\lstinputlisting{plotsined.m}
@ -125,34 +138,33 @@ also als zip-Archiv auf ILIAS hochladen. Das Archiv sollte nach dem Muster:
%Vektor zur\"uckgibt. Welche Argumente muss die Funktion
%\"ubernehmen?
\question Entwickle ein Programm, das einen 1-D random walk
simuliert. Das Programm soll folgendes leisten:
\begin{itemize}
\item Jede Simulation soll solange laufen, bis eine Abweichung vom
Startwert von $\pm$ 50 erreicht ist.
\item Es soll m\"oglich sein, die Wahrscheinlichkeit f\"ur eine der
beiden Richtungen zu variieren. Variiere im Bereich von 0.5 bis 0.9.
\end{itemize}
\question Random Walk.
\begin{parts}
\part \"Uberlege Dir ein geeignetes ``Programmlayout'' aus
Funktionen und Skripten.
\part Lies die Aufgabe bis zum Ende durch. \"Uberlege dir dann ein
geeignetes ``Programmlayout'' aus Funktionen und Skripten.
Was w\"are eine geeigente Funktion f\"ur diese Aufgabe? Welche
Argumente sollte sie entgegennehmen? Was soll sie berechnen und
zur\"uckgeben?
\begin{solution}
One function that computes one realisation of a random walk.
Scripts for plotting and analysis.
\lstinputlisting{randomwalkthresh.m}
\end{solution}
\part Implementiere die L\"osung.
\part Simuliere und plotte die Positionen von 10 Realisationen
eines random walk mit gleichen Wahrscheinlichkeiten f\"ur beide
Richtungen. Jeder Walker startet an der Position 0 und soll so
lange laufen, bis er den Wert 50 \"uberschreitet oder den Wert
$-50$ unterschreitet.
\begin{solution}
\lstinputlisting{randomwalkthresh.m}
\lstinputlisting{randomwalkscriptb.m}
\end{solution}
\part Simuliere 30 Realisationen des random walk pro
Wahrscheinlichkeit.
\part Es sollen die Positionen als Funktion der Schrittanzahl
geplottet werden. Erstelle einen Plot mit den je 30
Wiederholungen pro Wahrscheinlichkeitsstufe.
\part Jetzt wollen wir die Wahrscheinlichkeit $p$ f\"ur eine
Bewegung zu gr\"o{\ss}eren Positionen im Bereich $0.5 \le p < 0.8$
variieren. Simuliere 10 Realisationen des random walk f\"ur vier
verschiedene Wahrscheinlichkeiten.
\begin{solution}
\lstinputlisting{randomwalkscriptc.m}
\end{solution}