Курсовая работа: Вычисление характеристических многочленов собственных значений и собственных векторов
Первый шаг даёт
,
где
На втором шаге матрица А(1) умножается справа на матрицу
и слева на обратную к ней матрицу
Очевидно, что элементы матрицы
.
Это означает, что два предпоследних столбца матрицы А(2) имеют необходимый вид. Продолжая этот процесс, после n-1 шагов придем к матрице
,
которая имеет форму Фробениуса и подобная к входной матрице А. При этом на каждом шаге элементы матрицы А( j ) находятся по элементам матрицы А( j -1 ) также, как мы находили элементы матрицы А(2) по элементам А(1) . При этом предпологается, что все элементы отличные от нуля. Если на j-ом шаге окажется, что , то продолжать процесс в таком виде не будет возможно. При этом могут возникнуть два случая:
1. Среди элементов есть хотя бы один, отличный от нуля, например . Для продолжения процесса поменяем в А( j ) местами первый и -й строчки и одновременно 1-й и -й столбцы. Такое преобразование матрицы А( j ) будет подобным. После того, как получим матрицу , процесс можно продолжать, т.к. столбцы матрицы А( j ) ,приведённые к необходимому виду не будут испорчены.
2. Все элементы равны нулю. Тогда матрица А( j ) имеет вид , где F- квадратичная матрица порядка j, которая имеет нормальный вид Фробениуса; В—квадратная матрица порядка n-j, но , то есть характеристический многочлен матрицы F является делителем характеристического многочлена матрицы А. Для нахождения характеристического многочлена матрицы А необходимо еще найти характеристический многочлен матрицы В, для которой используем этот же метод.
Подсчитано, что количество операций умножения и деления, необходимых для получения характеристического многочлена матрицы порядка n составляет n(n-1)(2n+3)/2.
На данном этапе работы мы получили характеристический полином, корнями которого будут собственные числа матрицы А. Процедура нахождения корней полинома n-ой степени не проста. Поэтому воспользуемся пакетом MathCAD Professional для реализации данной задачи. Для поиска корней обычного полинома р(х) степени n в Mathcad включена очень удобная функция polyroots(V). Она возвращает вектор всех корней многочлена степени n, коэффициенты которого находятся в векторе V, имеющим длину равную n+1. Заметим, что корни полинома могут быть как вещественными, так и комплексными числами. Таким образом мы имеем собственные числа, при помощи которых мы найдём собственные векторы нашей матрицы А. Для нахождения собственных векторов воспользуемся функцией eigenvec(A,vi ), где А-исходная матрица, vi -собственное число, для которого мы ищем собственный вектор. Данная функция возвращает собственный вектор дня vi .
Указания по применению программы
Данная курсовая работа выполнена на языке программирования Pascal. В курсовую работу входит файлdanil.exe. Danil.exe предназначен для нахождения характеристического полинома методом Данилевского. Входными параметрами является размерность матрицы и сама матрица, а выходным — характеристический полином.
Программная реализация
Программный кодпрограммы danil.exe
uses wincrt;
label 1;
type mas=array[1..10,1..10]of real;
var A,M,M1,S:mas;
z,max:real;
f,jj,tt,ww,v,h,b,y,i,j,w,k,e,l,q,x,u:byte;
p,o:array[1..10]of real;
t:array [1..10]of boolean;
procedure Umnogenie(b,c:mas; n:byte; var v:mas);
var i,j,k:byte;
begin