\documentclass[11pt, a4paper]{article}
\usepackage{TMA4215}
\begin{document}
\prosjekt{1}
Oppgaven g{\aa}r ut p{\aa} {\aa} utvikle, teste og implementere en algoritme
for {\aa} l{\o}se 2-punkts randverdiproblemer p{\aa} formen 
\begin{equation}
  \label{eq:bvp}
  u''+p(x)u'+q(x)u = r(x), \qquad x\in[a,b], \qquad u(a) = u_a, \quad
  u(b)=u_b 
\end{equation}
numerisk. 

Den numeriske algoritmen lages som f{\o}lger:
\begin{enumerate}
\item Velg $n+1$ distinkte noder i $[a,b]$ med $x_0=a$ og $x_n=b$.
\item Finn et polynom $v\in\mathbb{P}_{n}$ som tilfredsstiller
  randbetingelsene i tillegg til differensialligningen i alle indre
  noder. Det betyr at $v$ skal tilfredsstille
  \begin{subequations} \label{eq:coll}
  \begin{align}
     &v(a)=u_a, \qquad v(b)=u_b  \label{eq:b} \\
     &v''(x_i)+p(x_i)v'(x_i)+q(x_i)v(x_i) = r(x_i), \qquad
    i=1,\dotsc,n-1. \label{eq:colla}
  \end{align}
  \end{subequations}
\end{enumerate}
Dermed kan vi bruke $v(x)$ som en numerisk approksimasjon til
l{\o}sningen $u(x)$ av 
\eqref{eq:bvp}. Polynomet $v(x)$ kan skrives
p{\aa} Lagrange-form, dvs.\ 
\[ v(x)=\sum_{k=0}^n v_k \ell_k(x), \qquad
\ell_k(x)=\prod_{\substack{i=0\\i\not=k}}^n\frac{x-x_i}{x_k-x_i}. \]
Det betyr at polynomet $v(x)$ er bestemt av $v_i$,
$i=0,\dotsc,n$, som igjen er gitt av betingelsene \eqref{eq:coll}.

\setcounter{Oppg}{-1}
\begin{oppgave}
  \emph{Denne deloppgaven er ment som en introduksjon til
    problemstillingen. Dere b{\o}r gj{\o}re den, men den skal \emph{ikke}
    leveres inn.}
  
  Gitt ligningen
  \[ u'' + u = 2\cos(x), \qquad u(0)=0,\; u(\pi/2)=\pi/2, \]
  med eksakt l{\o}sning $u=x\sin(x)$.
  \begin{punkt}
    Velg nodene $x_0=0, \; x_1=\pi/4$ og $x_2=\pi/2$, og finn polynomet
    $v(x)$ etter oppskriften over. Sammenlign $v$ og den eksakte
    l{\o}sningen $u$ (lag et plott).  
  \end{punkt}
  \begin{punkt} 
    Legg til nodene $x_3=\pi/8$ og $x_4=3\pi/8$, og gjenta eksperimentet.
  \end{punkt}
\end{oppgave}

