36 views
# Метод скінченних різниць ![](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} $$ .