programmation scientifique en c
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/1.jpg)
PROGRAMMATION SCIENTIFIQUE EN C
PRO-1027
![Page 2: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/2.jpg)
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
![Page 3: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/3.jpg)
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
![Page 4: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/4.jpg)
Introduction
![Page 5: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/5.jpg)
Introduction
Pour des fonctions simples, les racines peuvent être trouvées de façon analytique
Pour un polynôme de degré 2:
a
acbbx
a
acbbx
cbxax
2
4
2
4
0
2
2
2
1
2
![Page 6: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/6.jpg)
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
![Page 7: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/7.jpg)
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
![Page 8: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/8.jpg)
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
![Page 9: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/9.jpg)
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
![Page 10: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/10.jpg)
Méthode de recherche directe
![Page 11: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/11.jpg)
Méthode de recherche directe
Algorithme de recherche directeracineDIR(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
![Page 12: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/12.jpg)
Méthode de recherche directe
Algorithme de recherche directe – Problèmes possibles (racines multiples et discon-
tinuitées
![Page 13: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/13.jpg)
Travail pratique 2 a
Utilisation de la recherche directe
![Page 14: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/14.jpg)
Travail pratique 2 a
Utilisation de la recherche directe
0sin
cos
)(sin
)cos(
sin)sin()(
sin
sin
21
22
1221
12
21
C
Cw
CA
CAw
dC
dl
C
w
CA
wllCl
CABC
wl
B
wl
![Page 15: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/15.jpg)
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);
}
![Page 16: PROGRAMMATION SCIENTIFIQUE EN C](https://reader036.vdocuments.mx/reader036/viewer/2022062407/56812eb0550346895d94556d/html5/thumbnails/16.jpg)
Travail pratique 2 a
Visualisation avec xgraph
xgraph fich