PROJET LE 205 premier semestre

De
Publié par

  • cours - matière potentielle : mais
PROJET LE 205 Nom : Groupe : I. INTRODUCTION : Le but de ce projet est de programmer différentes méthodes pour intégrer un polynôme. Pour cela, vous utiliserez les notions abordées en cours mais il vous sera demandé d'aller encore plus loin. Vous aurez donc besoin de votre cerveau et du manuel HELP de matlab (à utiliser sans modération).  Lisez bien le document présent afin de bien comprendre ce qui vous est demandé.
  • format de stockage des bornes d'intégration
  • polynôme sur les intervalle
  • classique en vulgarisation de la méthode de monte-carlo
  • principe de l'intégration par la méthode de monté-carlo
  • borne
  • bornes
  • matlab
  • polynôme
  • polynômes
  • intégration
  • intégrations
  • méthodes
  • méthode
Publié le : lundi 26 mars 2012
Lecture(s) : 30
Source : isir.upmc.fr
Nombre de pages : 14
Voir plus Voir moins

PROJET LE 205 Nom :
Groupe :
I. INTRODUCTION :
Le but de ce projet est de programmer différentes méthodes pour intégrer un polynôme. Pour
cela, vous utiliserez les notions abordées en cours mais il vous sera demandé d’aller encore
plus loin. Vous aurez donc besoin de votre cerveau et du manuel HELP de matlab (à
utiliser sans modération).
 Lisez bien le document présent afin de bien comprendre ce qui vous est demandé.
 Suivez bien les recommandations qui y sont faites et suivez le cahier des charges à la
lettre.
 Des obligations vous sont fournies, vous devez absolument les respecter.
 Des conseils vous sont aussi fournis tout le long du texte, vous pouvez les utiliser.
 Ecrivez à la main sur ce document l’analyse du fonctionnement de votre programme qui
vous sera demandée à la fin de la première phase de programmation. Vous devrez donc
rendre cet énoncé à la fin de votre projet.
 Commentez vos programmes : pas de longs discours mais des informations pertinentes.
La rigueur de votre travail sera un élément déterminant pour la notation de votre travail
II. DÉROULEMENT DU PROJET :
Le projet de déroule en deux phases :
1. La première phase consiste en la programmation basique du programme principal et
des fonctions qui permettent de calculer les intégrales. C’est le minimum qui vous
sera demandé.
IMPORTANT : A la fin de cette première phase, il vous est demandé de rédiger à la
main sur ce document, ce que vous aurez observé lors du fonctionnement de votre
programme.
2. La deuxième phase consiste en l’amélioration de ce programme. Ces améliorations
sont multiples et vous seront proposées dans un ordre de difficulté croissant.
Néanmoins, à partir du moment où la première phase est réalisée, vous êtes libre de
traiter la phase 2 comme bon vous semble.
1III. CAHIER DES CHARGES – PREMIÈRE
PHASE :
Suivez rigoureusement ce cahier des charges. Considérez qu’il s’agit de la commande d’un
acheteur qui y a défini ses besoins : vous ne pouvez pas vous en écarter !
III.1 FONCTIONNEMENT GLOBAL :
Votre programme doit impérativement s’articuler autour d’un programme principal et
utiliser des fonctions nommées comme l’indique le synopsis de la Figure 1.
Figure 1 : Synopsis du programme à réaliser
2III.2 LES DIFFÉRENTES PARTIES DU PROGRAMME :
III.2.1 Le programme principa l :
Le Programme principal doit fonctionner comme l’indique l’algorithme de la Figure 2.
Obligations :
• Le nom du fichier du programme principal est « principal.m »
• Le format de stockage du polynôme : vecteur de coefficients.
• Le format de stockage des bornes d’intégration : vecteur avec la borne mini et la borne
maxi.
• Le programme principal doit, en sortie, indiquer la valeur de l’intégrale demandée et
indiquer à l’utilisateur la méthode avec laquelle le calcul a été fait.
• Permettre à l’utilisateur de quitter le programme ou de recommencer un calcul par une
autre méthode.
Conseils :
• Utilisez des menus lorsque cela est possible
• Commencez à écrire le squelette du programme principal. Vous le compléterez au fur
et à mesure que vous programmez les fonctions.

