From d30adfbc26b358b63d0c3c6f48b018dbbc126478 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Mon, 14 Oct 2019 09:46:07 +0200 Subject: [PATCH] [likelyhood] store german versionm, switch off solutions in header further minors --- header.tex | 2 +- likelihood/lecture/likelihood_de.tex | 309 ++++++++++++++++++++++ programming/exercises/matrices.tex | 2 +- programming/exercises/variables_types.tex | 2 +- programming/exercises/vectors.tex | 2 +- 5 files changed, 313 insertions(+), 4 deletions(-) create mode 100644 likelihood/lecture/likelihood_de.tex diff --git a/header.tex b/header.tex index 567b1fc..7d136b6 100644 --- a/header.tex +++ b/header.tex @@ -294,7 +294,7 @@ chapterlistsgaps=on, ]{exercisef} \newboolean{showexercisesolutions} -\setboolean{showexercisesolutions}{true} +\setboolean{showexercisesolutions}{false} \newenvironment{exercise}[2]% { \newcommand{\exercisesource}{#1}% \newcommand{\exercisefile}{\protect\StrSubstitute{#1}{_}{\_}}% diff --git a/likelihood/lecture/likelihood_de.tex b/likelihood/lecture/likelihood_de.tex new file mode 100644 index 0000000..02c4f5e --- /dev/null +++ b/likelihood/lecture/likelihood_de.tex @@ -0,0 +1,309 @@ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{\tr{Maximum likelihood estimation}{Maximum-Likelihood-Sch\"atzer}} +\label{maximumlikelihoodchapter} + +\selectlanguage{ngerman} + +In vielen Situationen wollen wir einen oder mehrere Parameter $\theta$ +einer Wahrscheinlichkeitsverteilung sch\"atzen, so dass die Verteilung +die Daten $x_1, x_2, \ldots x_n$ am besten beschreibt. +\determ{Maximum-Likelihood-Sch\"atzer} (\enterm{maximum likelihood + estimator}, \determ[mle|see{Maximum-Likelihood-Sch\"atzer}]{mle}) +w\"ahlen die Parameter so, dass die Wahrscheinlichkeit, dass die Daten +aus der Verteilung stammen, am gr\"o{\ss}ten ist. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Maximum Likelihood} +Sei $p(x|\theta)$ (lies ``Wahrscheinlichkeit(sdichte) von $x$ gegeben +$\theta$'') die Wahrscheinlichkeits(dichte)verteilung von $x$ mit dem +Parameter(n) $\theta$. Das k\"onnte die Normalverteilung +\begin{equation} + \label{normpdfmean} + p(x|\theta) = \frac{1}{\sqrt{2\pi \sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} +\end{equation} +sein mit dem Mittelwert $\mu$ und der Standardabweichung $\sigma$ als +den Parametern $\theta$. + +Wenn nun den $n$ unabh\"angigen Beobachtungen $x_1, x_2, \ldots x_n$ +die gleiche Wahrscheinlichkeitsverteilung $p(x|\theta)$ zugrundeliegt +(\enterm{i.i.d.} independent and identically distributed), dann ist die +Verbundwahrscheinlichkeit $p(x_1,x_2, \ldots x_n|\theta)$ des +Auftretens der Werte $x_1, x_2, \ldots x_n$, gegeben ein bestimmtes +$\theta$, +\begin{equation} + p(x_1,x_2, \ldots x_n|\theta) = p(x_1|\theta) \cdot p(x_2|\theta) + \ldots p(x_n|\theta) = \prod_{i=1}^n p(x_i|\theta) \; . +\end{equation} +Andersherum gesehen ist das die \determ{Likelihood} +(\enterm{likelihood}) den Parameter $\theta$ zu haben, gegeben die +Me{\ss}werte $x_1, x_2, \ldots x_n$, +\begin{equation} + {\cal L}(\theta|x_1,x_2, \ldots x_n) = p(x_1,x_2, \ldots x_n|\theta) \; . +\end{equation} +Beachte, dass die Likelihood ${\cal L}$ keine Wahrscheinlichkeit im engeren Sinne ist, da sie sich nicht zu Eins aufintegriert ($\int {\cal L}(\theta|x_1,x_2, \ldots x_n) \, d\theta \ne 1$). + +Wir sind nun an dem Wert des Parameters $\theta_{mle}$ interessiert, der die +Likelihood maximiert (Maximum-Likelihood Estimate ``mle''): +\begin{equation} + \theta_{mle} = \text{argmax}_{\theta} {\cal L}(\theta|x_1,x_2, \ldots x_n) +\end{equation} +$\text{argmax}_xf(x)$ bezeichnet den Wert des Arguments $x$ der Funktion $f(x)$, bei +dem $f(x)$ ihr globales Maximum annimmt. Wir suchen also den Wert von $\theta$ +bei dem die Likelihood ${\cal L}(\theta)$ ihr Maximum hat. + +An der Stelle eines Maximums einer Funktion \"andert sich nichts, wenn +die Funktionswerte mit einer streng monoton steigenden Funktion +transformiert werden. Aus numerischen und gleich ersichtlichen mathematischen +Gr\"unden wird meistens das Maximum der logarithmierten Likelihood +(\determ{log-Likelihood}, \enterm{log-likelihood}) gesucht: +\begin{eqnarray} + \theta_{mle} & = & \text{argmax}_{\theta}\; {\cal L}(\theta|x_1,x_2, \ldots x_n) \nonumber \\ + & = & \text{argmax}_{\theta}\; \log {\cal L}(\theta|x_1,x_2, \ldots x_n) \nonumber \\ + & = & \text{argmax}_{\theta}\; \log \prod_{i=1}^n p(x_i|\theta) \nonumber \\ + & = & \text{argmax}_{\theta}\; \sum_{i=1}^n \log p(x_i|\theta) \label{loglikelihood} +\end{eqnarray} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Beispiel: Das arithmetische Mittel} + +Wenn die Me{\ss}daten $x_1, x_2, \ldots x_n$ der Normalverteilung +\eqnref{normpdfmean} entstammen, und wir den Mittelwert $\mu=\theta$ als +einzigen Parameter der Verteilung betrachten, welcher Wert von +$\theta$ maximiert dessen Likelihood? + +\begin{figure}[t] + \includegraphics[width=1\textwidth]{mlemean} + \titlecaption{\label{mlemeanfig} Maximum Likelihood Sch\"atzung des + Mittelwerts.}{Oben: Die Daten zusammen mit drei m\"oglichen + Normalverteilungen mit unterschiedlichen Mittelwerten (Pfeile) aus + denen die Daten stammen k\"onnten. Unten links: Die Likelihood + in Abh\"angigkeit des Mittelwerts als Parameter der + Normalverteilungen. Unten rechts: die entsprechende + Log-Likelihood. An der Position des Maximums bei $\theta=2$ + \"andert sich nichts (Pfeil).} +\end{figure} + +Die Log-Likelihood \eqnref{loglikelihood} ist +\begin{eqnarray*} + \log {\cal L}(\theta|x_1,x_2, \ldots x_n) + & = & \sum_{i=1}^n \log \frac{1}{\sqrt{2\pi \sigma^2}}e^{-\frac{(x_i-\theta)^2}{2\sigma^2}} \\ + & = & \sum_{i=1}^n - \log \sqrt{2\pi \sigma^2} -\frac{(x_i-\theta)^2}{2\sigma^2} \; . +\end{eqnarray*} +Der Logarithmus hat die sch\"one Eigenschaft, die Exponentialfunktion +der Normalverteilung auszul\"oschen, da der Logarithmus die +Umkehrfunktion der Exponentialfunktion ist ($\log(e^x)=x$). + +Zur Bestimmung des Maximums der Log-Likelihood berechnen wir deren Ableitung +nach dem Parameter $\theta$ und setzen diese gleich Null: +\begin{eqnarray*} + \frac{\text{d}}{\text{d}\theta} \log {\cal L}(\theta|x_1,x_2, \ldots x_n) & = & \sum_{i=1}^n - \frac{2(x_i-\theta)}{2\sigma^2} \;\; = \;\; 0 \\ + \Leftrightarrow \quad \sum_{i=1}^n x_i - \sum_{i=1}^n \theta & = & 0 \\ + \Leftrightarrow \quad n \theta & = & \sum_{i=1}^n x_i \\ + \Leftrightarrow \quad \theta & = & \frac{1}{n} \sum_{i=1}^n x_i \;\; = \;\; \bar x +\end{eqnarray*} +Der Maximum-Likelihood-Sch\"atzer ist das arithmetische Mittel $\bar +x$ der Daten. D.h. das arithmetische Mittel maximiert die +Wahrscheinlichkeit, dass die Daten aus einer Normalverteilung mit +diesem Mittelwert gezogen worden sind (\figref{mlemeanfig}). + +\begin{exercise}{mlemean.m}{mlemean.out} + Ziehe $n=50$ normalverteilte Zufallsvariablen mit einem Mittelwert $\ne 0$ + und einer Standardabweichung $\ne 1$. + + Plotte die Likelihood (aus dem Produkt der Wahrscheinlichkeiten) und + die Log-Likelihood (aus der Summe der logarithmierten + Wahrscheinlichkeiten) f\"ur den Mittelwert als Parameter. Vergleiche + die Position der Maxima mit dem aus den Daten berechneten + Mittelwert. + \pagebreak[4] +\end{exercise} + + +\pagebreak[4] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Kurvenfit als Maximum-Likelihood Sch\"atzung} +Beim \determ{Kurvenfit} soll eine Funktion $f(x;\theta)$ mit den Parametern +$\theta$ an die Datenpaare $(x_i|y_i)$ durch Anpassung der Parameter +$\theta$ gefittet werden. Wenn wir annehmen, dass die $y_i$ um die +entsprechenden Funktionswerte $f(x_i;\theta)$ mit einer +Standardabweichung $\sigma_i$ normalverteilt streuen, dann lautet die +Log-Likelihood +\begin{eqnarray*} + \log {\cal L}(\theta|(x_1,y_1,\sigma_1), \ldots, (x_n,y_n,\sigma_n)) + & = & \sum_{i=1}^n \log \frac{1}{\sqrt{2\pi \sigma_i^2}}e^{-\frac{(y_i-f(x_i;\theta))^2}{2\sigma_i^2}} \\ + & = & \sum_{i=1}^n - \log \sqrt{2\pi \sigma_i^2} -\frac{(y_i-f(x_i;\theta))^2}{2\sigma_i^2} \\ +\end{eqnarray*} +Der einzige Unterschied zum vorherigen Beispiel ist, dass die +Mittelwerte der Normalverteilungen nun durch die Funktionswerte +gegeben sind. + +Der Parameter $\theta$ soll so gew\"ahlt werden, dass die +Log-Likelihood maximal wird. Der erste Term der Summe ist +unabh\"angig von $\theta$ und kann deshalb bei der Suche nach dem +Maximum weggelassen werden: +\begin{eqnarray*} + & = & - \frac{1}{2} \sum_{i=1}^n \left( \frac{y_i-f(x_i;\theta)}{\sigma_i} \right)^2 +\end{eqnarray*} +Anstatt nach dem Maximum zu suchen, k\"onnen wir auch das Vorzeichen der Log-Likelihood +umdrehen und nach dem Minimum suchen. Dabei k\"onnen wir auch den Faktor $1/2$ vor der Summe vernachl\"assigen --- auch das \"andert nichts an der Position des Minimums: +\begin{equation} + \label{chisqmin} + \theta_{mle} = \text{argmin}_{\theta} \; \sum_{i=1}^n \left( \frac{y_i-f(x_i;\theta)}{\sigma_i} \right)^2 \;\; = \;\; \text{argmin}_{\theta} \; \chi^2 +\end{equation} +Die Summe der quadratischen Abst\"ande normiert auf die jeweiligen +Standardabweichungen wird auch mit $\chi^2$ bezeichnet. Der Wert des +Parameters $\theta$, welcher den quadratischen Abstand minimiert, ist +also identisch mit der Maximierung der Wahrscheinlichkeit, dass die +Daten tats\"achlich aus der Funktion stammen k\"onnen. Minimierung des +$\chi^2$ ist also eine Maximum-Likelihood Sch\"atzung. + +An der Herleitung sehen wir aber auch, dass die Minimierung des +quadratischen Abstands nur dann eine Maximum-Likelihood Absch\"atzung +ist, wenn die Daten normalverteilt um die Funktion streuen. Bei +anderen Verteilungen m\"usste man die Log-Likelihood entsprechend +\eqnref{loglikelihood} ausrechnen und maximieren. + +\begin{figure}[t] + \includegraphics[width=1\textwidth]{mlepropline} + \titlecaption{\label{mleproplinefig} Maximum-Likelihood Sch\"atzung der + Steigung einer Ursprungsgeraden.}{} +\end{figure} + + +\subsection{Beispiel: einfache Proportionalit\"at} +Als Funktion nehmen wir die Ursprungsgerade +\[ f(x) = \theta x \] +mit Steigung $\theta$. Die $\chi^2$-Summe lautet damit +\[ \chi^2 = \sum_{i=1}^n \left( \frac{y_i-\theta x_i}{\sigma_i} \right)^2 \; . \] +Zur Bestimmung des Minimums berechnen wir wieder die erste Ableitung nach $\theta$ +und setzen diese gleich Null: +\begin{eqnarray} + \frac{\text{d}}{\text{d}\theta}\chi^2 & = & \frac{\text{d}}{\text{d}\theta} \sum_{i=1}^n \left( \frac{y_i-\theta x_i}{\sigma_i} \right)^2 \nonumber \\ + & = & \sum_{i=1}^n \frac{\text{d}}{\text{d}\theta} \left( \frac{y_i-\theta x_i}{\sigma_i} \right)^2 \nonumber \\ + & = & -2 \sum_{i=1}^n \frac{x_i}{\sigma_i} \left( \frac{y_i-\theta x_i}{\sigma_i} \right) \nonumber \\ + & = & -2 \sum_{i=1}^n \left( \frac{x_iy_i}{\sigma_i^2} - \theta \frac{x_i^2}{\sigma_i^2} \right) \;\; = \;\; 0 \nonumber \\ +\Leftrightarrow \quad \theta \sum_{i=1}^n \frac{x_i^2}{\sigma_i^2} & = & \sum_{i=1}^n \frac{x_iy_i}{\sigma_i^2} \nonumber \\ +\Leftrightarrow \quad \theta & = & \frac{\sum_{i=1}^n \frac{x_iy_i}{\sigma_i^2}}{ \sum_{i=1}^n \frac{x_i^2}{\sigma_i^2}} \label{mleslope} +\end{eqnarray} +Damit haben wir nun einen anlytischen Ausdruck f\"ur die Bestimmung +der Steigung $\theta$ der Regressionsgeraden gewonnen +(\figref{mleproplinefig}). + +Ein Gradientenabstieg ist f\"ur das Fitten der Geradensteigung also +gar nicht n\"otig. Das gilt allgemein f\"ur das Fitten von +Koeffizienten von linear kombinierten Basisfunktionen. Wie z.B. +die Steigung $m$ und der y-Achsenabschnitt $b$ einer Geradengleichung +\[ y = m \cdot x +b \] +oder allgemeiner die Koeffizienten $a_k$ eines Polynoms +\[ y = \sum_{k=0}^N a_k x^k = a_o + a_1x + a_2x^2 + a_3x^4 + \ldots \] +\matlabfun{polyfit()}. + +Parameter, die nichtlinear in einer Funktion enthalten sind, k\"onnen +im Gegensatz dazu nicht analytisch aus den Daten berechnet +werden. z.B. die Rate $\lambda$ eines exponentiellen Zerfalls +\[ y = c \cdot e^{\lambda x} \quad , \quad c, \lambda \in \reZ \; . \] + F\"ur diesen Fall bleibt dann nur auf numerische Verfahren zur +Optimierung der Kostenfunktion, wie z.B. der Gradientenabstieg, +zur\"uckzugreifen \matlabfun{lsqcurvefit()}. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Fits von Wahrscheinlichkeitsverteilungen} +Jetzt betrachten wir noch den Fall, bei dem wir die Parameter einer +Wahrscheinlichkeitsdichtefunktion (z.B. den shape-Parameter einer +\determ{Gamma-Verteilung}) an ein Datenset fitten wollen. + +Ein erster Gedanke k\"onnte sein, die +\determ[Wahrscheinlichkeitsdichte]{Wahrscheinlichkeitsdichtefunktion} +durch Minimierung des quadratischen Abstands an ein Histogramm der +Daten zu fitten. Das ist aber aus folgenden Gr\"unden nicht die +Methode der Wahl: (i) Wahrscheinlichkeitsdichten k\"onnen nur positiv +sein. Darum k\"onnen insbesondere bei kleinen Werten die Daten nicht +symmetrisch streuen, wie es bei normalverteilten Daten der Fall +ist. (ii) Die Datenwerte sind nicht unabh\"angig, da das normierte +Histogram sich zu Eins aufintegriert. Die beiden Annahmen +normalverteilte und unabh\"angige Daten, die die Minimierung des +quadratischen Abstands \eqnref{chisqmin} zu einem Maximum-Likelihood +Sch\"atzer machen, sind also verletzt. (iii) Das Histogramm h\"angt +von der Wahl der Klassenbreite ab (\figref{mlepdffig}). + +\begin{figure}[t] + \includegraphics[width=1\textwidth]{mlepdf} + \titlecaption{\label{mlepdffig} Maximum-Likelihood Sch\"atzung einer + Wahrscheinlichkeitsdichtefunktion.}{Links: die 100 Datenpunkte, die + aus der Gammaverteilung 2. Ordnung (rot) gezogen worden sind. Der + Maximum-Likelihood-Fit ist orange dargestellt. Rechts: das + normierte Histogramm der Daten zusammen mit dem \"uber Minimierung + des quadratischen Abstands zum Histogramm berechneten Fit.} +\end{figure} + +Den direkten Weg, eine Wahrscheinlichkeitsdichtefunktion an ein +Datenset zu fitten, haben wir oben schon bei dem Beispiel zur +Absch\"atzung des Mittelwertes einer Normalverteilung gesehen --- +Maximum Likelihood! Wir suchen einfach die Parameter $\theta$ der +gesuchten Wahrscheinlichkeitsdichtefunktion bei der die Log-Likelihood +\eqnref{loglikelihood} maximal wird. Das ist im allgemeinen ein +nichtlinieares Optimierungsproblem, das mit numerischen Verfahren, wie +z.B. dem Gradientenabstieg, gel\"ost wird \matlabfun{mle()}. + +\begin{exercise}{mlegammafit.m}{mlegammafit.out} + Erzeuge Gammaverteilte Zufallszahlen und benutze Maximum-Likelihood, + um die Parameter der Gammafunktion aus den Daten zu bestimmen. + \pagebreak +\end{exercise} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Neuronale Kodierung} +In sensorischen Systemen kodieren Populationen von Neuronen mit ihrer +Aktivit\"at Eigenschaften von sensorischen Stimuli. z.B. im visuellen +Kortex V1 die Orientierung eines Balkens. Traditionell wird die +Antwort der Neurone f\"ur verschiedene Stimuli (z.B. verschiedene +Orientierungen des Balkens) gemessen. Die mittlere Antwort der Neurone +als Funktion eines Stimulusparameters ist dann die +\enterm{Tuning-curve} (deutsch \determ{Abstimmkurve}, z.B. Feuerrate +als Funktion des Orientierungswinkels). + +\begin{figure}[tp] + \includegraphics[width=1\textwidth]{mlecoding} + \titlecaption{\label{mlecodingfig} Maximum Likelihood Sch\"atzung + eines Stimulusparameters aus neuronaler Aktivit\"at.}{Oben: + Die Tuning-Kurve eines einzelnen Neurons in Abh\"angigkeit von der + Orientierung eines Balkens. Der Stimulus der die st\"akste + Aktivit\"at in diesem Neuron hervorruft ist ein senkrechter Balken + (Pfeil, $\phi_i=90$\,\degree. Die rote Fl\"ache deutet die + Variabilit\"at $p(r)$ der Aktivit\"at $r$ um die Tuning-Kurve + herum an. Mitte: Jedes Neuron in der Population hat eine andere + bevorzugte Orientierung des Stimulus (farbige Linien). Ein + Stimulus einer bestimmten Orientierung aktiviert die Neurone in + spezifischer Weise (Punkte). Unten: Die Log-Likelihood dieser + Aktivit\"aten wird in der N\"ahe der wahren Orientierung + des Stimulus maximiert.} +\end{figure} + +Das Gehirn ist aber mit dem umgekehrten Problem konfrontiert: gegeben +eine bestimmte Aktivit\"at der Neurone in der Population, was war der +Stimulus (die Orientierung des Balkens)? Eine m\"ogliche Antwort ist +im Sinne von Maximum-Likelihood: es war der Stimulus f\"ur den das +Aktivit\"atsmuster am wahrscheinlichsten ist. + +Bleiben wir mit einem Beispiel bei den orientierungssensitiven Zellen +des V1. Das Tuning $\Omega_i(\phi)$ der Zellen $i$ auf ihre bevorzugte +Orientierung $\phi_i$ l\"asst sich gut mit einer van-Mises Funktion +(entspricht der Gaussfunktion auf einer zyklischen x-Achse) +beschreiben (\figref{mlecodingfig}): +\[ \Omega_i(\phi) = c \cdot e^{\cos(2(\phi-\phi_i))} \quad , \quad c +\in \reZ \] +Die Aktivit\"at der Neurone approximieren wir hier mit einer +Normalverteilung um die Tuning-Kurve mit Standardabweichung +$\sigma=\Omega/4$ proportional zu $\Omega$, so dass die +Wahrscheinlichkeit $p_i(r|\phi)$ des $i$-ten Neurons die Aktivit\"at $r$ zu +haben, wenn ein Stimulus mit Orientierung $\phi$ anliegt, gegeben ist durch +\[ p_i(r|\phi) = \frac{1}{\sqrt{2\pi}\Omega_i(\phi)/4} e^{-\frac{1}{2}\left(\frac{r-\Omega_i(\phi)}{\Omega_i(\phi)/4}\right)^2} \; . \] +Die Log-Likelihood der Stimulusorientierung $\phi$ gegeben die +Aktivit\"aten $r_1$, $r_2$, ... $r_n$ ist damit +\[ {\cal L}(\phi|r_1, r_2, \ldots r_n) = \sum_{i=1}^n \log p_i(r_i|\phi) \] + +\selectlanguage{english} diff --git a/programming/exercises/matrices.tex b/programming/exercises/matrices.tex index 088afc6..93c4c9d 100644 --- a/programming/exercises/matrices.tex +++ b/programming/exercises/matrices.tex @@ -14,7 +14,7 @@ %%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry} \pagestyle{headandfoot} -\header{{\bfseries\large Exercise 3}}{{\bfseries\large Matrices}}{{\bfseries\large 22. Oktober, 2018}} +\header{{\bfseries\large Exercise 3}}{{\bfseries\large Matrices}}{{\bfseries\large 22. Oktober, 2019}} \firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email: jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{} diff --git a/programming/exercises/variables_types.tex b/programming/exercises/variables_types.tex index fb6c092..c59b72e 100644 --- a/programming/exercises/variables_types.tex +++ b/programming/exercises/variables_types.tex @@ -15,7 +15,7 @@ %%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry} \pagestyle{headandfoot} -\header{{\bfseries\large Exercise 1}}{{\bfseries\large Variables und Datatypes}}{{\bfseries\large 16. Oktober, 2018}} +\header{{\bfseries\large Exercise 1}}{{\bfseries\large Variables und Datatypes}}{{\bfseries\large 15. Oktober, 2019}} \firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email: jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{} diff --git a/programming/exercises/vectors.tex b/programming/exercises/vectors.tex index 5768867..6115499 100644 --- a/programming/exercises/vectors.tex +++ b/programming/exercises/vectors.tex @@ -14,7 +14,7 @@ %%%%% 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}} +\header{{\bfseries\large Exercise 2}}{{\bfseries\large Vectors}}{{\bfseries\large 17. Oktober, 2019}} \firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email: jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{}