\newpage
\begin{oppgave}
  Betingelsen \eqref{eq:colla} krever at det er mulig {\aa} regne ut den
  deriverte av polynomet $v(x)$ i nodene. Mer generelt kan vi skrive dette som:
  \begin{itemize}
  \item  La $p\in\mathbb{P}_n$ v{\ae}re gitt ved $p(x_i)=v_i$,
  $i=0,1,\dotsc,n$.
  \item La $w_i = p'(x_i)$, $i=0,1,\dotsc,n$.
  \end{itemize}
  Dette er en
  line{\ae}r operasjon som kan skrives p{\aa} formen
  \[ w = D_n v \]
  der $D_n\in\mathbb{R}^{(n+1)\times(n+1)}$, $v=[v_0,\dotsc,v_n]^T$, og 
  $w=[w_0,\dotsc,w_n]^T$. 
  \begin{punkt}
     Finn $D_2$ fra nodene $x_0=0, \; x_1=\pi/4$ og $x_2=\pi/2$. 
  \end{punkt}
  \begin{punkt}
     Gitt en vilk{\aa}rlig f{\o}lge av diskrete noder $(x_i)_{i=0}^n$. Vis
     at $D_n$ er gitt ved 
     \[ D_{ik} =
     \begin{cases}
       \displaystyle \frac{a_i}{a_k(x_i-x_k)} & \text{ n{\aa}r } i\not=k \\[3mm]
       \displaystyle \sum_{\substack{j=0\\j\not= k}}^n \frac{1}{x_k-x_j} & \text{ for } i=k, 
     \end{cases}
     \]
     der $\displaystyle a_k=\prod_{\substack{j=0\\j\not=k}}^n(x_j-x_k)$. 
  \end{punkt}
  \begin{punkt}
    Skriv en \textsc{Matlab}-funksjon som regner ut
    differensieringsmatrisa $D_n$ for et gitt sett av  noder $x$. 
  \end{punkt}
  \begin{punkt}
    La n{\aa} $p$ interpolere en gitt funksjon $f(x)$ i nodene
    $(x_i)_{i=0}^n$. I s{\aa} fall kan vi bruke $w_i=p'(x_i)\approx
    f'(x_i)$ som en approksimasjon til den deriverte i noden. Test dette
    p{\aa} funksjonene 
    \begin{eqnarray*}
      i) && f(x) = e^x\sin(5x) \\
      ii) && f(x) = 1/(1+x^2) \\
      iii) && f(x) = \lvert x^3\rvert \\
      iv) && f(x) = x^{10}
    \end{eqnarray*}
    p{\aa} intervallet $x \in [-1,1]$ med noder gitt ved 
    \begin{equation}
      \label{eq:cheb}
      x_i = -\cos(i\pi/n), \qquad i=0,\dotsc,n. 
    \end{equation}
    Finn feilen  $E_n = \max_{i=0,\dotsc,n} \lvert f'(x_i)-w_i\rvert$ numerisk og plott
    denne som funksjon av $n$, $n=1,\dotsc,50$. Kommenter svaret. 
  \end{punkt}
  \begin{punkt}
    La $\bar{w}_i=p''(x_i)$, $i=0,\dotsc,n$. Overbevis deg selv om at
    disse koeffisientene er gitt ved
    \[ \bar{w} = D_n^2 v. \]
  \end{punkt}
\end{oppgave}
\newpage

\begin{oppgave}
\begin{punkt}
    Vis at betingelsene \eqref{eq:coll} danner et line{\ae}rt
    ligningssystem
    \[ Mv = b. \]
    Forklar hvordan $M$ kan uttrykkes ved hjelp av differensieringsmatrisa $D_n$
    i oppgave 1.
  \end{punkt}
  \begin{punkt}
   Skriv et \textsc{Matlab}-skript som l{\o}ser et vilk{\aa}rlig to-punkts
   randverdiproblem~\eqref{eq:bvp} numerisk ved hjelp av \eqref{eq:coll}. Bruk fordelingen av nodene gitt ved
   \eqref{eq:cheb}, flytt dem eventuelt over p{\aa} intervallet $[a,b]$.
   Skriptet skal ha et oppsett som vist i figur \ref{fig:code}.
   \begin{figure}[t]
     \begin{center}
     \begin{verbatim}
     % Define the equation:
     p = ...
     q = ...
     r = ...

     % Boundary conditions
     a = ...
     b = ...
     ua = ...
     ub = ...

     % Number of nodes - 1
     n = ...

       :
       :

     % Plot the solution. 
     \end{verbatim}
     \end{center}
     \caption{Eksempel p{\aa} \textsc{Matlab}-kode i oppgave 2.}
     \label{fig:code}
  \end{figure}

   Test f{\o}rst programmet p{\aa} problemet i oppgave 0.
   Velg $n=10$ og $n=20$ og plott b{\aa}de l{\o}sningen og feilen.

   Bruk deretter programmet til {\aa} l{\o}se f{\o}lgende ligninger:
   \begin{align*}
     i) & && u'' + 10u' +u = 1, && u(-1)=u(1)=0. \\
     ii) & && u'' - \frac{2x}{x^2+1}u'+\frac{2}{x^2+1}u = x^2+1, &&
     u(0)=2,\; u(1)=5/3.
  \end{align*}
  Velg gjerne flere ligninger selv. 
 \end{punkt}
\end{oppgave}
\end{document}
