Page 1 sur 1

série et xcas.

Publié : ven. avr. 01, 2011 4:22 pm
par Kexi
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 .

Re: série et xcas.

Publié : ven. avr. 01, 2011 5:14 pm
par alb
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

Re: série et xcas.

Publié : ven. avr. 01, 2011 5:49 pm
par parisse
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é.

Re: série et xcas.

Publié : ven. avr. 01, 2011 6:11 pm
par Kexi
Merci à vous, je vais installer la dernière version alors.
Bonne soirée.

Re: série et xcas.

Publié : ven. avr. 01, 2011 7:45 pm
par Kexi
Oui, la version testing me donne ce que trouve alb.
Merci et à bientôt.

Re: série et xcas.

Publié : sam. avr. 02, 2011 6:08 am
par alain974
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.

Re: série et xcas.

Publié : sam. avr. 02, 2011 7:17 am
par Kexi
ah je devine... vous êtes Alain Harmonique !.

Re: série et xcas.

Publié : sam. avr. 02, 2011 10:13 am
par alb
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.

Re: série et xcas.

Publié : sam. avr. 02, 2011 1:00 pm
par Kexi
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.

Re: série et xcas.

Publié : sam. avr. 02, 2011 1:25 pm
par alb

Re: série et xcas.

Publié : sam. avr. 02, 2011 2:58 pm
par parisse
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).

Re: série et xcas.

Publié : sam. avr. 02, 2011 4:24 pm
par Kexi
Merci à vous deux.

Re: série et xcas.

Publié : sam. avr. 02, 2011 7:56 pm
par alb
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 ?

Re: série et xcas.

Publié : dim. avr. 03, 2011 6:13 am
par parisse
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.