ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 20.09.2025
Просмотров: 1182
Скачиваний: 0
СОДЕРЖАНИЕ
Л.В. Маркова, е.А. Корчевская,
Глава 1 Элементы теории погрешностей п 1.1 Источники погрешностей
П 1.2 Вычисление абсолютной и относительной погрешностей
П 1.4 Вычисление погрешностей арифметических операций
П 1.5 Оценка погрешности по способу границ
Глава 2 объектно-ориентированный подход к программированию методов линейной алгебры
П 2.1 Создание матричной иерархии классов
П 2.2 Создание иерархии классов вычислительных методов алгебры
Глава 3 решение систем линейных алгебраических уравнений
П 3.1 Метод Гаусса решения систем линейных алгебраических уравнений
П 3.2 Метод Гаусса с выбором главного элемента для решения систем линейных алгебраических уравнений
П 3.3 Решение системы линейных алгебраических уравнений методом Жордана-Гаусса
П 3.4 Метод квадратного корня для решения систем линейных алгебраических уравнений
П 3.5 Вычисления определителя и нахождения обратной матрицы
П 3.6 Решение системы линейных алгебраических уравнений методом прогонки
П 3.7 Метод простых итераций решения систем линейных алгебраических уравнений
П 3.8 Метод Зейделя решения систем линейных алгебраических уравнений
П 3.9 Итерационные методы вариационного типа решения систем линейных алгебраических уравнений
Глава 4 вычисление собственных значений и собственных векторов матриц
П 4.1 Метод Данилевского для нахождения собственных значений и собственных векторов
П 4.3 qr-алгоритм для нахождения собственных значений матрицы
П 4.4 Метод Якоби для нахождения собственных значений и собственных векторов
П р и л о ж е н и я Приложение 1 Основные сведения о матрицах
Разделим третье уравнение на 0.696, получим следующую систему:
Сложим третье уравнение с первым и вторым, умножив его на 0.036 и 0.08, получим:
Рассмотрим метод Жордана-Гаусса на основе факторизации.
На первом шаге
исключения матрица системы (2) приводится
к виду
.
Этот шаг эквивалентен
умножению матрицы системы (2) слева на
элементарную нижнюю треугольную
матрицу
.
В результате имеем
систему
.
(3)
На втором шаге
исключения матрица системы (3) приводится
к виду
.
Для этого необходимо
умножить матрицу системы (3) слева на
элементарную нижнюю треугольную матрицу
.
В результате
получим систему
. (4)
Продолжая этот процесс, в итоге приходим к системе
, (5)
где на к-ом
шаге исключения элементарная нижняя
треугольная матрица
имеет вид
.
Исходя из того,
что
,перепишем систему
(5) в виде
.
(6)
Таким образом, правая часть системы (6) представляет собой искомый вектор решения.
Пример 2. Решить с помощью метода Жордана-Гаусса на основе факторизации систему уравнений:
Решение:
Перепишем систему в матричном виде
.
Применим первый
шаг исключения, для этого умножим матрицу
системы слева на матрицу
.
Получим систему
или в развернутом виде
.
Далее применим
второй шаг исключения, для этого матрицу
системы, полученной на предыдущем шаге,
умножим слева на матрицу
.
Имеем систему
или
.
На заключительном
этапе имеем систему
,
где матрица
.
В результате
получим систему
.
Отсюда следует,
что искомый вектор найден
.
Лабораторная работа № 6
Цель: изучить метод Жордана-Гаусса для решения системы линейных алгебраических уравнений.
Задание
1. Реализуйте в классе «DirectMethodsFactorization» метод Жордана-Гаусса («gaussJordanMethod»). Для реализации метода используйте объекты и методы класса «SquareMatrix», «Vector» и «AugmentMatrix». Доступ к элементам осуществляйте с помощью методов getElement и setElement, реализованных в данных классах. Для эффективной реализации метода все необходимые матричные операции производите над объектом класса «AugmentMatrix».
2. Решите систему
линейных алгебраических уравнений
методом Жордана-Гаусса (
)
в соответствии с вариантом.
3. Решите ту же задачу, используя пакет для математических вычислений.
4. Сравните результат выполнения п. 2 с решением, полученным в п. 3.
Варианты заданий
|
№ 1
|
№ 2 |
|
№ 3
|
№ 4 |
|
№ 5
|
№ 6 |
|
№ 7
|
№ 8 |
|
№ 9
|
№ 10 |
|
№ 11 |
№ 12 |
|
№ 13 |
№ 14 |
|
№ 15 |
№ 16 |
П 3.4 Метод квадратного корня для решения систем линейных алгебраических уравнений
Рассмотрим алгоритм метода квадратного корня.
Метод предназначен для решения СЛАУ с симметрическими матрицами.
Пусть надо решить систему
, (1)
где матрица A – вещественная, симметрическая; X – искомый вектор решения; f – вектор правой части системы.
Матрицу A
можно представить в виде
,
где S
– верхняя треугольная матрица, ST
– транспонированная к ней матрица
(нижняя треугольная), D
– диагональная матрица с элементами,
равными +1 или –1.
Значения коэффициентов матрицы S и D находятся по формулам (2), описанным в п 2.2.
Исходную систему
(1) заменяем двумя эквивалентными ей
системами с треугольными матрицами:
.
Решая их, получаем [19; 8]:
(2)
Если матрица А
является симметричной и положительно
определенной, то ее можно представить
в виде произведения
,
S
– верхняя треугольная матрица, ST
– транспонированная к ней матрица
(нижняя треугольная).
Значения коэффициентов матрицы S находятся по формулам (3), описанным в п 2.2.
В этом случае решение системы линейных алгебраических уравнений (1) сводится к последовательному решению двух систем с треугольными матрицами [19; 8]:
(3)
SX = Y. (4)
Т.к.
матрица
системы (3) является нижней треугольной,
то можно сразу выписать ее решение:
(5)
i
=
2, 3, …,
n.
(6)
Определив таким образом вектор Y, можем найти из системы (4) искомое решение. Это решение находим обратным ходом метода Гаусса, т.к. матрица S – верхняя треугольная. Имеем:
,
(7)
i
=
n-1, n-2,
…, 1.
(8)
Пример 1. Решить систему линейных уравнений методом квадратного корня.
Решение:
Матрица системы является симметрической и положительно определенной. Вычислим коэффициенты матрицы S:
Получим
матрицу
.
Вычислим вектор Y:
Находим искомый вектор решения X:
Пример 2. Для системы уравнений с симметрической матрицей описать алгоритм метода квадратного корня, используя STS-разложение.
При описании алгоритма используются объекты и методы классов «SquareMatrix», «Vector» и «FactorizationAlgorithms».
Реализация примера на языке программирования С++ может иметь следующий вид:
void DirectMethodsFactorization ::squareMethod(SquareMatrix A, Vector f){
/*Создание матриц S, вектора X, вектора Y */
int n = A.getRowCount();
SquareMatrix S = SquareMatrix(n);
Vector X = Vector(n);
Vector Y = Vector(n);
/* STS – разложение. В результате факторизации имеем матрицу S – верхнюю треугольную матрицу */
FactorizationAlgorithms FA;
FA. STS_decomposition (A, S);
/* Решение системы STY = f. */
/* Решение системы SX = Y. Матрица S – верхняя треугольная матрица, следовательно искомый вектор решения находим обратным ходом метода Гаусса.*/
X.setElement(n-1,(Y.getElement(n-1)/S.getElement(n-1,n-1)));
for (int i = n-2; i >= 0; i--){
double sum = 0;
for (int j = n-1; j > i; j--){
sum += X.getElement(j) * S.getElement(i, j);
}
X.setElement(i, (Y.getElement(i)-sum)/S.getElement(i, i));
}
// вывод вектора решений
}