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)); };