Advertisement
Guest User

Untitled

a guest
Jan 19th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.13 KB | None | 0 0
  1. clc, clear all, close all
  2. D=30
  3. iter=30
  4. for i=1:D,
  5.     for j=1:i,
  6.             A(i,j)=rand;
  7.             A(j,i)=A(i,j);
  8.     end
  9. end
  10.  
  11. r0=rand(D,1);
  12. b0=sqrt(r0'*r0);
  13. q1=r0/b0;
  14. a1=q1'*A*q1;
  15.  
  16. r1=A*q1-a1*q1;
  17. b1=sqrt(r1'*r1);
  18. q2=r1/b1;
  19. a2=q2'*A*q2;
  20.  
  21. r2=A*q2-a2*q2-b1*q1;
  22. b2=sqrt(r2'*r2);
  23. q3=r2./b2;
  24. a3=q3'*A*q3;
  25.  
  26.  
  27. qs=zeros(D,iter);
  28. qs(:,1)=q1;
  29. qs(:,2)=q2;
  30. qs(:,3)=q3;
  31.  
  32. as=zeros(iter,1);
  33. as(1)=a1;
  34. as(2)=a2;
  35. as(3)=a3;
  36.  
  37. bs=zeros(iter,1);
  38. bs(1)=b0;
  39. bs(2)=b1;
  40. bs(3)=b2;
  41.  
  42. r2=A*q2-a2*q2-b1*q1;
  43. b2=sqrt(r2'*r2);
  44. q3=r2./b2;
  45. a3=q3'*A*q3;
  46.  
  47. for i=3:iter,
  48.     r=A*qs(:,i)-as(i)*qs(:,i)-bs(i)*qs(:,i-1);
  49.     bs(i+1)=sqrt(r'*r);
  50.     qs(:,i+1)=r./bs(i+1);
  51.     as(i+1)=qs(:,i+1)'*A*qs(:,i+1);
  52. end
  53. e={};
  54. for i=1:iter,
  55.     qs(:,1:i)'*qs(:,1:i)
  56.     T=qs(:,1:i)'*A*qs(:,1:i);
  57.      for i=1:length(T),
  58.          for j=1:length(T),
  59.             T(j+2:length(T),j)=0;
  60.             T(1:j-2,j)=0;
  61.          end
  62.      end
  63.     a=eig(T);
  64.     e{i}=a
  65. end
  66. hold on
  67. for i=1:iter,
  68.     scatter(ones(length(e{i}),1)*i,e{i})
  69. end
  70. accurate=eig(A)
  71. scatter(ones(size(accurate))*iter+1,accurate,'filled')
  72. hold off
  73. Q=[q1 q2 q3];
  74.  
  75. EYE=Q'*Q;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement