Notation
Si
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 :
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)); };