Télécharger le fichier pdf d’un mémoire de fin d’études
Elaboration de l’interface de Maxima
Cette section consiste à décrire les moyens et outils utilisés pour élaborer l’interface au programme Maxima.
Introduction
Il existe deux approches pour interfacer Maxima avec un autre langage.
-On utilise une interface de programmation entre lisp et cet autre langage car Maxima est écrit en Lisp.
– On utilise un port ou un « socket » pour communiq uer avec Maxima.
La première approche est un travail ardu tandis que la deuxième est relativement aisée. En effet plusieurs logiciels qui emploient la deuxième approche existent déjà :
– xmaxima (tcl)
C’est l’interface graphique qui est livrée avec le programme. Ancienne et un peu sommaire, son remplacement est à l’étude. – WxMaxima
C’est une interface moderne et fonctionnelle, qui permet d’entrer une grande partie des commandes de Maxima à l’aide d’icônes. Ses fonctionnalités d’édition et sa simplicité en font un logiciel idéal pour utiliser Maxima. Elle fonctionne sous toutes les plates-formes.
– Texmacs
Texmacs est un traitement de texte scientifique, qui permet d’entrer directement des commandes Maxima. Son intérêt est de produire des documents d’une qualité remarquable. Par contre, toutes les commandes Maxima doivent être entrées au clavier.
Description des outils à utiliser
Socket
Il s’agit d’un système de communication inter processus (IPC – Inter Process Communication) qui permet à divers processus de communiquer aussi bien sur une même machine qu’à travers un réseau TCP/IP. Un sock et est donc une sorte de tuyau dans lequel transitent les données sur un réseau. Le contenu du message transporté importe peu au socket, mais il s’occupe juste d’acheminer le message entre deux éléments A et B. De plus la communication par socket est souvent comparée aux communications humaines. On distingue ainsi deux modes de communication :
-Le mode connecté (comparable à une communication téléphonique), utilisant le protocole TCP. Dans ce mode de communication, une connexion permanente est établie entre les deux points A et B, de telle façon que l’adresse de destination n’est pas nécessaire à chaque envoi de données.
-Le mode non connecté (analogue à une communication par courrier), utilisant le protocole UDP. Ce mode nécessite l’adresse de destination à chaque envoi, et aucun accusé de réception n’est donné.
Les sockets sont utilisés à chaque fois qu’on surfe sur le web, on consulte son email ou on répond un message instantané.
wxWidgets
wxWidgets (au départ, connue sous le nom wxWindows) est une bibliothèque de développement multi-plateforme. Il est disponible pour Windows, Linux, Mac, et bien d’autres systèmes. Cela a l’avantage de réduire les temps de programmation pour permettre à une application de pouvoir tourner sur tous ces systèmes d’exploitation. Il est possible de l’utiliser en passant, bien sûr, par le C++, mais également Python, Perl, C#, … De plus, il contient un grand nombre de classes simplifiant l’utilisation de certains contrôles.
Pour ce qui est de l’interface graphique, wxWidgets utilise, pour chaque plateforme, les API natives. Ce qui fait qu’une application aura, sous Windows, le look Windows, et sous Linux, le look Linux. Pour notre travail on va utiliser wxWidgets sous C++
Quelques caractéristiques du C++
Ce langage a révolutionné l’informatique. C’est un langage orienté objet :
Un programme qui utilise l’approche objet s’appuie sur trois techniques fondamentales qui sont :
-L’encapsulation permettant de réunir au sein d’une même entité les variables et les fonctions. Cette technique s’accompagne d’un système de protection qui permet de contrôler l’accès aux donnés. Cela signifie qu’il est possible de cacher le fonctionnement interne d’une classe.
-L’héritage permettant de réutiliser les classes existantes. Grâce à cette technique, il est possible de définir des arborescences de classes (générales vers spécialisées). -Le polymorphisme s’appliquant aux fonctions membres des classe et permettant à deux objets de réagir différemment au même appel d’une méthode (pour des types différant par exemple)
Les premiers langages de programmation étaient généralement constitués d’une suite d’instructions s’exécutant de manière inéairel. Cette approche linéaire, bien que simple à mettre en œuvre, a très rapidemen t montré ses limites. En effet les programmes monolithiques de ce type ne se prêtent p as à l’écriture de grosses applications et ne favorisent pas la réutilisation du code. L’approche procédurale (ou modulaire) consiste à découper un programme en une série de fonctions. Dans le cas de l’approche procédurale, un programme correspond à l’assemblage de plusieurs fonctions qui s’appellent entres-elles. Ce qui n’est pas le cas de Maxima puisqu’il n’existe pas de fonction principale et l’exécution est en ligne de commande. Le C++ passe de la programmation procédurale à la programmation orientée objet. Le terme objet est parfois abusivement employé pour désigner ce que l’on appelle en C++ une classe (un moule, un gabarit correspondant à la déclaration d’un type de donné).
Environnement de développement :
Le logiciel de développement pour faire la programmation de l’interface est Dev-CPP.
Nous avons identifié à présent tous les outils pour réaliser une interface de contrôle à Maxima. .
La conception
Description de l’application : les éléments de l’application
La présente sous section va nous donner un aperçu global de l’application. En effet notre application sera constituée par une fenêtre principale qui contient les contrôles suivants :
-Une barre des menus.
-Une barre d’outils.
-Une barre des tâches.
-Une série de boutons qui permettront soit l’affichage de boîtes de dialogue soit d’envoyer des commandes à Maxima.
-La console qui est une grande zone de texte qui affiche les commandes et les réponses de maxima.
-Une petite zone de texte qui permet de saisir une ligne de commande.
-Un autre bouton qui envoie la commande à Maxima.
-Les boîtes de dialogue précédentesqui interagissent avec les utilisateurs, une boîte de dialogue est un moyen de communication entre l’application et l’utilisateur.
Elles permettent de saisir des données, de modifier les données, présentent des informations ou changent les configurations de l’application.
Les grandes lignes du programme
Dans cette section nous allons présenter les grandes lignes du programme. Notre travail consiste à élaborer une interface à Maxima réalisée avec wxWidgets dans laquelle Maxima sera le serveur tandis que notre interface sera le client. Cette dernière va transférer en ligne de commande des fonctions commandant maxima de s’exécuter.
On se connecte au logiciel Maxima (serveur) avec un autre logiciel (client) qui fournit l’interface graphique dont le processus de fonctionnement est le suivant :
• le client crée un processus fils qui lance MAXIMA en mode serveur,
• il envoie des commandes MAXIMA au serveur et reçoit les expressions calculées.
Pour chaque classe de notre application, on va créer :
Un header (*.h) qui contiendra les attributs et les prototypes de la classe
Un fichier source (*.cpp) qui contiendra la définition des méthodes et leurs implémentations.
Mécanisme du socket
Comme on a précisé auparavant le socket s’occupe juste d’acheminer les messages entre Maxima et notre application. Pour effectuer ce transport wxWidgets nous fournit la classe wxSocketBase. Il est à noter cependant que la classe, wxSocketBase fonctionne uniquement avec le protocole TCP, le protocole UDP n’étant pas supporté.
Le principe de fonctionnement du socket est illustré ci-dessous avec TCP
1) Le serveur crée une « socket serveur » associée à un port et se met en attente
2) Le client se connecte à la socket serveur ; deux sockets sont alors créés :une « socket client » côté client, et une « socket service client » côté serve ur. Ces sockets sont connectées entre elles.
3) Le client et le serveur se communiquent par les sockets. L’interface est celle des fichiers (read, write).
La socket serveur peut accepter de nouvelles connections.
Fenêtre
Pour créer une application « wxWidgets », on élabore d’abord une classe qui dérive de la classe « wxApp ». Dans notre cas ce sera la classe MyApp. Chaque application wxWidgets « classique » doit pos séder une classe dérivée de wxApp, et contenant au minimum une redéfinition de la méthode OnInit(). Cette méthode sera appelée au lancement de l’application, et, en fonction de la valeur booléenne de retour, l’application s’arrêtera (valeur de retour = false) ou continuera (valeur de retour = true).
La fenêtre principale de l’application est définie par une classe dérivée de wxFrame, cette nouvelle classe a pour nom pMaximaFrame. Cette « frame » agit comme conteneur des autres composantes. Elle contient une bordure, un titre et des objets comme la barre de menu, une barre d’état, une barre d’outils, une icône mais cette fenêtre ne contient pas d’autre fenêtre. « wxFrame » dérive de « wxWindows ».Les deux classes « wxApp » et « wxFrame » font pa rties de « wxWindows ». Pour pouvoir les utiliser il faudra inclure dans le programme le fichier d’en-tête « wx/wx.h ».
Le fichier pMaximaFrame.h qui contient la déclaration de la classe pMaximaFrame avec les attributs (variables) et les prototypes des méthodes (fonctions) de la classe. L’application va être re présentée par une seule instance de cette classe dérivée. Dans la classe dérivée, on surcharge la méthode « bool OnInit ( ) ».
Les évènements de l’application sont générés par la classe pMaxima, classe dérivée de pMaximaFrame. Le fichier .h qui contien la déclaration cette classe avec les attributs et les prototypes des méthodes se trouve à l’annexe.
Les boîtes de dialogue sont créées à l’aide de la classe wxDialog.
Affichage sur la console
On génère un fichier XML à partir des sorties de Maxima. Et puis le fichier XML est traité pour extraire les données qu’il contient afin d’effectuer divers traitement pour afficher le texte contenant les informations à l’écran. Ce qui précède se définit comme l’action de parser.
La bibliothèque wx qui permet de parser du texte est wxxml2 basé sur libxml2. Le fichier qui contient la déclaration de la classe MathParser qui permet
d’éditer en format mathématique les sorties de Maxima se trouve dans l’annexe.
La console quant à elle est définie par la classe MathCtrl dérivée de wxScrolledWindow.
Oscillateur harmonique simple
Repère théorique
L’oscillateur est constitué d’un solide de masse m, attaché à l’extrémité d’un ressort de raideur k et pouvant glisser sans frottements sur un plan horizontal :
Un tel système entame un mouvement oscillatoire périodique, après être écarté d’une certaine distance xm de sa position d’équilibre O. La position x(t) du solide à chaque instant t par rapport à l’origine O, est l’équation différentielle du second ordre suivant : d2x —– + ω2 x =0 (1) dt2 k où ω = est la pulsation des oscillations. Cette équation peut être établie à m l’aide des principes de Newton, en tenant compte des trois forces suivantes : R R R la tension T du ressort, le poids P du solide et la réaction R du plan. de plus l’équation (1) admet deux solutions linéairement indépendantes sin(ωt) et cos(ωt), de telle sorte que la solution générale est donnée parla combinaison linéaire de ces deux solutions ; x(t) = a cos(ωt) + b sin(ωt) (2)
Les constantes a et b sont déterminées à partir des deux conditions initiales : l’une est sur la position x du solide et l’autre sur sa vitesse v. Les résultats finaux sont donc les expressions de la position x(t) et de la vitesse v(t) du solide.
La démarche théorique décrite ci-dessus est reprise avec tous les détails possibles sans se soucier des difficultés mathématiques, pour permettre à l’étudiant de se concentrer sur l’étude du comportement du système dynamique.
Dans ce qui suit le déroulement des modules d’apprentissage sera présenté par les copies écran des boîtes de dialogue et deal console telles que les caractères en bleu sont les commandes envoyées à Maxima tandis que les caractères en noir et en rouge sont les réponses de Maxima à ces commandes.
L’interface
La fenêtre
Au démarrage, le logiciel s’ouvre sur une fenêtre qui est divisée en deux parties (voir figure.9)
-Celle de gauche contient des boutons de commandes et des schémas de l’oscillateur. Chaque bouton correspond à une activité bien précise labellisée sur le bouton lui-même.
-Celle de droite comprend :
une zone de texte (la console). C’est dans cet endroit que les résultats des calculs sont affichés et les représentations graphiques effectuées.
une entrée en ligne de commande.
Les activités
Les séries d’activités d’apprentissage, qui mènent aux résultats théoriques souhaités, sont déclenchées en cliquant sur les boutons de la fenêtre, en commençant par le bouton « objectif ». Mais avant de commencer voici ce qu’il faut savoir.
Après avoir cliqué sur le menu « Ce qu’il faut savoir », taper F1 ou entrer « ? » une fenêtre d’aide apparaît. Cette dernière contien :
Les prérequis
L’énoncé du problème à étudier
En appuyant sur le bouton objectif, une fenêtre de dialogue apparaît et énonce l’objectif général.
En appuyant sur le bouton suivant on obtient les objectifs spécifiques de ce module.
Inventaire des forces extérieures appliquées au système
Application du deuxième principe de Newton
Transformation de la relation vectorielle précédente en relation scalaire en projetant la l’équation vectorielle sur le systèmed’axe (O, i, j).
Etude énergétique d’un oscillateurharmonique linéaire
Repère théorique
Dans cette étude on établit l’équation différentielle du mouvement en utilisant le théorème de l’énergie mécanique qui s’énonce come suit: « En l’absence de frottement, l’énergie mécanique du système solide essort en régime libre se conserve ».
Par définition, l’énergie mécanique du système étudié E est égale à la somme m de l’énergie cinétique EC du solide et de l’énergie potentielle EP élastique. Si on néglige la masse du ressort, l’énergie du système solide-ressort est celle du solide en translation rectiligne : telle que Ec = ½ mv 2 ; de plus, l’énergie potentielle élastique est l’énergie emmagasinée par le ressort comprimé ou dilaté Ep = ½ kx 2. Cette énergie est nulle lorsque le système se trouve à sa position d’équilibre. Finalement, l’expression de l’énergie mécanique dusystème est donnée par : Em = 1 m V2 + 1 K x2 (3)
Cette énergie mécanique est constante, c’est-à-dire indépendante du temps, quelque soient la vitesse v(t) et la position du solide x(t) à chaque instant t. Par conséquent, la dérivée par rapport au temps t de Em est nulle. Ce résultat nous permet d’obtenir l’équation différentielle (1) : dEm mv dv kx dx 0 dt dt dt Si on tient compte du fait que v dx , on devra obtenir exactement l’équation (1). dt
L’interface de pMaxima pour le module 2
La figure (10) montre la fenêtre de l’interface po ur cette approche. Comme dans le cas précédent, les séries d’activités d’apprentissage se déclenchent en cliquant sur les différents boutons en commençant par l’objectif.
|
Table des matières
INTRODUCTION
PREMIERE PARTIE
I.1 Choix des outils de conception
I.1.1 Les logiciels mathématiques
I .1.1.1 Maple
I .1.1.2 Mathematica
I .1.1.3 Matlab
I .1.1 .4 MuPAD
I .1.1.5 Présentation de Maxima
I.1.2 Elaboration de l’interface de Maxima
I.1.2-1 Introduction
I.1.2.2 Description des outils à utiliser
a- socket
b- wxWidgets
c- Quelques caractéristiques du C++
d-Environnement de développement …..
I.2 La conception
I.2.1 Description de l’application : les éléments de l’application
I.2.2 Les grandes lignes du programme
DEUXIEME PARTIE
II.1 Module 1 : Oscillateur harmonique simple
II. 1.1 Repère théorique
II .1.2 L’interface
II.2 Module 2 : Etude énergétique d’un oscillateur harmonique linéaire
II .2.1 Repère théorique
II .2.2 La fenêtre
II.3 Module 3 : Etude d’un oscillateur harmonique linéaire amorti
II.3.1 Repère théorique
II.3.2 L’interface de pMaxima pour le module 3
CONCLUSION
GLOSSAIRE
ANNEXE
Télécharger le rapport complet