Файл: Маркова Вычислит методы алгебры Практикум.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 20.09.2025

Просмотров: 1214

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Л.В. Маркова, е.А. Корчевская,

С о д е р ж а н и е

П р е д и с л о в и е

Глава 1 Элементы теории погрешностей п 1.1 Источники погрешностей

П 1.2 Вычисление абсолютной и относительной погрешностей

П 1.3 Округление чисел

П 1.4 Вычисление погрешностей арифметических операций

П 1.5 Оценка погрешности по способу границ

Лабораторная работа № 1

Задание

Глава 2 объектно-ориентированный подход к программированию методов линейной алгебры

П 2.1 Создание матричной иерархии классов

Лабораторная работа № 2

Задание

П 2.2 Создание иерархии классов вычислительных методов алгебры

Лабораторная работа № 3

Задание

Глава 3 решение систем линейных алгебраических уравнений

П 3.1 Метод Гаусса решения систем линейных алгебраических уравнений

Лабораторная работа № 4

Задание

П 3.2 Метод Гаусса с выбором главного элемента для решения систем линейных алгебраических уравнений

Лабораторная работа № 5

Задание

П 3.3 Решение системы линейных алгебраических уравнений методом Жордана-Гаусса

Лабораторная работа № 6

Задание

П 3.4 Метод квадратного корня для решения систем линейных алгебраических уравнений

Лабораторная работа № 7

Задание

П 3.5 Вычисления определителя и нахождения обратной матрицы

Лабораторная работа № 8

Задание

П 3.6 Решение системы линейных алгебраических уравнений методом прогонки

Лабораторная работа № 9

Задание

П 3.7 Метод простых итераций решения систем линейных алгебраических уравнений

Лабораторная работа № 10

Задание

П 3.8 Метод Зейделя решения систем линейных алгебраических уравнений

Лабораторная работа № 11

Задание

П 3.9 Итерационные методы вариационного типа решения систем линейных алгебраических уравнений

Лабораторная работа № 12

Задание

Глава 4 вычисление собственных значений и собственных векторов матриц

П 4.1 Метод Данилевского для нахождения собственных значений и собственных векторов

Лабораторная работа № 13

Задание

П 4.2 Итерационный степенной метод нахождения наибольшего по модулю собственного значения и соответствующего собственного вектора

Лабораторная работа № 14

Задание

П 4.3 qr-алгоритм для нахождения собственных значений матрицы

Лабораторная работа № 15

Задание

П 4.4 Метод Якоби для нахождения собственных значений и собственных векторов

Лабораторная работа № 16

Задание

П р и л о ж е н и я Приложение 1 Основные сведения о матрицах

Функции MathCad

Л и т е р а т у р а

Красоткина вычислительные методы алгебры. Практикум

2 10038, Г. Витебск, Московский проспект, 33.

Умножим первое уравнение на –2 и сложим с третьим уравнением системы, получим:

Разделим второе уравнение на 1/3, получим:

Умножим второе уравнение на 1/3 и сложим с третьим уравнением системы, получим:

Разделим третье уравнение на 5, получим:

Обратный ход.

Из третьего уравнения находим .

Из второго уравнения находим .

Из первого уравнения получаем .

Установим связь метода Гаусса с LU-разложением. Прямой ход метода Гаусса преобразует исходную систему уравнений (1) в эквивалентную систему

UX = g, (11)

где U – верхняя треугольная матрица с единицами на главной диагонали.

Проанализировав соотношения (9), можно записать:

f = Lg, (12)

где L – нижняя треугольная матрица с ненулевыми элементами ,  на главной диагонали. Выразим из последнего уравнения вектор g, получим:

. (13)

Подставляя (13) в (11), получаем

UX =

или

LUX = f. (14)

Сопоставляя (14) и уравнение (2), приходим к выводу, что в результате применения метода Гаусса получено разложение исходной матрицы А в произведение , гдеL – нижняя треугольная матрица с ненулевыми элементами на главной диагонали, U – верхняя треугольная матрица с единичной главной диагональю [19].


Значения элементов матрицы L и U находятся по рекуррентным соотношениям [19]

,

(15)

