Вход

Нахождение собственных значений и собственных векторов матриц

Курсовая работа по математике
Дата добавления: 14 августа 2004
Язык курсовой: Русский
Word, rtf, 1.7 Мб (архив zip, 110 кб)
Курсовую можно скачать бесплатно
Скачать



Министерство Образования Российской Федерации


Марийский Государственный Технический Университет



Кафедра Высшей математики














Расчетно-графическая работа

По дисциплине “Вычислительная математика”

на тему:

"Нахождение собственных значений и собственных векторов матриц"












Выполнил: студент гр. МИЭ 31

Веприков Д.О.


Проверил: доцент каф. ВМ

Пайзерова Ф. А.










Йошкар Ола, 2001г.



Содержание.

1 Собственные значения и собственные векторы. 3

1.1 Математическое обоснование метода. 3

1.2 Метод итераций. 5

1.3 Метод Леверрье-Фаддеева. 6

1.3.1 Основные пункты алгоритма метода Леверрье-Фаддеева. 7

1.4 Численное решение задачи нахождения собственных значений матриц методом Леверрье-Фаддеева. 7

2 Приложение 10

2.1 Структурная схема алгоритма метода Леверрье-Фаддеева. 10

2.2 Листинг программы на алгоритмическом языке "Pascal". 13





































  1. Собственные значения и собственные векторы.

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

    1. Математическое обоснование метода.

Рассмотрим квадратную матрицу n-ого порядка:



Собственные значения i квадратной матрицы A есть действительные или комплексные числа, удовлетворяющие условию:

,

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

- собственный вектор матрицы A, соответствующий некоторому собственному значению .


Матрица называется характеристической матрицей матрицы A. Т.к. в матрице по главной диагонали стоят , а все остальные элементы равны нулю, то характеристическая матрица имеет вид:




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


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



и называется характеристическим многочленом. Корни этого многочлена – собственные значения или характеристические числа матрицы A. Числа называются коэффициентами характеристического многочлена.

Ненулевой вектор называется собственным вектором матрицы A, если эта матрица переводит вектор X в вектор

,

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

Для определения координат собственного вектора составляется характеристическое уравнение: . Переписав его в векторном виде и выполнив умножение, получим систему линейных однородных уравнений:



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

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

  1. Определение все собственных значений и принадлежащих им собственных векторов матриц;

  2. Определение одного или нескольких собственных значений и принадлежащих им собственных векторов.

Первая задача состоит в развертывании характеристического определителя в многочлен n-й степени (т.е. в определении коэффициентов ) с последующим вычислением собственных значений и, наконец, в определении координат собственного вектора .

Вторая задача заключается в определении собственных значений итерационными методами без предварительного развертывания характеристического определителя (метод итераций). Методы первой задачи (метод Данилевского, метод Леверрье-Фаддеева) относятся к точным, т.е. если их применить для матриц, элементы которых заданы точно (рациональными числами), и точно проводить вычисления (по правилам действий с обыкновенными дробями), то в результате будет получено точное значение коэффициентов характеристического многочлена, и координаты собственных векторов окажутся выраженными точными формулами через собственные значения.

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

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

Некоторые свойства собственных значений векторов:

  • Все n собственных значений любой симметричной матрицы (aij=aji; i,j = 1,2,…,n) вещественны.

  • Собственные векторы, отвечающие различным собственным значениям симметричной матрицы, ортогональны:

, при ,

, при .

  • Собственный вектор матрицы, умноженный на произвольное число, также является собственным вектором.

  • Подобные матрицы

, где P – неособая матрица, имеют одинаковые собственные значения, их собственные вектора связаны соотношением:

Характеристическое уравнение

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

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

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

    1. Метод итераций.

Для решения частичной проблемы собственных значений (отыскания наибольших и наименьших собственных чисел), применяется метод простой итерации решения систем уравнений

С помощью итерационных методов можно определить наибольшее по модулю собственное число матрицы A без раскрытия определителя.

Итак, пусть

  • характеристическое уравнение; - его корни, являющиеся собственными значениями матрицы . Предположим, что

,

т.е. наибольшее по модулю собственное число. Тогда для нахождения приближенного значения корня используется следующая схема:

  • произвольно выбирают начальный вектор Y;

  • составляют последовательные итерации

  • выбирают из этой последовательности два последних значения, и принимают за наибольшее собственное число следующее соотношение:

,

где - соответствующие координаты векторов .

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

    1. Метод Леверрье-Фаддеева.

