Автор работы: Пользователь скрыл имя, 18 Января 2012 в 19:45, курсовая работа
Задачи нахождения собственных значений и соответствующих им собственных векторов возникают в самых различных научных задачах. Например, при анализе динамических систем собственные значения определяют частоты колебаний, а собственные векторы характеризуют их форму. В электро-радиотехнических устройствах собственные значения матриц определяют характеристические постоянные времени и режимы работы этих устройств.
1 Собственные значения и собственные векторы…………………………………..6
1.1 Математическое обоснование метода………………………………………6
1.2 Метод итераци..………………………………………………………………..8
1.3 Метод Леверрье-Фаддеева…………………………………………………...9
1.3.1 Основные пункты алгоритма метода Леверрье-Фаддеева.…….10
1.4 Численное решение задачи нахождения собственных значений матриц методом Леверрье-Фаддеева….…………………………………………….10
2 Приложение…………………………………………………………………………..13
2.1 Структурная схема алгоритма метода Леверрье-Фаддеев..……………13
2.2 Листинг программы…………………………………………………………16
При решении данной задачи использовались и некоторые вспомогательные процедуры, - например процедура возведения в степень.
Используя
метод Леверрье-Фаддеева, найти собственные
числа матрицы, а так же наибольший
собственный вектор.
.
Решение.
Определяем коэффициенты характеристического уравнения посредством построения последовательности матриц.
,
,
Результаты дальнейших вычислений примут вид:
Получим характеристическое уравнение: Решая это уравнение методом хорд, предварительно уединив корни на некотором промежутке, получаем следующие значения собственных чисел:
Вычислим
собственный вектор при наибольшем
собственном числе матрицы
Итак,
используя метод итераций, определить
первое наибольшее собственное значение
и первый собственный вектор матрицы
.
Решение.
Выбираем начально-свободный вектор
Вычисляем
Дальнейшие вычисления можно свести в Таблицу1.
|
Дальнейшие
итерации можно прекратить. Собственное
значение (наибольшее)
.
Нормированный собственный вектор
.
Процедура
Trace формирования "следа"
матрицы AMatrix.
Процедура
VInter формирования последовательности
матриц Bmatrix.
Структурная
схема процедуры
AConsistance.
Структурная
схема метода хорд
для решения
Процедура
уединения коренй
характристического
уравнения.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls,
Spin, ExtCtrls, Buttons;
type
TForm2 = class(TForm)
Button1: TButton;
RadioGroup1: TRadioGroup;
Label1: TLabel;
SpinEdit1: TSpinEdit;
StringGrid1: TStringGrid;
RadioGroup2: TRadioGroup;
StringGrid2: TStringGrid;
Button2: TButton;
RadioGroup3: TRadioGroup;
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
type TMatrix=array of array of real;
TVec=array of real;
var AMatrix,CEquival,BMatrix,
X_SelfVec,LVec,U_EMatrix:TVec;
P_CharacteristicParam,Pk,Pn,
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;
SpEdV:integer;
{Процедура считывания исходной матрицы}
procedure InputMatrix(var AMatrix:TMatrix;Range:integer)
var i,j,cols,rows:integer;
begin
Rows:=Range;
Cols:=Range;
for i:=0 to cols-1 do
for j:=0 to rows-1 do AMatrix[i,j]:=StrToFloat(
end;
//строим эквивалентную матрицу
procedure PlotSameMatrix(CEquival:
var i,j:integer;
begin
for i:=0 to Range-1 do
for j:=0 to Range-1 do
begin
CEquival[i,j]:=AMatrix[i,j];
end;
end;
//Процедуры форматированного вывода/печати матриц AMatrix в Memo
procedure Coord_AMatrix(var AMatrix:TMatrix;Range:integer)
var i,j,k:integer;
str:string;
begin
Form2.Memo1.Lines.Add('
str:='';
for i:=0 to Range-1 do
begin
for j:=0 to range-1 do str:=str + FloatToStr(AMatrix[i,j]) + ' ';
Form2.Memo1.Lines.Add(str);
end;
end;
//Процедуры форматированного вывода/печати матриц VMatrix в Memo
procedure Coord_VMatrix(var VMatrix:TMatrix;Range:integer)
var i,j:integer;
str:string;
begin
Form2.Memo1.Lines.Add('Ветора'
for i:=0 to Range-1 do
begin
for j:=0 to range-1 do str:=str + FloatToStr(VMatrix[i,j]) + ' ';
Form2.Memo1.Lines.Add(str);
end;
end;
//cуммирование диагональных элементов (след матрицы)
function Trace(Range:integer;AMatrix:
var i,N:integer;
diag_sum:real;
begin
Diag_sum:=0;
Trace:=0;
N:=Range;
for i:=0 to N-1 do
begin
Diag_sum:=diag_sum+AMatrix[i,
Trace:=Diag_sum;
end;
end;
//Промежуточная матрица V
procedure VInter(var VMatrix:TMatrix;BMatrix,
Pk:real);
var i,j,m,i0:integer;
begin
for i:=0 to Range-1 do
for j:=0 to Range-1 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];
end;
end;
//Процедура формирования матриц A (последовательности матриц)
procedure AConsistance(var AMatrix:TMatrix;CEquival,V:
var i,j,k:integer;
begin
for i:=0 to Range-1 do
for j:=0 to Range-1 do
begin
AMatrix[i,j]:=0;
end;
for k:=0 to Range-1 do
for i:=0 to Range-1 do
begin
for j:=0 to Range-1 do
begin
AMatrix[k,i]:=AMatrix[k,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) and ((y mod 2)=0) then pow:=exp(y*ln(-x));
if (x<0) and ((y mod 2)<>0) then pow:=-exp(y*ln(-x));
end;
//Окончательная функция
function f(x:real;i:integer;PVec:TVec;
var k:integer;
begin
k:=1;
if Range=4 then
f:=pow(x,4)-PVec[k-1]*pow(x,3)
-PVec[k+1]*x-PVec[k+2];
if Range=3 then
f:=pow(x,3)-PVec[k-1]*pow(x,2)
end;
//Derivative -вторая производная
function F_deriv(x:real;i:integer;PVec:
var k:integer;
begin
k:=1;
if Range=4 then
F_deriv:=12*pow(x,2)-6*PVec[k-
if Range=3 then F_deriv:=6*x-2*PVec[k-1];
end;
//Реализация метода
хорд для решения
procedure ChordMethood(var X,Y:real;x1,x2,eps:real;i,