PROGRAMMATION SCIENTIFIQUE EN C

16
PROGRAMMATION SCIENTIFIQUE EN C PRO-1027

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 Presentation

Transcript of PROGRAMMATION SCIENTIFIQUE EN C

Page 1: PROGRAMMATION SCIENTIFIQUE EN C

PROGRAMMATION SCIENTIFIQUE EN C

PRO-1027

Page 2: PROGRAMMATION SCIENTIFIQUE EN C

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

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

Introduction

Page 5: PROGRAMMATION SCIENTIFIQUE EN C

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

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

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

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

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

Méthode de recherche directe

Page 11: PROGRAMMATION SCIENTIFIQUE EN C

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

Méthode de recherche directe

Algorithme de recherche directe – Problèmes possibles (racines multiples et discon-

tinuitées

Page 13: PROGRAMMATION SCIENTIFIQUE EN C

Travail pratique 2 a

Utilisation de la recherche directe

Page 14: PROGRAMMATION SCIENTIFIQUE EN C

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

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

Travail pratique 2 a

Visualisation avec xgraph

xgraph fich