Tříbodové diferenční náhrady na neekvidistantní síti

Pro numerické řešení parciálních diferenciálních rovnic metodou přímek nebo metodou konečných objemů
potřebujeme znát odhady derivací v jednotlivých uzlech sítě, tzv diferenční náhrady (formule). Na
ekvidistantní síti jsou tyto náhrady notoricky známé. Jak ale budou náhrady vypadat na ne-ekvidistantní síti?

Hodnoty funkce f(x) v bodech x1, x2 a x3 označíme
f1, f2, f3 a proložíme je kvadratickou funkcí

\displaystyle f(x) \approx ax^2 + bx + c.

Pro nalezení koeficientů a, b a c je třeba vyřešit soustavu lineárních rovnic

\displaystyle \begin{bmatrix} f_1 \\ f_2 \\ f_3 \end{bmatrix} =    a \begin{bmatrix} x_1^2 \\ x_2^2 \\ x_3^2 \end{bmatrix} +    b \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} +    c \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}

nebo také

\displaystyle    \begin{bmatrix} x_1^2 & x_1 & 1 \\ x_2^2 & x_2 & 1 \\ x_3^2 & x_3 & 1  \end{bmatrix}    \begin{bmatrix} a \\ b \\ c \end{bmatrix} =    \begin{bmatrix} f_1 \\ f_2 \\ f_3 \end{bmatrix}

což ve výsledku dává

\displaystyle    \begin{bmatrix} a \\ b \\ c \end{bmatrix} =    \begin{bmatrix} x_1^2 & x_1 & 1 \\ x_2^2 & x_2 & 1 \\ x_3^2 & x_3 & 1  \end{bmatrix}^{-1}    \begin{bmatrix} f_1 \\ f_2 \\ f_3 \end{bmatrix}.

Aproximace první derivace funkce f v bodě x potom bude

\displaystyle f^\prime(x) \approx 2ax + b.

Pro analytické řešení inverzní matice a dosazení do předchozí rovnice lze použít Matlab

syms f1 f2 f3 x1 x2 x3
AA = [x1*x1 x1 1; x2*x2 x2 1; x3*x3 x3 1];
abc = simplify(inv(AA)*[f1;f2;f3])
dfdx1 = simplify(2*abc(1)*x1 + abc(2)) % --- nahrada v bode x1
dfdx2 = simplify(2*abc(1)*x2 + abc(2)) % --- nahrada v bode x2
dfdx3 = simplify(2*abc(1)*x3 + abc(2)) % --- nahrada v bode x3

Výsledkem jsou překvapivě jednoduché formule

\displaystyle f^\prime(x_1) \approx +\left(\frac{f_1-f_2}{x_1-x_2}\right)                       + \left(\frac{f_1-f_3}{x_1-x_3}\right)                       - \left(\frac{f_2-f_3}{x_2-x_3}\right)
\displaystyle f^\prime(x_2) \approx +\left(\frac{f_1-f_2}{x_1-x_2}\right)                       - \left(\frac{f_1-f_3}{x_1-x_3}\right)                       + \left(\frac{f_2-f_3}{x_2-x_3}\right)
\displaystyle f^\prime(x_3) \approx -\left(\frac{f_1-f_2}{x_1-x_2}\right)                       + \left(\frac{f_1-f_3}{x_1-x_3}\right)                       + \left(\frac{f_2-f_3}{x_2-x_3}\right)

Je snadné se přesvědčit, že v případě ekvidistantní sítě

x_1-x_2 = -h \quad x_1-x_3 = -2h \quad x_2-x_3 = -h

se výše uvedené formule zjednoduší do známých tvarů

\displaystyle f^\prime(x_1) \approx \frac{1}{2h}(-3f_1 + 4f_2 - f_3)
\displaystyle f^\prime(x_2) \approx \frac{1}{2h}(-f_1 + f_3)
\displaystyle f^\prime(x_3) \approx \frac{1}{2h}(f_1 -4f_2 + 3f_3)

Pro úplnost je možné uvést odhad druhé derivace, který je na celém rozsahu (x1; x3) konstantní

\displaystyle f^{\prime\prime} \approx 2\frac{-x_1(f_2-f_3) + x_2(f_1-f_3) - x_3(f_1-f_2)}{(x_1-x_2)(x_1-x_3)(x_2-x_3)}

a v případě ekvidistantní sítě

\displaystyle    f^{\prime\prime} \approx \frac{1}{h^2}(f_1 - 2 f_2 + f_3)

Published by

Zdenek Grof

I am administrator of this site.

Leave a Reply

Your email address will not be published. Required fields are marked *