Этот метод относится к группе тех, которые решаются методами развертывания определителей. Этот метод был предложен Леверрье и упрощен советским математиком Фаддеевым. Метод Леверрье основан на формулах Ньютона для сумм степеней корней алгебраического уравнения и заключается в следующем. Пусть

  • характеристический многочлен матрицы , и - полная совокупность корней характеристического многочлена. Рассмотрим суммы:

, ,

иначе:

(каждая сумма есть след матрицы ). Тогда при справедливы формулы Ньютона:

откуда получаем:

при

при

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

при

Следовательно, коэффициенты характеристического многочлена можно легко определить, если известны суммы .

Таким образом, схема раскрытия характеристического многочлена состоит в следующем:

  1. вычисляют степени

  2. определяют - суммы элементов главных диагоналей матриц ;

  3. по вышеприведенным формулам Ньютона находим коэффициенты .

Видоизмененный метод Леверрье, предложенный Фаддеевым, заключается в вычислении последовательности матриц по следующей схеме:


      1. Основные пункты алгоритма метода Леверрье-Фаддеева.

  1. Ввод исходной матрицы , где n – размерность матрицы.

  2. Вычисление коэффициентов .

  3. Решение характеристического уравнения (определение ). В качестве метода решения характеристического уравнения выбран уединения корней уравнения и метод хорд.

  4. Задание начальных единичных векторов .

  5. Вычисление собственного вектора , соответствующего .

  6. Нормировка вектора .

  7. Конец алгоритма.

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

    1. Численное решение задачи нахождения собственных значений матриц методом Леверрье-Фаддеева.

Используя метод Леверрье-Фаддеева, найти собственные числа матрицы, а так же наибольший собственный вектор.


.

Решение.

Определяем коэффициенты характеристического уравнения посредством построения последовательности матриц.

,

,

Результаты дальнейших вычислений примут вид:

Получим характеристическое уравнение: Решая это уравнение методом хорд, предварительно уединив корни на некотором промежутке, получаем следующие значения собственных чисел:

Вычислим собственный вектор при наибольшем собственном числе матрицы методом итераций.


Итак, используя метод итераций, определить первое наибольшее собственное значение и первый собственный вектор матрицы


.

Решение.

Выбираем начально-свободный вектор

Вычисляем




Дальнейшие вычисления можно свести в Таблицу1.

A

2,6

1,2

-0,1

1,2

2,1

1,6

-0,1

1,6

0,8

Y0

1.00

1.00

1.00




Y1

3.70

4.90

2.30

4.13

3.76

4.05

Y2

15.27

18.41

9.31

3.99

3.90

3.80

Y3

60.86

71.88

35.38

3.96


3.90

3.88

Y4

240.96

280.59

137.22

3.94


3.91

3.90

Y5

949.49

1097.95

534.63

3.93

3.92

3.91

Y6

3732.75

4300.49

2089.48

3.93


3.92

3.91

Y7

14656.79

16853.49

8179.09

3.92

3.92

3.92


Дальнейшие итерации можно прекратить. Собственное значение (наибольшее) . Нормированный собственный вектор .






  1. Приложение

    1. Структурная схема алгоритма метода Леверрье-Фаддеева.




















































Процедура Trace формирования "следа" матрицы AMatrix.






























Процедура VInter формирования последовательности матриц Bmatrix.































Структурная схема процедуры AConsistance.


































Структурная схема метода хорд для решения характеристического уравнения.





























Процедура уединения коренй характристического уравнения.





























































    1. Листинг программы на алгоритмическом языке "Pascal".



{Метод Лаверрье-Фаддеева }

{Метод нахождения собственных чисел матриц}

{$M 1024,0,0}{Освобождение памяти для потомка}

uses Dos,Crt;

const N=10;

MainTextColor=15;

DiagonColor=2;


OutPutI=3;

OutPutJ=7;

ScaleI=10;

ScaleJ=3;


type TMatrix=array[1..N,1..N] of real;

TVec=array[1..N] of real;


{Процедура решает задачу ввода порядка исходной матрицы}

procedure Read_Range(var Range:integer);

begin

writeln('Блок ввода данных');

write('Введите порядок исходной матрицы A_Matrix=');

read(Range);

end;


{Процедура считывания исходной матрицы}

procedure InputMatrix(var AMatrix:TMatrix;Range:integer);

var i,j,cols,rows:integer;

begin

Rows:=Range;

Cols:=Range;

writeln('Введите исходную матрицу');

for i:=1 to cols do

for j:=1 to rows do

begin

GoToXY(OutPutI+ScaleI*i,OutPutJ+ScaleJ*j);

