Фундаментальная тема 🙂 Написал программу-блокнот, реализующую метод взвешенных невязок в Mathematica. Получилось довольно интересно, есть простор для экспериментов по изменению тестовой и весовой функции.
Метод взвешенных невязок: Алгоритм
- Выбор пробной функции с коэффициентом
( или с набором коэффициентов, которые надо подобрать для более точной аппроксимации решения).
- Определение невязки.
- Выбор весовой функции.
- Определение взвешенной невязки.
- Определение коэффициентов пробной функции, из условия равенства нулю взвешенной невязки.
Задача для решения методом взвешенных невязок
Для примера, берем задачу из книги Kwon, Bang «The Finite Element Method Using MATLAB» (стр. 31).
Метод взвешенных невязок в Mathematica
Скачать блокнот:
На сайте интегралы не выведутся, поэтому текст привожу в виде картинки:

По тексту. В первых трех строках определяется функция невязки, далее выбирается тестовая функция с параметром и затем вычисляется невязка при подстановке тестовой функции.
Далее реализуются три метода сначала — метод коллокации, затем метод наименьших квадратов и метод Галёркина. Для коллокации точка семплирования . Для каждого из этих методов — устанавливается своя весовая функция, а тестовая функция остается та же самая. Вычисляется взвешенная невязка — интеграл по области решения задачи от произведения весовой функции на невязку. Интегрирование производится по
, но у нас в выражение под интегралом входит параметр тестовой функии
. Поэтому после интегрирования имеем функцию от
. Затем выражение взвешенной невязки приравнивается к нулю и определяется параметр
. Таким образом тестовая функция становится определенной функцией только одного аргумента
.
