\documentclass[12pt,
               a4paper,
               article,
               oneside,
               oldfontcommands,
               norsk]{memoir}

\usepackage{bm}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[scaled]{beramono}
\usepackage[final]{microtype}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{listings}
\lstset{basicstyle = \ttfamily}
\usepackage{textcomp}
\usepackage{siunitx}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage[colorlinks, allcolors = uiolink]{hyperref}


\renewcommand*{\chaptitlefont}{\Large\bfseries\sffamily\raggedright}
\setsecheadstyle{\large\bfseries\sffamily\raggedright}
\setsubsecheadstyle{\large\bfseries\sffamily\raggedright}
\setsubsubsecheadstyle{\normalsize\bfseries\sffamily\raggedright}
\setparaheadstyle{\normalsize\bfseries\sffamily\raggedright}
\setsubparaheadstyle{\normalsize\bfseries\sffamily\raggedright}
\setbeforesubsubsecskip{2ex}
\setaftersubsubsecskip{1ex}


\pretolerance = 2000
\tolerance    = 6000
\hbadness     = 6000


\renewcommand{\sfdefault}{phv}
\definecolor{uiolink}{HTML}{0B5A9D}


\declaretheorem[style = definition]{oppgave}


\begin{document}


\begin{titlingpage}
    \vspace*{-8em}
    \setlength{\parskip}{1.5ex plus 0.5ex minus 0.2ex}
    \setlength{\parindent}{0pt}

    \begin{flushright}
        \small\today
    \end{flushright}

    \begin{center}
        \vspace{2em}
        {
            \bfseries\sffamily\huge
            MEK1100, vår 2023
            %% Alternativt:
            %% EMNEXXXX \textthreequartersemdash\ NAVN P{\AA} EMNE
        }
        \vskip0.2ex
        \Large
        Obligatorisk oppgave 1 av 2 \\
        \vspace{1ex}
    \end{center}

    \subsubsection*{Innleveringsfrist}
    Torsdag 16. mars \the\year, klokken 14:30 i Canvas.

    \subsubsection*{Instruksjoner}
    Besvarelsen skal inneholde navn, emne og oblignummer.

    Merk at man kun har ett forsøk på å få oppgaven godkjent. Dette betyr at det ikke lenger gis andregangsforsøk.

    Du velger selv om du skriver besvarelsen for hånd og skanner den, eller om du skriver løsningen direkte inn på datamaskin
    (for eksempel ved bruk av LaTeX eller Jupyter notebook). Skannede ark må være godt lesbare. Det forventes at man har en klar og ryddig
    besvarelse med tydelige begrunnelser. Besvarelsen skal leveres som én PDF-fil. Husk å inkludere eventuell kode
    og kjøreeksempel, samt relevante plott og figurer i PDF-filen.

    Samarbeid og alle slags hjelpemidler er tillatt, men den innleverte besvarelsen skal være skrevet av deg og reflektere
    din forståelse av stoffet. Er vi i tvil om du virkelig har forstått det du har levert inn, kan du bli bedt om en
    muntlig redegjørelse.

    Husk {\aa} inkludere alle relevante plott og figurer.

    I oppgaver der du blir bedt om {\aa} programmere m{\aa} du legge ved programkoden og levere den sammen med resten av besvarelsen.
    Det er viktig at programkoden du leverer inneholder et kj{\o}reeksempel, slik at det er lett {\aa} se hvilket resultat programmet gir.

    \subsubsection*{S{\o}knad om utsettelse av innleveringsfrist}
    Hvis du blir syk eller av andre grunner trenger å søke om utsettelse av innleveringsfristen, må du ta kontakt med
    studieadministrasjonen ved Matematisk institutt (e-post: studieinfo@math.uio.no) før innleveringsfristen. Vitenskapelig ansatte kan ikke innvilge utsettelser.

    For å få adgang til avsluttende eksamen i dette emnet, må man bestå alle obligatoriske oppgaver i ett og samme semester.

    \subsubsection*{For fullstendige retningslinjer for innlevering av obligatoriske oppgaver, se her:}
    \begin{center}
        \href{http://www.uio.no/studier/admin/obligatoriske-aktiviteter/mn-math-oblig.html}
        {\underline{www.uio.no/studier/admin/obligatoriske-aktiviteter/mn-math-oblig.html}}
        \vspace{1ex}
        \vfill
        LYKKE TIL!
    \end{center}
\end{titlingpage}


\textbf{Krav til innlevering og godkjenning}

Hvert punkt gir makismalt 10 poeng.  I alt kan du oppnå 130 poeng.  Vi
krever minimum 70 prosent, eller 91 poeng for å få godkjent. 

Der det står at man skal bruke Matlab eller Python, er det fritt fram for å
bruke andre systemer som man måtte like bedre (Julia, Octave, Geogebra, etc.) så lenge man har
til disposisjon de samme numeriske og grafiske kapasitetene.

\begin{oppgave}
  \textbf{Skalering}

En ball kastes ut fra origo over en flat horisontal bakke.  $x$-aksen
er horisontal langs bakken og $y$-aksen peker vertikalt oppover.
Ballen kastes ut med fart $v_0$ ved tiden $t=0$.  Kastet kan
innstilles med utkastvinkel $\theta$ i forhold til den horisontale
$x$-aksen.  Ballen vil følge en bane gitt ved
\begin{eqnarray*}
  x(t) & = & v_0 t \cos \theta \\
  y(t) & = & v_0 t \sin \theta - \frac{1}{2} g t^2
\end{eqnarray*}
\begin{enumerate}[a)]
\item Finn tiden $t_m$ når ballen faller ned på bakken ($y=0$) og
  posisjonen $x(t_m) = x_m$ hvor dette skjer.
