229 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			229 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| \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}
 | |
| \usepackage{pslatex}
 | |
| \usepackage{amsmath}
 | |
| \usepackage{amssymb}
 | |
| \setlength{\marginparwidth}{2cm}
 | |
| \usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
 | |
| 
 | |
| %%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | |
| \usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
 | |
| \pagestyle{headandfoot}
 | |
| \header{{\bfseries\large Exercise 6}}{{\bfseries\large Scripts and functions}}{{\bfseries\large 06. November, 2018}}
 | |
| \firstpagefooter{Prof. Jan Benda}{Phone: 29 74 573}{Email:
 | |
|   jan.benda@uni-tuebingen.de}
 | |
| \runningfooter{}{\thepage}{}
 | |
| 
 | |
| \setlength{\baselineskip}{15pt}
 | |
| \setlength{\parindent}{0.0cm}
 | |
| \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}}
 | |
| 
 | |
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 | |
| \begin{document}
 | |
| 
 | |
| \vspace*{-6.5ex}
 | |
| \begin{center}
 | |
|   \textbf{\Large Introduction to Scientific Computing}\\[1ex]
 | |
|          {\large Jan Grewe, Jan Benda}\\[-3ex]
 | |
|          Neuroethology \hfill --- \hfill Institute for Neurobiology \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
 | |
| \end{center}
 | |
| 
 | |
| The exercises are meant for self-monitoring and revision of the
 | |
| lecture. You should try to solve them on your own. In contrast
 | |
| to previous exercises, the solutions can not be saved in a single file
 | |
| but each question needs an individual file. Combine the files into a
 | |
| single zip archive and submit it via ILIAS. Name the archive according
 | |
| to the pattern: ``scripts\_functions\_\{surname\}.zip''.
 | |
| 
 | |
| \begin{questions}
 | |
| 
 | |
|   \question Calculate the factorial of a given number $n$.
 | |
|   \begin{parts}
 | |
|     \part{}
 | |
|     Version 1: Write a script that calculates the factorial of 5 and
 | |
|     prints out the result.
 | |
|     \begin{solution}
 | |
|       \lstinputlisting{factorialscripta.m}
 | |
|     \end{solution}
 | |
| 
 | |
|     \part{}
 | |
|     Version 2: like version 1, but as a function that takes $n$ as
 | |
|     input argument.
 | |
|     \begin{solution}
 | |
|       \lstinputlisting{printfactorial.m}
 | |
|       \lstinputlisting{factorialscriptb.m}
 | |
|     \end{solution}
 | |
| 
 | |
|     \part{}
 | |
|     Version 3: like version 2, but the calculated result should not be
 | |
|     printed on the command line but returned by the function. Write a
 | |
|     script that calls the function and prints out the result.
 | |
|     \begin{solution}
 | |
|       \lstinputlisting{myfactorial.m}
 | |
|       \lstinputlisting{factorialscriptc.m}
 | |
|     \end{solution}
 | |
|   \end{parts}
 | |
| 
 | |
|   \question Graphical display of a sinewave.
 | |
|   \begin{parts}
 | |
|     \part{}
 | |
|     Implement a function that plots a sine with the amplitude 1 and
 | |
|     the frequency $f=50$\,Hz $\left(\sin(2\pi \cdot f \cdot t)\right)$. Call the
 | |
|     function in a script.
 | |
|     \begin{solution}
 | |
|       \lstinputlisting{plotsine50.m}
 | |
|       \lstinputlisting{plotsinea.m}
 | |
|     \end{solution}
 | |
| 
 | |
|     \part{}
 | |
|     Improve the function that it takes the duration of the time axis,
 | |
|     the amplitude, and the frequency as input arguments. The
 | |
|     calculation should use a temporal stepsize that is 0.01 of the
 | |
|     frequency.
 | |
|     \begin{solution}
 | |
|       \lstinputlisting{plotsine.m} \lstinputlisting{plotsineb.m}
 | |
|     \end{solution}
 | |
| 
 | |
|     \part{}
 | |
|     Write a script that calls the function and controls the
 | |
|     plotting. Change the function in a way that it returns a proper
 | |
|     time-axis and the calculated sinwave.
 | |
|     \begin{solution}
 | |
|       \lstinputlisting{sinewave.m}
 | |
|       \lstinputlisting{plotsinec.m}
 | |
|     \end{solution}
 | |
| 
 | |
|     \part{}
 | |
|     Write a second function that does the plotting. It accepts the
 | |
|     time and the sine as arguments. Make sure, that the plot is
 | |
|     properly labeled. Write a small script that uses both funtions to
 | |
|     plot a sine of $5$\,Hz frequency and an amplitude of 2 for a
 | |
|     duration of 1.5\,s.
 | |
|     \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 Random Walk.  In a 1-D random walk an \emph{agent} walks
 | |
|   randomly either in the one ($+1$) or the other ($-1$)
 | |
|   direction. With each simulation step one direction is chosen and the
 | |
|   position is updated accordingly. \textbf{There are some differences
 | |
|     to the solution discussed in the lecture!}
 | |
| 
 | |
|   \begin{parts}
 | |
|     \part{}
 | |
|     Read the exercise completely before starting the implementation
 | |
|     and then come up with a proper program layout of scripts and
 | |
|     functions. What would be a suitable function to solve the task? Which
 | |
|     arguments should it take? Which results should it return?
 | |
|     \begin{solution}
 | |
|       One function that computes one realisation of a random walk.
 | |
|       Scripts for plotting and analysis.
 | |
|       \lstinputlisting{randomwalkthresh.m}
 | |
|     \end{solution}
 | |
| 
 | |
|     \part{}
 | |
|     Run the simulation 10 times and plot the time-course of the
 | |
|     positions of the \emph{agents} into the same plot. The probability
 | |
|     of the two directions should be the same. Each \emph{agent} starts
 | |
|     at position $0$ and the simulation should run until the position is
 | |
|     greater than $50$ or less than $-50$.
 | |
|     \begin{solution}
 | |
|       \lstinputlisting{randomwalkscriptb.m}
 | |
|     \end{solution}
 | |
| 
 | |
|     \part{}
 | |
|     Now we want to know how the probability of $p_{+1}$ (the
 | |
|     probability to walk into the $+1$ direction) impacts the random
 | |
|     walk. Vary $p_{+1}$ in the range $0.5 \le p_{+1} < 0.8$. Do 10
 | |
|     random walks for the four probabilities (apply the same thresholds for
 | |
|     stopping the simulations as before).
 | |
|     \begin{solution}
 | |
|       \lstinputlisting{randomwalkscriptc.m}
 | |
|     \end{solution}
 | |
| 
 | |
|     \part{}
 | |
|     How does $p_{+1}$ affect the number of simulation steps? Plot the
 | |
|     averages and standard deviations as a function of $p_{+1}$.
 | |
|     \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 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}
 |