-
Figure 2 : algorithme du programme principal
III.2.2 La fonction polyint_int :
La fonction polyint_int doit fonctionner comme l’indique l’algorithme de la Figure 3.
L’intégration se fait à l’aide de la fonction interne polyint de Matlab.
Obligations :
• Le nom du fichier de cette fonction est « polyint_int.m »
Conseils :
• Aidez vous du help de Matlab pour programmer correctement la fonction polyint.
• Avant de vous lancer dans la programmation de la fonction, demandez vous comment
faire un appel correct à la fonction polyint : identifiez notamment ses paramètres
d’entrée et de sortie.
• Pensez au fait que :
b
f(x)dx= (F(b) F(a))+C
a
où F(x) est la primitive de f(x) et C la constante d’intégration
4fi
ò
-
-
Figure 3 : Algorithme de la fonction polyint_int
III.2.3 La fonction « maison » :
La fonction maison_int doit fonctionner comme l’indique l’algorithme de la Figure 4.
Obligations :
• Le nom du fichier de cette fonction est « maison_int.m »
• Utilisez une boucle for
Conseils :
• Trouvez d’abord sur papier l’algorithme qui permet de calculer les coefficients du
polynôme intégré à partir du polynôme fourni en entrée de la fonction. Pour cela, vous
pouvez vous appuyer cet exemple :
3+1 2+1 1+1 0+1
2x 4x 2x 5x3 2 1 0f(x) = 2x 4x + 2x + 5x F(x) = + + + C
3+1 2+1 1+1 0+1
• N’oubliez pas de stocker la constante C=0 dans votre nouveau vecteur.
• Vous pouvez vous reporter aux conseils de la fonction polyint_int pour calculer la
valeur de l’intégrale entre les bornes indiquées par l’utilisateur.
5-
-
ò
Figure 4 : Algorithme de la fonction maison_int
III.2.4 La fonction quad_int
La fonction quad_int doit fonctionner comme l’indique l’algorithme de la Figure 5.
L’intégration se fait à l’aide de la fonction interne quad de Matlab.
Obligations :
• Le nom du fichier de cette fonction est « quad_int.m »
• Utilisez une boucle for pour intégrer les différentes parties du polynôme.
• Utilisez la fonction interne Matlab qui fait la somme des éléments d’un vecteur.
• Utilisez le signe @ pour déclarer votre polynôme et pouvoir le passer en argument de
la fonction quad.
Conseils :
• Consultez le help de Matlab pour vous informer sur la fonction quad de Matlab. Un
2 1
dxexemple y est donné. Pour calculer l’intégrale sur x suivante : , il faut 3
0x 2x 5
programmer la variable F, dans laquelle (x) indique le nom de la variable sur laquelle
intégrer, suivi par la fonction de x à intégrer. Les bornes de l’intégrale sont fournies
directement à la fonction quad :

ò
ò
-
-
ò
F = @(x) 1./(x.^3-2*x-5);
Q = quad(F,0,2);
@ permet d’indiquer à Matlab que F est un « objet » (en l’occurrence une fonction)
qui peut être passé en argument d’une autre fonction.
• Par commodité avec la fonction interne quad, vous devrez considérer votre polynôme
comme une somme de polynômes élémentaires qu’il vous faudra intégrer séparément
puis sommer.
Exemple :
b b b b
3 3
(2x 4x+ 1)dx= 2x dx + 4xdx+ 1dx
a a a a
• N’oubliez pas de prendre en compte la constante d’intégration C lors de l’utilisation de
la fonction quad de Matlab.
Figure 5 : Algorithme de la fonction quad_int
7-
˛
III.2.5 La fonction mc_int :
III.2.5.a Principe de l’intégration par la méthode de Monté-Carlo
(source : WIKIPEDIA):
Cet exemple est un classique en vulgarisation de la méthode de Monte-Carlo. Soit une zone
rectangulaire ou carrée dont la longueur des côtés sont connus. Au sein de cette aire se trouve un lac
dont la superficie est inconnue. Grâce aux mesures des côtés de la zone, on connaît l'aire du rectangle.
Pour trouver l'aire du lac, on demande à une armée de tirer X coups de canon de manière aléatoire sur
cette zone. On compte ensuite le nombre N de boulets qui sont restés sur le terrain, on peut ainsi
déterminer le nombre de boulets qui sont tombés dans le lac : X-N. Il suffit ensuite d'établir un rapport
entre les valeurs :
2Par exemple, si le terrain fait 1000 m , que l'armée tire 500 boulets et que 100 projectiles sont tombés
2dans le lac alors la superficie du plan d'eau est de : 100*1000/500 = 200 m .
Bien entendu, la qualité de l'estimation s'améliore en augmentant le nombre de tirs et en s'assurant que
les artilleurs ne visent pas toujours le même endroit mais couvrent bien la zone. Cette dernière
remarque est à mettre en parallèle avec la qualité du générateur aléatoire qui est primordiale pour avoir
de bons résultats dans la méthode de Monte-Carlo. Un générateur biaisé est comme un canon qui tire
toujours au même endroit : les informations qu'il apporte sont réduites.
III.2.5.b Application à l’intégration d’un polynôme :
3 x [ 3,3]Prenons l’exemple du polynôme qui doit être intégré sur et qui est représenté y= x
sur la Figure 6 en trait plein.
Il s’agit, tout d’abord, de définir une surface encadrant la fonction sur son intervalle
d’intégration. En abscisse, on prendra les bornes de l’intégration ; en ordonnée, les valeurs
minimum et maximum du polynôme. Dans cet exemple, il s’agit de –27 et +27, sur les bords
de l’intervalle d’intégration. Néanmoins, il faudra que le programme calcule ces extrema pour
le cas le plus général.

