Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear;
- clc;
- close all;
- A= [1 1 1
- 1 2 3
- 1 3 6];
- x=ones(3,1);
- imax=10;
- i=1;
- while(1)
- v(:,i)=A*x(:,i);
- m(i)=max(v(:,i));
- if(m(i)~=0)
- x(:,i+1)=v(:,i)/m(i);
- end
- if((m(i)==0)||(i==imax))
- break;
- else
- i=i+1;
- end
- end
- m % wyswietlanie wartosci lambda (jak przestanie sie zmieniac, to nasze przybliżenie wartosci własnej macierzy)
- x % wyswietlanie wektorów własnych (przybiżenie jak wyżej)
- e1=[1;0;0];
- I=eye(3);
- x1=x(:,imax); %Przypisanie wektora własnego otrzymanego poprzednio do zmiennej x1
- x1=x1/norm(x1); %normalizacja wektora x1
- alfa=(-1)*sign(x1(1));
- tau=norm(x1)*(norm(x1)-alfa*x1(1));
- u=x1-alfa*norm(x1)*e1;
- H=I-((1/tau)*u*u');
- A1=H*A/H %Macierz Householder'a
- A1(1,:)=[]; %Zmiana wymiaru macierzy na 2x2
- A1(:,1)=[];
- x2(:,1)=ones(1,2);
- i=1;
- %Wyliczanie kolejnej wartości własnej
- while(1)
- v2(:,i)=A1*x2(:,i);
- m2(i)=max(v2(:,i));
- if(m2(i)~=0)
- x2(:,i+1)=v2(:,i)/m2(i);
- end
- if((m2(i)==0)||(i==imax))
- break;
- else
- i=i+1;
- end
- end
- m2 %Druga wartość własna
- x2 %Drugi wektor własny
- clear H; %Czyszczenie zmiennych
- clear I;
- e2=[1;0];
- I=eye(2);
- x3=x2(:,imax);
- x3=x3/norm(x3);
- alfa=(-1)*sign(x3(1));
- tau=norm(x3)*(norm(x3)-alfa*x3(1));
- u=x3-alfa*norm(x3)*e2;
- H=I-((1/tau)*u*u');
- A2=H*A1/H;
- A2 %Macierz Householder'a
- A2(1,:)=[]; %Zmiana wymiaru macierzy na 1x1
- A2(:,1)=[];
- A2 %Trzecia wartość własna
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement