Главная > Математика > Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

2.5. Вычисление собственных значений матриц

По определению, известному из линейной алгебры, собственными значениями квадратной матрицы А называются числа X, удовлетворяющие соотношению

где собственный вектор матрицы.

Перенесем в соотношении (2.12) все слагаемые в левую часть

Тогда, считая, что ненулевой вектор, получим

Последнее уравнение является алгебраическим уравнением порядка и называется характеристическим.

Методы вычисления собственных значений матриц делятся на два класса - прямые и итерационные.

К прямым методам относятся такие методы, на первом этапе которых получают характеристическое уравнение в аналитическом виде или определяют алгоритм вычисления его левой части, на втором этапе - решают характеристическое уравнение одним из численных методов.

Сущность итерационных методов заключается в том, что исходную матрицу А путем преобразований подобия [39], не изменяющих ее собственных значений, приводят к диагональному или треугольному виду. Тогда диагональные элементы преобразованной матрицы и будут собственными значениями матрицы А.

Рассмотрим блок-схему программы одного из возможных вариантов прямого метода вычисления собственных значений матрицы (рис. 2.2). В основной программе (блок 0) задаем размер квадратной матрицы В, два начальных приближения к одному из собственных значений

матрицы, допустимую погрешность решения характеристического уравнения Затем обращаемся к блоку 1, где определяем численные значения элементов исходной матрицы В. После задания матрицы обращаемся к подпрограмме метода секущих (блок 2) для решения характеристического уравнения. В качестве блока 2 можно использовать любой другой метод, рассмотренный в гл. 1. Из блока 2 происходит обращение к подпрограмме вычисления левой части храктеристического уравнения (блок 3). В свою очередь, из блока 2 обращаемся к подпрограмме вычисления определителя (2.13) (блок 4).

Рис. 2.2. Блок-схема программы вычисления собственных значений матрицы прямым методом

Приведенная схема вычисления собственных значений матрицы прямым методом является весьма неэкономичной по затратам времени ПЭВМ. В гл. 3 будет рассмотрен более экономичный прямой метод. Тем не менее алгоритм и программы служат хорошей иллюстрацией использования уже знакомых читателю программ. Программы 2.5 можно использовать для вычисления собственных значений матриц сравнительно невысоких порядков.

Начальные приближения для собственных значений можно определить, используя табличный метод (программы 1.1).

В программе на языке Бейсик описаны два одинаковых двумерных массива (строка 10). Исходная матрица вводится в массив В (строки 100-190). Для вычисления левой части характеристического уравнения формируется матрица А типа (2.13) (строки 300-350). Формирование матрицы А повторяется при каждом обращении к блоку 3, так как при вычислении определителя матрица портится.

Подпрограмма метода секущих (строки 200-290) переписана из программы 1.6 с одним изменением. Для исключения перекрытия переменная заменена на

Подпрограмма вычисления определителя записывается со строки 400, полностью повторяет программу и поэтому не приведена в листинге

Программы на языках Фортран и Паскаль используют подпрограммы SECANT и DET из программ 1.6 и 2.3.

Простейшим итерационным методом нахождения собственных значений и собственных векторов матриц является метод, основанный на соотношении (2.12) [21]. Задавая некоторые исходные значения компонентов собственного вектора вычисляем произведение и считаем, что

откуда определим компоненты которые пронумеруем на максимальное значение к.

Новый вектор вновь умножаем на матрицу А и повторяем весь процесс. В результате итерационный процесс

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

Итерационный процесс завершаем при выполнении условия

где заданная относительная погрешность вычисления собственного значения.

Рис. 2.3. Блок-схема программы вычисления наибольшего собственного значения и собственного вектора матрицы итерационным методом

Программу составим из трех блоков (рис. 2.3). В блоке 0 в диалоговом режиме задаем размер матрицы, максимально допустимое количество итераций и относительную погрешность Затем обращаемся к подпрограмме задания элементов матрицы А и начального вектора X (блок 1). Подпрограмму итерационного метода оформляем в виде блока 2. После обращения к блоку 2 выводим результаты на дисплей.

В блоке 2 (программа итерационный цикл организован по переменной К и может выполняться максимально раз. В строках 220-250 размещены операторы умножения матрицы А на вектор X и выбора

максимальной компоненты, для результата умножения введен дополнительный вектор У. Цикл в строке 260 предназначен для нормировки и формирования нового приближения к собственному вектору X.

Условие (2.15) проверяется в строке 270. Переменная (строка 280) введена для хранения предыдущего приближения к собственному значению.

Если процесс не сходится за итераций, то на дисплей выдается сообщение

Программа на Фортране реализована аналогичным образом.

В программе на языке Паскаль итерационный цикл типа в процедуре завершается при выполнении одного из условий: достижение максимального количества итераций соотношение (2.15).

Для контроля и отладки программ 2.6 найдем наибольшее собственное значение и соответствующий собственный вектор матрицы [40]:

В качестве начального выберем вектор с компонентами (1, 0, 0). В результате выполнения программ 2.6 получим

Этот же пример можно использовать для проверки программ 2.5, с помощью которых можно определить и другие собственные значения матрицы

(см. скан)

(см. скан)

(см. скан)

(см. скан)

(см. скан)

<< Предыдущий параграф Следующий параграф >>
Оглавление