Курсовая работа: Итерационный метод вращений Якоби
Целью данной работы является изучение метода вращений, применение данного метода для вычисления собственных значений и собственных векторов симметричной матрицы и реализация этого метода на ЭВМ.
Дата добавления на сайт: 14 февраля 2025
Реферат
Целью данной работы является изучение метода вращений, применение данного метода для вычисления собственных значений и собственных векторов симметричной матрицы и реализация этого метода на ЭВМ.
Пояснительная записка к курсовому проекту состоит из двух основных частей: теоретической и практической. В первой части рассматривается сущность метода Данилевского. Практическая часть содержит разработку программного кода для вычисления собственных значений и собственных векторов матрицы на языке программирования С Sharp.
При написании пояснительной записки было использовано 7 литературных источников.
Перечень ключевых слов: собственные значения, собственные вектора, вращение Якоби, симметричная матрица.
Содержание
Введение
. Теоретическая часть
.1 Собственные значения и собственные вектора матрицы
.2 Итерационный метод вращений Якоби решения симметричной полной проблемы собственных значений
.3 Метод вращений Якоби
.4 Решение обобщенной проблемы собственных значений
. Практическая часть
.1 Пример решения
.2 Реализация на ЭВМ
Заключение
Список литературы
Приложение 1. Листинг программы
Приложение 2. Пример результата работы программы
Введение
Целый ряд инженерных задач сводится к рассмотрению систем уравнений, имеющих единственное решение лишь в том случае, если известно значение некоторого входящего в них параметра. Этот особый параметр называется характеристическим, или собственным значением системы. С задачами на собственные значения инженер сталкивается в различных ситуациях. Так, для тензоров напряжений собственные значения определяют главные нормальные напряжения, а собственными векторами задаются направления, связанные с этими значениями. При динамическом анализе механических систем собственные значения соответствуют собственным частотам колебаний, а собственные вектора характеризуют моды этих колебаний. При расчете конструкций собственные значения позволяют определять критические нагрузки, превышение которых приводит к потере устойчивости. Выбор наиболее эффективного метода определения собственных значений или собственных векторов для данной инженерной задачи зависит от ряда факторов, таких, как тип уравнений, число искомых собственных значений и их характер. Алгоритмы решения задач на собственные значения делятся на две группы. Итерационные методы очень удобны и хорошо приспособлены для определения наименьшего и наибольшего собственных значений. Методы преобразований подобия несколько сложней, зато позволяют определить все собственные значения и собственные векторы. В данной работе будет рассмотрен метод вращений Якоби. Однако сначала приведем некоторые основные сведения из теории матричного и векторного исчислений, на которых базируются методы определения собственных значений.
1. Теоретическая часть
.1 Собственные значения и собственные вектора матрицы
Рассмотрим квадратную матрицу n-ого порядка:

Собственные значения li


E - единичная матрица,

Матрица



Определитель этой матрицы называется характеристическим или вековым определителем и равен:

В развернутом виде он является многочленом n-ой степени относительно l, т.к. при вычислении этого определителя произведение элементов главной диагонали дает многочлен со старшим членом


и называется характеристическим многочленом. Корни


Ненулевой вектор


т.е. произведение матрицы A на вектор X и произведение характеристического числа l на вектор X есть один и тот же вектор. Каждому собственному значению


Для определения координат собственного вектора составляется характеристическое уравнение:


Определитель этой системы равен нулю, т.к. из этого условия были определены собственные значения матрицы A. Следовательно, система имеет бесконечное множество решений. Ее можно решить с точностью до постоянного множителя (как систему однородных уравнений). Решив эту систему, мы найдем все координаты собственного вектора X. Подставляя в систему однородных уравнений поочередно

.2 Итерационный метод вращений Якоби решения симметричной полной проблемы собственных значений
матрица вектор эрмитовый итерационный
Метод вращений применим к эрмитовым матрицам с комплексными элементами. Для простоты рассмотрим частный случай эрмитовых матриц - действительных симметричных.
Известно, что всякая симметричная действительная матрица


где




Так как для ортогональной матрицы обратная матрица совпадает с транспонированной матрицей:


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


где




Естественно предполагать, что коэффициенты



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


За меру близости матрицы


Пусть с помощью преобразования подобия с ортогональными матрицами построена последовательность матриц:


Таких процессов может быть построено большое число. Рассмотрим метод вращений. Он достаточно прост по вычислительной схеме и обладает быстрой сходимостью.
.3 Метод вращений Якоби
В методе вращений последовательность матриц строится с помощью ортогональной матрицы вращения:

Матрица вращений



Предположим, что преобразования доведены до шага номера








Введем обозначения:

Ввиду особой структуры матрицы









Аналогично строки матрицы








Равенства (9) и (10) позволяют несложно вычислить коэффициенты


которые в силу равенства


Сейчас назначим в выражении (11) такое значение угла



из которого находим значение угла

Убедимся, что полученная таким образом матрица








так как


Тогда на основании выражения (13) верно неравенство:

