improved functions exercise
This commit is contained in:
parent
8af349e9cb
commit
0e1aa7814d
6
programming/exercises/factorialscripta.m
Normal file
6
programming/exercises/factorialscripta.m
Normal 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)
|
1
programming/exercises/factorialscriptb.m
Normal file
1
programming/exercises/factorialscriptb.m
Normal file
@ -0,0 +1 @@
|
|||||||
|
printfaculty(5);
|
3
programming/exercises/factorialscriptc.m
Normal file
3
programming/exercises/factorialscriptc.m
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
n = 5
|
||||||
|
a = myfactorial(n);
|
||||||
|
fprintf('Factorial of %i is: %i\n', n, x)
|
8
programming/exercises/printfactorial.m
Normal file
8
programming/exercises/printfactorial.m
Normal 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
|
@ -1,7 +1,7 @@
|
|||||||
p = 0.5;
|
p = 0.5;
|
||||||
thresh = 50.0;
|
thresh = 50.0;
|
||||||
hold on
|
hold on
|
||||||
for k = 1:30
|
for k = 1:10
|
||||||
x = randomwalkthresh(p, thresh);
|
x = randomwalkthresh(p, thresh);
|
||||||
plot(x)
|
plot(x)
|
||||||
end
|
end
|
||||||
|
@ -5,7 +5,7 @@ for sp = 1:4
|
|||||||
p = probs(sp);
|
p = probs(sp);
|
||||||
subplot(2, 2, sp);
|
subplot(2, 2, sp);
|
||||||
hold on
|
hold on
|
||||||
for k = 1:30
|
for k = 1:10
|
||||||
x = randomwalkthresh(p, thresh);
|
x = randomwalkthresh(p, thresh);
|
||||||
if maxt < length(x)
|
if maxt < length(x)
|
||||||
maxt = length(x);
|
maxt = length(x);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
%\documentclass[12pt,a4paper,pdftex]{exam}
|
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||||
\documentclass[answers,12pt,a4paper,pdftex]{exam}
|
%\documentclass[answers,12pt,a4paper,pdftex]{exam}
|
||||||
|
|
||||||
\usepackage[german]{babel}
|
\usepackage[german]{babel}
|
||||||
\usepackage{natbib}
|
\usepackage{natbib}
|
||||||
@ -68,22 +68,26 @@ also als zip-Archiv auf ILIAS hochladen. Das Archiv sollte nach dem Muster:
|
|||||||
|
|
||||||
\begin{questions}
|
\begin{questions}
|
||||||
|
|
||||||
\question Implementiere die Fakult\"at als Funktion.
|
\question Berechne die Fakult\"at einer Zahl.
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part Version 1: berechnet die Fakult\"at von 5 und gib das
|
\part Version 1: Schreibe eine Skript, das die Fakult\"at von 5 berechnet und das
|
||||||
Resultat auf dem Bildschirm aus.
|
Resultat auf dem Bildschirm ausgibt.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\lstinputlisting{factorialscripta.m}
|
\lstinputlisting{factorialscripta.m}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
|
|
||||||
\part Version 2: Wie 1 aber die Funktion \"ubernimmt als Argument
|
\part Version 2: Wie Version 1, aber als Funktion, die als
|
||||||
die Zahl, von der die Fakult\"at berechnet werden soll.
|
Argument die Zahl, von der die Fakult\"at berechnet werden soll,
|
||||||
|
\"ubernimmt.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\lstinputlisting{printfactorial.m}
|
\lstinputlisting{printfactorial.m}
|
||||||
\lstinputlisting{factorialscriptb.m}
|
\lstinputlisting{factorialscriptb.m}
|
||||||
\end{solution}
|
\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}
|
\begin{solution}
|
||||||
\lstinputlisting{myfactorial.m}
|
\lstinputlisting{myfactorial.m}
|
||||||
\lstinputlisting{factorialscriptc.m}
|
\lstinputlisting{factorialscriptc.m}
|
||||||
@ -91,29 +95,38 @@ also als zip-Archiv auf ILIAS hochladen. Das Archiv sollte nach dem Muster:
|
|||||||
|
|
||||||
\end{parts}
|
\end{parts}
|
||||||
|
|
||||||
\question Implementiere eine Funktion, die einen Sinus mit der
|
\question Grafische Darstellung einer Sinuswelle.
|
||||||
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}
|
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part Erweitere die Funktion sodass die L\"ange der Zeitachse, die
|
\part Implementiere eine Funktion, die einen Sinus mit der
|
||||||
Schrittweite, Amplitude, Frequenz als Argumente
|
Amplitude 1 und der Frequenz $f = $ 50\,Hz plottet ($\sin(2\pi \cdot
|
||||||
\"ubergeben werden k\"onnen.
|
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}
|
\begin{solution}
|
||||||
\lstinputlisting{plotsine.m}
|
\lstinputlisting{plotsine.m}
|
||||||
\lstinputlisting{plotsineb.m}
|
\lstinputlisting{plotsineb.m}
|
||||||
\end{solution}
|
\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}
|
\begin{solution}
|
||||||
\lstinputlisting{sinewave.m}
|
\lstinputlisting{sinewave.m}
|
||||||
\lstinputlisting{plotsinec.m}
|
\lstinputlisting{plotsinec.m}
|
||||||
\end{solution}
|
\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}
|
\begin{solution}
|
||||||
\lstinputlisting{plotsinewave.m}
|
\lstinputlisting{plotsinewave.m}
|
||||||
\lstinputlisting{plotsined.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
|
%Vektor zur\"uckgibt. Welche Argumente muss die Funktion
|
||||||
%\"ubernehmen?
|
%\"ubernehmen?
|
||||||
|
|
||||||
\question Entwickle ein Programm, das einen 1-D random walk
|
\question 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}
|
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part \"Uberlege Dir ein geeignetes ``Programmlayout'' aus
|
\part Lies die Aufgabe bis zum Ende durch. \"Uberlege dir dann ein
|
||||||
Funktionen und Skripten.
|
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}
|
\begin{solution}
|
||||||
One function that computes one realisation of a random walk.
|
One function that computes one realisation of a random walk.
|
||||||
Scripts for plotting and analysis.
|
Scripts for plotting and analysis.
|
||||||
|
\lstinputlisting{randomwalkthresh.m}
|
||||||
\end{solution}
|
\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}
|
\begin{solution}
|
||||||
\lstinputlisting{randomwalkthresh.m}
|
|
||||||
\lstinputlisting{randomwalkscriptb.m}
|
\lstinputlisting{randomwalkscriptb.m}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
|
|
||||||
\part Simuliere 30 Realisationen des random walk pro
|
\part Jetzt wollen wir die Wahrscheinlichkeit $p$ f\"ur eine
|
||||||
Wahrscheinlichkeit.
|
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
|
||||||
\part Es sollen die Positionen als Funktion der Schrittanzahl
|
verschiedene Wahrscheinlichkeiten.
|
||||||
geplottet werden. Erstelle einen Plot mit den je 30
|
|
||||||
Wiederholungen pro Wahrscheinlichkeitsstufe.
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\lstinputlisting{randomwalkscriptc.m}
|
\lstinputlisting{randomwalkscriptc.m}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
|
Reference in New Issue
Block a user