\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: