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

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

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

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

Добавлен: 20.09.2025

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

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

}

}

/* Получение значения элемента */

double Vector :: getElement(int i){

return this->elements[i];

}

/* Установка значения элемента */

void Vector :: setElement(int i, double element){

this->elements[i] = element;

}

/* Получение количества строк */

int Vector :: getRowCount(){

return 1;

}

/* Получение количества столбцов */

int Vector :: getColCount(){

return this->size;

}

Пример 3. Реализовать метод для сложения двух квадратных матриц двумя способами: с помощью функции и перегруженного оператора.

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

/* Функция*/

SquareMatrix SquareMatrix :: addition(SquareMatrix A, SquareMatrix B){

int n = this->size;

/*Объявление результирующей матрицы*/

double **C = new double*[n];

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

C[i] = new double[n]; }

/* Вычисление суммы матриц*/

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

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

C[i][j] = A.elements[i][j] + B.elements[i][j];

} }

/* Создание матрицы */

return SquareMatrix(n, C);

}

/* Перегруженный оператор сложения */

SquareMatrix SquareMatrix :: operator +(SquareMatrix B){

int n = this->size;

/* Объявление результирующей матрицы*/

double **C = new double*[n];

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

C[i] = new double[n];

}

/* Вычисление суммы матриц*/

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

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

C[i][j]=this->elements[i][j] + B.elements[i][j];

}

}

/* Создание матрицы */

return SquareMatrix(n, C);

}


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

Цель: изучить иерархию классов. Реализовать иерархию классов для работы с матрицами.

Задание

Реализуйте иерархию матричных классов, приведенную на рис. 1.

Реализуйте конструкторы, функции, методы, необходимые для работы с матрицами.

Для класса «Vector» реализуйте методы сложения, вычитания векторов, скалярного произведения, умножения вектора на число, нахождения длины вектора.

Для класса «SquareMatrix» реализуйте методы: сложение матриц, вычитание матриц, перемножение двух квадратных матриц, перемножение матрицы на вектор, умножение матрицы на число, транспонирования матрицы. Для реализации данных методов можно использовать перегруженные операторы. Реализовать методы для нахождения первой и второй нормы матрицы.

В классе «AugmentMatrix» предусмотрите методы формирования расширенной матрицы: из квадратной матрицы и вектора, из двух квадратных матриц. Реализуйте метод умножения расширенной матрицы на квадратную матрицу.

Ввод матриц организовать двумя способами: с клавиатуры и из файла. Реализовать метод для файлового ввода симметричной матрицы, а именно только ее верхней треугольной части.

Предусмотреть два режима вывода матриц: на экран и в файл.

Продумать и реализовать методы работы с матрицами классов «DiagonalMatrix», «ThreeDiagonalMatrix» и «EMatrix». С целью экономии памяти данные классы хранят только значения ненулевых коэффициентов.

Доступ к элементам осуществить при помощи «геттеров» и «сеттеров».

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

Рассмотрим иерархию классов вычислительных методов алгебры следующего вида:

  • VMA

  • FactorizationAlgorithms

  • LU_decomposition

  • LDU_decomposition

  • STS_decomposition

  • SDS_decomposition

  • QR_decomposition

  • Eigenvalues

  • DirectMethodsE

  • danilevskyMethod

  • IterationMethodsE

  • PartialProblem

  • iterationMethod

  • CompleteProblem

  • jacobiMethod

  • qrMethod

  • SLAU

• DirectMethods

  • DirectMethodsFactorization

  • gaussMethod

  • gaussChooseElement

  • gaussJordanMethod

  • squareMethod

  • DirectMethodsNF

  • sweepMethod

• IterationMethods

  • simpleIterationMethod

  • zeidelMethod

  • methodSkorSpusk

Рис. 2. Объектная классификация методов линейной алгебры.


Вершиной иерархии является базовый класс «VMA».

Класс «FactorizationAlgorithms» содержит методы факторизации.

Класс «Eigenvalues» предназначен для реализации численных методов нахождения собственных значений и собственных векторов матриц. Методы этого класса подразделяются на прямые – «DirectMethodsE» и итерационные – «IterationMethodsE». Класс «IterationMethodsE» разбивается на два производных класса: итерационные методы, применяемые к решению частичной проблемы нахождения собственных значений, им соответствует класс «PartialProblem» и итерационные методы, применяемые к решению полной проблемы нахождения собственных значений – «CompleteProblem».

В классе «SLAU» описаны методы для решения систем линейных алгебраических уравнений. Данные методы подразделяются на прямые и итерационные. В связи с этим выделены классы для реализации прямых методов решения СЛАУ «DirectMethods» и итерационных «IterationMethods». Класс «DirectMethods» разбивается на два производных класса: прямые методы, использующие факторизацию, им соответствует класс «DirectMethodsFactorization» и прямые методы, не использующие факторизацию, – «DirectMethodsNF».

Среди алгоритмов факторизации выделены пять методов: LU, LDU, STS, STDS и QR-разложение.

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

Пусть L – нижняя треугольная матрица с единичной диагональю, а U – верхняя треугольная матрица с ненулевыми диагональными элементами.Значения элементов матрицы L и U находятся по рекуррентным соотношениям:

,

, (1)

LU-разложение, полученное по формулам (1), применяется для построения LDU-разложения.

Пример 1. Для заданной матрицы получить LU-разложение.

Решение:

Воспользуемся рекуррентными формулами (1)


При к=1:

При к=2:

При к=3:

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

, .

LDU-разложение – это представление квадратной матрицы А в виде произведения LDU, где L – нижняя треугольная матрица с единичной диагональю, D – диагональная матрица, а U – верхняя треугольная матрица с единичной диагональю.

, ,.

Элементы рассчитываются по формулам (1).

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

Решение:

В предыдущем примере получены матрицы L и U вида:

, .

Матрица L не изменяется. Матрицу D выделим из матрицы U.

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

,, .

STDS-разложение – это представление симметрической матрицы А в виде произведения матриц ST, D и S, где S – верхняя треугольная матрица, ST – транспонированная к ней матрица (нижняя треугольная), D – диагональная матрица с элементами, равными +1 или –1.

,.


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

(2)

STS-разложение – это представление симметрической положительно определенной матрицы А в виде произведения матриц ST и S, где S – верхняя треугольная матрица, ST – транспонированная к ней матрица (нижняя треугольная).

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

, .

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

(3)

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

Решение:

Матрица А является симметрической и положительно определенной. Воспользуемся формулами (2), получаем:

Таким образом, получили матрицу .

QR-разложение – это представление квадратной матрицы А в виде произведения ортогональной матрицы Q на верхнюю треугольную матрицу R.

QR-разложение может быть получено различными методами. Рассмотрим построение QR-разложения с помощью преобразования Хаусхолдера, которое позволяет обратить в нуль группу поддиагональных элементов столбца матрицы.

Преобразование Хаусхолдера осуществляется с использованием матрицы Хаусхолдера (матрица отражения), имеющей следующий вид [20]:

, (4)

где w – произвольный ненулевой вектор-столбец, E – единичная матрица.

Любая матрица такого вида является симметрической и ортогональной.

Рассмотрим подробнее реализацию данного преобразования. Положим и построим преобразование Хаусхолдера, переводящее матрицув матрицу с нулевыми элементами первого столбца под главной диагональю