14
1 ANALYSE NUMERIQUE M.CHAYVALLE- D. HERVOUET - H.ROLANDO- I. RAYNE TP A2 - Travail de groupe CNAM 2002-2003

ANALYSE NUMERIQUE

  • Upload
    jase

  • View
    36

  • Download
    1

Embed Size (px)

DESCRIPTION

ANALYSE NUMERIQUE. M.CHAYVALLE- D. HERVOUET - H.ROLANDO- I. RAYNE TP A2 - Travail de groupe CNAM 2002-2003. ANALYSE NUMERIQUE. PRESENTATION. Le Menu… - PowerPoint PPT Presentation

Citation preview

Page 1: ANALYSE NUMERIQUE

1

ANALYSE NUMERIQUE

M.CHAYVALLE- D. HERVOUET - H.ROLANDO- I. RAYNE

TP A2 - Travail de groupe

CNAM 2002-2003

Page 2: ANALYSE NUMERIQUE

2

ANALYSE NUMERIQUE

Page 3: ANALYSE NUMERIQUE

3

PRESENTATION

• Le Menu…•• A l’exécution du programme une fenêtre parent dimensionnable s’ouvre, dans sa barre de menus se

trouvent les fonctions du programme soit: “ FICHIER ”, “ ETUDE ” et “ AFFICHAGE ”.

• La construction du menu est réalisée par un fichier de ressources : ressource.h

• Chaque fois que l’utilisateur sélectionne un item du menu dans le programme, Windows envoie un message WM_COMMAND à la boucle de message. Au sein de la boucle de message, le programme vérifie la valeur du mot de moindre poids du DWORD wParam pour déterminer l’item de menu sélectionné.

• Les Items du menu…

• “ FICHIER ” déroule un sous-menu contenant les actions: Nouveau,Ouvrir,Enregistrer,Quitter.• Nouveau et Ouvrir permettent de stocker un polynôme dans un tableau : polynôme [i], dont la

dimension sera donnée par la valeur du degré du polynôme.

Page 4: ANALYSE NUMERIQUE

4

PRESENTATION (suite)

OUVRIR,  permet d ’appeler un polynôme enregistré.

NOUVEAU,  permet, à l’aide de boites de dialogue successives, de saisir le degré max du polynôme ainsi que les coefficients des puissances de x.Les boites de dialogue initialisées sur [dMax], décrémentent la valeur des exposants pour chaque coefficients constituant notre polynôme [dMax – 1] jusqu’à 0, à l’aide des boutons “ Suivant ”, “ Précédent ”et ” Terminé ”.

Les différentes valeurs saisies pourront être mémorisées par “ ENREGISTRER ”.

Lorsque polynôme[i] est renseigné les différentes procédures se cachant derrière “ ETUDE ” deviennent actives, soient :

- FONCTION  - GRAPHE

Ces deux procédures sont exécutées à l’intérieur de fenêtres enfants supportées par notre fenêtre principale.

Page 5: ANALYSE NUMERIQUE

5

ALGORITHME

• L’algorithme de Bairstow...

• Le programme est principalement articulé autour de cet algorithme, ( recherche des racines d’un polynôme de degré n).

• Pour cela on utilise la méthode de "Léonard Bairstow".

• Elle consiste à calculer tous les facteurs quadratiques de P(x).

• n

• P(x) = a 0 ∏ (x 2 + Pjx + qj)  si P est un polynôme de degré 2n.

• J=1

• n

• P(x) = a 0 (x – γ) ∏ (x 2 + Pjx + qj) si P est un polynôme de degré 2n+1.

• J=1

Page 6: ANALYSE NUMERIQUE

6

ALGORITHME (suite)

(p0, qo) arbitraire :

Itération:

Page 7: ANALYSE NUMERIQUE

7

ALGORITHME (suite)

Résultat: Soient

p la limite de la suite p(i) et q la limite de la suite q(i)

bk la limite de la suite bk(i) et ck la limite de la suite ck

(i)

P(x) = (x2 + px + q) (b0xn-1 + b1xn-2 + ... + bn-1).

On recommence l'opération en remplaçant les ai par les bi, en prenant pour valeurs de départ dans cette nouvelle étape les valeurs de p et q obtenues à la précédente, et ainsi de suite jusqu'à ce qu'on ait déterminé tous les facteurs quadratiques de P , d'où l'on déduit ses racines.

Les racines du polynôme nous permettent entre autres de tracer la courbe de la fonction polynomiale, et ce, de façon centrée à l’intérieur de la fenêtre enfant “ Graphe ”.

Les racines réelles et complexes seront affichées par la procédure “ Fonction ” et serviront à l’élaboration du tableau de variation.

Page 8: ANALYSE NUMERIQUE

8

FONCTIONNEMENT (Procédure graphe)

dist_y

dist_ x

Page 9: ANALYSE NUMERIQUE

9

FONCTIONNEMENT (Procédure graphe suite)

Nous commençons par déclarer trois variables en static nommées : dist_x, dist_ y et dist.

Lorsque dMax = 2,

