Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
anthony.canu
Inscrit le: 22 Avr 2011 Messages: 16
|
Posté le: 26 Avr 2016 23:49 Sujet du message: Si les n premières décimales sont égales à m alors ... |
|
|
Bonjour,
Je bloque sur l'écriture de la condition suivante :
"Si les n premières décimales d'un réel sont égales à m alors ..."
Savez vous comment coder cette condition sous Maple ?
Pour ma part je sais afficher la partie décimale d'un réel avec la fonction frac() mais je ne vois pas comment me dépatouiller avec le reste ?
Cordialement
Anthony |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 27 Avr 2016 9:07 Sujet du message: |
|
|
Bonjour,
Voici la solution avec ces 2 petites procédures:
Code: |
> DECIMALE:=proc(x,n)
> # donne la n-ième décimale du réel x
> local n1,q;
> n1:=floor(x*10^n);
> q:=n1 mod 10:
> end proc:
>
> DECIMALE(Pi,4); # la 4ème décimale de Pi est 5
5
> evalf(Pi); # vérification
3.141592654
> CONDITION:=proc(x,n,m)
> # teste si les n premières décimales d'un réel sont égales à m
> local k;
> for k to n do
> if DECIMALE(x,n)<>m then return false
> # on sort de la procédure avec un résultat faux si l'une des n premières décimales est distincte de m
> fi
> od:
> true # test réussi, résultat vrai
> end proc:
>
> CONDITION(1/9,10,1); # les 10 premières décimales de 1/9 valent 1
true
> evalf(1/9); # vérification
0.1111111111
> CONDITION(1.22227222,5,2); # faux à cause de la décimale valant 7
false
|
Donc, une fois ces procédures écrites, il ne vous reste plus qu'à programmer votre condition ainsi :
if CONDITION(x,n,m) then .... end if
A plus tard. |
|
Revenir en haut de page |
|
 |
anthony.canu
Inscrit le: 22 Avr 2011 Messages: 16
|
Posté le: 27 Avr 2016 9:18 Sujet du message: |
|
|
Citation: | Donc, une fois ces procédures écrites, il ne vous reste plus qu'à programmer votre condition ainsi :
if CONDITION(x,n,m) then .... end if
A plus tard. |
Merci beaucoup pour toutes ces infos, je vais tacher d'en tirer le meilleur pour arriver à mes fins
Mille merci encore ! |
|
Revenir en haut de page |
|
 |
anthony.canu
Inscrit le: 22 Avr 2011 Messages: 16
|
Posté le: 27 Avr 2016 11:25 Sujet du message: |
|
|
Après essai, il apparait un bug sur cet exemple précis :
Je teste ici si les 12 premières décimales sont des "9"
> CONDITION(frac(exp(Pi*sqrt(10))),12,9);
>
true
Le programme retourne vraie alors que :
> evalf(frac(exp(Pi*sqrt(10))));
.787867713429380788435798360958980444627316933
> |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 27 Avr 2016 15:57 Sujet du message: |
|
|
Oui effectivement, la ligne à modifier est :
if DECIMALE(x,k)<>m then return false
J'avais mis DECIMALE(x,n).
Désolé ! |
|
Revenir en haut de page |
|
 |
anthony.canu
Inscrit le: 22 Avr 2011 Messages: 16
|
Posté le: 27 Avr 2016 17:25 Sujet du message: |
|
|
Merci beaucoup, je vais modifier tout ça  |
|
Revenir en haut de page |
|
 |
|