Choose a langage

Remarque : cet article reprend mot pour mot une partie de cet article d'Alain Busser sur le site de l'IREM de la Réunion.
On va s'intéresser à l'infini, rien que ça...

 

 

 

Le script suivant (de CaRMetal) est un cas classique de boucle à condition de sortie :boucle1

(il s’agit de l’affichage de quelques termes d’une suite géométrique).

Mais cette variante, malgré les apparences, boucle aussi un nombre fini de fois (pour écrire ∞, taper Infinity)

boucle2

En y réfléchissant, ce n’est pas surprenant : La place mémoire étant limitée dans l’ordinateur, il vient un moment où l’infini est atteint concrètement, sous la forme d’un dépassement de capacité de la machine.

JavaScript (langage de programmation de CaRMetal, ici déguisé en pseudo-code) cherche à éviter le plus possible les blocages et des tentatives de division par 0 ou de calcul de ln(0) n’y mènent pas à des erreurs de division par 0 ou de domaine de définition, mais à des calculs de limite. Le script suivant nous apprend que la division de 1 par 0 donne un résultat affiché comme Infinity :

buzz1

En fait le mode pseudo-code de CaRMetal donne un affichage « joli » qui ne montre pas l’orthographe Infinity de JavaScript. Si on a des trous de mémoire, le calcul 1/0 est plus facile à entrer, que Infinity. Avec Python cette astuce ne fonctionne pas, Python étant plus « classique » que JavaScript sur la division par 0.

Voici quelques expériences menées avec des additions :

buzz2

En bref, l’infini est absorbant pour l’addition ; son opposé aussi donc leur somme est indéterminée.

Et des expériences sur la multiplication :

buzz3

En bref, l’infini est absorbant pour la multiplication ; 0 aussi donc leur produit est indéterminé.

Enfin des expériences sur les fonctions classiques :

buzz4

PS : l'aspect particulier de la console CaRMetal est due à l'utilisation d'une vieille version d'Ubuntu.