Следовательно, мера

Оценим скорость стремления к нулю величины

По выбору элемента


и, следовательно,

С помощью этого неравенства из выражения (13) получается

где

Пусть значение



Так как




Отсюда следует, что


Рассмотренный метод преобразования подобия с ортогональной матрицей требует выбора среди недиагональных элементов преобразуемой матрицы наибольшего по модулю. Для этого необходимо выполнить приблизительно

Существуют и другие методы выбора наибольшего по модулю элемента, предназначенного для исключения. Например, можно выбрать наибольшую из сумм (5). Если это есть





.4 Решение обобщенной проблемы собственных значений
Определение 1. Пусть








Определение 2. Матрица


Если матрица



Решение ряда задач сводится к обобщенной проблеме собственных значений с симметричными действительными положительно определенными матрицами



Тогда все собственные числа обобщенной проблемы положительны (неотрицательны).
Сведение обобщенной проблемы собственных значений с симметричными матрицами к стандартной проблеме собственных значений


Отметим, что обобщенная проблема собственных значений с симметричными действительными положительно определенными матрицами возникает, например, при определении собственных частот линейных колебательных систем с распределенными параметрами вариационными методами математической физики, в том числе методом конечных элементов. При анализе частот собственных колебаний конструкции необходимо решать уравнение (1), в котором искомая величина




Среди методов решения обобщенной проблемы собственных значений с симметричными матрицами одно семейство методов состоит в сведении проблемы к стандартной проблеме собственных значений с симметричной матрицей. Рассмотрим два метода этого семейства, в которых применяются теоретические результаты вычислительной математики, изложенные ранее.
Рассмотрим первый метод. С помощью преобразования подобия представим в уравнении (1) матрицу


где













Единственное и решающее использование этого свойства в рассматриваемом методе - свойство положительной определенности матрицы


Матрицы


Согласно формуле (3) подставим матрицу


Умножая полученное равенство слева на матрицу


Представим

и, подставляя это выражение в уравнение (4), приведем его сначала к виду

а затем запишем так

Уравнение (6) можно представить в стандартном виде

где


Так как в уравнении (7) матрица



где


На основании выражений (7), (8) запишем равенство

из которого следует

где


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





Собственные векторы проблемы (7) связаны с векторами исходной проблемы (1) соотношением (5).
Рассмотрим второй метод. Представим матрицу


где

Подставляя выражение (10) для матрицы



Затем, подставляя в это уравнение


где

Так как в уравнении (11) матрица


Замечания. 1. Если собственные числа или собственные векторы матрицы найдены недостаточно точно, то их можно уточнить существующими методиками уточнения отдельного собственного значения и соответствующего собственного вектора.
. Разработаны методы уточнения приближенного решения полной проблемы собственных значений.
. Разработаны методики ускорения сходимости при решении проблем собственных значений как частичных, так и полной.
2. Практическая часть
.1 Пример решения
Найти собственные значения и собственные вектора для матрицы
. Положим .
. Выделим максимальный по модулю элемент в над диагональной части: . Так как , то процесс продолжается.
3. Находим угол поворота:

. Сформируем матрицу вращения:

. Выполним первую итерацию:

Положим и перейдем к пункту 2.
(1). Максимальный по модулю над диагональный элемент
Так как , процесс продолжается.
(1). Найдем угол поворота:

(1). Сформируем матрицу вращения:

(1). Выполним вторую итерацию:

Положим и перейдем к пункту 2.
(2) Максимальный по модулю над диагональный элемент
.
(2). Найдем угол поворота:

(2). Сформируем матрицу вращения

(2). Выполним третью итерацию и положим и перейдем к пункту 2:

(3). Максимальный по модулю над диагональный элемент
(3). Найдем угол поворота:

(3). Сформируем матрицу вращения:

(3). Выполним четвертую итерацию и положим и перейдем к пункту 2:

(4). Так как , процесс повторяется
(4). Найдем угол поворота

(4). Сформируем матрицу вращения:

(4). Выполним пятую итерацию и положим и перейдем к пункту 2:

(5). Так как наибольший по модулю над диагональный элемент удовлетворяет условию , процесс завершается.
Собственные значения:

Для нахождения собственных векторов вычислим

отсюда

или после нормировки

.2 Реализация на ЭВМ
Алгоритм метода вращений
1) Положить и задать .
) Выделить в верхней треугольной над диагональной части матрицы максимальный по модулю элемент .
Если для всех , процесс завершить. Собственные значения определяются по формуле
.
Собственные векторы находятся как i-e столбцы матрицы, получающейся в результате перемножения:


Если , процесс продолжается.
) Найти угол поворота по формуле.
) Составить матрицу вращения .
) Вычислить очередное приближение
Положить и перейти к пункту 2.
Замечания:
Используя обозначение
,
можно в пункте 3 алгоритма вычислять элементы матрицы вращения по формулам