read(AMatrix[i,j]);

end;

end;


procedure PlotSameMatrix(var CEquival:TMatrix;AMatrix:TMatrix;Range:integer);

var i,j:integer;

begin

for i:=1 to Range do

for j:=1 to Range do

begin

CEquival[i,j]:=AMatrix[i,j];

end;

ClrScr;

end;


{Процедуры форматированного вывода/печати матриц AMatrix}

procedure Coord_AMatrix(var AMatrix:TMatrix;Range:integer);

var i,j,k:integer;

begin

for i:=1 to Range do

for j:=1 to range do

begin

GoToXY(OutPutI+ScaleI*i,OutPutJ+ScaleJ*j);

if i=j then TextColor(DiagonColor) else TextColor(MainTextColor);

write(AMatrix[i,j]:4:2);

end;

end;

{==========================================================================}

procedure Coord_VMatrix(var VMatrix:TMatrix;Range:integer);

var i,j:integer;

begin

for i:=1 to Range do

for j:=1 to range do

begin

GoToXY(OutPutI+ScaleI*i,OutPutJ+ScaleJ*j);

write(VMatrix[i,j]:4:2);

end;

end;


{Суммирование диагональных элементов (след матрицы)}

function Trace(Range:integer;AMatrix:TMatrix):real;

var i,N:integer;

diag_sum:real;

begin

Diag_sum:=0;

Trace:=0;

N:=Range;

for i:=1 to N do

begin

Diag_sum:=diag_sum+AMatrix[i,i];

Trace:=Diag_sum;

end;

end;


{Промежуточная матрица V}

procedure VInter(var VMatrix:TMatrix;BMatrix,AMatrix:TMatrix;Range:integer;

Pk:real);

var i,j,m,i0:integer;

begin

ClrScr;

TextColor(MainTextColor);

writeln( 'Промежуточная матрица Bn');

readln;

for i:=1 to Range do

for j:=1 to Range do

begin

if i=j then BMatrix[i,j]:=AMatrix[i,j]-Pk

else BMatrix[i,j]:=AMatrix[i,j];

VMatrix[i,j]:=BMatrix[i,j];

Coord_VMatrix(VMatrix,Range);

end;

readln;

end;


{Процедура формирования матрицы A (последовательности матриц)}

procedure AConsistance(var AMatrix:TMatrix;CEquival,V:TMatrix;Range:integer);

var i,j,k:integer;

begin

ClrScr;

for i:=1 to Range do

for j:=1 to Range do

begin

AMatrix[i,j]:=0;

end;

for k:=1 to Range do

for i:=1 to Range do

begin

for j:=1 to Range do

begin

AMatrix[k,i]:=AMatrix[k,i]+CEquival[k,j]*V[j,i];

end;

Coord_AMatrix(AMatrix,Range);

end;

end;

{==========================================================================}

{Промежуточная функция возведения в степень}

function pow(x:real;y:integer):real;

begin

if x=0 then pow:=0;

if x>0 then pow:=exp(y*ln(x));

