Jeudi 21 Juillet 2005
[Python] - Vers l'infinie et au delà
Aujourd'hui Python nous démontre que à l'égal de Buzz l'eclair, il peut se rendre au delà de l'infinie.
Petit rappels mathématiques
La fonction exponentielle de base e (noté exp) n'est en fait que le nombre e à la puissance x. Ce nombre e est environ égal à 2.71 mais il s'agit d'un nombre irrationnel, donc sa forme exacte n'est pas connue (du même style que pi ou racine de 2).
Mais comment e est-t-il définie alors ? Il s'agit de la limite en l'infinie d'une suite croissante définie par :
u_n = (1 + 1 / n) ^ n
Comme je suis dans mes bonnes heures, je vous le démontre, les non-matheux peuvent passer ce paragraphe.
(1 + 1/n) ^ n = exp(ln((1 + 1/n) ^ n)) = exp(nln(1+1/n))
Or quand n tant vers l'infinie, 1/n tant vers 0. On a donc ln(1+u) avec u qui tend vers 0. On peux donc remplacer ln(1+u) par son développement limité en 0 que l'on gardera à l'ordre 1. ln(1+u) = u + quelque chose de négligeable devant u.
Bref, on obtient donc exp(nu). Or u = 1/n donc on a exp(1) = e
Là où Python pèche
Après ce cours mathématique qui à sans doute fasciné tous le monde, voici ce qui se passe de comique avec python.
from future import divison # on évite les arrondie avec la division import math n = 166111400 print math.e - (1 + 1/n) ** n
On obtient une valeur négative. (n peut varié en fonction de votre version de Python, de GCC ou de l'OS...) Or on sais que math.e = limite (1 + 1/n) ** n quand n tant vers l'infinie. On a démontré que cette valeur était plus petite que (1 + 1/n) ** n avec n = 166111400. La suite étant strictement croissante, on à le droit d'en déduire que 166111400 > l'infinie.
Je vous laisse méditer cette joyeuseté et je prie le ciel de m'apporter le LaTeX dans l'html sous peu.
Commentaires
Jeudi 21 Juillet 2005 17:09:30 - S.F. Lien
Dommage que le support de mathML soit (de plus en plus) pourri depuis mozilla 1.3 alors qu'il était nickel avant... Sinon tu pourrais l'utilser, comme sur http://golem.ph.utexas.edu/~distler/blog ... Au pire tu peux générer des images de tes équations avec latex, ça sera toujours plus lisible...
Jeudi 21 Juillet 2005 18:20:45 - Guillaume
C'est ce que je compte faire à terme. SOit mathML, soit une image avec LaTeX...
Jeudi 21 Juillet 2005 22:04:56 - S.F. Lien
au fait c'est pour quand les urls clicables (ou une syntaxe quelconque permettant de les rendre clicables) ?
Mardi 26 Juillet 2005 09:52:58 - Braice
C'est pas typique a python ce que tu dis
c'est typique à tout truc de calcul numérique
Avec un autre programme le problème apparaitra avant ou après mais il apparaitra toujours
Mardi 26 Juillet 2005 16:21:41 - joel
mouais...
il reste néanmois que dans ta démonstration mathématique, tu as du "quelque chose de négligeable devant u". La suite n'est qu'une modelisation aproximative !
Essaie avec un développement à un ordre supérieur, tu auras peut-être des surprises.
Mercredi 27 Juillet 2005 21:32:25 - Guillaume
Braice, je sais. Je me suis juste fais plaisir ;o)
Joel (le Jojo ?), si tu es bien le Joel auquel je pense, tu as du voir cette année que ton quelque chose négligable devant u dans ce cas là conduisait a une équivalence en zero ce qui est mathématiquement juste.
Et quand bien même cela donnerais
e(nu + n*o(u)) == e(nu) * e(n*o(u)) == e * e(n * o(1/u)) == e * 1
Mardi 02 Août 2005 18:27:53 - PiTiLeZarD Lien
Cet homme est fou ;)
belle démo :)
Mardi 06 Septembre 2005 13:12:17 - Pierre-Selim
Le calcul flottant est un gros problème. Je te conseil de faire une petite recherche sur le polynome de Rump.
Vendredi 24 Novembre 2006 13:09:01 - Ibrahima Baber
Bonjour,
Je travaille sur python2.4 sur windows. Je n'arrive pas a effectuer ce calcul meme apres avoir importer math.
val_1 = 2
val_2 = 5
val_M = log(val_1 / val_2,2)
Que dois-je faire?
Ibrahima
Réagissez
En fait non ! Trop de smap