Advertisement
Adytzu04

lab matlab me

Nov 26th, 2012
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.32 KB | None | 0 0
  1. EPS=input('EPS=');
  2.  
  3. while(n<=2);
  4.     n=input('n=');
  5. end
  6.  
  7. a=zeros(n);
  8. for i=1:1:n
  9.     fprintf('\n Linia %g',i)
  10.     a(i,)=input(' ');
  11. end
  12. aa=a;
  13. u=zeros(n);
  14. q=eye(n);
  15. format long e;
  16.  
  17. for k=1:n-2
  18.     uk=zeros(n,1);
  19.     sum=sqrt(a(k+1:n,k)^`*a(k+1:n,k));
  20.     if(a(k+1,k)>0)
  21.         semn=1;
  22.     else
  23.         semn=-1;
  24.     end
  25.     sigma=semn*sum;
  26.     uk(k+1)=a(k+1,k)+sigma;
  27.     uk(k+2:n)=a(k+2:n,k);
  28.     beta=sigma*uk(k+1)
  29.     if(beta==0)
  30.         fprintf('\nbeta - nul : STOP');
  31.         return;
  32.     end
  33.     u=eye(n)-(uk*uk^)/beta;
  34.     a=u*a*u^`;
  35.     q=u*q;
  36.     fprintf('\nk=');
  37.     k
  38.     fprintf('\na=');
  39.     a
  40. end
  41. h=a;
  42. fprintf('\nforma superior Hessenberg:');
  43. h
  44.  
  45. iter=0;
  46. flag=0;
  47.  
  48. while(flag==1)
  49.     iter=iter+1;
  50.     miu=h(n,n);
  51.     pt=eye(n);
  52.     h=h-miu*eye(n);
  53.     for k=1:n-1
  54.         r=sqrt(h(k,k)^(2)+h(k+1,k)^(2));
  55.         if(r==0)
  56.             fprintf('\nr = 0 : STOP');
  57.             return;
  58.         end
  59.         ck=h(k,k)/r;
  60.         dk=h(k+1,k)/r;
  61.         p=eye(n);
  62.         p(k,k)=ck;
  63.         p(k+1,k)=-dk;
  64.         p(k,k+1)=dk;
  65.         p(k+1,k+1)=ck;
  66.         h=p*h;
  67.         pt=pt*p^`;
  68.         q=p*q;
  69.     end
  70.     h=h*pt+miu*eye(n);
  71.     for i=1:n-1
  72.         sum=(abs(h(i,i))+abs(h(i+1,i+1)))*EPS;
  73.         if(abs(h(i+1,i<=sum)
  74.             h(i+1,i)=0;;
  75.         end
  76.         flag=0;
  77.         i=1;
  78.         while((i<=n-2)&&(flag==0))
  79.             if((h(i+1,i)~0)&&(h(i+2,i+1)~=0))
  80.                 flag=1;
  81.             end
  82.             i=i+1;
  83.         end
  84.         if(flag==0)
  85.             while((i<=n-1)&&(flag==0))
  86.                 if(h(i+1,i)~=0)
  87.                     ca=1;
  88.                     cb=-(h(i,i)+h(i+1,i+1));
  89.                     cc=h(i,i)*h(i+1,i+1)-h(i+1)*h(i,i+1);
  90.                     delta=cb*cb-4*ca*cc;
  91.                     if(delta>=0)
  92.                         flag=1;
  93.                     end
  94.                 end
  95.                 i=i+1;
  96.             end
  97.         end
  98.           fprintf('\niter = ');
  99.           iter
  100.           s=h;
  101.             fprintf('\ns = ');
  102.             s
  103.         end
  104.           fprintf('\nforma canonica Schur:');
  105.           s
  106.           qt=q^`;
  107.             fprintf('\nmatricea de transformare:');
  108.             qt
  109.            
  110.             ic=sqrt(-1);
  111.             valp=zeros(1,n);
  112.             vectp=zeros(n);
  113.             j=1;
  114.             while(j<=n-1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement