programmation scientifique en c
DESCRIPTION
PROGRAMMATION SCIENTIFIQUE EN C. PRO-1027. Résolution de système d’équations linéaires. Affichage des résultats (tp 1 a) Élimination de Gauss Élimination de Gauss avec pivot Travail pratique 1 b. Affichage des résultats . Affichage de données réelles float epsilon1; double epsilon2; - PowerPoint PPT PresentationTRANSCRIPT
PROGRAMMATION SCIENTIFIQUE EN C
PRO-1027
Résolution de système d’équations linéaires
Affichage des résultats (tp 1 a) Élimination de Gauss Élimination de Gauss avec pivot Travail pratique 1 b
Affichage des résultats
Affichage de données réellesfloat epsilon1;double epsilon2;
epsilon1 = 0.00000011921;epsilon2 = 0.00000000000000022204;printf("\n Valeur de epsilon1: %13.11f ",epsilon1);printf("\n Valeur de epsilon2: %22.20f ",epsilon2);
Élimination de Gauss
Exemple de système d’équations linéaires– Un alliage est composé de manganène, silice et de
cuivre– Cet alliage est composé de 15 livres de Mn, 22
livres de Si et 39 livres de Cu par tonne d’alliage– Les ingrédients de l’alliage (Mn, Si, Cu) sont
extraits de minerai provenant de 3 fournisseurs différents
– De plus, la concentration des ingrédients est différente pour les 3 minerais
Élimination de Gauss
Fournisseur 1(lb/tonne de minerai)
Fournisseur 2(lb/tonne de minerai)
Fournisseur 3(lb/tonne de minerai)
Manganèse 1 3 2Silice 2 4 3Cuivre 3 4 7
Nous voulons alors déterminer quelle quantité de minerai nous devons acheter de chaque fournisseur pour éviter l’achat inutile d’ingrédient
Élimination de Gauss
Pour trouver une solution à ce problème nous devons définir les variables suivantes:– Xj: la quantité de minerai achetée du fournisseur
j (tonne de minerai)– Ci: la quantité d’ingrédient i par tonne d’alliage
(lb/ tonne d’alliage)– aij: la quantité d’ingrédient i par tonne de minerai
achetée du fournisseur j (lb/tonne de minerai)
Élimination de Gauss
Nous pouvons déduire une expression générale pour le calcul des Ci
mi
CXa ij
n
jij
,......,2,11
m représente le nombre d’ingrédients et n le nombre de fournisseurs
Élimination de Gauss
Le problème précédent peut être représenté par un système d’équations linéaires de la forme
3974322342
1523
321
321
321
XXXXXXXXX
La solution de ce système correspond aux quantités de minerai à acheter de chaque fournisseur
Élimination de Gauss
Détermination des courants dans un circuit électrique
40426502
0
321
321
321
IIIIII
III
Élimination de Gauss
Forme générale d’un système d’équations linéaires
nnnnnn
nn
nn
CXaXaXa
CXaXaXaCXaXaXa
.....
..........
2211
22222121
11212111
Élimination de Gauss
Solution de 2 équations (n=2)
2222121
1212111
CXaXaCXaXa
Isolons X2 de la seconde équation
22
12122 a
XaCX
Substituons X2 de la première équation
122
121212111 C
aXaCaXa
Élimination de Gauss
Nous pouvons alors isoler X1
12212211
2121221 aaaa
CaCaX
Nous pouvons alors déduire X2 par
12212211
1212112 aaaa
CaCaX
Élimination de Gauss
Classification des systèmes d’équations– Systèmes ayant des solutions– Systèmes sans solution– Systèmes avec une infinité de solutions
Élimination de Gauss
Élimination de Gauss
L’élimination de Gauss est similaire à la procé-dure de substitution utilisée précédemment pour déduire les valeurs de X1 et X2
L’élimination consiste à effectuer un ensemble d’opérations valides sur les équations pour arriver à obtenir une matrice dont la partie triangulaire inférieure (sous la diagonale) est nulle et une diagonale à 1 (Gauss-Jordan)
Nous pouvons alors isoler chacune de nos inconnues
Élimination de Gauss
Opérations valides sur les équations– Permuter deux équations– Multiplier ou diviser une équation par une
constante– Additionner deux équations ensembles
Élimination de Gauss
Représentation matricielle d’un système d’équations linéaires
nnnnnn
n
n
C
CC
X
XX
aaa
aaaaaa
2
1
2
1
21
22221
11211
Élimination de Gauss
Représentation sous forme de matrice augmen-tée
nnnnn
n
n
C
CC
aaa
aaaaaa
2
1
21
22221
11211
Élimination de Gauss
La procédure d’élimination de Gauss est subdi-visée en une phase d’élimination avant suivie d’une phase de substitution arrière. Avec l’élimination avant nous obtenons un système
n
n
n
e
ee
ddd
2
1
2
112
100
101
Élimination de Gauss
Si nous réinsérons les inconnues nous obtenons le système d’équations suivant
1,111,122,13132121 eXdXdXdXdXdX nnnnnn
2,211,222,23232 eXdXdXdXdX nnnnnn
3,311,322,33 eXdXdXdX nnnnnn
2,211,22 nnnnnnnn eXdXdX
1,11 nnnnn eXdX
nn eX
Élimination de Gauss
A partir du système précédent, nous pouvons déduire les inconnues Xi en commençant par l’inconnue Xn et par substitution arrière les autres inconnues X1 … Xn-1
nn eX
nnnnn XdeX ,111
Élimination de Gauss
L’élimination de Gauss appliquée à un circuit électrique (phase d’élimination avant)
426067200111
'2''2'
'
404265020111
133
122
11
RRRRRR
RR
141900
32710
0111
'6'2
'
'
426067200111
233
22
11
RRR
RR
RR
1914100
32710
0111
19'
''
141900
32710
0111
33
22
11
RR
RRRR
Élimination de Gauss
Algorithme d’élimination de Gauss (élimination avant)
Entrées: matrice A de nxn et un vecteur C de n éléments
Élimination avantPOUR j=1à n-1 FAIRE /* Pour chaque élément de la diagonale */
POUR i=j+1 à n FAIRE /* Pour chaque rangée sous la diagonale */mij = aij/ajj
aij = 0; Ci = Ci - mij * Cj
POUR k = j+1 à n FAIRE /* Pour les éléments restant de la rangée i */aik = aik - mij * ajk
Élimination de Gauss
Algorithme d’élimination de Gauss (substitution arrière)
Substitution arrièrePOUR i= n à 1 FAIRE
xi=Ci
POUR j=i+1 à n FAIRE xi = xi - aij * xj
xi = xi/aii
Sortie: vecteur x des solutions
Élimination de Gauss
Problèmes d’erreurs– Représentation des nombres– Utilisation de pivot très petit (division par 0)
Pour minimiser ces problèmes nous pouvons utiliser l’élimination de Gauss avec pivot
Élimination de Gauss
Problèmes d’erreurs (exemple)
0.69.33.13
0303101820637
3
2
1
xxx
En arithmétique exacte, la première étape de l’élimination donne
3.00301.010003.130637
73,
72
3121 mm
Élimination de Gauss
Problèmes d’erreurs (exemple)– La dernière étape produit un élément diagonal
a22 nul– L’élément pivot (diagonal) de la prochaine étape
est donc nul – Le rapport m23 = 3/0 ce qui cause erreur de
division par 0
Élimination de Gauss
Nous pouvons corriger cette anomalie en permutant les rangées 2 et 3 permettant de déduire le vecteur solution exacte
01.01.0
1x
Élimination de Gauss
Sur l’ordinateur, les rapports 2/7 et 3/7 ne sont pas représentés avec exactitude ce qui produit un élément diagonal a22 très petit. L’élimination avant peut quand même se poursuivre produi-sant des solutions erronnées
01000.010547.095078.0
10031.112031.100000.000000.001000.101000.111910.200000.001330.100000.001300.600000.7
x
EEEEEEEEEEEE
Élimination de Gauss avec pivot
Pour éviter les problèmes liés à l’utilisation de pivots petits nous devons avant chaque étape de l,élimination chercher la rangée dont la valeur pivot est maximale
Élimination avantPOUR j=1à n-1 FAIRE /* Pour chaque élément de la diagonale */
trouver_pivot(n,j,A,kp)./*rangée où se trouve le pivot max */Permuter les rangées j et kpPOUR i=j+1 à n FAIRE /* Pour chaque rangée sous la diagonale */
mij = aij/ajj
aij = 0; Ci = Ci - mij * Cj
POUR k = j+1 à n FAIRE /* Pour les éléments restant de la rangée i */aik = aik - mij * ajk
Élimination de Gauss avec pivot
trouver_pivot(n,j,A,kp)pivot = abs(A[j][j])kp=jPOUR i=j+1à n FAIRE /* Pour chaque rangé sous la diagonale */
SI abs(A[i][j])>pivot ALORSpivot = abs(A[i][j])
kp = i FINSIFIN POUR
Travail pratique 1b