\item Innfør dimensjonsløse variable ($x^*, y^*, t^*)$ for $x,y,t$ når du
  skalerer med $x_m$ for lengde og $t_m$ for tid.  Forklar hvorfor det ikke
  er behov for å skalere vinkelen $\theta$.
\item Bruk et programmeringsverktøy (for eksempel Python eller MATLAB) for å tegne baner $(x^*,y^*)$ for tre
  utkastvinkler $\theta_n$ for $n=1,2,3$.  Velg
  $0 < \theta_1 < \frac{\pi}{4}$, $\theta_2 = \frac{\pi}{4}$ og
  $\frac{\pi}{4} < \theta_3 < \frac{\pi}{2}$.  Tegn de tre banene i
  samme koordinatsystem, og angi hvilken bane som svarer til hvilken
  utkastvinkel.  Forklar hvorfor disse diagrammene kan brukes til å
  finne ballens baner for forskjellige verdier av utgangsfart $v_0$ og
  forskjellige verdier av $g$.
\end{enumerate}

\end{oppgave}

%\clearpage

\begin{oppgave}
  \textbf{Strømlinjer til et todimensjonal hastighetsfelt}

Vi skal nå se på hastighetsfeltet
\begin{displaymath}
  \bm{v} = v_x \bm{i} + v_y \bm{j} = xy\bm{i} + y\bm{j}
\end{displaymath}
\begin{enumerate}[a)]
\item Finn strømlinjene.

  HINT 1: Du må løse ei differensiallikning som viser seg å være separabel,
  det vil si at den kan skrives om på formen $f(x)dx = g(y)dy$.

  HINT 2: Fanger du opp at $x$-aksen også er løsning av den opprinnelige
  differensiallikninga?
\item Tegn strømlinjene for hånd og sett på piler for å indikere retningen på
  strømmen.\\ Et stagnasjonspunkt er et punkt hvor hastighetsfeltet er lik
  null.  Finn alle stagnasjonspunktene og identifiser hvor i plottet disse
  ligger.  Det er vanlig å tegne individuelle stagnasjonspunkter som tjukke
  kulepunkter $\bullet$.

  Vis også at du får til å tegne strømlinjene ved hjelp av Matlab eller
  Python, ved å bruke kommandoen \texttt{contour}.  Dette kan kanskje vise
  seg å være en utfordring nær $x=0$.

\item Vis at det ikke finnes en strømfunksjon $\psi$.
\end{enumerate}

\bigskip

HINT: En strømfunksjon $\psi(x,y)$ for et todimensjonalt felt $\bm{v} = v_x
\bm{i} + v_y \bm{j}$ i $xy$-planet har egenskapen $v_x = -\partial
\psi/\partial y$ og $v_y = \partial \psi/\partial x$.  Dersom en slik
strømfunksjon eksisterer så er strømlinjene gitt ved ekviskalarkurvene til
strømfunksjonen, $\psi(x,y) = \mbox{konstant}$.