-
·
-
œ
œ
ß
ø
ß
Œ
º
ò
-
-
œ
œ
Œ
Œ
Œ
Ø
º
-
Ø
·
-
-
Ensuite, il faut tirer de manière aléatoire les coordonnées (x,y) de chacun des points (au
nombre de 2000 dans cet exemple). Les points tirés aléatoirement sont représentés par les
symboles « o , + , x ». 3 types de points sont identifiés.
• Les points désignés par le symbole « x » sont les points qui sont compris entre 0 et le
polynôme sur les intervalles où ce dernier est positif. Ces points permettront de
calculer la partie positive de l’intégrale.
• Les points désignés par le symbole « + » sont les points qui sont compris entre 0 et le
polynôme sur les intervalle où ce dernier est négatif. Ces points permettront de
calculer la partie négative de l’intégrale.
• Les points désignés par le symbole « o » sont les points qui n’appartiennent à aucun
des deux cas précédents.
Distinguer ces trois types de points permet de calculer l’intégrale (sa surface en valeur
algébrique) du polynôme par l’équation :
(N> 0 N< 0)
(maxi mini) (b a)
Ntotal
où N> 0 est le nombre de points dans la partie positive (symbole « x »), N< 0 est le nombre de
points dans la partie négative (symbole « + »), Ntotal le nombre total de points tirés
aléatoirement (2000 dans cet exemple), maxi et mini les bornes en ordonnées, b et a les
bornes en abscisse dont le produit donne la surface totale du rectangle dans lequel le
polynôme est contenu.
Dans cet exemple, la surface positive (symbole « x ») est égale à la surface négative (symbole
« + »). L’intégrale est donc nulle. On peut le vérifier analytiquement :
34 4 4
3 x 3 ( 3)3
x dx= = = 0
4 4 4
3
3
Ce résultat est d’ailleurs immédiat en remarquant que le polynôme est impair et intégré sur un
intervalle symétrique par rapport à x=0.
Figure 6 : Exemple de calcul d’intégrale par la Méthode de Monté-Carlo
9III.2.5.c Programmation de la fonction mc_int
La fonction mc_int doit fonctionner comme l’indique l’algorithme de la Figure 7.
Obligations :
• Le nom du fichier de cette fonction est « mc_int.m »
• Le programme doit pouvoir calculer les bornes en ordonnées (maxi et mini) où que
soient les extrema du polynôme sur l’intervalle.
• Le programme doit permettre d’identifier et conserver séparément les coordonnées des
trois types de points (« o , + , x ») comme dans l’exemple ci-dessus.
• Le programme doit afficher un graphique sur lequel se trouve le polynôme et les 3
types de points, comme sur l’exemple ci-dessus, afin de vérifier le bon fonctionnement
de cette fonction.
• Utilisez des boucles for.
Conseils :
• Les extrema ont pour abscisses les solutions de la dérivée du polynôme. Il s’agit donc
d’identifier le plus grand des maxima et le plus petit des minima.
• Avant de programmer, identifiez clairement les conditions qui vous permettront de
savoir à quel type correspond chacun des points.
• Pour imposer à Matlab la taille des symboles, il faut utiliser l’option
‘MarkerSize’,xxx dans la fonction plot où xxx indique la taille choisie. Commencez
par la valeur 4.
10

Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.