Метод релаксации матрицы: Difference between revisions
| [unchecked revision] | [unchecked revision] |
Created page with "== Математическая постановка задачи релаксации матрицы == ''417 группа, ММП ВМК МГУ''<br> ''Овсиенко Ол..." |
No edit summary |
||
| Line 1: | Line 1: | ||
== Математическая постановка задачи релаксации матрицы == | == Математическая постановка задачи релаксации матрицы == | ||
Требуется численно решить краевую задачу для уравнения Лапласа на прямоугольной области: | Требуется численно решить краевую задачу для уравнения Лапласа на прямоугольной области: | ||
| Line 59: | Line 54: | ||
[[Категория:Численные методы]] | [[Категория:Численные методы]] | ||
[[Категория:Методы решения уравнений в частных производных]] | [[Категория:Методы решения уравнений в частных производных]] | ||
Revision as of 21:01, 4 November 2025
Математическая постановка задачи релаксации матрицы
Требуется численно решить краевую задачу для уравнения Лапласа на прямоугольной области:
[math]\displaystyle{ \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} = 0, \quad (x,y) \in \Omega = [0,1] \times [0,1] }[/math]
с граничными условиями Дирихле:
[math]\displaystyle{ u(x,y) = g(x,y), \quad (x,y) \in \partial\Omega, }[/math]
где [math]\displaystyle{ \partial\Omega }[/math] — граница области.
Дискретизация задачи
Вводится равномерная сетка с шагом [math]\displaystyle{ h = \frac{1}{N-1} }[/math]:
[math]\displaystyle{ x_i = i \cdot h, \quad y_j = j \cdot h, \quad i,j = 0, 1, \dots, N-1. }[/math]
Аппроксимируя вторые производные конечными разностями, получаем дискретный аналог уравнения Лапласа для внутренних узлов сетки:
[math]\displaystyle{ \frac{u_{i-1,j} - 2u_{i,j} + u_{i+1,j}}{h^2} + \frac{u_{i,j-1} - 2u_{i,j} + u_{i,j+1}}{h^2} = 0, }[/math]
что после преобразования даёт:
[math]\displaystyle{ u_{i,j} = \frac{u_{i-1,j} + u_{i+1,j} + u_{i,j-1} + u_{i,j+1}}{4}. }[/math]
Итерационный метод решения
Для решения полученной системы линейных уравнений используется метод Якоби (релаксации). На каждой итерации [math]\displaystyle{ k }[/math] новые значения вычисляются как:
[math]\displaystyle{ u_{i,j}^{(k)} = \frac{u_{i-1,j}^{(k-1)} + u_{i+1,j}^{(k-1)} + u_{i,j-1}^{(k-1)} + u_{i,j+1}^{(k-1)}}{4}, }[/math]
где [math]\displaystyle{ i,j = 1, 2, \dots, N-2 }[/math] — индексы внутренних узлов.
Критерий остановки
Итерационный процесс прекращается, когда максимальное изменение между итерациями становится меньше заданной точности:
[math]\displaystyle{ \max_{i,j} |u_{i,j}^{(k)} - u_{i,j}^{(k-1)}| \lt \varepsilon_{\text{max}}. }[/math]
Начальные и граничные условия
В конкретной реализации:
- Граничные условия: [math]\displaystyle{ u_{0,j} = u_{N-1,j} = u_{i,0} = u_{i,N-1} = 0 }[/math]
- Начальное приближение для внутренних точек: [math]\displaystyle{ u_{i,j}^{(0)} = 1 + i + j }[/math]
Контроль корректности
Для верификации результата вычисляется контрольная сумма:
[math]\displaystyle{ S = \frac{1}{N^2} \sum_{i=0}^{N-1} \sum_{j=0}^{N-1} u_{i,j} \cdot (j+1) \cdot (i+1), }[/math]
которая должна совпадать для всех корректных реализаций алгоритма.