Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- EPS=input('EPS=');
- while(n<=2);
- n=input('n=');
- end
- a=zeros(n);
- for i=1:1:n
- fprintf('\n Linia %g',i)
- a(i,)=input(' ');
- end
- aa=a;
- u=zeros(n);
- q=eye(n);
- format long e;
- for k=1:n-2
- uk=zeros(n,1);
- sum=sqrt(a(k+1:n,k)^`*a(k+1:n,k));
- if(a(k+1,k)>0)
- semn=1;
- else
- semn=-1;
- end
- sigma=semn*sum;
- uk(k+1)=a(k+1,k)+sigma;
- uk(k+2:n)=a(k+2:n,k);
- beta=sigma*uk(k+1)
- if(beta==0)
- fprintf('\nbeta - nul : STOP');
- return;
- end
- u=eye(n)-(uk*uk^)/beta;
- a=u*a*u^`;
- q=u*q;
- fprintf('\nk=');
- k
- fprintf('\na=');
- a
- end
- h=a;
- fprintf('\nforma superior Hessenberg:');
- h
- iter=0;
- flag=0;
- while(flag==1)
- iter=iter+1;
- miu=h(n,n);
- pt=eye(n);
- h=h-miu*eye(n);
- for k=1:n-1
- r=sqrt(h(k,k)^(2)+h(k+1,k)^(2));
- if(r==0)
- fprintf('\nr = 0 : STOP');
- return;
- end
- ck=h(k,k)/r;
- dk=h(k+1,k)/r;
- p=eye(n);
- p(k,k)=ck;
- p(k+1,k)=-dk;
- p(k,k+1)=dk;
- p(k+1,k+1)=ck;
- h=p*h;
- pt=pt*p^`;
- q=p*q;
- end
- h=h*pt+miu*eye(n);
- for i=1:n-1
- sum=(abs(h(i,i))+abs(h(i+1,i+1)))*EPS;
- if(abs(h(i+1,i<=sum)
- h(i+1,i)=0;;
- end
- flag=0;
- i=1;
- while((i<=n-2)&&(flag==0))
- if((h(i+1,i)~0)&&(h(i+2,i+1)~=0))
- flag=1;
- end
- i=i+1;
- end
- if(flag==0)
- while((i<=n-1)&&(flag==0))
- if(h(i+1,i)~=0)
- ca=1;
- cb=-(h(i,i)+h(i+1,i+1));
- cc=h(i,i)*h(i+1,i+1)-h(i+1)*h(i,i+1);
- delta=cb*cb-4*ca*cc;
- if(delta>=0)
- flag=1;
- end
- end
- i=i+1;
- end
- end
- fprintf('\niter = ');
- iter
- s=h;
- fprintf('\ns = ');
- s
- end
- fprintf('\nforma canonica Schur:');
- s
- qt=q^`;
- fprintf('\nmatricea de transformare:');
- qt
- ic=sqrt(-1);
- valp=zeros(1,n);
- vectp=zeros(n);
- j=1;
- while(j<=n-1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement