Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

fraction continue
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Polynômes et fractions rationnelles
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
momo
Invité





MessagePosté le: 07 Mar 2005 16:11    Sujet du message: fraction continue Répondre en citant

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é





MessagePosté le: 07 Mar 2005 16:56    Sujet du message: Répondre en citant

Utiliser la fonction existante numtheory[cfrac].
Revenir en haut de page
Invité






MessagePosté le: 07 Mar 2005 18:45    Sujet du message: Répondre en citant

on me demande un algo
Revenir en haut de page
ALS
Invité





MessagePosté le: 08 Mar 2005 8:23    Sujet du message: Re: fraction continue Répondre en citant

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é






MessagePosté le: 08 Mar 2005 14:55    Sujet du message: Répondre en citant

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é





MessagePosté le: 08 Mar 2005 16:13    Sujet du message: Re: fraction continue Répondre en citant

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é






MessagePosté le: 08 Mar 2005 16:29    Sujet du message: Répondre en citant

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é





MessagePosté le: 09 Mar 2005 9:11    Sujet du message: Répondre en citant

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é





MessagePosté le: 09 Mar 2005 13:43    Sujet du message: Re: développement en fractions continuées de sqrt(d) Répondre en citant

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é






MessagePosté le: 26 Mar 2005 9:53    Sujet du message: Répondre en citant

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é





MessagePosté le: 26 Mar 2005 10:43    Sujet du message: Re: période du développemnt en fraction continuée de sqrt(d) Répondre en citant

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é






MessagePosté le: 26 Mar 2005 19:56    Sujet du message: Répondre en citant

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é





MessagePosté le: 27 Mar 2005 9:35    Sujet du message: Re: période du développt en fraction continuée de sqrt(d Répondre en citant

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é





MessagePosté le: 28 Mar 2005 14:14    Sujet du message: Re: période du développt en fraction continuée de sqrt(d Répondre en citant

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é






MessagePosté le: 30 Mar 2005 19:20    Sujet du message: Répondre en citant

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
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Polynômes et fractions rationnelles Toutes les heures sont au format GMT + 2 Heures
Aller à la page 1, 2  Suivante
Page 1 sur 2

 
Sauter vers:  
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


phpBB

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.