GBlog -Everything is possible

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