programmation scientifique en c
DESCRIPTION
PROGRAMMATION SCIENTIFIQUE EN C. PRO-1027. Les erreurs sur les calculs par ordinateur. Représentation des nombres réels Types d’erreurs Epsilon de la machine et nombre de chiffres significatifs d’une représentation Propagation des erreurs Approximation de fonctions par série de Taylor - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/1.jpg)
PROGRAMMATION SCIENTIFIQUE EN C
PRO-1027
![Page 2: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/2.jpg)
Les erreurs sur les calculs par ordinateur
Représentation des nombres réels Types d’erreurs Epsilon de la machine et nombre de chiffres
significatifs d’une représentation Propagation des erreurs Approximation de fonctions par série de
Taylor Travail pratique no. 1
![Page 3: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/3.jpg)
Représentation des nombres réels
Représentation des réels courts (32 bits) selon la norme de l’IEEE
S Caractéristique Mantisse
31 30 23 22 0
![Page 4: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/4.jpg)
Représentation des nombres réels
Représentation des réels longs (64 bits) selon la norme de l’IEEE
S Caractéristique Mantisse
63 62 52 51 0
![Page 5: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/5.jpg)
Représentation des nombres réels
Un réel court en virgule flottante (S,C,M) a sa valeur décimale N donnée par
MN CS ,12)1( 127
• S: bit de signe• C: caractéristique • M: mantisse
![Page 6: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/6.jpg)
Représentation des nombres réels
Représentation sous forme d’un réel court du nombre 87,125
210
210
210
001,1010111125,87
001,0125,0
101011187
Après normalisation
62 2010111001,1001,1010111
![Page 7: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/7.jpg)
Représentation des nombres réels
Représentation sous forme d’un réel court du nombre 87,125
)6127133(:10000101
010111001
110
010111001,1
Mantisse avec le 1 implicite
Exposant
Mantisse entreposée
Caractéristique
![Page 8: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/8.jpg)
Représentation des nombres réels
Représentation sous forme d’un réel court du nombre 87,125
0 100000101 01011100100000000000000
![Page 9: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/9.jpg)
Types d’erreurs
Erreur absolue et erreur relative– Supposons que nous approximons un nombre x par
x’
– Les erreurs absolue et relative sont données par
xxx
xxe
xxe
r
a
/'1'
'
![Page 10: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/10.jpg)
Types d’erreurs
Erreur absolue et erreur relative– Supposons que nous approximons par ’=3.1416
– Si la valeur de =3.14159265, les erreurs absolue et relative sont données par
6
6
1034.2'
1035.7'
r
a
e
e• L’approximation est précise à 4 décimales près• Avec 5 chiffres significatifs
![Page 11: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/11.jpg)
Types d’erreurs
Erreur d’arrondi– Ce type d’erreur survient lorsque nous emmagasi-
nons des nombres dans un espace physique (mé-moire) de dimension finie
– Ce type d’erreur fait donc référence à la représenta-tion des nombres dans l’ordinateur
![Page 12: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/12.jpg)
Types d’erreurs
Erreur d’arrondi– Considérons l’addition de 2 réels chacun avec 15
bits significatifs
1
7
2000101001111000,0
2100111111011011,0
2345.1
45,123
b
a
b
a
![Page 13: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/13.jpg)
Types d’erreurs
Erreur d’arrondi– Alignement de b
001111000011111100101,0
011100000010000001001,0
100111111011011,0
2011100000010000001001,0 7
ba
b
![Page 14: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/14.jpg)
Types d’erreurs
Erreur d’arrondi– Arrondissement du résultat
68,1242011111111100101,0
011111111100101,0
001111000011111100101,0
7
![Page 15: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/15.jpg)
Types d’erreurs
Erreur de troncature– Ce type d’erreur survient quand par exemple nous
utilisons un nombre de termes finis pour faire l’approximation d’une série infinie (ex: série de Taylor)
– L’utilisation d ’un algorithme avec un nombre d’itérations discrets peut aussi causer ce type d’erreur
![Page 16: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/16.jpg)
Epsilon de la machine et nombre de chiffres significatifs d’une représentation
Lorsque nous effectuons l’addition de 2 nombres réels le plus petit des 2 est décalé ce qui occasionne une perte de précision
Dans des cas extrêmes il peut arriver que le plus petit nombre n’ai aucune signifiance dans le calcul, ayant été décalé complètement vers la droite
Le nombre de décalages maximum que peut subir un nombre avant qu’il n’ai plus de signifiance corres-pond au nombre de chiffres significatifs de la repré-sentation
![Page 17: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/17.jpg)
Epsilon de la machine et nombre de chiffres significatifs d’une représentation
Le plus petit nombre signifiant d’une représenta-tion est appelé epsilon de la machine
Ce nombre représente la plus petite valeur de x pour laquelle 1+x>1
![Page 18: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/18.jpg)
Epsilon de la machine et nombre de chiffres significatifs d’une représentation
Algorithme qui trouve le epsilon de la machine et le nombre de chiffres significatifs (cas binaire)eps=1
n=0
TTQ 1+eps>1 FAIRE
eps = eps/2
n++
FIN TTQ
eps = eps * 2
n = n-1
imprimer eps et n
![Page 19: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/19.jpg)
Propagation des erreurs
Lorsque une opération telle que l’addition est répétée il peut survenir un phénomène de propaga-tion des erreurs d’arrondis
Alors la sommation suivante peut dans certain cas ne pas donner 1
N
N1
/11
![Page 20: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/20.jpg)
Propagation des erreurs
De plus, l’ordre des sommations a aussi une influence sur la propagation des erreurs
Par conséquent les 2 sommations suivantes devraient donner la même valeur mais ce n’est pas le cas quand N est le moindrement grand
1
1
/1/1Ni
nN
i
n ii
![Page 21: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/21.jpg)
Propagation des erreurs
Algorithme de sommation successivesaut = 1/N
somme = 0
POUR i = 1 à N FAIRE
somme = somme + saut
FIN POUR
imprimer somme et erreur (1-somme)
![Page 22: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/22.jpg)
Propagation des erreurs
Algorithme de sommation ascendantsomme = 0
POUR i = 1 à N par saut de 1 FAIRE
somme = somme + 1/in
FIN POUR
imprimer somme
![Page 23: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/23.jpg)
Propagation des erreurs
Algorithme de sommation descendantsomme = 0
POUR i = N à 1 par saut de -1 FAIRE
somme = somme + 1/in
FIN POUR
imprimer somme
![Page 24: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/24.jpg)
Approximation de fonction par série de Taylor
Le développement en série de Taylor premet de faire l’approximation de fonctions suffisamment différentiables
Nous pouvons évaluer la valeur d’une fonction dans le voisinage d’un point de référence par
!
)(......
!2
)('')(')()(
)(2
n
hafhafhafafhaf
nn
![Page 25: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/25.jpg)
Approximation de fonction par série de Taylor
L’erreur de troncature découlant du développe-ment en série de Taylor avec n termes dérivés est donnée avec sa borne supérieure par
)!1(
)(max
)!1(
)(1)1(1)1(
n
htf
n
hcfnn
hata
nn
![Page 26: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/26.jpg)
Approximation de fonction par série de Taylor
Pour la fonction cosinus avec a = 0 et un intervalle des valeurs de h [0,/2] et n=4
0
242
432
)!2(
)1(....
!4!21)cos(
...!4
)0cos(
!3
)0sin(
!2
)0cos()0sin()0cos()cos(
0
)cos()(
n
nn
n
xxxx
xxxxx
xh
a
aaf
![Page 27: PROGRAMMATION SCIENTIFIQUE EN C](https://reader035.vdocuments.pub/reader035/viewer/2022062322/56814883550346895db596fa/html5/thumbnails/27.jpg)
Approximation de fonction par série de Taylor
Pour la fonction cosinus, l’erreur de troncature est bornée par le premier terme de la série omis, cette erreur de troncature est bornée par (n=4)
720120
)sin(max
65
0
hhtht