Таким образом, метод Гаусса можно трактовать следующим образом. Сначала производится разложение матрицы А в произведение двух треугольных матриц L и U, т.е. , а затем последовательно решаются две системы уравнений [19]:

Lg = f,

UX = g.

Решая первую систему (прямой ход), находим вектор g. Одновременно происходит разложение .

В результате решения второй системы (обратный ход) находим решение задачи – вектор X.

Пример 2. Решить систему методом Гаусса, используя LU-разложение:

Решение:

Выполним операцию факторизации. Представим матрицу системы в виде

При k=1:

При k =2:

При k =3:

В результате получены две треугольные матрицы:

, .

 Решим систему линейных уравнений Lg = f. Найдем вектор g:

Решим систему линейных уравнений UX =g. Найдем искомый вектор X:


Пример 3. Реализовать алгоритм LU-разложения для произвольной матрицы.

При описании алгоритма используются объекты класса «SquareMatrix» и методы данного класса: getRowCount (количество строк матрицы), getElement (получение значения элемента) и setElement (установка значения).

Реализация на языке программирования С++ может иметь следующий вид:

void FactorizationAlgorithms :: LU_decomposition (SquareMatrix A, SquareMatrix LU){

int n = A. getRowCount ();

/*Нахождение первого столбца матрицы L и первой строки матрицы U*/

for (int i = 0; i < n; i++){

LU.setElement(i, 0, A.getElement(i, 0));

if ((i+1)<n)

LU.setElement(0,i+1,A.getElement(0,i+1)/LU.getElement(0, 0));

}

/*Вычисление по формулам (15)*/

for (int i = 1; i < n; i++){

for (int j = 1; j < n; j++){

if (i >= j) /*Нижняя треугольная матрица*/

{

double sum = 0;

for (int k = 0; k < j; k++)

sum += LU.getElement(i, k)*LU.getElement(k, j);

LU.setElement(i, j, A.getElement(i, j) - sum);

}

else /*Верхняя треугольная матрица*/

{

sum = 0;

for (int k = 0; k < i; k++)

sum += LU.getElement(i, k)*LU.getElement(k, j);

LU.setElement(i,j,(A.getElement(i,j)-sum)/LU.getElement(i,i));

}

}

}

В результате факторизации имеем квадратную матрицу, в которой на главной диагонали и ниже расположены элементы матрицы L, выше главной диагонали расположены элементы матрицы U. Использование памяти при такой структуре полученной матрицы является оптимальным.

Пример 4. Сформировать на языке программирования С++ алгоритм метода Гаусса на основе факторизации.

При описании алгоритма используются объекты и методы классов «SquareMatrix», «Vector» и «FactorizationAlgorithms».

void DirectMethodsFactorization :: gaussMethod(SquareMatrix A, Vector f){

/*Создание матрицы LU, векторов g и x */

int n = A.getColCount();

SquareMatrix LU = SquareMatrix(n);

Vector x = Vector(n);

Vector g = Vector(n);

/* LU – факторизация. */

FactorizationAlgorithms FA;

FA.LU_decomposition(A, LU);

/* Решение системы Lg = f (прямой ход метода Гаусса), где L– нижняя треугольная матрица с ненулевыми элементами на главной диагонали */

.................................................

/* Решение системы Ux = g (обратный ход метода Гаусса), где U – верхняя треугольная матрица с единичной главной диагональю*/

.................................................

/* Вывод вектора - решения */

}



Лабораторная работа № 4

Цель: изучить метод Гаусса для решения систем линейных алгебраических уравнений. Применить LU-разложение матриц для решения линейных систем методом Гаусса.

Задание

  1. Дополните класс «Алгоритмы факторизации» («FactorizationAlgorithms») методом LU-разложения, используя для построения формулы (15).

  2. Разработайте класс «Алгоритмы решения СЛАУ на основе факторизации» («DirectMethodsFactorization»), который наследуется от класса «Прямые методы решения СЛАУ» («DirectMethods»). Реализуйте в данном классе метод Гаусса на основе LU-разложения по формулам (15).

3. Решите систему линейных алгебраических уравнений методом Гаусса () в соответствии с вариантом.

4. Решите ту же задачу, используя пакет для математических вычислений.

5. Сравните результат выполнения п. 3 с решением, полученным в п. 4.

Варианты заданий

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16