limite du nombre de termes pour somme ?

Utilisation de Xcas

Modérateur : xcasadmin

jmmeny
Messages : 36
Inscription : dim. févr. 03, 2008 8:41 pm

limite du nombre de termes pour somme ?

Message par jmmeny » ven. févr. 13, 2009 5:36 pm

J'ai le petit prog suivant :

pluspetitchiffre(n):={
/* renvoie le plus petit chiffre de l'écriture décimale de l'entier n*/
local ppc,unite;
si n==0 alors return 0; fsi;
ppc:=9;
tantque n!=0 faire
unite:=irem(n,10);
si unite<ppc alors ppc:=unite;fsi;
n:=iquo(n,10);
ftantque;
return ppc
}
:;


je définis ensuite

g(k):=somme(pluspetitchiffre(n),n,10^k,10^(k+1)-1)

g(2), g(3), g(4) sont calculés.

Pour g(5), j'ai la réponse :
"Ifte: Unable to check test Error: Bad Argument Value"

Que faut-il comprendre ?

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

Message par parisse » sam. févr. 14, 2009 10:13 am

C'est l'instruction de somme qui refuse d'effectuer une somme element par element si le nombre d'éléments à calculer est jugé trop important (et ici ca nécessiterait de l'ordre de 3 à 5 minutes sur ma machine, il faut déjà 20 secondes pour g(4)). La limite actuelle est de 100000, je n'ai pas fait d'instructions permettant de modifier cette valeur maximale, mais je pourrai en rajouter une facilement. Au-delà de la valeur limite, le système essaie de calculer la somme symboliquement ce qui nécessite de calculer pluspetitchiffre(n) avec n symbolique (et non remplacé par 10^k), d'où l'erreur sur un test faisant intervenir n.
L'autre solution, c'est de faire soi-meme la somme
g(k):={
local res,n;
for (n:=10^k;n<10^(k+1);n++)
res += pluspetitchiffre(n);
return res;
}

Répondre