PROGRAMMATION SCIENTIFIQUE EN C

Slides:



Advertisements
Présentations similaires
Eléments d'algèbre linéaire
Advertisements

La Méthode de Simplexe Standardisation
3. Variantes de l’algorithme
2. Méthodes du simplexe et son analyse.
CHAPITRE 13 Systèmes de deux équations à deux inconnues
Unité #2 Analyse numérique matricielle Giansalvo EXIN Cirrincione.
Unité #3 Analyse numérique matricielle Giansalvo EXIN Cirrincione.
Les systèmes linéaires. 1)PRESENTATION avec x, y, z les inconnues.
RESOLUTION DE SYSTEME Soit à résoudre le système : 2x + 3 y = 26
PROGRAMMATION SCIENTIFIQUE EN C
Algèbre matricielle Montage préparé par : André Ross
CHAPITRE 13 Systèmes de deux équations à deux inconnues
Rappel... Sous-espaces de Rn: Définition;
ASI 3 Méthodes numériques pour l’ingénieur
ASI 3 Méthodes numériques pour l’ingénieur
TRAITEMENT D’IMAGE SIF-1033.
Concepts avancés en mathématiques et informatique appliquées
Rappel... Opérations élémentaires sur les matrices:
PROGRAMMATION SCIENTIFIQUE EN C
Systèmes d’équations linéaires
Chapitre 3bis Applications linéaires et Matrices
Examen partiel #2 Mercredi le 15 novembre de 13h30 à 15h20
Rappel... Solution itérative de systèmes linéaires (suite et fin).
Techniques d’optimisation
Introduction aux matrices : exemples en dynamique de population
Examen partiel #3 Mercredi le 15 décembre de 15h30 à 17h20
Rappel... Caractérisation des matrices inversibles: Matrices bloc.
5.1 SYSTÈME DÉQUATIONS LINÉAIRES Cours 13. Au dernier cours nous avons vus Léquations vectoriel et léquation normale dun plan. Lintersection de deux plans.
PROGRAMMATION SCIENTIFIQUE EN C
PROGRAMMATION SCIENTIFIQUE EN C
PROGRAMMATION SCIENTIFIQUE EN C
SUJETS SPÉCIAUX EN INFORMATIQUE I
RECONNAISSANCE DE FORMES
Rappel... Matrices bloc. Décomposition des matrices:
Transformations linéaires et sous-espaces associés
Algèbre matricielle Montage préparé par : André Ross
l’algorithme du simplexe
Cours du 25 octobre Mardi le 24 octobre
Rappel... Diagonalisation. Transformations linéaires.
MAXIMISER les RESULTATS
Isoler une variable Dans cette présentation, nous isolerons la variable x dans une équation contenant des coefficients fractionnaires. La première chose.
Examen partiel #1 Mercredi le 4 octobre de 13h30 à 15h20
La décomposition en valeurs singulières: un outil fort utile
Géométrie épipolaire (deux vues)
ASI 3 Méthodes numériques pour l’ingénieur
ASI 3 Méthodes numériques pour l’ingénieur
Rappel... Valeurs propres et vecteurs propres. Définitions;
Cours de mathématiques économiques
Approche naïve de la résolution.
Programmation dynamique
Dérivation et intégration
CHAPITRE 3: LES NOMBRES.
Les algorithmes de découplage vitesse-pression
ASI 3 Méthodes numériques pour l’ingénieur
ASI 3 Méthodes numériques pour l’ingénieur
Equations du premier degré à une inconnue (rappel)
Programmation linéaire en nombres entiers
Équilibrer une réaction chimique
Résolution d’un problème de diffusion 3D
PROGRAMMATION SCIENTIFIQUE EN C PRO Résolution de système d’équations non- linéaires (racines d’équations) u Méthode de la bissection u Analyse.
PROGRAMMATION SCIENTIFIQUE EN C PRO Approximation de fonctions et régression u Approximation linéaire –Méthode du moindre carré u Travail pratique.
Post-optimisation, analyse de sensibilité et paramétrage
2. Méthode du simplexe et son analyse.
Concepts avancés en mathématiques et informatique appliquées MAP-6014.
PROGRAMMATION SCIENTIFIQUE EN C PRO Approximation de fonctions et régression u Approximation linéaire –Méthode du moindre carré u Exemple.
3. Variantes de l’algorithme
Les polynômes Un petit rappel pour le ! Définition : Un polynôme est la somme de monômes. Exemple : 3m² – 2m + 1 Cependant, qu’est-ce qu’un monôme? Au.
1. Méthode du simplexe et son analyse.
PROGRAMMATION SCIENTIFIQUE EN C
Pierre Joli Cours de Mathématique Pierre Joli
Transcription de la présentation:

