Смекни!
smekni.com

Знаходження власних значеннь лінійого оператора (стр. 2 из 2)

Означення 1. Підпростір

лінійного простору
називається інваріантним відносно оператора
, якщо
, тобто якщо образ
будь-якого вектора
із
міститься в
.

Нехай

–одновимірний підпростір простору
, а
–деякий лінійний оператор цього простору. Підпростір
, як відомо, породжується будь-яким своїм вектором
, тобто є сукупністю всіх векторів виду
, де
– будь яке число з поля Р. Якщо підпростір
інваріантний відносно оператора
, то
, тобто
, де
­–деяке число з поля Р. Тоді й для будь-якого вектора
підпростору
, бо
, і тому
.

Означення 2. Вектор

, що заддовільняє співвідношення
, де
називається власним вектором оператора
, а число
власним значенням оператора
, що відповідає власному вектору
.

Отже, якщо одглвимірний підпростір

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

Практична частина

1. Опис програми

n – вимірність матриці;

m – максимальне допустиме число ітерацій;

e – точність;

a – на вході – двовимірний масив елементів матриці А, на виході матриця А блочно-діагональна, причому блоки розміри 1х1 містять дійсні власні значення, блоки розміру 2х2 містять комплексні власні значення, записані в стовпцях (рядках) для правих (лівих) власних векторів;

t – двовимірний масив власних векторів А;

b – цілочислова змінна.

Лінійний оператор потрібно задати за допомогою матриці.

2. Текст програми

uses crt;

const dim=10;

type ar=array[1..dim,1..dim]of real;

var ff:text;

i100,j100,n100,b,m:integer;

e:real;

a,t:ar;

procedure eigen(n,m:integer;e:real;var a,t:ar;var b:integer);

var c,c1,c2,co,ch,d,e1,f,g,h,p,r,s,s1,s2,si,sh,x,y:real;

i,j,k,n1,q:integer;

u,v,w,z:boolean;

function zn(x:real):integer;

begin if x<0 then zn:=-1 else zn:=1; end;

begin

u:=false;v:=u;w:=u;n1:=n-1;e1:=sqrt(e);

if b<>0 then

begin

if b<0 then v:=true else w:=true;

for i:=1 to n do

for j:=1 to n do

if i=j then t[i,j]:=1 else t[i,j]:=0;

end;

for q:=1 to m do

begin

if u then begin b:=1-q; exit; end;

i:=1; z:=false;

repeat

j:=i+1;

repeat

if(abs(a[i,j]+a[j,i])>e1) or

(abs(a[i,j]-a[j,i])>e1) and

(abs(a[i,i]-a[j,j])>e1) then z:=true;

j:=j+1;

until (j>n) or z;

i:=i+1;

until (i>n1) or z;

if not z then begin b:=q-1; exit; end;

u:=true;

for k:=1 to n1 do

for j:=k+1 to n do

begin

h:=0; g:=0; f:=0; y:=0;

for i:=1 to n do

begin

x:=sqr(a[i,k]);d:=sqr(a[i,j]); y:=y+x-d;

if (i<>k) and (i<>j) then

begin

h:=h+a[k,i]*a[j,i]-a[i,k]*a[i,j];

p:=x+sqr(a[j,i]); r:=d+sqr(a[k,i]);

g:=g+p+r; f:=f-p+r;

end;

end;

h:=2*h; d:=a[k,k]-a[j,j];

p:=a[k,j]+a[j,k]; r:=a[k,j]-a[j,k];

if abs(p)<=e then begin c:=1; s:=0; end

else

begin

x:=d/p; c:=x+zn(x)*sqrt(1+x*x);

s:=zn(x)/sqrt(1+c*c); c:=s*c;

end;

if y<0 then begin x:=c; c:=s; s:=-x; end;

co:=c*c-s*s; si:=2*s*c; d:=d*co+p*si;

h:=h*co-f*si; x:=(r*d-h/2)/(g+2*(r*r+d*d));

if abs(x)<=e

then begin ch:=1; sh:=0; end

else begin ch:=1/sqrt(1-x*x); sh:=ch*x; end;

c1:=ch*c-sh*s; c2:=ch*c+sh*s;

s1:=ch*s+sh*c; s2:=-ch*s+sh*c;

if (abs(s1)>e)or(abs(s2)>e) then

begin

u:=false;

for i:=1 to n do

begin

p:=a[k,i];a[k,i]:=c1*p+s1*a[j,i];

a[j,i]:=s2*p+c2*a[j,i];

if v then

begin

p:=t[k,i]; t[k,i]:=c1*p+s1*t[j,i];

t[j,i]:=s2*p+c2*t[j,i];

end;

end;

for i:=1 to n do

begin

p:=a[i,k];a[i,k]:=c2*p-s2*a[i,j];

a[i,j]:=-s1*p+c1*a[i,j];

if w then

begin

p:=t[i,k];t[i,k]:=c2*p-s2*t[i,j];

t[i,j]:=-s1*p+c1*t[i,j];

end;

end;

end;

end;

end;

b:=m;

end;

begin clrscr;

write('введите максимальное количество итераций');read(m);

write('введите точность');read(e);

assign(ff,'vlasn.dat');

reset(ff);

read(ff,n100);

for i100:=1 to n100 do

for j100:=1 to n100 do

read(ff,a[i100,j100]);

b:=0;

eigen(n100,m,e,a,t,b);

for i100:=1 to n100 do begin

for j100:=1 to n100 do

write(a[i100,j100],' ');

writeln; end;

writeln;

writeln(b);

readkey;

end.

3. Контрольний приклад

При e=10-8 і m=50 для матриці

за 7 ітерацій знайдено власні значення

Тобо отримали такі власні значення

,
,


Висновок

Таким чином, задача знаходження інваріантних відносно оператора

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

Список літератури

1. А. Г. Курош «Курс высшей алгебры», «Наука», Москва 1975

2. С. Т. Завало, В. М. Костарчук, Б. И. Хацет «Алгебра и теория чисел», Том 1,«Высшая школа», Киев 1974

3. С. Т. Завало, В. М. Костарчук, Б. И. Хацет «Алгебра и теория чисел», Том 2,«Высшая школа», Киев 1976