dist correspond à la position graphique de la racine max, or cette racine risquant d’être confondue avec le bord de notre fenêtre on lui retranche, pour l’affichage, 20% de la zone graphique. Il en sera de même pour la racine mini.

dist_x représente la distance graphique entre la première et la dernière racine, celles-ci déterminées par l’algorithme de Bairstow. Les racines du polynôme sont ensuite triées par la fonction " tri_bulle".

dist_y est directement calculé à partir de la dérivée f ’(x).

Après comparaison des valeurs dist_x et dist_y, la valeur de dist sera ajustée et prendra la valeur 1.4 dist_x ou 1.4 dist_y, ceci déterminant la taille de la zone d ’affichage p/r à la taille de la fenêtre graphique.

Page 10: ANALYSE NUMERIQUE

10

FONCTIONNEMENT (Procédure graphe suite)

De cette façon la courbe de l’équation sera complètement affichée dans la fenêtre, sans débordements horizontaux même dans le cas d’équations à forts coefficients et à degrés importants.

Pour les polynômes de degrés supérieurs à 2 le principe reste le même, les valeurs 1.4 sont remplacées par 3.

Le tracé des courbes f(x) et f ‘(x) est effecué par un balayage suivant l’axe (x’,x).La fonction : "calculxy" nous renvoie la position "coordy" correspondante.

On utilise ensuite MoveToEx et LineToEx pour tracer les courbes.

Page 11: ANALYSE NUMERIQUE

11

FONCTIONNEMENT (Procédure fonction)

On travaille l’affichage des différents éléments grâce à la fonction Paint. En utilisant la fonction TextOut qui écrit une chaîne à un emplacement déterminé, avec la concaténation de différentes chaînes de caractères dépendant des différents affichages désirés.

Affichage fonction se fait par une écriture en ligne de tous les différents polynôme[i] avec leurs signes, mais seulement ceux, dont la valeur est différente de 0.

Affichage du domaine de définition se fait uniquement par une phrase car on travaille uniquement avec des polynômes.

Affichage de la parité se fait grâce à la fonction paire(reel,int&) qui reçoit les différentes racines réelles du polynôme, triées par tri_bulle.On utilise alors la plus grande racine réduite à une valeur entière et augmentée de 10. Puis on compare le résultat pour chaque valeur entre 0 et cette valeur de racine avec le résultat de l’opposé de cette valeur obtenu par calculxy(xy) . Ceci renvoie un integer qui est ensuite interprété pour former une chaîne de caractères caractéristique de la parité de la fonction.

Page 12: ANALYSE NUMERIQUE

12

FONCTIONNEMENT (Procédure fonction suite)

Affichage de la dérivé se fait pareillement à l’affichage de la fonction. Mais en utilisant au préalable la fonction derive(polyderive) qui permet d’obtenir les différents coefficients de la dérivé.

Affichage des racines se fait dans une ListBox afin de gagner de la place et de pouvoir visualiser toutes les racines. Elles sont calculées grâce à eq_Bairstow et eq_trinôme et ensuite triées.

Affichage du tableau de variation se fait avec Paint, en utilisant la fonction signederive qui fait appel à calculderive.

Page 13: ANALYSE NUMERIQUE

13

CONCLUSION

Finalement toute la fonctionnalité du programme est articulée autour de l’algorithme de Bairstow, qui nous renvoie donc les racines réelles et complexes des équations polynomiales étudiées.Un calcul sur les racines nous permet de déterminer le ratio pour l’affichage des courbes f(x), f ’(x) et nous aide à l’élaboration du tableau de variations.En revanche pour les équations à forts coefficients et degrés élevés, des erreurs de traitement peuvent être générées par cet algorithme, le programme se fige.Il reste tout à fait fonctionnel pour des équations simples.

L’affichage des racines dans une List box de la procédure " Fonction "  est limitée par la taille de notre fenêtre graphique; si les racines sont nombreuses le tableau de variation n’apparaît pas complètement.L’ajout d’une " Scroll barre "  serait donc nécessaire et reste à développer dans la procédure " Fonction " .

D’autre part, une erreur réside dans l’ordonnancement des racines pour l’affichage dans la List box .

Page 14: ANALYSE NUMERIQUE

14

CONCLUSION (suite)

En ce qui concerne le Graphe, les courbes représentées sont centrées par rapport à la fenêtre à l’aide des racines min et max. Il a donc été possible d’afficher correctement l’axe des abscisses courbe (hauteur) par rapport à l’axe des ordonnées ‘y’ de la fenêtre graphique.

La courbe coupe à la bonne position l’axe des abscisses (x’,x) en ses racines, par contre une difficulté persiste dans le centrage de l’axe (y’,y) p/r à la courbe, cette représentation reste à développer. La solution réside très certainement dans l’exploitation des coordx p/r au balayage des ‘y’( le principe inverse est utilisé pour l’affichage de la courbe).

Ceci nécessite d’élaborer un nouveau "pas"  traduisant les coordonnées courbes p/r aux coordonnées graphiques de la fenêtre Windows.

CQFD