série et xcas.

Discussion sur l'enseignement de l'algorithmique avec Xcas au lycee
Répondre
Kexi
Messages : 7
Inscription : sam. oct. 30, 2010 7:40 pm

série et xcas.

Message par Kexi » ven. avr. 01, 2011 4:22 pm

Bonjour,


le code suivant vise à trouver à partir de quel entier k la somme (1+1/2+1/3+..+1/k) est superieur à un réel donné x ( par exemple ici x=8) .

Code : Tout sélectionner

prog():={
local s,k;
s,k:=0,0;
while(s<8){ k:=k+1;s:=s+1/k;}
print k;
}
:;
pour 8 j' obtiens 727 ( j'obtiens la même valeur d'ailleurs pour les valeurs de x suivantes).
Dés qu'on change le ( s<8) par (s<=8), on a un joli " calcul en cours" . J'ai été obligé à chaque fois de le stopper pour reprendre la main.
Pourquoi ? Cherche t-il un k pour lequel la somme vaut 8 ? .

les estimations s'arrangent un peu en changeant la ligne while par

Code : Tout sélectionner

while(s<=15){ k:=k+1;s:=evalf(s+1/k);}
pour x=13 par exemple le k affiché est 248397 !

Merci .
Dernière modification par Kexi le sam. avr. 02, 2011 7:18 am, modifié 1 fois.

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

Re: série et xcas.

Message par alb » ven. avr. 01, 2011 5:14 pm

Je n'obtiens pas du tout ça

Code : Tout sélectionner

prog():={
local s,k;
s,k:=0,0;
while(s<8){ k:=k+1;s:=s+1/k;}
print(k);//print k est incorrect
return k;
}
affiche et retourne 1674 ce que confirme:
evalf(sum(1/k,k=1..1674))

Remarque:
evalf(sum(1/k,k=1..100000)) est OK
evalf(sum(1/k,k=1..100001)) renvoie undef

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

Re: série et xcas.

Message par parisse » ven. avr. 01, 2011 5:49 pm

En effet, mais il faut avoir installé la version (instable) d'aujourd'hui; c'est le même bug que celui que vous aviez signalé.

Kexi
Messages : 7
Inscription : sam. oct. 30, 2010 7:40 pm

Re: série et xcas.

Message par Kexi » ven. avr. 01, 2011 6:11 pm

Merci à vous, je vais installer la dernière version alors.
Bonne soirée.

Kexi
Messages : 7
Inscription : sam. oct. 30, 2010 7:40 pm

Re: série et xcas.

Message par Kexi » ven. avr. 01, 2011 7:45 pm

Oui, la version testing me donne ce que trouve alb.
Merci et à bientôt.

alain974
Messages : 104
Inscription : lun. mai 24, 2010 11:15 am

Re: série et xcas.

Message par alain974 » sam. avr. 02, 2011 6:08 am

Bonjour,

je crois avoir réussi à démontrer que la série précédente converge, j'en ai trouvé une démonstration merveilleuse mais

1: La place me manque sur ce forum pour n'en donner ne serait-ce qu'une esquisse;

2: Je manque pour l'instant de renseignements sur sa limite, en particulier je ne sais pas si elle est rationnelle, algébrique ou transcendante.

Kexi
Messages : 7
Inscription : sam. oct. 30, 2010 7:40 pm

Re: série et xcas.

Message par Kexi » sam. avr. 02, 2011 7:17 am

ah je devine... vous êtes Alain Harmonique !.

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

Re: série et xcas.

Message par alb » sam. avr. 02, 2011 10:13 am

En marge, si j'ose dire, de ce problème, voici le résultat de mes recherches:
j'ai fait evalf(sum(1/k,k=1..?)) en prenant pour ? de grandes valeurs.
J'en déduis que la série semble converger vers un nombre bien connu ( :wink: ) des xcasiens, j'ai nommé undef.
En poussant un peu plus loin, je me suis mis à douter. En effet:
E:=sum(1/k,k=1..n);evalf(subst((E,n=?);
pour de très grandes valeurs de ? renvoie deux petits ronds accolés.
Il faudra bien 350 ans pour que des extra-terrestres viennent à bout de cette conjecture
qu'on peut dès maintenant appeler conjecture de Kexi-alain974-alb.

Kexi
Messages : 7
Inscription : sam. oct. 30, 2010 7:40 pm

Re: série et xcas.

Message par Kexi » sam. avr. 02, 2011 1:00 pm

Bonjour,
Pour aller dans le sens d' alb :

Code : Tout sélectionner

f(n):={
  local s,k;
s:=evalf(sum(seq(1/k,k=1..n))-ln(n));
return s
}
:;
et un

Code : Tout sélectionner

seq(f(n),n=100..1000,10)
donne quelque chose qui se termine comme ça

[0.577996711451,0.577984698432,0.577973049352,0.57796174792,0.5779507788,0.577940127549,0.577929780548,0.577919724942, infinity,undef,undef,undef]

Que vient faire le 'infinity' la dedans ?.

Bon , il faut que je regarde attentivement le manuel de Xcas sinon je vais vous solliciter plus que nécessaire.

Bonne fin de semaine.

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

Re: série et xcas.

Message par alb » sam. avr. 02, 2011 1:25 pm


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

Re: série et xcas.

Message par parisse » sam. avr. 02, 2011 2:58 pm

le inf vient d'une mauvaise évaluation numérique en précision machine. Explication:
S:=sum(seq(1/k,k=1..720))-ln(720)
renvoie 630211210476867503000172983169221665409716358973022301559008010747876636112367276240926043385200114653034934261457477477039920910359621056861974294503597191190216995647202737233616778772512006665354640182979467231727083322257256974936898129830182261892006397261625553179799948885059770115400309565489854481639/88053237356972999317970137091484974254089969914209789291918377899449488608922140937566377965103087812643673054672074043185481534236013588073480436564307465356831388713515360916830851125419565403255684114544251260939636957342924016930053389026721148203359353411843347897646329864233506571302551332055071040000-ln(720)
Comme on le voit, il s'agit d'une fraction moins un nombre transcendant. Or la fraction a un numérateur et un dénominateur dont l'évaluation numérique dépasse la capacité d'un double, d'où le résultat aberrrant (en effet je contourne l'évaluation numérique séparée uniquement pour des fractions seules, pas pour une expression composée). On peut par contre faire les 2 evalf séparément, ou faire un evalf avec une précision supérieure... ou utiliser une méthode plus précise pour approcher gamma (par exemple accélération de Richardson).

Kexi
Messages : 7
Inscription : sam. oct. 30, 2010 7:40 pm

Re: série et xcas.

Message par Kexi » sam. avr. 02, 2011 4:24 pm

Merci à vous deux.

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

Re: série et xcas.

Message par alb » sam. avr. 02, 2011 7:56 pm

Peut-on expliquer simplement à des élèves pourquoi:
evalf(somme(1/k,k,1,100000)) et evalf(somme(1/k,k,100000,1,-1))
ont des temps de calcul respectifs aussi différents que 9.85 et 15.82 ?
Si on utilise une fonction avec une boucle pour calculer ces sommes les temps précédents sont légèrement supérieurs. Peut-on le justifier ?

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

Re: série et xcas.

Message par parisse » dim. avr. 03, 2011 6:13 am

oui, c'est parce que dans le calcul en décroissant, on manipule dès le début des fractions avec un numérateur/dénominateur grands. Du coup, c'est un peu plus long.
Pour la boucle, c'est un peu plus long parce qu'elle est interprétée au lieu d'être compilée.

Répondre