if (x<0>

if (x<0>0) then pow:=-exp(y*ln(-x));

end;


{Окончательная функция}

function f(x:real;i:integer;PVec:TVec;Range:integer):real;

var k:integer;

begin

k:=1;

if Range=4 then f:=pow(x,4)-PVec[k]*pow(x,3)-PVec[k+1]*pow(x,2)

-PVec[k+2]*x-PVec[k+3];

if Range=3 then f:=pow(x,3)-PVec[k]*pow(x,2)-PVec[k+1]*x-PVec[k+2];

end;


{Derivative -вторая производная}

function F_deriv(x:real;i:integer;PVec:TVec;Range:integer):real;

var k:integer;

begin

k:=1;

if Range=4 then F_deriv:=12*pow(x,2)-6*PVec[k]*x-PVec[k+1]*2;

if Range=3 then F_deriv:=6*x-2*PVec[k];

end;


{Реализация метода хорд для решения характеристического уравнения}

procedure ChordMethood(var X,Y:real;x1,x2,eps:real;i,Range:integer;PVec:TVec);

var Ya,Yb,Yk:real;

Xk,Xn:real;

k:integer;

begin

Ya:=f(x1,i,PVec,Range);

Yb:=f(x2,i,PVec,Range);

Y:=F_deriv(x1,i,PVec,Range);{Вторая производная}

if Ya*Y>0 then

begin

Xk:=x1;Yk:=Ya;X:=x2; Y:=Yb;

end

else

begin

Xk:=x2;Yk:=Yb; X:=x1;Y:=Ya;

end;

repeat

Xn:=X;X:=Xn-(Y/(Y-Yk))*(Xn-Xk);

Y:=f(X,i,PVec,Range);

until abs(X-Xk)>=eps;

writeln('Lambda = ',X:5:4);

writeln('root Y= ',Y);

readln;

end;


{Реализация метода уединения и уточнения коренй посредством метода хорд}

procedure Root_limit(var alpha,beta:real;var LVec:TVec;var RootNum:integer;

i,Range:integer;PVec:TVec);

const step_h=0.09;

var

x1,x2,y1,y2:real;

Ya,Yb,Yk,Y:real;

Xk,Xn,X:real;

eps:real;

k:integer;

begin

k:=0;

x1:=alpha;

x2:=x1+step_h;

y1:=f(x1,i,PVec,Range);

while x2

begin

y2:=f(x2,i,PVec,Range);

if y1*y2<0>

begin

TextColor(MainTextColor);

writeln('Корень лежит в этих пределах:[',x1:5:4,';',x2:5:4,']');

{Процедура уточнения корней характеристического уравнения}

ChordMethood(X,Y,x1,x2,eps,i,Range,PVec);

k:=k+1;

LVec[k]:=X;

end

else

x1:=x2;

x2:=x1+step_h;

y1:=y2;

end;

RootNum:=k;{Число действительных корней характеристического уравнения}

end;

{===================Тело программы=========================================}

var AMatrix,CEquival,BMatrix,VMatrix:TMatrix;

X_SelfVec,LVec,U_EMatrix:TVec;

P_CharacteristicParam,Pk,Pn,Lambda,Max:real;{Параметр p характеристического уравнения матрицы}

Range,k,k1,i,j,num:integer;

i0,m:integer;

Cols,Rows:integer;

PVec:TVec;

{Параметры характеристического уравнения уравнения}

Ya,Yb,Yk:real;

Xk,Xn,x1,x2:real;

X,Y:real;

alpha,beta,eps:real;

RootNum:integer;


begin

ClrScr;

TextColor(MainTextColor);

Pn:=0;

Pk:=0;

Read_Range(Range);{Процедура считывает порядок матрицы}

InputMatrix(AMatrix,Range);{Считываем исходную матрицу}

{==========================================================================}

PlotSameMatrix(CEquival,AMatrix,Range);

{Блок вычисления коэффицентов характеристического уравнения матрицы}

ClrScr;

TextColor(MainTextColor);

writeln('Коэффиценты характеристического уравнения');

for k:=1 to Range-1 do

begin

Pk:=Trace(Range,AMatrix)/k; {Pk - коэффицент характкристич. уравнения}

PVec[k]:=Pk;

write('Pk_',k,'=',Pk:9:4);

readln;


VInter(VMatrix,BMatrix,AMatrix,Range,Pk);

AConsistance(AMatrix,CEquival,VMatrix,Range);

GoToXY(39,1);

writeln('Матрица A',k+1,'.');

readln;


end;

Pn:=Trace(Range,AMatrix)/Range;

PVec[k+1]:=Pn; {Вектор параметров P}

writeln('P_',Range,'=',Pn:9:2);

readln;

ClrScr;

writeln('Вектор коэффицентов P');

for k:=1 to Range do

begin

GoToXY(OutPutI+ScaleI*k,OutPutJ);

TextColor(MainTextColor);

write(PVec[k]:8:3);

end;

readln;

{==================Блок вычисления собственных чисел матрицы===============}

ClrScr;

TextColor(MainTextColor);

writeln('**********************');

writeln('Ведите пределы, в которых располагаются корни уравнения.');

write('Enter alpha= ');

readln(alpha);

write('Enter beta= ');

readln(beta);

write('Enter eps=');

readln(eps);

Root_limit(alpha,beta,LVec,RootNum,i,Range,PVec);

ClrScr;

TextColor(MainTextColor);

write('Вектор собственных чисел');

for k:=1 to RootNum do

begin

GoToXY(OutPutI+ScaleI*k,OutPutJ);

write(LVec[k]:8:4);

end;

readln;

end.

Литература.

  1. Воробьева Г.Н., Данилова А.Н. Практикум по вычислительной математике: Учеб. Пособие для техникумов. - М.: Высш. Школа, 1990.

  2. Гловацкая А.П. Методы и алгоритмы вычислительной математики. Учеб. Пособие для вузов. - М.: Радио и связь, 1999.

  3. Численные методы. Учебник для техникумов и вузов. М.: Высшая школа, 1976.







© Рефератбанк, 2002 - 2017