l'algo du bac S

Utilisation de Xcas

Modérateur : xcasadmin

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

l'algo du bac S

Message par alb » jeu. juin 21, 2012 7:28 pm

Un exercice de l'épreuve de ce matin consiste à écrire l'algo pour calculer le terme général de la suite u(n)=1+1/2+...+1/n-ln(n). En Xcas on peut faire:

Code : Tout sélectionner

Terme(n):={
  local res;
  res:=0;
  pour k de 1 jusque n faire
    res:=res+1/k
  fpour
  res:=res-ln(n)
  retourne res
}
Les 10 premiers termes sont donnés par seq(evalf(Terme(n),3),n,1,10)
Le centième terme est evalf(Terme(100),3)
Dans l'énoncé on donne aussi u(1000), u(1500) et u(2000). Qu'à cela ne tienne faisons seq(evalf(Terme(n),3),n,1000,2000,500) et là surprise on obtient [-2147483.649,-2147483.649,-2147483.649] ce qui pour une suite minorée par 0 ne laisse pas d'étonner.
On arrange la chose en faisant seq(evalf(Terme(n),14),n,1000,2000,500) ou seq(round(evalf(Terme(n),14),3),n,1000,2000,500)
Je m'excuse de poser cette question rebattue mais j'aimerais ne pas dire trop de bêtises à la rentrée aux futurs bacheliers. Donc pourquoi cette réponse fausse ?

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

Re: l'algo du bac S

Message par parisse » ven. juin 22, 2012 9:21 am

c'est bizarre, ca ne le fait qu'avec seq, si on tape evalf(Terme(1000)) on obtient undef, ce qui est normal puisque Terme(1000) est une enorme fraction - ln(1000) et evalf ne peut pas la convertir (depassement de capacite flottant). Par contre evalf(fraction)-ln(1000) marche parce que xcas sait evaluer une fraction en precision double.
[Edit] c'est la precision 3 qui pose probleme.

Répondre