1 / 14

ANALYSE NUMERIQUE

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

jase
Download Presentation

ANALYSE NUMERIQUE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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.

  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.

  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

  6. ALGORITHME (suite) (p0, qo) arbitraire : Itération:

  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 aipar 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.

  8. FONCTIONNEMENT(Procédure graphe) • dist_y dist_ x

  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, lavaleur 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.

  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.

  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.

  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.

  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 .

  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/rau 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

More Related