204
5 Approximation des valeurs propres et des vecteurs propres
Programme 38 - sturm : Calcul de la suite de Sturm
function [p]=sturm(dd,bb,x)
%STURM Suite de Sturm
% P=STURM(D,B,X) calcule la suite de Sturm (5.65) en X.
n=length(dd);
p(1)=1;
p(2)=dd(1)-x;
for i=2:n
p(i+1)=(dd(i)-x)*p(i)-bb(i-1)ˆ2*p(i-1);
end
return
Un impl´ ementation ´ el´ ementaire de la m´ ethode de Givens est donn´ ee dans
le Programme 39. En entr´ ee, ind est le pointeur sur la valeur propre cherch´ ee,
les autres param` etres ´ etant les mˆ emes que ceux du Programme 38. En sortie, le
programme retourne les suites a
(k) , b
(k) et c
(k) , ainsi que le nombre d’it´ erations
niter et la suite de changements de signe s(c
(k) ).
Programme 39 - givsturm : M´ ethode de Givens avec suite de Sturm
function [ak,bk,ck,nch,niter]=givsturm(dd,bb,ind,tol)
%GIVSTURM M´ ethode de Givens avec suite de Sturm
[a, b]=bound(dd,bb); dist=abs(b-a); s=abs(b)+abs(a);
n=length(dd); niter=0; nch=[];
while dist>tol*s
niter=niter+1;
c=(b+a)/2;
ak(niter)=a;
bk(niter)=b;
ck(niter)=c;
nch(niter)=chcksign(dd,bb,c);
if nch(niter)>n-ind
b=c;
else
a=c;
end
dist=abs(b-a); s=abs(b)+abs(a);
end
return
Programme 40 - chcksign : Calcul du nombre de changements de signe dans
la suite de Sturm
function nch=chcksign(dd,bb,x)
%CHCKSIGN D´ etermine le nombre de changements de signe dans la suite
% de Sturm
5 Approximation des valeurs propres et des vecteurs propres
Programme 38 - sturm : Calcul de la suite de Sturm
function [p]=sturm(dd,bb,x)
%STURM Suite de Sturm
% P=STURM(D,B,X) calcule la suite de Sturm (5.65) en X.
n=length(dd);
p(1)=1;
p(2)=dd(1)-x;
for i=2:n
p(i+1)=(dd(i)-x)*p(i)-bb(i-1)ˆ2*p(i-1);
end
return
Un impl´ ementation ´ el´ ementaire de la m´ ethode de Givens est donn´ ee dans
le Programme 39. En entr´ ee, ind est le pointeur sur la valeur propre cherch´ ee,
les autres param` etres ´ etant les mˆ emes que ceux du Programme 38. En sortie, le
programme retourne les suites a
(k) , b
(k) et c
(k) , ainsi que le nombre d’it´ erations
niter et la suite de changements de signe s(c
(k) ).
Programme 39 - givsturm : M´ ethode de Givens avec suite de Sturm
function [ak,bk,ck,nch,niter]=givsturm(dd,bb,ind,tol)
%GIVSTURM M´ ethode de Givens avec suite de Sturm
[a, b]=bound(dd,bb); dist=abs(b-a); s=abs(b)+abs(a);
n=length(dd); niter=0; nch=[];
while dist>tol*s
niter=niter+1;
c=(b+a)/2;
ak(niter)=a;
bk(niter)=b;
ck(niter)=c;
nch(niter)=chcksign(dd,bb,c);
if nch(niter)>n-ind
b=c;
else
a=c;
end
dist=abs(b-a); s=abs(b)+abs(a);
end
return
Programme 40 - chcksign : Calcul du nombre de changements de signe dans
la suite de Sturm
function nch=chcksign(dd,bb,x)
%CHCKSIGN D´ etermine le nombre de changements de signe dans la suite
% de Sturm
