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

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

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

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

Добавлен: 20.09.2025

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

Скачиваний: 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.

.

Для этого построим вектор [20]:

(5)

где.

Матрица Хаусхолдера строится согласно формуле (4)

.

Тогда легко проверить, что

. (6)

Для того чтобы обнулить поддиагональные элементы второго столбца матрицы , выберем вектор w2 так, что

,

где .

Тогда лежащие ниже главной диагонали элементы двух первых столбцов матрицы обратятся в нуль.

Продолжая этот процесс с помощью векторов wi , имеющих нули в первых i-1 позициях, получаем:

, (7)

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

Положим

. (8)

Тогда можно записать, что .

Так как каждая матрица ортогональна, то и их произведение Q также будет ортогональной матрицей. Следовательно, .

Тогда имеет место соотношение, которое и представляет собой QR-разложение матрицы A.

Пример 4. Дана матрица . Получить ее QR-разложение.


Решение:

Выберем вектор согласно формуле (5):

,

где , .

Тогда .

Построим матрицу согласно формуле (6):

,

.

Выберем вектор по формуле (5):

,

где , .

Тогда .

Построим матрицу по формуле (6):

,

.

Построим матрицу Q согласно формуле (8):

,

.

Убедимся, что матрица Q – ортогональна.

.

Построим верхнюю треугольную матрицу R по формуле (7):

,

.

Получаем решение:

, .


Пример 5. Реализовать алгоритм STS-разложения для произвольной симметрической матрицы.

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

void FactorizationAlgorithms:: STS_decomposition (SquareMatrix A, SquareMatrix S) {

for (int i = 0; i < A. getRowCount(); i++) {

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

double sum = 0;

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

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

}

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

}

double temp = A.getElement(i, i);

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

temp -= S.getElement(k, i) * S.getElement(k, i);

}

S.setElement(i, i, sqrt(temp));

}

}

Пример 6. Реализовать следующую иерархию классов.

  • VMA

  • FactorizationAlgorithms

  • LU_decomposition

  • LDU_decomposition

  • STS_decomposition

  • SDS_decomposition

  • QR_decomposition

  • Eigenvalues

  • DirectMethodsE

  • IterationMethodsE

  • SLAU

  • DirectMethods

  • IterationMethods

Реализуем пример на языке программирования С++

/* Базовый класс «ВМА» */

class VMA{

public:

VMA(){};

};

/*Класс «Алгоритмы факторизации» */

class FactorizationAlgorithms : public VMA{

public:

FactorizationAlgorithms(){};

/* LU разложение */

void LU_decomposition(SquareMatrix A, SquareMatrix LU);

/* LDU разложение*/

void LDU_decomposition (SquareMatrix A, SquareMatrix L, DiagonalMatrix D, SquareMatrix U);

/* STS разложение*/

void STS_decomposition (SquareMatrix A, SquareMatrix S);

/* SDS разложение */

void SDS_decomposition (SquareMatrix A, SquareMatrix S, SquareMatrix D);

/* QR разложение */

void QR_decomposition (SquareMatrix A, SquareMatrix Q, SquareMatrix R);

};

/* Класс «Собственные значения» */

class Eigenvalues : public VMA{

public:

Eigenvalues (){};

};

/* Класс «Прямые методы нахождения собственных значений»*/

class DirectMethodsE : public Eigenvalues {

public:

DirectMethodsE(){};

};

/* Класс «Итерационные методы нахождения собственных значений»*/

class IterationMethodsE : public Eigenvalues {

public:

IterationMethodsE (){};

};

/* Класс «Системы линейных алгебраических уравнений» */

class SLAU : public VMA{

public:

SLAU(){};

};

/* Класс «Прямые методы решения СЛАУ» */

class DirectMethods : public SLAU{


public:

DirectMethods(){};

};

/* Класс «Итерационные методы решения СЛАУ» */

class IterationMethods : public SLAU{

public:

IterationMethods(){};};


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

Цель: изучить иерархию классов, представленную на рис. 2. Реализовать иерархию классов вычислительных методов алгебры. Изучить методы факторизации. Реализовать методы для LU-, LDU-, STDS - , STS и QR-разложения.

Задание

Разработайте базовый класс «VMA» с производными от него классами – «Алгоритмы факторизации» («FactorizationAlgorithms»), «СЛАУ» («SLAU»), «Собственные значения» («Eigenvalues»).

От класса «Eigenvalues» наследуйте 2 класса – «Прямые методы нахождения собственных значений» («DirectMethodsE») и «Итерационные методы нахождения собственных значений» («IterationMethodsE»).

От класса «СЛАУ» наследуйте 2 класса – «Прямые методы решения СЛАУ» («DirectMethods») и «Итерационные методы решения СЛАУ» («IterationMethods»).

В классе «FactorizationAlgorithms» реализуйте методы для LU-, LDU-, STS-, STDS и QR-разложения (LU_decomposition, LDU_decomposition, STS_decomposition, SDS_decomposition, QR_decomposition).

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

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

В главе 3 рассматриваются методы решения систем линейных алгебраических уравнений. К решению таких систем приводят многие прикладные задачи. Наряду с проблемой решения неоднородной системы линейных алгебраических уравнений в данной главе будет изучена проблема обращения матриц, а также задача вычисления определителя матрицы.

Линейная неоднородная задача для систем линейных алгебраических уравнений (СЛАУ) записывается в виде [19; 8]

АХ = f или , (1)

где  действительная матрица размера (n*n), i, j  переменные, соответствующие номерам строк и столбцов (целые числа);  вектор-столбец,  вектор-столбец неизвестных, n-мерное евклидово пространство, верхний индекс «T» обозначает операцию транспонирования.