Merge branch 'master' of whale.am28.uni-tuebingen.de:scientificComputing
This commit is contained in:
8
programming/code/boltzmann.m
Normal file
8
programming/code/boltzmann.m
Normal file
@@ -0,0 +1,8 @@
|
||||
function y = boltzmann( x, k )
|
||||
% computes the boltzmann function
|
||||
% x: scalar or vector of x values
|
||||
% k: slope parameter of boltzman function
|
||||
% returns y-values of boltzmann function
|
||||
y = 1./(1+exp(-k*x));
|
||||
end
|
||||
|
||||
3
programming/code/plotboltzmann.m
Normal file
3
programming/code/plotboltzmann.m
Normal file
@@ -0,0 +1,3 @@
|
||||
p = boltzmann(voltage, a);
|
||||
plot(voltage, p)
|
||||
y = -1;
|
||||
@@ -15,7 +15,7 @@
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot} \header{{\bfseries\large \"Ubung
|
||||
3}}{{\bfseries\large Boolesche Ausdr\"ucke, logisches
|
||||
Indizieren}}{{\bfseries\large 13. Oktober, 2015}}
|
||||
Indizieren}}{{\bfseries\large 31. Oktober, 2016}}
|
||||
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||
jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{}
|
||||
|
||||
@@ -41,8 +41,8 @@ Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
|
||||
werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
|
||||
im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
|
||||
``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
|
||||
voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
|
||||
``variablen\_datentypen\_\{nachname\}.m'' benannt werden
|
||||
voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:\newline
|
||||
``boolesche\_ausdruecke\_\{nachname\}.m'' benannt werden
|
||||
(z.B. variablen\_datentypen\_mueller.m).
|
||||
|
||||
\section{Boolesche Ausdr\"ucke}
|
||||
@@ -77,14 +77,14 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
|
||||
\newpage
|
||||
\section{Logische Indizierung}
|
||||
|
||||
Bollesche Ausdr\"ucke k\"onnen benutzt werden um aus Vektoren und
|
||||
Boolesche Ausdr\"ucke k\"onnen benutzt werden um aus Vektoren und
|
||||
Matrizen die Elemente herauszusuchen, die einem bestimmeten Kriterium
|
||||
entsprechen.
|
||||
|
||||
\begin{questions}
|
||||
\question Gegeben sind \verb+x = (1:10)+ und
|
||||
\verb+y = [3 1 5 6 8 2 9 4 7 0]+. Versuche die Ausgaben folgender
|
||||
Anweisungen zu verstehen.
|
||||
Anweisungen zu verstehen. Erkl\"are die Ergebnisse.
|
||||
\begin{parts}
|
||||
\part \verb+x < 5+
|
||||
\part \verb+x( x < 5) )+
|
||||
@@ -99,10 +99,10 @@ entsprechen.
|
||||
0 und 100 (\verb+randi+). Ersetze die Werte der Elemente, die in
|
||||
folgende Klassen fallen: \verb+x < 33+ mit 0,
|
||||
\verb+x >= 33 und x < 66+ mit 1 und alle \verb+x >= 66+ auf 2.
|
||||
\part Ermittle die Anzahl Elemente fuer jede Klasse mithilfe eines
|
||||
\part Ermittle die Anzahl Elemente f\"ur jede Klasse mithilfe eines
|
||||
Booleschen Ausdrucks (\verb+sum+ kann eingesetzt werden um die
|
||||
Anzahl Treffer zu ermitteln).
|
||||
\end{parts}
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
||||
\end{document}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot}
|
||||
\header{{\bfseries\large \"Ubung 4}}{{\bfseries\large Kontrollstrukturen}}{{\bfseries\large 13. Oktober, 2015}}
|
||||
\header{{\bfseries\large \"Ubung 4}}{{\bfseries\large Kontrollstrukturen}}{{\bfseries\large 08. November, 2016}}
|
||||
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||
jan.grewe@uni-tuebingen.de}
|
||||
\runningfooter{}{\thepage}{}
|
||||
@@ -42,8 +42,8 @@ werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
|
||||
im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
|
||||
``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
|
||||
voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
|
||||
``variablen\_datentypen\_\{nachname\}.m'' benannt werden
|
||||
(z.B. variablen\_datentypen\_mueller.m).
|
||||
``control\_flow\_\{nachname\}.m'' benannt werden
|
||||
(z.B. control\_flow\_mueller.m).
|
||||
|
||||
\begin{questions}
|
||||
\question Implementiere \code{for} Schleifen bei denen die Laufvariable:
|
||||
|
||||
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)
|
||||
7
programming/exercises/myfactorial.m
Normal file
7
programming/exercises/myfactorial.m
Normal file
@@ -0,0 +1,7 @@
|
||||
function x = mufactorial(n)
|
||||
% return the factorial of n
|
||||
x = 1;
|
||||
for i = 1:n
|
||||
x = x * i;
|
||||
end
|
||||
end
|
||||
19
programming/exercises/plotsine.m
Normal file
19
programming/exercises/plotsine.m
Normal file
@@ -0,0 +1,19 @@
|
||||
function plotsine(freq, ampl, duration)
|
||||
% plot a sine wave
|
||||
% freq: frequency of the sinewave in Hertz
|
||||
% ampl: amplitude of the sinewave
|
||||
% duration: duration of the sinewave in seconds
|
||||
step = 0.01/freq;
|
||||
time = 0:step:duration;
|
||||
sine = ampl*sin(2*pi*freq*time);
|
||||
if duration <= 1.0
|
||||
plot(1000.0*time, sine);
|
||||
xlabel('Time [ms]');
|
||||
else
|
||||
plot(time, sine);
|
||||
xlabel('Time [s]');
|
||||
end
|
||||
ylim([-1.2*ampl 1.2*ampl]);
|
||||
ylabel('Sinewave');
|
||||
title(sprintf('Frequency %g Hz', freq));
|
||||
end
|
||||
9
programming/exercises/plotsine50.m
Normal file
9
programming/exercises/plotsine50.m
Normal file
@@ -0,0 +1,9 @@
|
||||
function plotsine50()
|
||||
% plot a sine wave of 50Hz
|
||||
time = 0:0.0001:0.2;
|
||||
sine = sin(2*pi*50.0*time);
|
||||
plot(1000.0*time, sine);
|
||||
xlabel('Time [ms]');
|
||||
ylim([-1.2 1.2]);
|
||||
ylabel('Sinewave');
|
||||
end
|
||||
1
programming/exercises/plotsinea.m
Normal file
1
programming/exercises/plotsinea.m
Normal file
@@ -0,0 +1 @@
|
||||
plotsine50()
|
||||
1
programming/exercises/plotsineb.m
Normal file
1
programming/exercises/plotsineb.m
Normal file
@@ -0,0 +1 @@
|
||||
plotsine(5.0, 2.0, 1.5)
|
||||
14
programming/exercises/plotsinec.m
Normal file
14
programming/exercises/plotsinec.m
Normal file
@@ -0,0 +1,14 @@
|
||||
freq = 5.0;
|
||||
ampl = 2.0;
|
||||
[time, sine] = sinewave(freq, ampl, 1.5);
|
||||
|
||||
if duration <= 1.0
|
||||
plot(1000.0*time, sine);
|
||||
xlabel('Time [ms]');
|
||||
else
|
||||
plot(time, sine);
|
||||
xlabel('Time [s]');
|
||||
end
|
||||
ylim([-1.2*ampl 1.2*ampl]);
|
||||
ylabel('Sinewave');
|
||||
title(sprintf('Frequency %g Hz', freq));
|
||||
4
programming/exercises/plotsined.m
Normal file
4
programming/exercises/plotsined.m
Normal file
@@ -0,0 +1,4 @@
|
||||
freq = 5.0;
|
||||
ampl = 2.0;
|
||||
[time, sine] = sinewave(freq, ampl, 1.5);
|
||||
plotsinewave(time, sine);
|
||||
13
programming/exercises/plotsinewave.m
Normal file
13
programming/exercises/plotsinewave.m
Normal file
@@ -0,0 +1,13 @@
|
||||
function plotsinewave(time, sine)
|
||||
% plot precomputed sinewave
|
||||
% time: vector with timepoints
|
||||
% sine: corresponding vector with sinewave
|
||||
if time(end)-time(1) <= 1.0
|
||||
plot(1000.0*time, sine);
|
||||
xlabel('Time [ms]');
|
||||
else
|
||||
plot(time, sine);
|
||||
xlabel('Time [s]');
|
||||
end
|
||||
ylim([1.2*min(sine) 1.2*max(sine)]);
|
||||
ylabel('Sinewave');
|
||||
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
|
||||
13
programming/exercises/randomwalk.m
Normal file
13
programming/exercises/randomwalk.m
Normal file
@@ -0,0 +1,13 @@
|
||||
function [time, position] = randomwalk(numbersteps)
|
||||
% 1-D random walk for numbersteps time steps
|
||||
time = 1:numbersteps;
|
||||
position = zeros(numbersteps, 1);
|
||||
for i = time(2:end)
|
||||
r = rand(1);
|
||||
if r > 0.5
|
||||
position(i) = position(i-1) + 1;
|
||||
else
|
||||
position(i) = position(i-1) - 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
7
programming/exercises/randomwalkscript.m
Normal file
7
programming/exercises/randomwalkscript.m
Normal file
@@ -0,0 +1,7 @@
|
||||
n = 2000;
|
||||
hold on
|
||||
for k = 1:10
|
||||
[t, x] = randomwalk(n);
|
||||
plot(t, x)
|
||||
end
|
||||
hold off
|
||||
8
programming/exercises/randomwalkscriptb.m
Normal file
8
programming/exercises/randomwalkscriptb.m
Normal file
@@ -0,0 +1,8 @@
|
||||
p = 0.5;
|
||||
thresh = 50.0;
|
||||
hold on
|
||||
for k = 1:10
|
||||
x = randomwalkthresh(p, thresh);
|
||||
plot(x)
|
||||
end
|
||||
hold off
|
||||
20
programming/exercises/randomwalkscriptc.m
Normal file
20
programming/exercises/randomwalkscriptc.m
Normal file
@@ -0,0 +1,20 @@
|
||||
thresh = 50.0;
|
||||
probs = [0.5 0.52 0.55 0.6];
|
||||
maxt = 0;
|
||||
for sp = 1:4
|
||||
p = probs(sp);
|
||||
subplot(2, 2, sp);
|
||||
hold on
|
||||
for k = 1:10
|
||||
x = randomwalkthresh(p, thresh);
|
||||
if maxt < length(x)
|
||||
maxt = length(x);
|
||||
end
|
||||
plot(x)
|
||||
end
|
||||
hold off
|
||||
title(sprintf('p=%g', p))
|
||||
xlabel('Time')
|
||||
xlim([0 maxt])
|
||||
ylabel('Position')
|
||||
end
|
||||
23
programming/exercises/randomwalkscriptd.m
Normal file
23
programming/exercises/randomwalkscriptd.m
Normal file
@@ -0,0 +1,23 @@
|
||||
thresh = 50.0;
|
||||
probs = 0.5:0.01:1.0;
|
||||
reps = 1000;
|
||||
meancount = zeros(length(probs), 1);
|
||||
stdcount = zeros(length(probs), 1);
|
||||
for sp = 1:length(probs)
|
||||
p = probs(sp);
|
||||
positions = zeros(reps, 1);
|
||||
for k = 1:reps
|
||||
x = randomwalkthresh(p, thresh);
|
||||
positions(k) = length(x);
|
||||
end
|
||||
meancount(sp) = mean(positions);
|
||||
stdcount(sp) = std(positions);
|
||||
end
|
||||
semilogy(probs, meancount, 'displayname', 'mean');
|
||||
hold on;
|
||||
semilogy(probs, stdcount, 'displayname', 'std');
|
||||
hold off;
|
||||
xlabel('p');
|
||||
xlim([0.5 1.0])
|
||||
ylabel('number of steps');
|
||||
legend('show');
|
||||
24
programming/exercises/randomwalkthresh.m
Normal file
24
programming/exercises/randomwalkthresh.m
Normal file
@@ -0,0 +1,24 @@
|
||||
function positions = randomwalkthresh(p, thresh)
|
||||
% computes a single random walk
|
||||
%
|
||||
% Arguments:
|
||||
% p: the probability for an upward step
|
||||
% thresh: compute the random walk until abs(pos) is larger than thresh
|
||||
%
|
||||
% Returns:
|
||||
% positions: vector with positions of the random walker
|
||||
|
||||
positions = [0.0];
|
||||
% positions = 0.0;
|
||||
% positions = zeros(1, 1);
|
||||
i = 2;
|
||||
while abs(positions(i-1)) < thresh
|
||||
r = rand(1);
|
||||
if r < p
|
||||
positions(i) = positions(i-1) + 1;
|
||||
else
|
||||
positions(i) = positions(i-1) - 1;
|
||||
end
|
||||
i = i + 1;
|
||||
end
|
||||
end
|
||||
@@ -1,7 +1,9 @@
|
||||
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||
%\documentclass[answers,12pt,a4paper,pdftex]{exam}
|
||||
|
||||
\usepackage[german]{babel}
|
||||
\usepackage{natbib}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[small]{caption}
|
||||
\usepackage{sidecap}
|
||||
@@ -14,9 +16,9 @@
|
||||
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot}
|
||||
\header{{\bfseries\large \"Ubung 4}}{{\bfseries\large Skripte und Funktionen}}{{\bfseries\large 14. Oktober, 2015}}
|
||||
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||
jan.grewe@uni-tuebingen.de}
|
||||
\header{{\bfseries\large \"Ubung 5}}{{\bfseries\large Skripte und Funktionen}}{{\bfseries\large 15. November, 2016}}
|
||||
\firstpagefooter{Prof. Jan Benda}{Phone: 29 74 573}{Email:
|
||||
jan.benda@uni-tuebingen.de}
|
||||
\runningfooter{}{\thepage}{}
|
||||
|
||||
\setlength{\baselineskip}{15pt}
|
||||
@@ -24,6 +26,27 @@
|
||||
\setlength{\parskip}{0.3cm}
|
||||
\renewcommand{\baselinestretch}{1.15}
|
||||
|
||||
|
||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{listings}
|
||||
\lstset{
|
||||
language=Matlab,
|
||||
basicstyle=\ttfamily\footnotesize,
|
||||
numbers=left,
|
||||
numberstyle=\tiny,
|
||||
title=\lstname,
|
||||
showstringspaces=false,
|
||||
commentstyle=\itshape\color{darkgray},
|
||||
breaklines=true,
|
||||
breakautoindent=true,
|
||||
columns=flexible,
|
||||
frame=single,
|
||||
xleftmargin=1em,
|
||||
xrightmargin=1em,
|
||||
aboveskip=10pt
|
||||
}
|
||||
|
||||
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@@ -45,89 +68,152 @@ 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 2: Wie 1 aber die Funktion \"ubernimmt als Argument
|
||||
die Zahl, von der die Fakult\"at berechnet werden soll.
|
||||
\part Version 3: Wie 2 aber mit R\"uckgabe des berechneten Wertes.
|
||||
\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 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 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}
|
||||
\end{solution}
|
||||
|
||||
\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)$):
|
||||
\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 Gib sowohl den Sinus als auch die Zeitachse zur\"uck.
|
||||
\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 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 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}
|
||||
\end{solution}
|
||||
\end{parts}
|
||||
|
||||
\question Schreibe eine Funktion, die bin\"are Datens\"atze
|
||||
('signal.bin' und 'signal2.bin' vom Montag) liest und die Daten als
|
||||
Vektor zur\"uckgibt. Welche Argumente muss die Funktion
|
||||
\"ubernehmen?
|
||||
%\question Schreibe eine Funktion, die bin\"are Datens\"atze
|
||||
%('signal.bin' und 'signal2.bin' vom Montag) liest und die Daten als
|
||||
%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 Implementiere die L\"osung.
|
||||
\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 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 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{randomwalkscriptb.m}
|
||||
\end{solution}
|
||||
|
||||
\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}
|
||||
|
||||
\part Wie entwickelt sich die mittlere ben\"otigte Schrittanzahl
|
||||
in Abh\"angigkeit der Wahrscheinlichkeit? Stelle die Mittelwerte
|
||||
und die Standardabweichungen graphisch dar.
|
||||
\begin{solution}
|
||||
\lstinputlisting{randomwalkscriptd.m}
|
||||
\end{solution}
|
||||
\end{parts}
|
||||
|
||||
\question Modellierung des exponentiellen Wachstums einer isolierten
|
||||
Population. Das exponentielle Wachstum einer isolierten Population
|
||||
wird \"uber folgende Differentialgleichung beschrieben:
|
||||
\begin{equation}
|
||||
\frac{dN}{dt} = N \cdot r,
|
||||
\end{equation}
|
||||
mit $N$ der Populationsgr\"o{\ss}e und $r$ der Wachstumsrate.
|
||||
\begin{parts}
|
||||
\part L\"ose die Gleichung numerisch mit dem Euler Verfahren.
|
||||
\part Implementiere eine Funktion, die die Populationsgr\"o{\ss}e
|
||||
und die Zeit zur\"uckgibt.
|
||||
\part Plotte die Populationsgr\"o{\ss}e als Funktion der Zeit.
|
||||
\end{parts}
|
||||
%\question Modellierung des exponentiellen Wachstums einer isolierten
|
||||
%Population. Das exponentielle Wachstum einer isolierten Population
|
||||
%wird \"uber folgende Differentialgleichung beschrieben:
|
||||
%\begin{equation}
|
||||
% \frac{dN}{dt} = N \cdot r,
|
||||
%\end{equation}
|
||||
%mit $N$ der Populationsgr\"o{\ss}e und $r$ der Wachstumsrate.
|
||||
%\begin{parts}
|
||||
% \part L\"ose die Gleichung numerisch mit dem Euler Verfahren.
|
||||
% \part Implementiere eine Funktion, die die Populationsgr\"o{\ss}e
|
||||
% und die Zeit zur\"uckgibt.
|
||||
% \part Plotte die Populationsgr\"o{\ss}e als Funktion der Zeit.
|
||||
%\end{parts}
|
||||
|
||||
\question Etwas realistischer ist das logistische Wachstum einer
|
||||
isolierten Population, bei der das Wachstum durch eine Kapazit\"at
|
||||
gedeckelt ist. Sie wird mit folgender Differentialgleichung
|
||||
beschrieben:
|
||||
\begin{equation}
|
||||
\frac{dN}{dt} = N \cdot r \cdot \left( 1 - \frac{N}{K} \right)
|
||||
\end{equation}
|
||||
mit $N$ der Population, der Wachstumsrate $r$ und $K$ der ``tragenden''
|
||||
Kapazit\"at.
|
||||
\begin{parts}
|
||||
\part Implementiere die L\"osung des logistischen Wachstums in
|
||||
einer Funktion. Benutze das Euler Verfahren. Die Funktion soll die
|
||||
Parameter $r$, $K$ sowie den Startwert von $N$ als Argumente
|
||||
\"ubernehmen.
|
||||
\part Die Funktion soll die Populationsgr\"o{\ss}e und die Zeit
|
||||
zur\"uckgeben.
|
||||
\part Simuliere das Wachstum mit einer Anzahl unterschiedlicher
|
||||
Startwerte f\"ur $N$.
|
||||
\part Stelle die Ergebnisse in einem Plot graphisch dar.
|
||||
\part Plotte das Wachstum $dN/dt$ als Funktion der
|
||||
Populationsgr\"o{\ss}e $N$.
|
||||
\end{parts}
|
||||
|
||||
%\question Etwas realistischer ist das logistische Wachstum einer
|
||||
%isolierten Population, bei der das Wachstum durch eine Kapazit\"at
|
||||
%gedeckelt ist. Sie wird mit folgender Differentialgleichung
|
||||
%beschrieben:
|
||||
%\begin{equation}
|
||||
% \frac{dN}{dt} = N \cdot r \cdot \left( 1 - \frac{N}{K} \right)
|
||||
%\end{equation}
|
||||
%mit $N$ der Population, der Wachstumsrate $r$ und $K$ der ``tragenden''
|
||||
%Kapazit\"at.
|
||||
%\begin{parts}
|
||||
% \part Implementiere die L\"osung des logistischen Wachstums in
|
||||
% einer Funktion. Benutze das Euler Verfahren. Die Funktion soll die
|
||||
% Parameter $r$, $K$ sowie den Startwert von $N$ als Argumente
|
||||
% \"ubernehmen.
|
||||
% \part Die Funktion soll die Populationsgr\"o{\ss}e und die Zeit
|
||||
% zur\"uckgeben.
|
||||
% \part Simuliere das Wachstum mit einer Anzahl unterschiedlicher
|
||||
% Startwerte f\"ur $N$.
|
||||
% \part Stelle die Ergebnisse in einem Plot graphisch dar.
|
||||
% \part Plotte das Wachstum $dN/dt$ als Funktion der
|
||||
% Populationsgr\"o{\ss}e $N$.
|
||||
%\end{parts}
|
||||
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
||||
\end{document}
|
||||
|
||||
12
programming/exercises/sinewave.m
Normal file
12
programming/exercises/sinewave.m
Normal file
@@ -0,0 +1,12 @@
|
||||
function [time, sine] = sinewave(freq, ampl, duration)
|
||||
% compute sine wave with time axis
|
||||
% freq: frequency of the sinewave in Hertz
|
||||
% ampl: amplitude of the sinewave
|
||||
% duration: duration of the sinewave in seconds
|
||||
% returns:
|
||||
% time: vector of time points
|
||||
% sine: corresponding vector with the sine wave
|
||||
step = 0.01/freq;
|
||||
time = 0:step:duration;
|
||||
sine = ampl*sin(2*pi*freq*time);
|
||||
end
|
||||
Reference in New Issue
Block a user