Académique Documents
Professionnel Documents
Culture Documents
if (OrthFlag~=0)&(OrthFlag~=1)&(OrthFlag~=2)
disp('You have entered an invalid value for OrthFlag')
disp('You should choose OrthFlag to be either 0 or 1 or 2 (see help file)')
disp('The value of OrthFlag was set to 0')
disp(' ')
OrthFlag=0;
end
if Ntot<Nskip
disp('You have entered an invalid value for either Ntot or Nskip')
disp('You must have Ntot>=Nskip, (see help file)')
disp('The values of Nskip and Ntot have been switched')
disp(' ')
temp1=Nskip;
Nskip=Ntot;
Ntot=temp1;
end
% INITIALIZATION PART
m=Ntot-Nskip;
n=max(size(Ic));
x=zeros(n,Ntot+1);
% END INITIALIZATION
x(:,1)=Ic;
for j=2:Nskip+1
Ic=feval(F1,Ic);
x(:,j)=Ic;
end % (j)
if LceFlag==0
for j=1:m
Ic=feval(F1,Ic);
x(:,j+Nskip+1)=Ic;
end % (j)
else
r=zeros(1,n);gama=zeros(1,n);
q=eye(n);sl=zeros(n,1);Lce=zeros(n,m);
if OrthFlag==1|OrthFlag==2
ErrorQ=zeros(1,m);
end % (if)
A=feval(F2,Ic);
if OrthFlag==0
a=A;
end;
N2=Nskip+1;
for i=1:m
if OrthFlag~=0
a=A*q;
Ic=feval(F1,Ic);
x(:,i+N2)=Ic;
A=feval(F2,Ic);
B=eye(n);
elseif OrthFlag == 0
Ic=feval(F1,Ic);
x(:,i+N2)=Ic;
B=feval(F2,Ic);
end % (if OrthFlag)
% Computation of the Factorization
for k=1:n-1
% computation of the reflector
if a(k,k)<0
b=-1;
else
b=1;
end
sig=sqrt(a(k:n,k)'*a(k:n,k));
gama=sig*(sig+abs(a(k,k)));
r(k)=-b*sig;
a(k,k)=a(k,k)-r(k);
% end computation of the reflector
p=k+1;
for j=p:n
b=a(k:n,k)'*a(k:n,j)/gama;
a(p:n,j)=a(p:n,j)-b*a(p:n,k);
end
% Computation of B*Q
for j=1:n
b=B(j,k:n)*a(k:n,k)/gama;
B(j,k:n)=B(j,k:n)-a(k:n,k)'*b;
end
end
r(n)=a(n,n);
% End Computation of the factorization
if OrthFlag~=0
q=B;
if OrthFlag==1
ErrorQ(i)=abs(1-abs(det(q)));
elseif OrthFlag==2
ErrorQ(i)=norm(q'*q-eye(n));
end % (if)
elseif OrthFlag == 0 % (if OrthFlag)
a=B;
end % (if OrthFlag)
sl=sl+log(abs(r'));
Lce(:,i)=sl/i;
end % (i)
end % (else)