# Метод скінченних різниць
![](https://s3.desy.de/hackmd/uploads/upload_79a47a37d36f0c7da677a470ed9a1742.png)
$$ \omega = \{ (x_i, y_j) = (ih_x, jh_y), i=\overline{0,N}, j=\overline{0,M} \} $$
## Різницеві похідні
$$ f(x):\quad f'(x) \approx \dfrac{f(x+dx) - f(x)}{dx} $$
Функція $$ u(x) $$ задана на відрізку $$ x \in [0, l] $$
$$ \omega = \{ x_i = ih, i = \overline{0,N} \} $$
Правостороння різницева похідна:
$$ (\partial_x u)_i = \dfrac{u_{i+1} - u_i}{h} $$
Лівостороння різницева похідна:
$$ (\partial_x u)_i = \dfrac{u_{i} - u_{i-1}}{h} $$
Центральна різницева схема:
$$ (\partial_x u)_i = \dfrac{u_{i+1} - u_{i-1}}{2h} $$
Оцінимо похибку:
$$ u_{i+1} = u_i + h (\partial_x u)_i + \dfrac{h^2}{2} [(\partial_x^2 u)_i]^2 + \dfrac{h^3}{6} [(\partial_x^2 u)_i]^3 + \ldots $$
Для правої різницевої схеми звідси випливає наближення:
$$ (\partial_x u)_i \approx \dfrac{u_{i+1} - u_i}{h} - \dfrac{h}{2} [(\partial_x^2 u)_i]^2 = \dfrac{u_{i+1} - u_i}{h} + O(h) $$
Для центральнорізницевої схеми:
$$ u_{i-1} = u_i - h (\partial_x u)_i + \dfrac{h^2}{2} [(\partial_x^2 u)_i]^2 - \dfrac{h^3}{6} [(\partial_x^2 u)_i]^3 + \ldots $$
$$ u_{i+1} - u_{i-1} = 2 h (\partial_x u)_i + \dfrac{h^3}{3} [(\partial_x^2 u)_i]^3 + \ldots $$
Звідси
$$ (\partial_x u)_i \approx \dfrac{u_{i+1} - u_{i-1}}{2h} - \dfrac{h^2}{3} [(\partial_x^2 u)_i]^3 = \dfrac{u_{i+1} - u_{i-1}}{2h} + O(h^2) $$
Друга похідна по x:
$$ (\partial_x^2 u)_i = \dfrac{(\partial_x u)_{i+1} - (\partial_x u)_{i-1}}{2h} = \dfrac{u_{i+1} - 2u_i + u_{i-1}}{h^2} + O(h^2) $$
Задано
$$ f(x) = p(x) \partial_x u $$
де p відома функція
$$ (\partial_x f)_i = \dfrac{f_{i+1/2} - f_{i-1/2}}{h} $$
$$ f_{i+1/2} \approx p_{i+1/2} \dfrac{u_{i+1} - u_i}{h}, \quad f_{i-1/2} \approx p_{i-1/2} \dfrac{u_{i} - u_{i-1}}{h} $$
// Підставити останні вирази до f'(x) та отримати фінальинй вираз
## Похідні на краях відрізка
Похідна в першому вузлі сітки (ліворуч):
$$ (\partial_x u)_0 = \dfrac{a u_0+ b u_1 + c u_2}{h} $$
Значення функції у вузлах, наступних за найпершим:
$$ u_1 = u_0 + h (\partial_x u)_0 + \dfrac{h^2}{2}(\partial_x^2 u) + \ldots $$
$$ u_2 = u_0 + (2h) (\partial_x u)_0 + 2h^2(\partial_x^2 u) + \ldots $$
Підставимо у вираз для похідної:
$$ \dfrac{a u_0+ b u_1 + c u_2}{h} \approx \dfrac{1}{h} (a u_0 + bu_0 + bh (\partial_x u)_0 + b\dfrac{h^2}{2}(\partial_x^2 u) + cu_0 + c(2h) (\partial_x u)_0 + c2h^2(\partial_x^2 u)) $$
$$ = \dfrac{u_0(a+b+c) + (\partial_x u)_0\times(b+2c)h + (\partial_x^2 u)\times (b/2 + 2c)h^2}{h} $$
Для збереження другого порядку точності обрахунку необхідне виконання умов:
$$ a +b +c = 0,\quad b + 2c = 1, \quad b + 4c = 0 $$
$$ a = -3/2,\quad b = 2,\quad c = -1/2 $$
$$ (\partial_x u)_0 = \dfrac{-3 u_0+ 4 u_1 - u_2}{2h} + O(h^2) $$
## Складні геометрії
![](https://s3.desy.de/hackmd/uploads/upload_20537e8962d04cf97ae23995c9d5ecb8.png)
Задача Диріхле:
$$ u(\partial \Omega) = f(x, y) $$
$$ f(\vec{r} = (\delta,j)) = u_{-1,j}\times (h_x - \delta) + u_{0,j}\times \delta $$
Звідси виражаемо значення функції у вузлі поза межами сітки:
$$ u_{-1,j} = \dfrac{f_{\delta,j}-u_{0,j}\times \delta}{h_x - \delta} $$
## Рівняння Пуассона
$$ \partial_{xx}u = f(x), \quad x \in [0, L],\quad u(0) = \mu_0,\quad u(L) = \mu_1. $$
Значення функції f у вузлі під номером i може бути представлене як
$$ f_i = f(x_i) $$
$$ f_i = \dfrac{1}{h} \int_{x_i - h/2}^{x_i + h/2} f(x)dx $$
тощо
Записуємо рівняння у термінах різницевих похідних:
$$ \dfrac{u_{i+1} - 2u_i + u_i}{h^2} = f_i $$
Повна система рівнянь:
$$ u_{i+1} - 2u_i + u_{i-1} = h^2f_i, \quad i = \overline{1,N-1} $$
$$ u_0 = \mu_0,\quad u_N = \mu_1 $$
Перепишемо систему у вигляді матрично-векторного рівняння:
$$ u_0 - 2u_1 + u_2 = h^2 f_1 \Rightarrow -2 u_1 + u_2 = h^2f_1 - \mu_0 $$
$$ u_1 - 2u_2 + u_3 = h^2 f_2 $$
$$ u_2 - 2u_3 + u_4 = h^2 f_3 $$
...
Скомбінуємо ці вирази у вигляді матрично-векторного добутку Au = f:
$$ \vec{u}^T = (u_1, u_2, u_3, \ldots u_{N-1}) $$
$$ \vec{f}^T = h^2 (f_1 - \mu_0/h^2, f_2, f_3, \ldots f_N - \mu_1/h^2) $$
$$ A = \begin{pmatrix} -2 & 1 & 0 & ... & 0 & 0\\
1 & -2 & 1 & 0 & ... & 0 \\
...\\
0 & 0 & 0 & ... & 1 & -2
\end{pmatrix} $$
.