Advertisement
SonicDesu

Deflacja macierzy

Dec 16th, 2018
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.46 KB | None | 0 0
  1. clear;
  2. clc;
  3. close all;
  4.  
  5. A= [1 1 1
  6.     1 2 3
  7.     1 3 6];
  8. x=ones(3,1);
  9. imax=10;
  10.  
  11. i=1;
  12. while(1)
  13.     v(:,i)=A*x(:,i);
  14.     m(i)=max(v(:,i));
  15.     if(m(i)~=0)
  16.         x(:,i+1)=v(:,i)/m(i);
  17.     end
  18.     if((m(i)==0)||(i==imax))
  19.         break;
  20.     else
  21.         i=i+1;
  22.     end
  23. end
  24.  
  25. m % wyswietlanie wartosci lambda (jak przestanie sie zmieniac, to nasze przybliżenie wartosci własnej macierzy)
  26. x % wyswietlanie wektorów własnych (przybiżenie jak wyżej)
  27.  
  28. e1=[1;0;0];
  29. I=eye(3);
  30. x1=x(:,imax); %Przypisanie wektora własnego otrzymanego poprzednio do zmiennej x1
  31. x1=x1/norm(x1); %normalizacja wektora x1
  32. alfa=(-1)*sign(x1(1));
  33. tau=norm(x1)*(norm(x1)-alfa*x1(1));
  34. u=x1-alfa*norm(x1)*e1;
  35. H=I-((1/tau)*u*u');
  36. A1=H*A/H %Macierz Householder'a
  37. A1(1,:)=[]; %Zmiana wymiaru macierzy na 2x2
  38. A1(:,1)=[];
  39.  
  40. x2(:,1)=ones(1,2);
  41. i=1;
  42.  
  43. %Wyliczanie kolejnej wartości własnej
  44. while(1)
  45.     v2(:,i)=A1*x2(:,i);
  46.     m2(i)=max(v2(:,i));
  47.     if(m2(i)~=0)
  48.         x2(:,i+1)=v2(:,i)/m2(i);
  49.     end
  50.     if((m2(i)==0)||(i==imax))
  51.         break;
  52.     else
  53.         i=i+1;
  54.     end
  55. end
  56. m2 %Druga wartość własna
  57. x2 %Drugi wektor własny
  58.  
  59. clear H; %Czyszczenie zmiennych
  60. clear I;
  61.  
  62. e2=[1;0];
  63. I=eye(2);
  64. x3=x2(:,imax);
  65. x3=x3/norm(x3);
  66. alfa=(-1)*sign(x3(1));
  67. tau=norm(x3)*(norm(x3)-alfa*x3(1));
  68. u=x3-alfa*norm(x3)*e2;
  69. H=I-((1/tau)*u*u');
  70. A2=H*A1/H;
  71. A2 %Macierz Householder'a
  72. A2(1,:)=[]; %Zmiana wymiaru macierzy na 1x1
  73. A2(:,1)=[];
  74. A2 %Trzecia wartość własna
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement