suivant: Exemples
monter: Les programmes
précédent: La fonction r2dfc
Table des matières
Index
On écrit la fonction réciproque de r2dfc qui à partir d'un
développement en fraction continue et d'un reste éventuel ou d'un
développement en fraction continue et d'une période éventuelle
renvoie un réel.
dfc2r(d,t) transforme en un réel, la liste d représente un
développement en fraction continue et la liste
t représente la période.
On remarquera que lorsque la liste
t n'est pas vide il faut déterminer le nombre 0<y<1 qui admet
cette liste périodique comme développement en fraction continue et
pour ce faire résoudre l'équation :
le reste est alors
(s:=size(d)).
On écrit le programme :
dfc2r(d,t):={
local s,st,alpha,l,ap,k;
s:=size(d);
alpha:=d[s-1];
for (k:=s-2;k>=0;k:=k-1) {alpha:=normal(d[k]+1/alpha);}
if (t==[]) {return normal(alpha);}
st:=size(t);
purge(y);
ap:=t[st-1]+y;
for (k:=st-2;k>=0;k:=k-1) {ap:=normal(t[k]+1/ap);}
l:=solve(y=1/ap,y);
if (l[0]>0){y:=normal(l[0]);}else{y:=normal(l[1]);};
alpha:=d[s-1]+y;
for (k:=s-2;k>=0;k:=k-1) {alpha:=normal(d[k]+1/alpha);}
return(normal(a)lpha);
};
ou avec une écriture plus concise :
dfc2r(d,t):={
local s,st,alpha,l,ap,k;
s:=size(d);
st:=size(t);
if (st==0)
{y:=0;}
else
{purge(y);
ap:=t[st-1]+y;
for (k:=st-2;k>=0;k:=k-1) {ap:=normal(t[k]+1/ap);}
l:=solve(y=1/ap,y);
if (l[0]>0){y:=normal(l[0]);}else{y:=normal(l[1]);};
}
alpha:=d[s-1]+y;
for (k:=s-2;k>=0;k:=k-1) {alpha:=normal(d[k]+1/alpha);}
return(normal(alpha));
};
Documentation de giac écrite par Renée De Graeve