Exercices sur les nombres

Fonctions mathématiques

  • Est ce que la fonction log est le logarithme décimal ou népérien ?

  • Calculer \(x = \sqrt{2}\) puis calculer \(x^2\). Que se passe-t-il ?

  • Calculer \(\arccos{\frac{\sqrt{2}}{2}}\) et comparer à sa valeur théorique.

from math import log

print(log(10))
2.302585092994046
from math import sqrt
sqrt(2)**2
2.0000000000000004
from math import acos, pi

print(acos(sqrt(2)/2))
print(pi/4)
0.7853981633974483
0.7853981633974483

Constante de structure fine

La constante de structure fine est définie en physique comme étant égale à

\[ \alpha = \frac{e^2}{2\epsilon_0 h c} \]

  • \(e\) est la charge de l’électron et vaut \(1.602176634 \times 10^{-19} C\)

  • \(h\) est la constante de Planck et vaut \(6.626\,070\,15 \times 10^{-34} J s\)

  • \(\epsilon_0\) la permitivité du vide et vaut \(8.8541878128 \times 10^{-12} F/m\)

  • \(c\) la célérité de la lumière dans le vide, \(c=299792458 m/s\)

Définissez en Python les variables e, hbar, epsilon_0 et c. Calculez \(\alpha\) et \(1/\alpha\)

from math import pi

e = 1.602176634E-19
h = 6.62607015E-34
epsilon_0 = 8.8541878128E-12
c = 299792458


alpha = e**2/(2*epsilon_0*h*c)
print(1/alpha)
              
137.0359990841083

Précision des nombres

  • Soit \(x=1\) et \(\epsilon = 10^{-15}\). Calculez \(y=x + \epsilon\) et ensuite \(y - x\).

  • Pourquoi le résultat est différent de \(10^{-15}\).

  • Que vaut cette valeur ?

x = 1
epsilon = 1E-15
y = x + epsilon
print(y - x)
1.1102230246251565e-15
print(5*2**-52)
1.1102230246251565e-15

Calcul d’une dérivée

On considère une fonction \(f(x)\). On rappelle que la dérivée peut se définir comme

\[ f^\prime(x) = \lim_{\epsilon\rightarrow0}\frac{f(x+\epsilon) - f(x)}{\epsilon} \]

Pour calculer numériquement une dérivée, il faut évaluer la limite en prenant une valeur ‘petite’ de \(\epsilon\).

On prendra comme exemple \(f(x) = \sin(x)\).

  • Calculer numériquement la dérivée de \(f\) en \(\pi/4\) en utilisant la formule pour \(\epsilon = 10^{-6}\).

  • Comparer à la valeur théorique \(\cos(x)\) pour différentes valeurs de \(\epsilon\) que l’on prendra comme puissance de 10 (\(\epsilon = 10^{-n}\)). Que se passe-t-il si \(\epsilon\) est trop petit ? trop grand ?

  • Ecrire la fonction sin_prime(x, epsilon) qui calcule la dérivée de sin en \(x\)

  • Ecrire une fonction qui prend une fonction quelconque et renvoie la fonction dérivée.

from math import sin, pi, cos

x = pi/4
epsilon = 1E-11

d = (sin(x + epsilon) - sin(x))/epsilon - cos(x)
print(d)

for n in range(1, 15):
    epsilon = 10**(-n)
    d = (sin(x + epsilon) - sin(x))/epsilon - cos(x)
    print('n=', n, d)

# Lorsque epsilon est trop petit, il y a des erreurs d'arrondi. Lorsque epsilon est trop grand, nous
# sommes loin de la limite
5.365427460879424e-06
n= 1 -0.03650380828255784
n= 2 -0.0035472894973379576
n= 3 -0.0003536712121802177
n= 4 -3.535651724428934e-05
n= 5 -3.5355413900983734e-06
n= 6 -3.5344236126721995e-07
n= 7 -3.5807553921962665e-08
n= 8 3.050251939917814e-09
n= 9 3.635694267867251e-08
n= 10 9.245353623787977e-07
n= 11 5.365427460879424e-06
n= 12 -5.7368027853721415e-06
n= 13 0.00010528549967714351
n= 14 0.003435954573552613
def sin_prime(x, epsilon):
    return (sin(x + epsilon) - sin(x))/epsilon

def derivee(f, epsilon):
    def f_prime(x):
        return (f(x+epsilon) - f(x))/epsilon
    return f_prime

derivee(sin, epsilon=1E-8)(x) - cos(x)
3.050251939917814e-09

Nombre complexe

  • Ecrire une fonction qui calcule le module d’un nombre complexe \(z\)

  • Ecrire une fonction qui à partir de \(r\) et \(\theta\) renvoie le nombre \(z = re^{i\theta} = r\cos(\theta) + ir\sin(\theta)\)