Курсовая работа: Знаходження власних значеннь лінійого оператора
Название: Знаходження власних значеннь лінійого оператора Раздел: Рефераты по математике Тип: курсовая работа |
Міністерство освіти і науки України ФАКУЛЬТЕТ ІНФОРМАТИКИ КАФЕДРА ІНФОРМАЦІЙНИХ УПРАВЛЯЮЧИХ СИСТЕМ ТА ТЕХНОЛОГІЙ Реєстраційний №________ Дата ___________________ КУРСОВА РОБОТА Тема: Знаходження власних значень лінійного оператора Рекомендована до захисту “____” __________ 2008р. Робота захищена “____” __________ 2008р. з оцінкою _____________________ Підписи членів комісії Зміст Вступ Теоретична частина 1. Означення і найпростіші властивості лінійних операторів 2. Матриця лінійного оператора 3. Власні вектори й власні значення лінійного оператора Практична частина 1. Опис програми 2. Текст програми 3. Контрольний приклад Висновок Список літератури
Вступ Власні значення грають при вивченні лінійних операторів дуже велику роль. Нехай в дійсному лінійному просторі
де Обертання евклідової площини навколо початку координат на кут, що не являється кратним
Теоретична частина
1. Означення і найпростіші властивості лінійних операторів В теорії лінійних просторів та її застосування важливу роль відіграють лінійні оператори, які інакше називають лінійними перетвореннями. Нехай Означення 1.
Вважають, що у векторному просторі Як бачимо, оператор у векторному просторі Означення 2.
Оператор Лінійні оператори в просторі З означення 2 випливають безпосередньо такі властивості лінійних операторів: 1. Будь-який лінійний оператор 2. Всякий лінійний оператор 3. Кожен лінійний оператор
2. Матриця лінійного оператора
Нехай
Складемо з коефіціентів Будемо вважати, що в базисі Отже, при зафіксованому базисі 3. Власні вектори й власні значення лінійного оператора
Означення 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 |