Контроль правильности выполнения действий по каждому повороту осуществляется путем проверки сохранения следа преобразуемой матрицы.
Заключение
При выполнении данной курсовой работы был изучен метод вращения Якоби решения симметрически полной проблемы собственных значений.
Этот метод при небольших размерах матриц дает неплохие результаты, и позволяет с большой точностью вычислять собственные пары. При больших размерах матриц реализация метода наталкивается на существенные потери машинных ресурсов (из-за необходимости поиска максимального элемента матрицы, и перемножения матриц большой размерности). Так же резко сужает возможность применить данный метод на практике то, что он может быть применен только к симметрическим, вещественным матрицам. Ввиду вышесказанного, этот метод на практике применяется редко, чаще применяется циклический метод Якоби с барьерами. Скорость сходимости которого так же асимптотически квадратичная.
Список литературы
Бахвалов Н.С. Численные методы. М.: Наука, 1987. 600 с.
Бусленко H. П., Голенко Д.И., Соболь И.М., Срагович В.Г., Шрейдер Ю.А.. Метод статистических испытаний (метод Монте-Карло). М.: Физматгиз, 1962. 332 с.
Бусленко Н.П., Шрейдер Ю.А. Метод статистических испытаний (Монте-Карло) и его реализация на цифровых вычислительных машинах. М.: Государственное издательство физико-математической литературы, 1961. 226 с.
Демидович Б.П., Марон И.А. Основы вычислительной математики. М.: Наука, 1966. 664 с.
Ермаков С.М. Метод Монте-Карло и смежные вопросы. М.: Наука, 1975. 294 с.
Калиткин Н.Н. Численные методы. М.: Наука, 1978. 512 с.
Копчёнова Н.В., Марон И.А. Вычислительная математика в примерах и задачах. М.: Наука, 1972. 368 с.
Приложение 1. Листинг программы
using System;System.Collections.Generic;System.Linq;System.Text;Числаки
{RotationMethod
{static double Max(double[,] matrix, out int index_i, out int index_j)
{_i = 0;_j = 1;max = Math.Abs(matrix[1,0]);(int i = 0; i max)
{= Math.Abs(matrix[i, j]);_i = i;_j = j;
}max;
}static double[,] CreateRotationMatrix(int rows, int columns, int i, int j, double cos_phi, double sin_phi)
{[,] matrix_h = new double[rows, columns];_h[i,i] = cos_phi;_h[j,j] = cos_phi;_h[i,j] = - sin_phi;_h[j,i] = sin_phi;(int k = 0; k eps)
{++;= Max(matrix_a, out i, out j);.WriteLine("Max={0:0.###},\ti={1:0.###},\tj={2:0.###}", max, i, j);_phi = Math.Sqrt(0.5 * (1 + 1 / Math.Sqrt(1 + (2 * matrix_a[i, j] / (matrix_a[i, i] - matrix_a[j, j])) * (2 * matrix_a[i, j] / (matrix_a[i, i] - matrix_a[j, j])))));_phi = Math.Sqrt(0.5 * (1 - 1 / Math.Sqrt(1 + (2 * matrix_a[i, j] / (matrix_a[i, i] - matrix_a[j, j])) * (2 * matrix_a[i, j] / (matrix_a[i, i] - matrix_a[j, j])))));.WriteLine("Cos_phi={0}\tSin_phi={1}", cos_phi, sin_phi);_h = "Матрица H_" + count + ":";_h = CreateRotationMatrix(matrix_a.GetLength(0), matrix_a.GetLength(1), i, j, cos_phi, sin_phi);(title_h, matrix_h);_a = "Матрица A_" + count + ":";_a = Multiply(Multiply(Transpose(matrix_h), matrix_a), matrix_h);(title_a, matrix_a);_vector = Multiply(matrix_vector, matrix_h);
}(int l = 0; l < vector_eigenvals.GetLength(0); l++)_eigenvals[l] = matrix_a[l, l];vector_eigenvals;
}void PrintMatrix(string header, Array matrix)
{i = 0;.WriteLine();.WriteLine(header);(object x in matrix)
{(i == matrix.GetLength(1))
{.WriteLine();= 0;
}++;.Write("{0,11:0.#######}", x);
}.WriteLine();.WriteLine();
}void PrintVector(string header, string index, Array vector)
{i = 1;.WriteLine();.WriteLine(header);(object x in vector)
{.WriteLine("{0,6}[{1}]={2}", index, i, x);++;
}
}void Main()
{
{[,] matrix = { { 5, 1, 2 }, { 1, 4, 1 }, { 2, 1, 3 } };eps = 1e-3;[,] matrix_vector = new double[matrix.GetLength(0), matrix.GetLength(1)];[] vector_eigenvals = new double[matrix.GetLength(0)];("Исходная матрица:", matrix);_eigenvals = Rotation(matrix, eps, out matrix_vector);("Собственные значения", "lambda", vector_eigenvals);("Собственные вектора:", matrix_vector);
Console.ReadLine();
}(Exception e)
{.WriteLine(e.Message);.ReadLine();
}
}
}
}
Приложение 2. Пример результата работы программы