201 lines
7.0 KiB
TeX
201 lines
7.0 KiB
TeX
\documentclass[12pt,a4paper,pdftex]{exam}
|
|
|
|
\usepackage[german]{babel}
|
|
\usepackage{natbib}
|
|
\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 2}}{{\bfseries\large Vectors}}{{\bfseries\large 17. Oktober, 2018}}
|
|
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
|
jan.grewe@uni-tuebingen.de}
|
|
\runningfooter{}{\thepage}{}
|
|
|
|
\setlength{\baselineskip}{15pt}
|
|
\setlength{\parindent}{0.0cm}
|
|
\setlength{\parskip}{0.3cm}
|
|
\renewcommand{\baselinestretch}{1.15}
|
|
|
|
\newcommand{\code}[1]{\texttt{#1}}
|
|
\renewcommand{\solutiontitle}{\noindent\textbf{Solutions:}\par\noindent}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\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. Your solution
|
|
should be submitted as a single script (m-file) in the Ilias
|
|
system. Each task should be solved in its own ``cell''. Each cell must
|
|
be executable on its own. The file should be named according to the
|
|
following pattern: ``variables\_datatypes\_\{lastname\}.m''
|
|
(e.g. vectors\_mueller.m).
|
|
|
|
\begin{questions}
|
|
\question Create vectors with the following contents:
|
|
\begin{parts}
|
|
\part Integer numbers ranging from 1 to 10.
|
|
\begin{solution}
|
|
\code{a = 1:10;}
|
|
\end{solution}
|
|
\part Integer numbers in the range 0 to 20 in steps of 2.
|
|
\begin{solution}
|
|
\code{a = 0:2:20;}
|
|
\end{solution}
|
|
\part \textbf{Descending} values ranging from 100 to 0.
|
|
\begin{solution}
|
|
\code{a = 100:-1:0;}
|
|
\end{solution}
|
|
\part In 10 steps from 0 to 1.
|
|
\begin{solution}
|
|
\code{a = 0:0.1:1;}
|
|
\end{solution}
|
|
\part In 11 steps from 0 to 1.
|
|
\begin{solution}
|
|
\code{a = 0:1/11:1;}
|
|
\end{solution}
|
|
\part In 50 steps from 0 to $2\pi$ ($\pi$ is known in Matlab as the constant
|
|
\code{pi}).
|
|
\begin{solution}
|
|
\code{a = 0:2*pi/50:2*pi;}
|
|
\end{solution}
|
|
\end{parts}
|
|
|
|
\question Calculating with vectors:
|
|
\begin{parts}
|
|
\part Create a vector \code{x = [3 2 6 8];}
|
|
\part What is the size of this vector? Use the functions \code{size} and \code{length}. What is the difference between them?
|
|
\begin{solution}
|
|
\code{x = [3 2 6 8];
|
|
\\ disp(length(x));\\ 4\\ disp(size(x))\\ 1 4}
|
|
\end{solution}
|
|
\part What changes in \code{size} and \code{length} when you transpose the vector.
|
|
\begin{solution}
|
|
The length does not change, the size is inverted.
|
|
\end{solution}
|
|
\part Add 5 to each element of \verb+x+.
|
|
\begin{solution}
|
|
\code{disp(x + 5)}
|
|
\end{solution}
|
|
\part Multiply each element of \code{x} by 2;
|
|
\begin{solution}
|
|
\code{disp(x * 2)}
|
|
\end{solution}
|
|
\part Create a second vector (\verb+y = [4 1 3 5];+).
|
|
Make sure that \code{x} is in its original form.
|
|
\part Add both vectors \code{x + y}.
|
|
\begin{solution}
|
|
\code{y = [4 1 3 5]; \\disp(x + y)\\7 3 9 13}
|
|
\end{solution}
|
|
\part Subtract \code{y} from \code{x}.
|
|
\begin{solution}
|
|
\code{disp(x - y)\\-1 1 3 3}
|
|
\end{solution}
|
|
\part Multiply both vectors \code{x * y}.
|
|
\begin{solution}
|
|
\code{disp(x * y)\\Error using *. Inner matrix dimension must agree.}
|
|
\end{solution}
|
|
\part Explain the error message
|
|
\begin{solution}
|
|
* operator is the matrix multiplication. The inner dimensions must agree.\linebreak
|
|
\code{disp(size(x))\\1 4 \\disp(size(y)) \\ 1 4}\\
|
|
(m,n)*(n,o) w\"are ok.
|
|
\end{solution}
|
|
\part What needs to be done to make \code{mtimes} and
|
|
\code{*} working?
|
|
\begin{solution}
|
|
y needs to be transposed: \code{x * y'}
|
|
\end{solution}
|
|
\part Multiply element-wise (\code{x .* y}) and assign the result to a new variable.
|
|
\begin{solution}
|
|
\code{z = x .* y;}
|
|
\end{solution}
|
|
\end{parts}
|
|
|
|
\question Creating vectors using helper functions:
|
|
\begin{parts}
|
|
\part Create a vector of the length 100 using the function
|
|
\code{ones} (see help). What is its purpose?
|
|
\begin{solution}
|
|
\code{ones(100, 1)} creates a vector of the given size and fills it with 1.
|
|
\end{solution}
|
|
\part Create a vector of the length 100 using the function
|
|
\code{zeros} (see help). What is its purpose?
|
|
\begin{solution}
|
|
\code{zeros(100, 1)} creates a vector of the given size and fills it with 0.
|
|
\end{solution}
|
|
\part Create a vector with 100 elements. All elements should have the value
|
|
4.5.
|
|
\begin{solution}
|
|
\code{ones(100, 1) * 4.5}
|
|
\end{solution}
|
|
\part Create a 100 element vector filled with random numbers (\code{rand},
|
|
see help).
|
|
\begin{solution}
|
|
\code{x = rand(100, 1)}
|
|
\end{solution}
|
|
\part Use the function \code{linspace} to create a 100 element vector with values between 0 and 1.
|
|
\begin{solution}
|
|
\code{x = linspace(0, 1, 100)}
|
|
\end{solution}
|
|
\end{parts}
|
|
|
|
\question Indexing in vectors:
|
|
\begin{parts}
|
|
\part Create a 100 element length vector with values ranging from 0 to 99.
|
|
\begin{solution}
|
|
\code{x = linspace(0, 99, 100);}
|
|
\end{solution}
|
|
\part Print the first, last, fifth, 24th and the second-to-last value.
|
|
\begin{solution}
|
|
\code{disp(x(1))\\ disp(x(end))\\ disp(x(5))\\ disp(x(24))\\ disp(x(end-1))}
|
|
\end{solution}
|
|
\part Print the first 10 values.
|
|
\begin{solution}
|
|
\code{x(1:10)}
|
|
\end{solution}
|
|
\part Print the last 10 values.
|
|
\begin{solution}
|
|
\code{disp(x(end-9:end))}
|
|
\end{solution}
|
|
\part Try to print the value at the zeroth position.
|
|
\begin{solution}
|
|
\code{x(0)\\ Subscript indices must either be real positive integers or logicals.}
|
|
\end{solution}
|
|
\part Try to access the value at the 110th position.
|
|
\begin{solution}
|
|
\code{x(110)\\ Index exceeds matrix dimensions.}
|
|
\end{solution}
|
|
\part Access the values at the positions 3, 15, and 42 with a single command.
|
|
\begin{solution}
|
|
\code{disp(x([3 15 42]))}
|
|
\end{solution}
|
|
\part Access 10 randomly selected values (used \verb+randi+ to create random indices).
|
|
\begin{solution}
|
|
\code{x(randi(100, 10, 1))}
|
|
\end{solution}
|
|
\end{parts}
|
|
|
|
\question Store some text in a variable. The text should consist of at least two words (e.g. \code{x = 'some
|
|
text'}). Use indexing to print out the words individually.
|
|
\begin{solution}
|
|
\code{x = 'some text'; \\ disp(x(1:4))\\disp(x(6:end))}
|
|
\end{solution}
|
|
|
|
\end{questions}
|
|
|
|
\end{document}
|