Aller au contenu

Mathématiques avec Python et Ruby/Nombres réels en Python

Un livre de Wikilivres.

Écriture décimale

[modifier | modifier le wikicode]

Si les fractions paraissent si abstraites, c'est sans doute à cause de l'écriture décimale qui est jugée plus concrète que l'écriture fractionnaire.

Nombres décimaux

[modifier | modifier le wikicode]

Un nombre décimal est un nombre dont le développement décimal s'arrête. Un nombre non décimal (comme les premiers réels connus qui ne soient pas des fractions) a donc une infinité de chiffres, et ne peut donc pas être représenté de façon exacte en machine: On est obligé de travailler sur des approximations. Mais même avec des nombres décimaux, on travaille parfois sur des valeurs approchées: En effet les nombres sont représentés en base 2 dans la mémoire de l'ordinateur, et Python ne gère que les nombres binaires, ce que n'est pas 0,1.

Une fraction se reconnaît à ce que son développement décimal est périodique à partir d'un certain rang.

print(1/3)
print(1/9)
print(1/11)
print(1/13)

(ces illustrations nécessitent la version 3.2 de Python. En cas de version inférieure, il faut remplacer les numérateurs par des 1.0 pour que la division se fasse dans ).

Pour mieux voir ces chiffres, on peut en afficher plus:

from decimal import *
print(Decimal(1)/Decimal(3))
print(Decimal(1)/Decimal(9))
print(Decimal(1)/Decimal(11))
print(Decimal(1)/Decimal(13))

Pour "construire" un nombre irrationnel (un réel qui ne soit pas une fraction), on peut donc inventer une suite de chiffres qui ne risque pas d'être répétitive, comme avec la constante de Champernowne ou un autre nombre univers.

Nombres algébriques

[modifier | modifier le wikicode]

Le plus vieil irrationnel connu est sans doute la racine carrée de 2:

print(2**0.5)

#autre version:
from math import *
print(sqrt(2))

D'autres connus depuis longtemps sont le nombre d'or, la racine cubique de 2, etc. Les nombres algébriques sont définis comme solutions d'équations polynomiales, donc leurs valeurs décimales approchées sont calculées avec des méthodes comme la dichotomie, la méthode de Newton etc.

Nombres transcendants

[modifier | modifier le wikicode]

Deux nombres transcendants très connus sont e et :

from math import *
print(e)
print(pi)


Voici une manière de calculer une valeur approchée du nombre de Champernowne en Python:

c='0.'
for n in range(1,40):
    c+=str(n)


print(float(c))


Exercice pour un premier avril: Calculer une valeur approchée à 3 décimales près de la constante de Chaitin...

Fonctions réelles

[modifier | modifier le wikicode]

Les quatre opérations sont notées +, -, * et / en Python, et leur résultat (sauf si on divise par 0) est un réel. On peut aussi calculer le reste euclidien d'un réel par un réel!

from math import *
angle=100%pi
print(angle)

Le signe - désigne aussi l'opposé d'un réel. Sa valeur absolue est notée abs. Sa racine carrée sqrt.

Pour additionner h au nombre x, on peut écrire x+=h au lieu du classique x=x+h.


Puissances, exponentielles et logarithmes

[modifier | modifier le wikicode]

Puissances et exposants

[modifier | modifier le wikicode]

Comme pour les entiers, les puissances se notent avec l'astérisque de la multiplication, dédoublé. L'exemple du haut de la page montre comment ceci permet de calculer sans utiliser le module math.

Le script ci-dessous calcule et affiche l'image de 0,5 par le logarithme népérien, par le logarithme décimal, par les fonctions réciproques du cosinus hyperbolique, du sinus hyperbolique, de la tangente hyperbolique:

print(log(0.5))
print(log10(0.5))
print(acosh(0.5))
print(asinh(0.5))
print(atanh(0.5))

Exponentielles

[modifier | modifier le wikicode]

Pour calculer une puissance de 10, on peut utiliser la notation ** s'il s'agit d'un calcul, mais aussi la notation "E" s'il s'agit de l'exposant entier d'un nombre décimal :

a=1.23456E7
print(a)
b=10**2.5
print(b)

Pour calculer l'exponentielle d'un nombre, on peut utiliser exp:

from math import *
a=e**pi
b=exp(pi)
print(a==b)
print(a-b)

Le script suivant calcule les cosinus, sinus et tangente hyperbolique de 2:

from math import *
print(cosh(2))
print(sinh(2))
print(tanh(2))

Fonctions trigonométriques

[modifier | modifier le wikicode]

On peut convertir des angles de radians en degrés et vice-versa avec degrees(x) et radians(x). Les fonctions trigonométriques directes se notent cos, sin et tan et ces trois fonctions sont en radians. Les fonctions inverses se notent acos, asin et atan et sont aussi en radians.

On peut calculer la fonction de deux variables avec hypot:

from math import *
a=sqrt(3**2+4**2)
b=hypot(3,4)
print(a==b)

Pour connaître l'angle aigu d'un triangle de côtés x et y, on peut, outre le calcul atan(y/x), faire atan2(x,y). Par exemple, si on veut connaître les angles et l'hypoténuse d'un triangle rectangle de côtés 12 cm et 5 cm, on peut utiliser ce script:

from math import *
a=12
b=5
print(degrees(atan2(a,b)))
print(degrees(atan2(b,a)))
print(hypot(a,b))