160 likes | 236 Views
PROGRAMMATION SCIENTIFIQUE EN C. PRO-1027. Résolution de système d’équations non-linéaires (racines d’équations). Introduction Méthode de recherche directe des racines Travail pratique 2 a Recherche directe Impression dans un fichier Visualisation avec xgraph Examen 1. Introduction.
E N D
PROGRAMMATION SCIENTIFIQUE EN C PRO-1027
Résolution de système d’équations non-linéaires (racines d’équations) • Introduction • Méthode de recherche directe des racines • Travail pratique 2 a • Recherche directe • Impression dans un fichier • Visualisation avec xgraph • Examen 1
Introduction • Les équations non-linéaires peuvent être exprimées sous une forme, f(x) = 0 • Les valeurs de x qui satisfont f(x) = 0, sont les raci-nes et représentent par le fait même les solutions
Introduction • Pour des fonctions simples, les racines peuvent être trouvées de façon analytique • Pour un polynôme de degré 2:
Introduction • Les racines d’un polynôme de degré 3 peuvent aussi être déduites de manière analytique • Pour des polynômes de degré supérieur, il faut utiliser des méthodes numériques de localisation des racines puisqu’aucune solution analytique existe • La plupart des fonctions non-linéaires, non-poly-nômiales requièrent aussi l’utilisation d’algorith-mes numériques de recherche de zéros de fonctions
Méthode de recherche directe • Nous pouvons trouver les racines d’une fonction non-linéaire par une approche essai et erreur par laquelle la fonction f(x) est évaluée à plusieurs points sur un intervalle [a,b] sur l’axe x jusqu’à ce que f(x) = 0 • Mais la chance de trouver les racines exactes est faible • Par contre, nous savons qu’une estimation des valeurs des racines est souvent suffisante
Méthode de recherche directe • La méthode directe est la plus facile mais aussi la moins efficace • Les étapes de cette méthode sont: • Définir un intervalle [a,b] à l’intérieur duquel nous devrions trouver les racines • Subdiviser l’intervalle [a,b] en sous-intervalles plus petits et uniformément espacés. La dimension des sous-intervalles est fonction de la précision recher-chée
Méthode de recherche directe • Les étapes de cette méthode sont: • Parcourir chaque sous-intervalle jusqu’à ce qu’un sous-intervalle contenant une racine soit localisé. Ceci survient quand f(x) = 0 dans un sous-intervalle • Nous pouvons déterminer la présence d’une racine dans un sous-intervalle [A,B] en déteminant si f(A)f(B) < 0
Méthode de recherche directe • Algorithme de recherche directe racineDIR(float a, float b, float eps) nint = (int)((b-a)/eps) + 1 deltax = (b-a)/(float)(nint) xd = a xf = xd + deltax POUR i allant de 1 à nint FAIRE fxd = F(xd) fxf = F(xf) SI (fxd*fxf <= 0) FAIRE Imprimer l’intervalle [xd,xf] FIN SI xd = xf xf = xd + deltax FIN POUR
Méthode de recherche directe • Algorithme de recherche directe • Problèmes possibles (racines multiples et discon-tinuitées
Travail pratique 2 a • Utilisation de la recherche directe
Travail pratique 2 a • Utilisation de la recherche directe
Travail pratique 2 a • Impression dans un fichier void ecrireFONCTION(float *f, float *x, char *argv[]) { int i; FILE *fptr; fptr = fopen(argv[ ], ’ ’w ’ ’); for(i=0;i<=NBVAL;i++) fprintf(fptr, ’ ’%f %f \n ’ ’,x [i],f[i]); fclose(fptr); }
Travail pratique 2 a • Visualisation avec xgraph xgraph fich