Naloga: Reševanje robnega problema s končnimi diferencami. Do problema reševanja sistema linearnih enačb pridemo tudi npr. pri reševanju robnega problema drugega reda z metodo končnih diferenc. Vzemimo najpreprostejši primer: Rešujemo

y′′(x) = f(x), y(a) = y_{a}, y(b) = y_{b}.  (1)

Določiti želimo torej funkcijo y, katere drugi odvod je enak f, y pa zadošča t.i. robnima pogojema y(a) = y_{a} in y(b) = y_{b}. V splošnem takega problema ne znamo rešiti, saj funkcije f morda ne znamo dvakrat integrirati. Zato nam ponavadi preostane le še numerično reševanje. Kaj pomeni numerično rešiti problem (1)? Nič drugega, kot na intervalu [a, b] poiskati numerične približke y_{i} ≈ y(x_{i}), i = 1, 2, … n + 1, pri čemer je a =: x_{1} < x_{2} < ⋯ < x_{n} < x_{n+1} := b. Več kot je izbranih točk x_{i}, bolj natančen opis funkcije y s približki y_{i} pričakujemo. Zaradi enostavnosti ponavadi predpostavimo, da je x_{i+1} − x_{i} =: h za vse i. Drugače povedano, točke x_{i} naj bodo ekvidistantne. Da bi lahko reševali problem (1), moramo najprej aproksimirati y′′(x_{i}). To naredimo s t.i. drugimi diferencami

y′′(x_{i}) = \frac{y(x_{i−1}) − 2y(x_{i}) + y(x_{i+1})}{h^{2}} + napaka = \frac{y_{i−1} − 2y_{i} + y_{i+1}}{h^{2}} + napaka.

Torej mora veljati (če zanemarimo napako, ki je sorazmerna s h^{2})

y_{i−1} − 2y_{i} + y_{i+1} = h^{2}f(x_{i}), i = 1, 2, …, n.

Ker morata biti ozpolnjena robna pogoja, sta prva in zadnja enačba malce drugačni, namreč

−2y_{1} + y_{2} = h^{2}f(x_{1}) − y_{a}
y_{n−1} − 2y_{n} = h^{2}f(x_{n}) − y_{b}.

Tako dobimo sistem enačb

Ayyyyyyyyy = bbbbbbbbb,  (2)

kjer je

A = [ \begin{matrix}−2 & 1 & 0 & 0 & ⋯ & 0 & 0 \\ 1 & −2 & 1 & 0 & ⋯ & 0 & 0 \\ 0 & 1 & −2 & 1 & ⋯ & 0 & 0 \\ ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ \\ 0 & 0 & 0 & 0 & ⋯ & 1 & −2 \end{matrix} ] ,

bbbbbbbbb = [h^{2}f(x_{1}) − y_{a}, h^{2}f(x_{2}) … h^{2}f(x_{n−1}), h^{2}f(x_{n}) − y_{b}]^{T}

Slika 1: Graf točne rešitve (*) in numerične rešitve za n = 5 (-).

in yyyyyyyyy = [y_{1}, …, y_{m}]^{T} vektor neznanih približkov. Sistem (2) je tridiagonalen, zato ga v primeru, ko je delilnih točk x_{i} zelo veliko (torej, ko je n velik), rešujemo tako, da ne predstavimo cele matrike A, pač pa le njene tri glavne diagonale.

Primer 1 Rešujemo robni problem

y′′(x) = e^{−x} − sin x, y(−1) = 1.8768, y(1) = 1.2093.

Na sliki 1 je narisana analitična rešitev (zvezdice) ter numerična rešitev (polna črta) pri n = 5. Na sliki 2 pa napaka pri n = 5 (zvezdice), n = 10 (krogci) in n = 100 (plusi). Analitična rešitev problema je

y(x) = exp(−x) + sin(x).

Slika 2: Grafi napak pri n = 5 (zvezdice), n = 10 (krožci) in n = 100 (plusi). 3