Dersom et vektorfelt er todimensjonalt i $xy$-planet, $\bm{v} = v_x \bm{i} +
v_y \bm{j}$ og divergensfritt, $\partial v_x / \partial x + \partial v_y
/\partial y = 0$, så eksisterer det en strømfunksjon som angitt ovenfor.
Dersom et vektorfelt har divergens forskjellig fra null, så eksisterer det
ikke en strømfunksjon for feltet.

For å vise at et felt ikke har en strømfunksjon, kan man enten vise at forsøk
på å regne den ut ender i en selvimotsigelse, eller man kan vise at
divergensen til feltet er ulik null.

\end{oppgave}

\begin{oppgave}
  \textbf{Et annet todimensjonalt strømfelt}

Et hastighetsfelt i $xy$-planet er gitt ved
$\bm{v} = v_x\bm{i} + v_y \bm{j}$ der
\begin{equation}
  v_x = \cos(x) \sin(y), \quad v_y = - \sin(x) \cos(y).
\end{equation}
\begin{enumerate}[a)]
\item Finn divergensen
  $\nabla \cdot \bm{v} = \partial v_x/\partial x + \partial
  v_y/\partial y$
  og virvlingen
  $\nabla \times \bm{v} = \left( \partial v_y/\partial x - \partial
    v_x/\partial y \right) \bm{k}$ av hastighetsfeltet.
\item Tegn opp strømvektorer langs $x$- og $y$-aksen.
\item Finn sirkulasjonen om randa til kvadratet definert ved $-\frac{\pi}{2}
  \leqslant x \leqslant \frac{\pi}{2}$ og $-\frac{\pi}{2} \leqslant y
  \leqslant \frac{\pi}{2}$.
\item Forklar hvorfor det eksisterer en strømfunksjon for feltet gitt i
  likning (1), se hintet gitt i forrige oppgave.  Vis at strømfunksjonen kan
  skrives
\begin{equation}
  \psi = \cos(x) \cos(y).
\end{equation}
\item Bruk Taylorutvikling av andre orden til å finne tilnærmede strømlinjer
  nær origo.
\end{enumerate}

\end{oppgave}

\begin{oppgave}
  \textbf{Strømlinjer og hastighetsfelt i Matlab eller Python}

I denne oppgaven skal du skrive noen funskjoner og skript i Matlab eller
Python.  Disse og de plott som produseres skal leveres inn som en del av
besvarelsen.  Det er viktig at de filene du lager har de navn som
oppgis. Alle figurer skal ha tittel og tekst på akser.

Sammen med oppgaveteksten, på hjemmesiden, finner du filene
\texttt{streamfun.m} og \texttt{streamfun.py} med en funksjon som beregner
strømfunksjonen (2) i området. Et kall på funksjonen kan i Matlab se ut som
\begin{center}
  \texttt{$\gg$ [x,y,psi]=streamfun(n);}
\end{center}
og kan i Python se ut som
\begin{center}
  \texttt{$\ggg$ x,y,psi=streamfun(n)}
\end{center}
der \texttt{x,y,psi} er arrayer for henholdsvis $x$-verdier, $y$-verdier og
$\psi$. Inngangsparameteren \texttt{n} er antall punkter som brukes i hver
retning. Avstanden mellom punktene, i begge retninger, blir da $\Delta x =
\Delta y = \frac{\pi}{n-1}$.

\begin{enumerate}[a)]
\item Bruk funksjonen \texttt{streamfun} i et skript, \texttt{strlin.m} eller
  \texttt{strlin.py}, som plotter konturlinjer for $\psi$ når
  \begin{enumerate}[(i)]
  \item $n = 5$
  \item $n = 30$
  \end{enumerate}
  Framstill tilfellene (i) og (ii) i hvert sitt diagram. Sammenhold plottene
  med punkt e) i forrige oppgave og diskuter de valgte verdier for $n$.
\item Skriv en funksjon (filnavn \texttt{velfield.m} eller
  \texttt{velfield.py}) som beregner hastigheter utfra likning (1) ved kallet
  \begin{center}
    \texttt{$\gg$ [x,y,u,v]=velfield(n);}
  \end{center}
  eller
  \begin{center}
    \texttt{$\ggg$ x,y,u,v=velfield(n)}
  \end{center}
  Bruk denne i et skript, \texttt{vec.m} eller \texttt{vec.py}, som tegner et
  vektorplott av hastighetsfeltet. Legg vekt på å velge et passende antall
  punkter for lesbarheten av plottet.

\end{enumerate}

