|
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
momo Invité
|
Posté le: 07 Mar 2005 16:11 Sujet du message: fraction continue |
|
|
calut!!
j'ai besoin d'aide pour un projet maple!!
je but du sujet est de deelopper D^(1/2) en fraction continue. seulement on nous impose de poser An = (Pn + D^(1/2))/Qn.
merci d'avance!! |
|
Revenir en haut de page |
|
|
mathmatha Invité
|
Posté le: 07 Mar 2005 16:56 Sujet du message: |
|
|
Utiliser la fonction existante numtheory[cfrac]. |
|
Revenir en haut de page |
|
|
Invité
|
Posté le: 07 Mar 2005 18:45 Sujet du message: |
|
|
on me demande un algo |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 08 Mar 2005 8:23 Sujet du message: Re: fraction continue |
|
|
J'ai cet algorithme qui fournit au plus n termes du développement en fraction continue de x:
Code: |
> frac_cont:=proc(x,n)
> local y,z,k,L;
> z[1]:=x;y[1]:=floor(z[1]);L:=y[1];k:=1;
> while k<n do
> if evalf(y[k])<>evalf(z[k]) then
> z[k+1]:=evalf(1/(z[k]-y[k]),50);y[k+1]:=floor(z[k+1]);
> L:=L,y[k+1];k:=k+1;
> else RETURN([L]);
> end if;
> end do;
> [L];
> end proc;
> frac_cont(17/105,20);
[0, 6, 5, 1, 1, 1]
> frac_cont(sqrt(15),20);
[3, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1]
> frac_cont(exp(1),20);
[2, 1, 2, 1, 1, 4, 1, 1, 6, 1, 1, 8, 1, 1, 10, 1, 1, 12, 1, 1]
> frac_cont(Pi,20);
[3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2]
|
|
|
Revenir en haut de page |
|
|
Invité
|
Posté le: 08 Mar 2005 14:55 Sujet du message: |
|
|
le probleme c'est qu'on nous demande de poser An=(Pn+racine(D))/Qn et de donner des formules de recurence n'utilisant que des entiers et [An] |
|
Revenir en haut de page |
|
|
globuline Invité
|
Posté le: 08 Mar 2005 16:13 Sujet du message: Re: fraction continue |
|
|
Si tu veux qu'on t'aide, donne l'énoncé complet, car ALS a donné l'algo classique. Tu adaptes à ton cas.
C'est quoi Pn,Qn et les premiers termes?? |
|
Revenir en haut de page |
|
|
Invité
|
Posté le: 08 Mar 2005 16:29 Sujet du message: |
|
|
le probleme c'est que c'est l'enoncé complet et donc on sait pas ce que sont les Pn et les Qn!!!!!! |
|
Revenir en haut de page |
|
|
globuline Invité
|
Posté le: 09 Mar 2005 9:11 Sujet du message: |
|
|
Bizarre, allez sur le ouaibe, car sans indication?? Par ex, "algorithme fractions continues" dans Google.
Mais à mon avis, vous allez retomber sur le même algo qu'ALS. |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 09 Mar 2005 13:43 Sujet du message: Re: développement en fractions continuées de sqrt(d) |
|
|
Pour un exemple détaillé, voir sur cette page:
http://gersoo.free.fr/docs/racine/rac.html#FRAC
La procédure conj(F) rend rationnel le dénominateur de la fraction F en la multipliant et la divisant par l'expression conjuguée du dénominateur.
Code: |
> conj:=proc(F)
> local n,d,k,r,i;
> n:=numer(F): d:=denom(F);
> for k to nops(d) do
> if type(op(k,d), 'sqrt'(integer)) then r:=op(k,d)^2 fi;
> if type(op(k,d), 'integer') then i:=op(k,d) fi;
> end do;
> n/(i^2-r)*(i-sqrt(r))
> end proc:
>
> conj(1/(53^(1/2)-7));
1/2
53
7/4 + -----
4
|
La procédure fraccont(d,n) calcule les n+1 premiers coeff du développement en fractions continuées de sqrt(d) et affiche au cours du calcul les a[n] sous la forme a[n]=(p[n]+sqrt(d))/q[n] en utilisant la procédure conj.
Code: |
> fraccont:=proc(d,n)
> local a,k;
> a[0]:=sqrt(d): print(a[0]);
> for k to n do
> a[k]:=conj(1/(a[k-1]-floor(a[k-1]))): print(a[k])
> od:
> [seq(floor(a[k]),k=0..n)]
> end proc:
>
> fraccont(53,5);
1/2
53
1/2
53
7/4 + -----
4
1/2
53
5/7 + -----
7
1/2
53
2/7 + -----
7
1/2
53
5/4 + -----
4
1/2
7 + 53
[7, 3, 1, 1, 3, 14]
|
|
|
Revenir en haut de page |
|
|
Invité
|
Posté le: 26 Mar 2005 9:53 Sujet du message: |
|
|
bonjour!! je dois donner un algorithme qui calcul la periode du developpement en fraction continue de racine(d) ! si quelqu'un pouvais me venir en aide... merci d'avance |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 26 Mar 2005 10:43 Sujet du message: Re: période du développemnt en fraction continuée de sqrt(d) |
|
|
La procédure periode(d,n) calcule les n premiers termes du développement en fraction continuée de sqrt(d) et rend pour résultat la période du de ce développement (prendre un nombre n suffisamment grand)
Code: |
> conj:=proc(F)
> local n,d,k,r,i;
> n:=numer(F): d:=denom(F);
> for k to nops(d) do
> if type(op(k,d), 'sqrt'(integer)) then r:=op(k,d)^2 fi;
> if type(op(k,d), 'integer') then i:=op(k,d) fi;
> end do;
> n/(i^2-r)*(i-sqrt(r))
> end proc:
> fraccont:=proc(d,n)
> local a,k;
> a[0]:=sqrt(d):
> for k to n do
> a[k]:=conj(1/(a[k-1]-floor(a[k-1]))):
> od:
> [seq(floor(a[k]),k=0..n)]
> end proc:
> periode:=proc(d,n)
> local fc,j,k;
> fc:=fraccont(d,n):
> for k from 2 to nops(fc) do
> for j from k+1 to nops(fc) do
> if fc[j]=fc[k] then
> if 2*j-1-k<=nops(fc) and fc[k..j-1]=fc[j..2*j-1-k] then return j-k end if
> end if
> end do
> end do:
> -1
> end proc:
>
> periode(107,100);
6
> fc:=fraccont(107,100);
fc := [10, 2, 1, 9, 1, 2, 20, 2, 1, 9, 1, 2, 20, 2, 1, 9, 1, 2, 20,
2, 1, 9, 1, 2, 20, 2, 1, 9, 1, 2, 20, 2, 1, 9, 1, 2, 20, 2, 1,
9, 1, 2, 20, 2, 1, 9, 1, 2, 20, 2, 1, 9, 1, 2, 20, 2, 1, 9, 1,
2, 20, 2, 1, 9, 1, 2, 20, 2, 1, 9, 1, 2, 20, 2, 1, 9, 1, 2,
20, 2, 1, 9, 1, 2, 20, 2, 1, 9, 1, 2, 20, 2, 1, 9, 1, 2, 20,
2, 1, 9, 1]
> periode(1473,100);
28
# Vérifions:
> fc:=fraccont(1473,100);
fc := [38, 2, 1, 1, 1, 2, 1, 2, 2, 9, 5, 1, 3, 1, 24, 1, 3, 1, 5, 9,
2, 2, 1, 2, 1, 1, 1, 2, 76, 2, 1, 1, 1, 2, 1, 2, 2, 9, 5, 1,
3, 1, 24, 1, 3, 1, 5, 9, 2, 2, 1, 2, 1, 1, 1, 2, 76, 2, 1, 1,
1, 2, 1, 2, 2, 9, 5, 1, 3, 1, 24, 1, 3, 1, 5, 9, 2, 2, 1, 2,
1, 1, 1, 2, 76, 2, 1, 1, 1, 2, 1, 2, 2, 9, 5, 1, 3, 1, 24, 1,
3]
> fc[2..30];
[2, 1, 1, 1, 2, 1, 2, 2, 9, 5, 1, 3, 1, 24, 1, 3, 1, 5, 9, 2, 2, 1,
2, 1, 1, 1, 2, 76, 2]
> fc[30..58];
[2, 1, 1, 1, 2, 1, 2, 2, 9, 5, 1, 3, 1, 24, 1, 3, 1, 5, 9, 2, 2, 1,
2, 1, 1, 1, 2, 76, 2]
> fc[58..86];
[2, 1, 1, 1, 2, 1, 2, 2, 9, 5, 1, 3, 1, 24, 1, 3, 1, 5, 9, 2, 2, 1,
2, 1, 1, 1, 2, 76, 2]
|
|
|
Revenir en haut de page |
|
|
Invité
|
Posté le: 26 Mar 2005 19:56 Sujet du message: |
|
|
merci pour l'algorithme mais quand je l'utilse avec mon exemple a moi il ne marche pas c'est a dire si je fais
periode(10209,100); maple me renvoi 1 alors ke la periode est de 54 |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 27 Mar 2005 9:35 Sujet du message: Re: période du développt en fraction continuée de sqrt(d |
|
|
Citation: |
merci pour l'algorithme mais quand je l'utilse avec mon exemple a moi il ne marche pas c'est a dire si je fais
periode(10209,100); maple me renvoi 1 alors ke la periode est de 54 |
Oui, il semble qu'il y ait un pb mineur avec l'algorithme qui donne parfois la réponse 1 quand le nombre n est trop petit.
periode(10209,1000); donne bien 54.
Essayez de corriger ça. |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 28 Mar 2005 14:14 Sujet du message: Re: période du développt en fraction continuée de sqrt(d |
|
|
Bonjour,
Je pense avoir résolu le problème en améliorant le test dans la procédure période:
Code: |
periode:=proc(d,n)
> local fc,j,k;
> fc:=fraccont(d,n):print(fc);
> for k from 2 to nops(fc) do
> for j from k+1 to nops(fc) do
> if fc[j]=fc[k] then
> if 2*j-1-k<=nops(fc) then
> if fc[k..j-1]=fc[j..2*j-1-k] then return j-k end if
> else
> if fc[k..nops(fc)-j+k]=fc[j..nops(fc)] then return j-k end if
> end if:
> end if
> end do
> end do:
> -1
> end proc:
> periode(10209,100);
[101, 25, 3, 1, 11, 1, 7, 6, 5, 3, 2, 1, 5, 2, 2, 1, 5, 1, 4, 4, 1,
39, 1, 1, 1, 1, 4, 2, 4, 1, 1, 1, 1, 39, 1, 4, 4, 1, 5, 1, 2,
2, 5, 1, 2, 3, 5, 6, 7, 1, 11, 1, 3, 25, 202, 25, 3, 1, 11, 1,
7, 6, 5, 3, 2, 1, 5, 2, 2, 1, 5, 1, 4, 4, 1, 39, 1, 1, 1, 1,
4, 2, 4, 1, 1, 1, 1, 39, 1, 4, 4, 1, 5, 1, 2, 2, 5, 1, 2, 3,
5]
54
|
|
|
Revenir en haut de page |
|
|
Invité
|
Posté le: 30 Mar 2005 19:20 Sujet du message: |
|
|
merci bcp pr la procedure!! par contre j'aurais une autre petite question . calculer pn²-Dqn² sachant que
p(n+1) = a(n+1)pn + p(n-1)
q(n+1) = a(n+1)qn + q(n-1)
p0= a0
p1 = a0*a1 + 1
q0 = 1
q1 = a1
D represente le dombre dont ont veu faire la decomposition de fraction continue de sa racine et les an sont les quotients complet obtenus ds les algorithme precedents que vous nous avez fournis!!! merci d'avance!! |
|
Revenir en haut de page |
|
|
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com
Apprendre Maple - ©
- Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.
|