next up previous
Next: En integralekvation Up: Ett randvärdesproblem Previous: Det kontinuerliga fallet

Diskretisering

Det finns flera olika sätt att diskretisera ett kontinuerligt problem. Jag kommer att använda finita-differens-approximation där vi approximerar $u''$ med finita-differenser.

Påstående: en bra approximation till $u''(t)$ är

\begin{displaymath}
\frac{u(t+h)-2u(t)+u(t-h)}{h^2}
\end{displaymath}


om $h$ är lagom stort (se övning i kompendiet). Låt oss använda Taylorutveckling (kring $t$) för att få en uppfattning av trunkeringsfelet:

\begin{displaymath}
\begin{array}{ll}
\frac{u(t+h)-2u(t)+u(t-h)}{h^2}=&
\frac{1}...
...
\right]\\
=u''(t)+\frac{h^2u^{(4)}(t)}{12}+\cdots
\end{array}\end{displaymath}


Trunkeringsfelet är alltså av ordningen $h^2$. Tar vi $h$ alltför litet kommer vi dock att få kancellation i subtraktionerna när vi bildar differensen (jämför övningen).

Vi delar nu in intervallet $[0,1]$ i $n+1$ segment där varje del har längden $h$. Låt oss numrera segmentens ändpunkter genom:

\begin{displaymath}
t_0=0,\ \ t_1=h,\ \ t_2=2h, \ldots, t_n=nh,\ \ t_{n+1}=(n+1)h=1
\end{displaymath}


I praktiken väljer vi heltalet $n$ och definierar $h$ genom $h=1/(n+1)$. Vi kommer nu att beräkna approximationer $u_k,k=1,
\ldots, n$ till $u(t_k)$. Observera: $u(t_k)$ är det exakta värdet av $u$ i $t_k$; $u_k$ är en approximation av detta värde.

Om differentialekvationen skall vara satisfierad för $t=t_1, \ldots, t_n$ får vi de $n$ villkoren $-u''(t_k)=f(t_k)$, $k=1, \ldots, n$. Vi approximerar nu $u''$ med vår differensapproximation och får:

\begin{displaymath}
f(t_k)=-u''(t_k)\approx-\frac{u(t_k+h)-2u(t_k)+u(t_k-h)}{h^2}\approx
-\frac{u_{k+1}-2u_k+u_{k-1}}{h^2}
\end{displaymath}


eller utskrivet

\begin{displaymath}
\left\{\begin{array}{ll}
-\frac{u_2-2u_1+u_0}{h^2}&=f(h)\\ [...
...m]
-\frac{u_{n+1}-2u_n+u_{n-1}}{h^2}&=f(nh)
\end{array}\right.
\end{displaymath}


För att få detta på matrisform utnyttjar vi att $u_0=u_{n+1}=0$ (från randvillkoren) och stoppar in $u_1, \ldots,u_n$ i vektorn ${\bf u}$. $f(kh)$ stoppar vi in i vektorn ${\bf f}$. Vi får nu det linjära ekvationssystemet:

\begin{displaymath}
\underbrace{
\frac{1}{h^2}
\left[
\begin{array}{cccccc}
2 & ...
...\\
\vdots\\
f((n-1)h)\\
f(nh)
\end{array}\right]}_{{\bf f}}
\end{displaymath}


Vi ser direkt att matrisen ${\bf A}$ är symmetrisk, men är den positivt definit? I själva verket har vi redan visat att så är fallet, ty om vi sätter alla fjäderkonstanterna till ett, i styvhetsmatrisen ${\bf K}$ på sidan ett, återfår vi matrisen ovan (så när som på faktorn $1/h^2$).

Ett annat sätt att visa att matrisen är positivt definit är att beräkna Choleskyfaktorn av matrisen. Kontrollera att ${\bf A}$ kan skrivas ${\bf C}{\bf C}^T/h^2$ där ${\bf C}$ är undertriangulär med $c_{j,k}=0,j>k+1$ och där $c_{j,j}=\sqrt{\frac{j+1}{j}}$ och $c_{j+1,j}=-1/c_{j,j}$.

Vi noterar att när vi väl har beräknat ${\bf C}$ kan vi lösa differentialekvationsproblemet för olika funktioner $f$ utan att på nytt beräkna Choleskyfaktoriseringen.

Slutligen skall det sägas att inte varje diskretisering ger upphov till en symmetrisk matris.


next up previous
Next: En integralekvation Up: Ett randvärdesproblem Previous: Det kontinuerliga fallet
Thomas Ericsson
2003-03-26