Программирование метода сопряженных градиентов с предобуславливателем на основе неполного разложения Холецкого. Работа с разреженными матрицами, включая 5-ти диагональные. Решение уравнения Пуассона, а также исследование метода.
-
Способ хранения разреженной матрицы и операции над ней Реализация эффективного способа хранения разреженных матриц и основных операций с матрицами и векторами. Мною была выбрана система хранения массива списков элементов. Это позволяет экономить память, потому что нулевые элементы не учитываются. Реализация представлена в Sparse.h и Sparse.cpp, а структуры узла и односвязного списка с указателем на конец( для быстрого добавления) представлены в файлах Node.h, Node.cpp, List.h, List.cpp соответсвенно и Iterator.cpp для итератирования по этим объектам.
-
Разложение Холецкого
2.1. Разложение Холецкого для разреженной матрицы Реализация разложения Холецкого, оптимизированного для разреженных матриц.
2.2. Неполное разложение Холецкого A) Неполное разложение Холецкого с нулевым порогом - факторизация с ненулевыми элементами только в тех позициях, что и исходная матрица. Б) Неполное разложение Холецкого с ненулевым порогом – отсекаются элементы меньше порогового значения, исключая диагональные.
Указанные выше разложения представлены в файле Cholesky decomposition/CholeskyDecomposition.cpp.
-
Метод сопряженных градиентов А) Метод сопряженных градиентов без предобуславливателя. Б) Метод сопряженных градиентов с предобуславливателем, использующим неполное разложение Холецкого.
Метод сопряженных градиентов представлен в обоих вариациях в каталоге PreconditionedConjugateGradientsMethod. Предобуславливание реализовано с помощью нижней треугольной матрицы из разложения Холецкого.
- Построение СЛАУ для модельной задачи Создание и решение СЛАУ, отражающей модельную задачу, включая различные варианты в зависимости от исследуемых параметров.
Построение СЛАУ отражено в каталоге PoissonEquation, а также решения задачи Дирихле для уравнения Пуассона методом сопряженных градиентов.
Корректность выполнения отражена в виде тестов в файле Source.cpp
-
Склонируйте репозиторий:
git clone https://github.com/eagerbeaver04/Poisson-equation.git cd ваш-репозиторий
-
Соберите проект:
mkdir build cd build cmake .. make
(или используйте средства IDE)