Задачи

Задача 1: Решение системы линейных уравнений с трехдиагональной матрицей

Написать программу, которая решает систему линейных уравнений для трехдиагональной (\( a_{ij} = 0 \) при \( |i - j| > 1 \)) \( n\times n \)-матрицы на основе \( LU \)-разложения. Написать следующие тестовые функции:

1. Найти решение уравнения с $$ a_{ii} = 2, \quad a_{ii-1} = a_{ii+1} = -1 $$ при правой части \( b_i = 2h^2 \), \( h = 1/n \), \( i = 1, 2, \ldots, n-2 \), \( b_0 = -h(1-h) \), \( b_{n-1} = h(n+(2-n^2)h) \) и сравнить его с точным решением \( x_i = ih(1-ih) \), \( i = 0, 2, \ldots, n-1 \).

2. Вычислить определитель матрицы и сравнить его значение с точным \( n+1 \).

Подсказка.

Трехдиагональная матрица \( A \) задается тремя диагоналями: $$ d_i = a_{ii}, \quad e_i^{u} = a_{ii+1}, \quad e_i^{l} = a_{ii-1}. $$ В модуле функция (например, lu3) выполняет \( LU \)-разложение матрицы \( A \) и возвращает результат в виде трех диагоналей. Для решения системы используется другая функция (например, solve_lu3).

Задача 2: Метод Гаусса с частичным выбором ведущего элемента

Написать модуль, который реализует идеи частичного выбора ведущего элемента из раздела Выбор ведущего элемента. Функция для \( LU \)-разложения должна выводить, кроме самого разложения, еще и вектор, определяющий матрицу перестановок. Напишите тестовые функции для проверки выполнения \( LU \)-разложения и решения системы уравнений с матрицей $$ A = \begin{bmatrix} 3 & 17 & 10 \\ 2 & 4 & -2 \\ 6 & 18 & -12 \end{bmatrix} $$

Задача 3: Разложение Холецкого

Написать программу, реализующую разложение Холецкого \( A = GG^T \) для симметричной положительно определенной матрицы \( A \) и вычисляющей определитель матрицы на основе этого разложения. Найти разложение Холецкого и определитель матрицы Гильберта, для которой $$ a_{ij} = \frac{1}{i + j - 1}, \quad i = 1, 2, \ldots, n, \ j = 1, 2, \ldots, n $$ при \( n = 4 \).

Задача 4: Метод Якоби

Написать программу, реализующую метод Якоби с использованием циклов Python (функция jacobi) и с векторизованными вычислениями (функция jacobi_vec). Сравнить время выполнения этих функций. Написать тестовые функции, проверяющие работу функции jacobi.

Задача 5: Метод Зейделя

Написать программу, реализующую метод Зейделя (функция seidel). Написать тестовые функции, проверяющие работу функции seidel.

Задача 6: Сравнение методов Якоби и Зейделя

Используя функции из Задача 4: Метод Якоби и Задача 5: Метод Зейделя, найти решение задачи системы \( Ax = b \) с трехдиагональной матрицей \( A \), в которой $$ a_{ii} = 2,\quad a_{ii+1} = -1-\alpha, \quad a_{ii-1} = -1+\alpha, \quad i = 1,2 \ldots, n - 1, $$ $$ a_{00} = 2, \quad a_{01} = -1 - \alpha, \quad a_{n-1 n} = -1 + \alpha, \quad a_{nn} = 2, $$ а правая часть $$ b_0 = 1 - \alpha, \quad b_i = 0, \quad i = 1, 2, \ldots, n-1, \quad b_n = 1+\alpha, $$ определяет точное решение \( x_i = 1 \), \( i = 1, 2, \ldots, n \). Сравнить скорости сходимости (число итераций) методов Якоби и Зейделя при различных параметрах \( n \) и \( \alpha \) при \( 0 \leqslant \alpha \leqslant 1 \). Для этого построить график зависимости числа итераций \( K \) от \( n \) при фиксированном \( \alpha \), а также график зависимости числа итераций \( K \) от \( \alpha \) при фиксированном \( n \).

Задача 7: Метод верхней релаксации

Написать программу, реализующую приближенное решение системы линейных алгебраических уравнений методов релаксации из Последовательная верхняя релаксация. Написать тестовые функции. Исследовать графически зависимость скорости сходимости этого итерационного метода от итерационного параметра \( \omega \) при численном решении системы уравнений из Задача 6: Сравнение методов Якоби и Зейделя при различных параметрах \( n \) и \( \alpha \).

Задача 8: Метод сопряженных градиентов

С помощью метода сопряженных градиентов (файл cg.py) найти решение системы \( Ax = b \) с матрицей Гильберта из задачи Задача 3: Разложение Холецкого и правой частью $$ b_i = \sum_{j = 1}^n a_{ij}, \quad i = 1, 2, \ldots, n, $$ для которой точное решение есть \( x_i = 1 \), \( i = 1, 2, \ldots, n \). Построить график зависимости числа итераций от \( n \).