\end{oppgave}

\section*{Matlab-hint}

\begin{itemize}
\item En array med $n$ jevnt fordelte punkter i intervallet $[a, b]$ lages
  best med\\ \texttt{x=linspace(a,b,n);}.
\item Den enkleste måten å lage en utskrift av en figur er å bruke det grafiske grensesnittet til plottevinduet.  Du kan også lage en pdf fil med gjeldende figur med\\
  \verb+print("-dpdf", filnavn);+\\
  Ønsker du en annen filtype bytter du ut \verb+"-dpdf"+ med \verb+"-dXXX"+ hvor XXX er  ønsket filtype.
\item I figurtitler kan det være gunstig å kombinere tekster og verdien av
  variable som brukes i Matlabkoden.  Er $s$ en streng og $r$ et reelt tall og $n$ et heltall kan du f.eks.\ benytte\\
  \verb+tit=sprintf("String %s float %.2f int %d", s, r, n); title(tit);+\\
  Her betyr \texttt{\%s} en streng, \texttt{\%f} et reelt tall, \texttt{\%.2f}
  et reelt tall med 2 desimaler, og \texttt{\%d} et heltall.
\end{itemize}

\section*{Python-hint}

\begin{itemize}
\item En array med $n$ jevnt fordelte punkter i intervallet $[a, b]$ lages
  best med\\
  \verb+import numpy as np+\\
  \verb+x=np.linspace(a,b,n)+\\
\item  Den enkleste måten å lage en utskrift av en figur er å bruke det grafiske grensesnittet til plottevinduet.  Du kan også lage en pdf fil med gjeldende figur med\\
  \verb+import matplotlib.pyplot as plt+\\
  \verb+plt.savefig("fil.png")+\\
  Ønsker du annen filtype bytter du ut \verb+"fil.png"+ med \verb+"fil.XXX"+ hvor XXX er ønsket filtype.
\item I figurtitler kan det være gunstig å kombinere tekster og verdien av
  variable som brukes i Pythonkoden.  Er $s$ en streng og $r$ et reelt tall og
  $n$ et heltall kan du f.eks.\ benytte\\
  {\small \verb+plt.title("String {0:s} float {1:.2f} int {2:d}".format(s, r, i))+}\\
  Funksjonen \verb+format+ kan brukes på strenger.  Sløyfeparentesene definerer
  hvor i teksten noe skal settes inn.  Tallet bestemmer hvilken verdi som
  settes inn, ellers går det fortløpende.  For å indikere hvilken type som
  kommer brukes \texttt{s} for streng, \texttt{f} for reelt tall, \texttt{.2f}
  for reelt tall med 2 desimaler, og \texttt{d} for heltall.
\end{itemize}

\section*{{\LaTeX}-hint}

\begin{itemize}
\item For de som ønsker å skrive hele, eller deler, av obligen i \LaTeX\ kan
  det være nyttig å inkludere alle \texttt{.m} eller \texttt{.py} filer i
  \LaTeX\ koden.  Dette gjøres enkelt ved verbatimkommandoen\\
  \verb+\verbatiminput{streamfun.m}+\\
  En må huske å inkludere verbatim i starten på \LaTeX\ fila\\
  \verb+\usepackage{verbatim}+
\item \LaTeX har ganske bratt lærinsgskurve og kan være litt skremmende i
begynnelsen. Mange finner det enklere å skrive \LaTeX dokumenter i en online
editor som \href{https://www.overleaf.com}{Overleaf}. Der finnes det også
fine introduksjoner og hjelp til hvordan man skriver i \LaTeX.

\end{itemize}

\section*{Jupyter-hint}
\begin{itemize}
  \item Skriv gjerne hele besvarelsen i Jupyter. Når du så skal levere i
  Canvas kan du konvertere hele dokumentet til PDF ved å følge
  \texttt{Fil->Download as->PDF via LaTeX}.
  \item Se eksempel på notebooks på \href{https://jupyterhub.uio.no}{jupyterhub.uio.no}.
  Se spesielt \texttt{Kapittel3-Gjevik.ipynb}.
  \item Likninger skrives med \LaTeX-kode.
  \item \href{https://jupyter-notebook.readthedocs.io/en/stable/notebook.html}{Introduksjon til Jupyter}
  \item Husk å eksekvere (Restart \& Run All) dokumentet før du printer til PDF så all output
  fra kode-cellene kommer med.
\end{itemize}

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
