|
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 209
|
Posté le: 11 Fév 2019 14:35 Sujet du message: Extraction d'une racine carée et fraction continue |
|
|
Bonjour ALS : )
Je sollicite votre aide s'il vous plaît pour un petit programme en rapport avec les racines carrées et les fractions continues.
Tout d'abord en rapport avec ce petit programme :
========================================
restart;
"CFRAC 2019";
kernelopts(maxdigits);
p := 26;
with(numtheory);
cfrac(sqrt(p), 10, 'c');
c := [c];
========================================
Alors pour les "petits" nombres il n'y a aucun problème et Maple renvoie les fractions.
Mais dès lors que j'utilise un "grand" nombre Maple me renvoie cette erreur : "Error, (in numtheory:-nthconver) numeric exception: division by zero"
Comment pourrait-on s'il vous plaît corriger cela...?
(J'ai pensé à calculer avec "evalf" la racine carrée du nombre et faire ensuite directement "cfrac" sur la racine calculée, mais n'y a t-il pas une autre solution ..??)
PS: Ici le "cfrac" me donne comme demandé, les 10 premières fractions, mais peut-on par exemple demander une sélection de fractions de 5..10 ou par exemple les fractions de 20 à 25 etc ...?
Ma seconde question est de savoir s'il vous plaît, si cela est possible de faire un petit programme ( par exemple comme vous avez déjà fait pour le sudoku ) qui effectue l'extraction d'une racine carrée ( comme si on faisait à la main ) et qui donne chaque étape ( disposée si c'est possible comme on apprend au primaire, c'est à dire avec la longue barre verticale et la petite barre horizontale )..?
[img] http://villemin.gerard.free.fr/ThNbDemo/RacinCar_fichiers/image045.jpg [/img]
En espérant que vous vous portez bien,
@bientôt,
Guimzo |
|
Revenir en haut de page |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 21 Fév 2019 8:33 Sujet du message: |
|
|
Bonjour,
Oui, je vais très bien. A propos du développement en fractions continues, voici un petit programme permettant d'afficher la suite des termes de ce développement.
Exemple: si x=46/7 et n=8 , on obtient une liste de 4 termes
[y[1], y[2], y[3], y[4]] = [6, 1, 1, 3]
Code: |
1
46/7 = y[1] + ------------------
1
y[2] + -----------
1
y[3] + ----
y[4]
|
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(46/7,8);
[6, 1, 1, 3]
> frac_cont(sqrt(279),20);
[16, 1, 2, 2, 1, 2, 2, 1, 32, 1, 2, 2, 1, 2, 2, 1, 32, 1, 2, 2]
> 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]
> frac_cont(sqrt(71258978117),100);
[266943, 1, 3, 2, 2, 3, 21, 10, 1, 3, 8, 1, 288, 1, 1, 1, 2, 1, 4,
1, 22, 30, 1, 17, 2, 2, 1, 2, 18, 9, 12, 1, 7, 1, 1, 2, 5, 1,
1, 1, 7, 2, 1, 2, 1, 32, 6, 4, 1, 5, 6, 1, 1, 1, 1, 8, 1, 2,
148, 1, 1, 2, 24, 95, 2, 2, 6, 2, 2, 2, 1, 267, 2, 2, 1, 2, 2,
6, 1, 2, 1, 1, 3, 3, 1, 19, 8, 1, 2, 1, 2, 2, 6, 1, 1, 19, 21,
58, 1, 7]
|
Je ne sais pas s'il fonctionne avec de très gros nombres.
A bientôt. |
|
Revenir en haut de page |
|
|
Guimzo
Inscrit le: 02 Juin 2012 Messages: 209
|
Posté le: 21 Fév 2019 22:19 Sujet du message: |
|
|
Bonjour ALS,
Merci pour votre aide ; cela a l'air de fonctionner pour une certaine longueur de nombre.
Pour ne sélectionner qu'un intervalle donné des résultats, j'ai utilisé la fonction "op" du coup :
c := frac_cont(sqrt(3715499642219362511450627), 100):
res := [op(5 .. 10, c)];
Merci et à bientôt Professeur,
Le bonjour de Lyon |
|
Revenir en haut de page |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 22 Fév 2019 9:06 Sujet du message: |
|
|
Bonjour Guimzo,
En évaluant la racine carrée au départ avec un grand nombre de décimales, j'ai obtenu la décomposition en fractions continues :
Code: |
> with(numtheory):
> p := 3715499642219362511450627; c:=cfrac(evalf(sqrt(p),5000), 10);
>
p := 3715499642219362511450627
1
c := 1927563135728 + ---------------------------------------------
1
2 + -----------------------------------------
1
7 + -------------------------------------
1
5 + ---------------------------------
1
18 + ----------------------------
1
4 + ------------------------
1
1 + --------------------
1
6 + ----------------
1
1 + ------------
1
5 + --------
22 + ...
> op(c);
[1927563135728, 2, 7, 5, 18, 4, 1, 6, 1, 5, 22, ...]
|
La fonction op agissant sur c permet effectivement l'affichage de la suite sous forme de liste.
@+ |
|
Revenir en haut de page |
|
|
Guimzo
Inscrit le: 02 Juin 2012 Messages: 209
|
Posté le: 22 Fév 2019 20:49 Sujet du message: |
|
|
Bonjour ALS,
Merci encore pour votre aide, effectivement, on peut aussi évaluer d'abord la racine carrée du nombre et ensuite faire le CFRAC dessus.
Portez-vous bien, à bientôt Professeur |
|
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.
|