Exploration de Digits et de epsilon

Discussion sur l'enseignement de l'algorithmique avec Xcas au lycee
laurent.c
Messages : 5
Inscription : sam. mars 09, 2013 9:27 pm

Exploration de Digits et de epsilon

Message par laurent.c » dim. mars 31, 2013 6:38 pm

Bonjour,

J'explore sous différents logiciels la suite définie dans l'exercice 3 du bac S 2005 au Liban :
http://www.apmep.asso.fr/IMG/pdf/LibanSjuin2005.pdf

En résumé, la suite (u_n) est définie par son 1er terme u_1=e-2 et par la relation :

u_{n+1}=(n+1)*u_n-1

Elle tend vers 0, mais l'approximation du 1er terme introduit des erreurs qui sont amplifiées par un facteur n à chaque itération :
si "a" est une approximation de u_1, et v_n la suite définie comme u_n mais en partant de v_1=a, alors :

v_n-u_n=(a-(e-2))*n!

Suivant les logiciels, les approximations de u_n débloquent vers + ou - l'infini, en général à partir du rang 16.

Passons au programme sous XCAS.

Pour avoir une approximation de e-2, j'utilise approx.
Voici mon programme :

Code : Tout sélectionner

recur(N,precision):={
  local k,u,u_approx;
  Digits:=precision;
  u:=e-2;
  u_approx:=approx(u,precision);
  afficher(1 : evalf(u));
  afficher(evalf(u_approx-(e-2)));
  pour k de 2 jusque N faire
    u:=u*k-1;
    afficher(k : evalf(u));
    afficher(evalf((u_approx-(e-2))*k!));
  fpour;
  return u;
}:;
A chaque tour, on affiche ainsi la valeur approchée de u_n, et celle de v_n-u_n.

Il y a un bon contrôle de u_n grâce à l'option de précision Digits.

Cependant, approx semble plus limité : sitôt que la variable "precision" est >= 21, l'affichage de v_n-u_n devient nul.
J'ai aussi changé la valeur de epsilon, sans effet.

Ma configuration : xcas 1.0.0 sous Linux Mint 64 bits (base Ubuntu 11.10).

Je n'ai pas spécialement de question, mais voulais simplement signaler ce comportement de XCAS : peut-être est-ce que je m'y prends comme un manche...
Je teste en parallèle d'autres logiciels sur ce thème, et m'amuse bien... Cela mènera peut-être à une activité en classe.

Merci encore pour cet outil.

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Exploration de Digits et de epsilon

Message par parisse » mar. avr. 02, 2013 8:14 am

Je teste votre programme avec recur(20,30) donc precision 30, je n'observe pas de 0 pour afficher(evalf((u_approx-(e-2))*k!)); mais une valeur croissante (en valeur absolue), quels parametres avez-vous utilise?

laurent.c
Messages : 5
Inscription : sam. mars 09, 2013 9:27 pm

Re: Exploration de Digits et de epsilon

Message par laurent.c » mer. avr. 03, 2013 4:23 pm

Ça, c'est la meilleure...
Je teste à nouveau et n'obtiens les "0" cités qu'avec precision=21 !

Ceci sous 2 PC différents : AMD et Intel, Linux 64 bits dans les 2 cas.
Je voulais joindre mon fichier, mais le forum refuse l'extension xws...

Merci pour votre examen.

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Exploration de Digits et de epsilon

Message par parisse » jeu. avr. 04, 2013 8:27 am

Normalement u_approx-(e-2) devrait valoir tout le temps 0, mais voila ce qui se passe:
e-2=exp(1)-2 est evalue numeriquement, arrondi et stocke dans u_approx
u_approx-(e-2) est interprete sous la forme u_approx + ((-exp(1))+2)
u_approx etant numerique, le + demande l'evaluation numerique de -exp(1)+2, mais il n'est pas arrondi comme etant egal a l'oppose de l'arrondi de exp(1)-2.

laurent.c
Messages : 5
Inscription : sam. mars 09, 2013 9:27 pm

Re: Exploration de Digits et de epsilon

Message par laurent.c » ven. avr. 05, 2013 7:20 am

D'accord... C'est à peu près ce que j'espérais comme comportement, le but étant de tester les limites des logiciels en calcul approché.

Cela voudrait dire que pour 21 décimales (precision=21), les arrondis de u_approx et de exp(1)-2 sont particuliers, la soustraction donnant 0.

Tandis qu'avec une autre précision, la soustraction ne donne pas 0 : les arrondis sont plus clairement différents.

Je vais fouiller la chose... Merci en tout cas de ces renseignements.

Répondre