PROGRAMMATION SCIENTIFIQUE EN C

Résolution de système d’équations linéaires Élimination de Gauss Élimination de Gauss avec pivot Approche SVD (Singular Value Decomposition)

É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 l’achat inutile d’ingrédient 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) Sol’n

Élimination de Gauss Nous pouvons déduire une expression générale pour le calcul des Ci 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 Mn (lb/tonne d’alliage) Si (lb/tonne d’alliage) Cu (lb/tonne d’alliage) 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

Élimination de Gauss Forme générale d’un système d’équations linéaires

Élimination de Gauss Solution de 2 équations (n=2) Isolons X2 de la seconde équation Substituons X2 de la première équation

Élimination de Gauss Nous pouvons alors isoler X1 Nous pouvons alors déduire X2 par

É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

Élimination de Gauss Représentation sous forme de matrice augmen-tée

É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

Élimination de Gauss Si nous réinsérons les inconnues nous obtenons le système d’équations suivant

É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

Élimination de Gauss L’élimination de Gauss appliquée à un circuit électrique (phase d’élimination avant)

É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 avant POUR 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ère POUR i= n à 1 FAIRE // pour chaque rangée à partir de la rangée n xi=Ci POUR j=i+1 à n FAIRE // pour les sol’n de la rangée i, Xi+1 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) En arithmétique exacte, la première étape de l’élimination donne

É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

É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

É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 avant POUR 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 kp 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 avec pivot trouver_pivot(n,j,A,kp) pivot = abs(A[j][j]) kp=j POUR i=j+1à n FAIRE /* Pour chaque rangé sous la diagonale */ SI abs(A[i][j])>pivot ALORS pivot = abs(A[i][j]) kp = i FINSI FIN POUR

Approche Singular Value Decomposition Cette approche permet d’éliminer les faiblesses notées dans les approches de résolutions de Gauss. L’approche SVD permet de résoudre divers types de problèmes: résolution de systèmes d’équations linéaires par moindres carrés (cas d’approximation de données), résolution de système mal conditionné.

Approche Singular Value Decomposition Système à résoudre:

Approche Singular Value Decomposition

Approche Singular Value Decomposition La fonction svdcmp() de Numerical Recipes in C permet de décomposer la matrice A en trois matrices U, W et VT La matrice A est fournie en argument de la fonction svdcmp() La matrice U est retournée dans A, la diagonale de W est retournée dans le vecteur w, et VT dans la matrice v.

Approche Singular Value Decomposition La fonction svdksb() permet de résoudre le système A.x = b sachant que A = U.W.VT Cette fonction est aussi disponible dans Numerical Recipes in C.

Approche Singular Value Decomposition Exemple d’utilisation #define N … float wmax, wmin, **a,**u,*w,**v,*b,*x int i,j; …. for(i=1;i<=N;i++) for(j=1;j<=N;j++) u[i][j] = a[i][j]; svdcmp(u,N,N,w,v); wmax = 0.0; for(j=1;j<=N;j++) if(w[j] > wmax) wmax = w[j]; wmin = wmax*1.0e-6; for(j=1;j<=N;j++) if(w[j] < wmin) w[j]=0.0; svdksb(u,w,v,N,N,b,x);