Page 1 sur 1

simplifier(somme(1/(sqrt(k)+sqrt(k+1)),k,0,10))

Publié : sam. sept. 29, 2012 1:50 pm
par alb
somme(1/(sqrt(k)+sqrt(k+1)),k,0,n)=sqrt(n+1)
Or simplifier(somme(1/(sqrt(k)+sqrt(k+1)),k,0,10)) renvoie -sqrt(11) au lieu de sqrt(11)
et simplifier(somme(1/(sqrt(k)+sqrt(k+1)),k,11,-1)) renvoie sqrt(11) au lieu de -sqrt(11)

Re: simplifier(somme(1/(sqrt(k)+sqrt(k+1)),k,0,10))

Publié : dim. sept. 30, 2012 7:06 am
par parisse
Bon, c'est un problème de précision, en effet le résultat dans l'extension algébrique commune vaut

Code : Tout sélectionner

%%{[132377815618684212695,0,-59162881653858949162060,0,11170665303843618417486520,0,-1183188358212184790598067104,0,78487202896453888597929610560,0,-3441874751747309615100453126400,0,102562419171135970770486418168320,0,-2100521288682266362632652549724160,0,29543326023758626552507440684421120,0,-281892842462327690452663536268492800,0,1779770633737241791130414539341987840,0,-7135144244070258522398330354392760320,0,17040645013274992169069592660697415680,0,-21923987225299148204693803607543250944,0,12520550855147866792035606908224143360,0,-1814480572587766489942377789590077440,0]:[1,0,-448,0,84864,0,-9028096,0,602397952,0,-26625650688,0,801918722048,0,-16665641517056,0,239210760462336,0,-2349014746136576,0,15459151516270592,0,-65892492886671360,0,172580952324702208,0,-255690851718529024,0,183876928237731840,0,-44660812492570624,0,2000989041197056]%%}
divisé par 84148108246508148014191387430879232.
Le nombre de départ est racine du polynôme [1,0,-77889945336126578431948510259727681215665967072957879536871286258008064] dont les racines sont +/-84148108246508148014191387430879232*sqrt(11).
Si on fait evalf dessus en précision normale on trouve -6.94183464825e+39, alors qu'en précision par exemple 30, on trouve 3.38274809566e+219, ce n'est pas le même signe! ce qui explique la méprise de xcas, il doit choisir entre les 2 racines et il choisit le mauvais signe...
Si on fait Digits:=30, on trouve bien sqrt(11).
Bon, ça veut dire qu'il faudra qu'un jour je modifie le code pour adapter la précision...

Re: simplifier(somme(1/(sqrt(k)+sqrt(k+1)),k,0,10))

Publié : dim. sept. 30, 2012 8:54 am
par alb
ok en modifiant la précision.
le pb en précision normale ne survient qu'avec n=10 et n=11 (pour n<16)
pour n=16 le calcul se termine sans erreur en 207 sec

Re: simplifier(somme(1/(sqrt(k)+sqrt(k+1)),k,0,10))

Publié : lun. oct. 01, 2012 8:07 am
par parisse
Des que j'aurai un peu de temps, j'experimenterai l'idee suivante:
pour determiner le signe de P(alpha) sachant que Q(alpha)=0, avec P et Q a coefficients entiers premiers entre eux et alpha plus grande racine reelle de P, on cherche un intervalle d'isolation des racines reelles de P et Q par l'algorithme VAS (implemente dans realroot ou directement par la fonction VAS qui n'est pas documentee:-( ), on prend le dernier intervalle de Q, on regarde s'il intersecte les intervalles d'isolation de P, sinon on conclut en prenant le signe a une des bornes, si oui on raffine alternativement par dichotomie les intervalles d'isolation de P et Q. Ici on a [9,13] comme intervalle d'isolation commun a P et Q (d'ailleurs c'est marrant les intervalles d'isolation sont identiques...).
On pourrait bien sur utiliser Sturm plutot que VAS, mais avec des polynomes de degre plusieurs dizaines et des grands coefficients, j'ai le sentiment que ca serait trop long.
Ca fait une idee de bout de texte d'entrainement pour l'option C de l'agreg d'ailleurs...

Re: simplifier(somme(1/(sqrt(k)+sqrt(k+1)),k,0,10))

Publié : lun. oct. 01, 2012 8:39 am
par alb
pour info Wolfram donne les valeurs exactes jusqu'à n=9 ensuite on ne peut obtenir que des valeurs approchées.