next up previous contents index
suivant: Suite des réduites "plus monter: Développement en fraction continue précédent: Exemples   Table des matières   Index

Suite des réduites successives d'un réel

Si alpha a comme développement en fraction continue $ \tt (a_0,a_1,....a_n....)$, la suite des réduites est la suite des nombres rationnels ayant comme développement en fraction continue : $ \tt (a_0),(a_0,a_1),..,(a_0,a_1....a_n),....$.
On écrit le programme permettant d'obtenir les p premières réduites de alpha.
On écrit le programme naïf reduiten (on recalcule les réduites sans se servir des relations de récurrence) :
reduiten(alpha,p):={
local l,k,ld,lt,st,s,q,lred,redu;
ld:=r2dfc(alpha,p);
l:=ld[0];
s:= size(l);
if (s<p) {
  lt:=ld[1];
  st:=size(lt);
  if (st!=0){
    q:=iquo(p-s,st);
    for (j:=0;j<=q; j++){
      l:= concat(l,lt)
    }
  }
  else {
  p:=s;
  } 
}
lred:=[];
for (k:=1;k<=p;k++){
  redu:=dfc2r(mid(l,0,k),[]);
  lred:=append(lred,redu);
}
return (lred);
};
reduiten(sqrt(53),5)
On obtient :
[7,22/3,29/4,51/7,182/25]

On écrit maintenant le programme reduite permettant d'obtenir les p premières réduites de alpha, en se servant de la fonction dfc2reduites écrite auparavant et qui utilise les relations de récurrence.

reduite(alpha,p):={
local l,ld,lt,st,s,q,lred;
ld:=r2dfc(alpha,p);
l:=ld[0];
s:= size(l);
if (s<p) {
  lt:=ld[1];
  st:=size(lt);
  if (st!=0){
    q:=iquo(p-s,st);
    for (j:=0;j<=q; j++){
      l:= concat(l,lt)
    }
  }
}  
l:= mid(l,0,p);
lred:=dfc2reduites(l);
return lred;
}
On tape :
reduite(sqrt(53),5)
On obtient :
[7,22/3,29/4,51/7,182/25]
On tape :
reduite(11/3,2)
On obtient :
[3,4]

Documentation de giac écrite par Renée De Graeve