Académique Documents
Professionnel Documents
Culture Documents
jlo@univ-jfc.fr
INU ChampollionL2 PC-EEA
v2023.1.v1
Généralités de la démarche en
programmation scientique
Outline
Outline
1 Notions des erreurs numériques
Sources des erreurs numériques
Erreurs d'arrondi & troncature des nombres
Propagation des erreurs d'arrondi et de troncature des nombres
Erreurs d'approximation
Démarche de contrôle des erreurs numériques
Bilan mTake home message
2 Dérivées & intégrales numériques
3 Résolution numérique des équations algébriques non linéaires
4 Approximation et interpolation par une fonction
0.49999999999999994
False
Erreurs d'arrondi & de troncature de nombres
Erreurs d'approximation
Erreurs de propagation (approximation & arrondi)
jlo@univ-jfc.fr Programmation et techniques scientiques 8 / 78
Sources des erreurs numériques
Notions des erreurs numériques Erreurs d'arrondi & troncature des nombres
Dérivées & intégrales numériques Propagation des erreurs d'arrondi et de troncature des nombres
Résolution numérique des équations algébriques non linéaires Erreurs d'approximation
Approximation et interpolation par une fonction Démarche de contrôle des erreurs numériques
Bilan mTake home message
Dénitions
TRONCATURE à m chires ARRONDI à m chires
X = ±.d1 d2 d3 . . . dm dm+1 × b e
X = ±.d1 d2 d3 . . . dm dm+1 × b e X∗ = ±.d1 d2 d3 . . . dm × b e
tronc(X ) = ±.d1 d2 d3 . . . dm × be ±.00 . . . 00vm+1 × b e
.
∃ un intervalle où le nombre ottant n'est pas représentable.
valeur trop grande =⇒ overow
valeur trop petite =⇒ underow
Epsilon machine
EPSILON le plus petit nombre tel que :
MACHINE :
(EPS) 1 + EPS ̸= 1
C'est la plus petite valeur dont l'opération addition n'est pas neutre, sa
valeur dépend de bits d'exposant.
import sys import numpy as np
sys.float_info.epsilon np.finfo(np.float32).eps
2 . 2 2 0 4 4 6 0 4 9 2 5 0 3 1 3 e =16 1 . 1 9 2 0 9 2 9 e =07
Epsilon machine
EPSILON le plus petit nombre tel que :
MACHINE :
(EPS) 1 + EPS ̸= 1
C'est la plus petite valeur dont l'opération addition n'est pas neutre, sa
valeur dépend de bits d'exposant.
import sys import numpy as np
sys.float_info.epsilon np.finfo(np.float32).eps
2 . 2 2 0 4 4 6 0 4 9 2 5 0 3 1 3 e =16 1 . 1 9 2 0 9 2 9 e =07
Pour un nombre x quelconque, la valeur minimale où l'opération addition
n'est pas neutre :
εx εx
1+ ̸= x ⇐⇒ εx ≥ EPS · x ⇐⇒
x + εx ̸= x ⇐⇒ x ≥ EPS
x x
.les opérations entre deux nombres dont l'écart est plus petit que la
précision machine est assujettie à des erreurs. .
jlo@univ-jfc.fr Programmation et techniques scientiques 14 / 78
Sources des erreurs numériques
Notions des erreurs numériques Erreurs d'arrondi & troncature des nombres
Dérivées & intégrales numériques Propagation des erreurs d'arrondi et de troncature des nombres
Résolution numérique des équations algébriques non linéaires Erreurs d'approximation
Approximation et interpolation par une fonction Démarche de contrôle des erreurs numériques
Bilan mTake home message
a+b = 1 e +308
a = 1 e +308
T e s t e g a l i t e : True
.
Les opérations des nombres dont l'ordre de grandeurs dièrent
grandement induit des erreurs.
L'opération entre deux nombres est limitée par la précision de la
machine (bits d'exposant), et donnée par l'epsilon machine.
jlo@univ-jfc.fr Programmation et techniques scientiques 15 / 78
Sources des erreurs numériques
Notions des erreurs numériques Erreurs d'arrondi & troncature des nombres
Dérivées & intégrales numériques Propagation des erreurs d'arrondi et de troncature des nombres
Résolution numérique des équations algébriques non linéaires Erreurs d'approximation
Approximation et interpolation par une fonction Démarche de contrôle des erreurs numériques
Bilan mTake home message
® Que se passe-t-il ? ®
jlo@univ-jfc.fr Programmation et techniques scientiques 16 / 78
Sources des erreurs numériques
Notions des erreurs numériques Erreurs d'arrondi & troncature des nombres
Dérivées & intégrales numériques Propagation des erreurs d'arrondi et de troncature des nombres
Résolution numérique des équations algébriques non linéaires Erreurs d'approximation
Approximation et interpolation par une fonction Démarche de contrôle des erreurs numériques
Bilan mTake home message
a = (1 + 1e-16) -1 a = 0.1+0.2+0.3
b = 1 + (1e-16 -1) b = 0.2+0.3+0.1
print('a =', a, '\n b =', b) print('a =', a, '\n b =', b)
a = 0.0 a = 0.6000000000000001
b = 1 . 1 1 0 2 2 3 0 2 4 6 2 5 1 5 6 5 e =16 b = 0.6
m
Due à la limite de précision du codage IEEE 754 des nombres ottants,
l'associativité des opérations n'est plus garantie. Les opérations font
gurer des arrondis et des troncatures intermédiaires qui peuvent avoir
des conséquences négatives sur les calculs.
jlo@univ-jfc.fr Programmation et techniques scientiques 19 / 78
Sources des erreurs numériques
Notions des erreurs numériques Erreurs d'arrondi & troncature des nombres
Dérivées & intégrales numériques Propagation des erreurs d'arrondi et de troncature des nombres
Résolution numérique des équations algébriques non linéaires Erreurs d'approximation
Approximation et interpolation par une fonction Démarche de contrôle des erreurs numériques
Bilan mTake home message
dX dx
multiplications X = xn =n· ≈ n · εm
successives X x
1 dX dx
divisions succes- X = = −n · − ≈ n · εm
xn
sives X x
dX dx
additions succes- X =n·x = ≈ εm
sives X x
d 2θ dθ
+mg sin θ = 0
mL + fv L
dt 2 dt m
| {z }
fv : frottement≈0
Solution si frottement visqueux est négligé :
θ(t) ≈ α sin (ω (t − t0 ))
dθ
g sin θ g
où α = α ω, et ω =
dt t=0 L
.
Estimation d'une dérivée par taux d'accroissement est pourvue d'une
erreur d'approximation due à la troncature du développement :
df (x) f (x + h) − f (x)
≈ avec une erreur de surestimation de o (h)
dx h
jlo@univ-jfc.fr Programmation et techniques scientiques 26 / 78
Sources des erreurs numériques
Notions des erreurs numériques Erreurs d'arrondi & troncature des nombres
Dérivées & intégrales numériques Propagation des erreurs d'arrondi et de troncature des nombres
Résolution numérique des équations algébriques non linéaires Erreurs d'approximation
Approximation et interpolation par une fonction Démarche de contrôle des erreurs numériques
Bilan mTake home message
. Méthodes itératives .
. Méthodes itératives .
p=1 linéaire
|errk+1 |
∃α ∈ R∗+ ∖ {+∞} lim
k→+∞ |errk |
p =α avec p=2 quadratique
p=3 cubique
Si les solutions sont proches, on peut penser que la méthode est able ;
l'écart entre les deux solutions donne alors un ordre de grandeur de
l'erreur produite. À l'inverse, si une diminution du pas donne une solution
radicalement diérente de la précédente il est hautement probable que
l'on se trouve dans une région d'instabilité .
jlo@univ-jfc.fr Programmation et techniques scientiques 34 / 78
Sources des erreurs numériques
Notions des erreurs numériques Erreurs d'arrondi & troncature des nombres
Dérivées & intégrales numériques Propagation des erreurs d'arrondi et de troncature des nombres
Résolution numérique des équations algébriques non linéaires Erreurs d'approximation
Approximation et interpolation par une fonction Démarche de contrôle des erreurs numériques
Bilan mTake home message
convergence
calcul d'une grandeur conservative
évaluation de la sensibilité à la discrétisation (ou autres paramètres
de calculs).
Les erreurs
sont liés à la convention de codage des nombres arrondi
sont liés à la méthode de calculs approximation
se propage et peuvent s'amplier
Il existe des démarches pour éviter les erreurs :
regroupement de calcul des nombres du même ordre de grandeur
Éviter les opérations dont les opérandes sont des ordres de grandeurs
diérentes pour les opérations multiplication, addition et division.
Eviter les opérations dont les opérandes sont de même ordre de
grandeur pour la soustraction.
jlo@univ-jfc.fr Programmation et techniques scientiques 35 / 78
Notions des erreurs numériques
Dérivées & intégrales numériques Dérivées numériques
Résolution numérique des équations algébriques non linéaires Intégrations numériques
Approximation et interpolation par une fonction
Outline
Outline
Avant propos
f (x) = x 2 − cos x
f ′ (x) = 2x + sin x
y
30 calcul 10 y
20 analytique x
10 −5 5
x
−10
−5 5
m f ∈ D (dérivable une fois). f une fonction analytique connue =⇒
∞
Principe de base
Exemple d'échantillonnage de n points sur
l'intervalle [a, b]
xi yi = f (xi ) wi ≈ f ′ (xi )
x0 = a y0 ?
x1 y1 ?
x2 y2 ?
.. .. ..
. . .
xk yk wk =?
.. .. ..
. . .
xn−1 = b yn−1 ?
Principe de base
Exemple d'échantillonnage de n points sur y
l'intervalle [a, b]
80
xi yi = f (xi ) wi ≈ f ′ (xi )
x0 = a y0 ?
x1 y1 ?
x2 y2 ? 40 yk+1
.. .. .. yk
. . . yk
yk−1
xk yk wk =?
.. .. .. x
. . . . . .xk−1 xk
xn−1 = b yn−1 ?
x1
b x2 xk+1
Hypothèses de travail
Ò On ne connaît pas f (x), x 7→ y = f (x)
pour ∀x ∈ [a, b]
Mais on connaît quelques valeurs
particulières supposées être des Pour n échantillonages de points, on
images par la fonction f : peut noter :
y0 → f (x0 ) yk → f (xk )
y1 → f (x1 ) ∀k ∈ [[0; n − 1]]
y2 → f (x2 )
.. f (xk ) = f (x0 + k · h) ≈ yk
.
f (xk + h) − f (xk ) ≈ yk+1 − yk
m On suppose le pas d'échantillonage h
constant : f (xk ) − f (xk − h) ≈ yk − yk−1
x1 − x0 = h xk = xk−1 + h
x2 − x1 = h xk+1 = xk + h
x3 − x2 = h
..
.
jlo@univ-jfc.fr Programmation et techniques scientiques 40 / 78
Notions des erreurs numériques
Dérivées & intégrales numériques Dérivées numériques
Résolution numérique des équations algébriques non linéaires Intégrations numériques
Approximation et interpolation par une fonction
WÊXW♥
On sait que pour ∀x ,
h2 ” h3 hn
f (x + h) = f (x) + hf ′ (x) + f (x) + f (3) (x) + . . . + + f (n) (ξ)
2! 3! n!
avec h susamment petit et x < ξ < x + h
On peut utiliser le développement de Taylor pour estimer
la dérivée à droite
la dérivée à gauche
la dérivée centrée
Dérivée à droite
m
On utilise un point à droite de xk pour estimer la dérivée au point xk :
wk ≈ f ′ (xk ).
Dérivée à droite
m
On utilise un point à droite de xk pour estimer la dérivée au point xk :
wk ≈ f ′ (xk ).
Dérivée à droite
m
On utilise un point à droite de xk pour estimer la dérivée au point xk :
wk ≈ f ′ (xk ).
Dérivée à droite
m
On utilise un point à droite de xk pour estimer la dérivée au point xk :
wk ≈ f ′ (xk ).
Dérivée à gauche
m
On utilise un point à gauche de xk pour estimer la dérivée au point xk :
wk ≈ f ′ (xk ).
Dérivée à gauche
m
On utilise un point à gauche de xk pour estimer la dérivée au point xk :
wk ≈ f ′ (xk ).
Dérivée à gauche
m
On utilise un point à gauche de xk pour estimer la dérivée au point xk :
wk ≈ f ′ (xk ).
Dérivée à gauche
m
On utilise un point à gauche de xk pour estimer la dérivée au point xk :
wk ≈ f ′ (xk ).
Dérivée centrée
m
On utilise un point à gauche et un un point à droite de xk pour
estimer la dérivée au point xk : wk ≈ f ′ (xk ).
Dérivée centrée
m
On utilise un point à gauche et un un point à droite de xk pour
estimer la dérivée au point xk : wk ≈ f ′ (xk ).
Rappel :
2 h3 (3) hn
f (x + h) = f (x) + hf ′ (x) + h f ” (x) + f (x) + . . . + f (n) (ξ)
22! 3!
n!
f (x − h) = f (x) − hf ′ (x) + h f ” (x) − h3 (3) hn
f (x) + . . . + (−1)n f (n) (ξ)
2! 3! n!
Dérivée centrée
m
On utilise un point à gauche et un un point à droite de xk pour
estimer la dérivée au point xk : wk ≈ f ′ (xk ).
Rappel :
2 h3 (3) hn
f (x + h) = f (x) + hf ′ (x) + h f ” (x) + f (x) + . . . + f (n) (ξ)
22! 3!
n!
f (x − h) = f (x) − hf ′ (x) + h f ” (x) − h3 (3) hn
f (x) + . . . + (−1)n f (n) (ξ)
2! 3! n!
h3 (3) h2n+1 (2n+1)
− =⇒ f (x+h)−f (x−h) = 2hf ′ (x)+2 f (x)+. . .+2 f (ξ)
3! (2n + 1)!
Dérivée centrée
m
On utilise un point à gauche et un un point à droite de xk pour
estimer la dérivée au point xk : wk ≈ f ′ (xk ).
Rappel :
2 h3 (3) hn
f (x + h) = f (x) + hf ′ (x) + h f ” (x) + f (x) + . . . + f (n) (ξ)
22! 3!
n!
f (x − h) = f (x) − hf ′ (x) + h f ” (x) − h3 (3) hn
f (x) + . . . + (−1)n f (n) (ξ)
2! 3! n!
h3 (3) h2n+1 (2n+1)
− =⇒ f (x+h)−f (x−h) = 2hf ′ (x)+2 f (x)+. . .+2 f (ξ)
3! (2n + 1)!
f (x + h) − f (x − h) h2 h2n
f ′ (x) = + f (3) (x) + . . . + f (2n+1) (ξ)
2h 3! (2n + 1)!
| {z }
O(h2 )
jlo@univ-jfc.fr Programmation et techniques scientiques 44 / 78
Notions des erreurs numériques
Dérivées & intégrales numériques Dérivées numériques
Résolution numérique des équations algébriques non linéaires Intégrations numériques
Approximation et interpolation par une fonction
yVect : x0 = a y0 ?
x1 y1 w1
n = np.size(xVect) x2 y2 w2
wVect = np.zeros(n) .
.
.
.
.
.
. . .
2 Remplacer un à un (par itération) chaque xk
.
yk
.
wk = #
.
élément du vecteur wVect .
.
.
.
.
.
xn−2 = b yn−2 wn−2
for k in range(1, n-1): xn−1 = b yn−1 ?
#expression de calcul
wVect[k] = <...>
jlo@univ-jfc.fr Programmation et techniques scientiques 45 / 78
Notions des erreurs numériques
Dérivées & intégrales numériques Dérivées numériques
Résolution numérique des équations algébriques non linéaires Intégrations numériques
Approximation et interpolation par une fonction
Ordre de précision
L'expression de calcul de chaque élément wVect[k] au choix :
schéma expression précision
f (x + h) − f (x)
à droite f ′ (x) = − O(h) ordre 1
h
f (x) − f (x − h)
à gauche ′
f (x) = + O(h) ordre 1
h
f (x + h) − f (x − h)
centrée f ′ (x) = + O(h2 ) ordre 2
2h
ordre d'une approximation
Une fonction g (h) est dite d'ordre n au voisinage de 0 si ∃M > 0
g (h)
≤ M noté =⇒ g (h) = O(h )
n
lim
h→0 hn
Ainsi pour une fonction en h d'ordre n, si h est divisée par 2 =⇒ la valeur de O(hn ) sera
divisée par 2n
Dérivée seconde
Rappel :
2 h3 (3) hn
f (x + h) = f (x) + hf ′ (x) + h f ” (x) + f (x) + . . . + f (n) (ξ)
22! 3!
n!
f (x − h) = f (x) − hf ′ (x) + h f ” (x) − h3 (3) hn
f (x) + . . . + (−1)n f (n) (ξ)
2! 3! n!
(2) − 2 × (1) :
−2f (x + h) + f (x + 2h) = −f (x) + h2 f ” (x)+
6h3 (3) hn (n)
f (x) + . . . + (2n − 2) f (ξ)
3! (n)!
| {z }
O(h3 )
Si h ↘, =⇒ ∆ε
En réalité (arrondis ou mesures) : ↗
2h
yk = f (xk ) + εk ∆ε
Le terme des écarts peut devenir
2h
Conséquence sur le schéma numérique dérivation 2
plus important que O(h ) (indicateur
centrée : : de la précision de la méthode).
∆ε
Si ε provient des
z }| {
yk+1 − yk−1 f (xk+1 ) − f (xk−1 ) εk+1 − εk−1
2h
=
2h
+
2h arrondis/troncature =⇒
augmentation en double précision
Or, f ′ (x) =
f (xk+1 ) − f (xk−1 )
+ O(h2 ) Si ε provient des incertitudes de
2h mesure/erreurs de données =⇒
Donc, inutile... il faut améliorer
l'incertitude de mesures.
yk+1 − yk−1 ∆ε
= f ′ (x) + O(h2 ) +
2h 2h
|{z}
?
terme≥O(h2 ) Programmation et techniques scientiques
jlo@univ-jfc.fr 52 / 78
Notions des erreurs numériques
Dérivées & intégrales numériques Dérivées numériques
Résolution numérique des équations algébriques non linéaires Intégrations numériques
Approximation et interpolation par une fonction
Aucune amélioration de la
précision par diminution du pas
d'échantillonnage.
∃ solutions techniques :
Techniques numériques de lissage de données (cf. approximation et
interpolation par une fonction L2S1).
Filtrage des mesures in situ ou en post-traitement (cf. cours
électricité analyse fréquentielle & SciPy )
schémas numériques plus sophistiqués (cf. L2S2 ou en Master)
fk − 2fk+1 + 2fk+2
derivation double fk” = O(h) 1
h2
compteur ̸= iFin ?
True False
Instructions à itérer
Exercice à vous !
text file
# t y Implémenter les méthodes de
0.000e+00;0.000e+00 dérivée numérique aux données
1.745e-01;3.015e-02 du chier de données
3.491e-01;1.170e-01
5.236e-01;2.500e-01
y = y (t) :
6.981e-01;4.132e-01 data-sin-carre.dat
8.727e-01;5.868e-01
1.047e+00;7.500e-01
1.222e+00;8.830e-01
1.396e+00;9.698e-01
Intégrations numériques
Avant propos
y
30 f (x) 50 y F (x)
20 calcul x
10 analytique−5 5
x −50
−5 5 Z b
Calcul d'intégral : b
f (x)dx = [F (x)]a = F (b) − F (a)
a
mPossible
seulement si : ∃F ∈ D1 , F 7→ f = F
′
Intégrale Riemann
y
80
Exprimer l'aire de la zone
aire : ak =? colorée :
40 f (αk ) yk+1
f (αk )
yk
yk−1
x
...
x1 x2 xk−1 xk αkxk+1
b
Intégrale Riemann
y
80
Exprimer l'aire de la zone
aire : ak =? colorée :
40 f (αk ) yk+1
f (αk )
yk ak = f (αk ) · (xk+1 − xk )
yk−1
x
...
x1 x2 xk−1 xk αkxk+1
b
Selon Riemann
Z b X2
n−
f (x)d(x) = lim f (αk ) (xk+1 − xk ), t.q. xk ≤ αk ≤ xk+1
n→∞
a k=0
| {z }
ak
Intégrale Riemann
y
80
Exprimer l'aire de la zone
aire : ak =? colorée :
40 f (αk ) yk+1
f (αk )
yk ak = f (αk ) · (xk+1 − xk )
yk−1
x
...
x1 x2 xk−1 xk αkxk+1
b
Selon Riemann
Z b X2
n−
f (x)d(x) = lim f (αk ) (xk+1 − xk ), t.q. xk ≤ αk ≤ xk+1
n→∞
a k=0
| {z }
ak
Méthode de Simpson
(2)
Z b Z x2 Z x4 Z x6 Z xn−1
A= f (x)dx = g1 (x)dx + g3 (x)dx + g5 (x)dx + . . . + gn−2 (x)dx
a x0 x2 x4 xn−3
jlo@univ-jfc.fr Programmation et techniques scientiques 69 / 78
Notions des erreurs numériques
Dérivées & intégrales numériques Dérivées numériques
Résolution numérique des équations algébriques non linéaires Intégrations numériques
Approximation et interpolation par une fonction
h
A1 = (f0 + 4f1 + f2 )
3
h Tous les termes impairs : multiples de 4
A3 = (f2 + 4f3 + f4 )
3
h
A5 = (f4 + 4f5 + f6 )
Tous les termes pairs : multiples de 2
3
h
A7 = (f6 + 4f7 + f8 )
3
h
An−4 = (fn−5 + 4fn−4 + fn−3 )
3
h
An−2 = (fn−3 + 4fn−2 + fn−1 )
jlo@univ-jfc.fr
3
Programmation et techniques scientiques 70 / 78
Notions des erreurs numériques
Dérivées & intégrales numériques Dérivées numériques
Résolution numérique des équations algébriques non linéaires Intégrations numériques
Approximation et interpolation par une fonction
ou
n−1 n−3
2 2
b 2h
Z
f0 + fn−1 + 4 f2i−1 + 2
X X
f (x)dx ≈ f2i
a 6 i=1 i=1
Exercice à vous !
text file
Intégrer numériquement ydt à
R
# t y
0.000e+00;0.000e+00 partir du chier de données
1.745e-01;3.015e-02 y = y (t) :
3.491e-01;1.170e-01
5.236e-01;2.500e-01 data-sin-carre.dat
6.981e-01;4.132e-01
8.727e-01;5.868e-01
1.047e+00;7.500e-01
1.222e+00;8.830e-01
1.396e+00;9.698e-01
Outline
Outline
Outline
Outline