Previous Up Next

Chapitre 13  Les fractions continues

Définition Une fraction continue est une expression de la forme :
a1+b1/a2+b2/a3+b3/a4+...
avec pour k>1 ak>0 et pour k≥ 1 bk>0 Une fraction continue simple est une fraction continue où les bk=1, c’est donc une expression de la forme :
a1+1/a2+1/a3+1/a4+...
Ici on ne s’intéressera qu’aux fractions continues simples car sinon l’écriture n’est pas unique, par exemple : 13=3+4/6+4/6+4/6+...=
2+9/4+9/4+9/4+...=
3+1/1+1/1+1/1++1/1++1/6+...
Notation Si n=a1+1/a2+1/a3+1/a4+...
on notera :
n=([a1,a2,...an,..],[]) si le développement n’est pas périodique et
n=([a1,a2,...as],[b1,b2,...bt]) si le développement est périodique de période [c1,c2,...ct] ie lorsque n=[a1,a2,...as,c1,c2,...ct,c1,c2,...ct,c1....]
Par exemple :
13=([3,1,1,1,1,6],[1,1,1,1,6])

Propriétés
Un nombre rationnel a un développement en fraction continue fini.
Les réels qui ont un développement en fraction continue périodique sont solution d’une équation du second degré à coefficients dans ℕ.
Le programme :

f2dfc(x,n):={
local r,q,lq,lr,p,j;
q:=floor(x);
r:=normal(x-q);
lq:=[];
lr:=[];
for (j:=1;j<=n;j:=j+1) {
lq:=concat(lq,q);
if (x==q){return (lq,[]);}
p:=member(r,lr);
if (p) {return (lq,mid(lq,p))};
lr:=concat(lr,r);
x:=normal(1/r);
q:=floor(x);
r:=normal(x-q);
}
return (concat(lq,x),[]);
};

dfc2f1(d,t):={
local s,st,x,l,xt,k;
s:=size(d);
x:=d[s-1];
for (k:=s-2;k>=0;k:=k-1) {x:=normal(d[k]+1/x);}
if (t==[]) {return normal(x);}
st:=size(t);
purge(y);
xt:=t[st-1]+y;
for (k:=st-2;k>=0;k:=k-1) {xt:=normal(t[k]+1/xt);}
l:=solve(y=1/xt,y);
if (l[0]>0){y:=normal(l[0]);}else{y:=normal(l[1]);};
x:=d[s-1]+y;
for (k:=s-2;k>=0;k:=k-1) {x:=normal(d[k]+1/x);}
return(normal(x));
};
dfc2f2(d,t):={
local s,st,x,xt;
s:=size(d);
x:=d[s-1];
for (k:=s-2;s>=0;s:=s-1) {x:=d[k]+1/x;}
if (t==[]) {return x;}
st:=size(t);
xt:=t[st-1];
for (k:=st-2;st>=0;st:=st-1) {xt:=st[k]+1/xt;}
return(x+1/2*(sqrt(xt^2+4)-xt));
};

Previous Up Next