{"id":1570,"date":"2021-06-16T13:35:50","date_gmt":"2021-06-16T12:35:50","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/?p=1570"},"modified":"2021-06-16T12:35:17","modified_gmt":"2021-06-16T11:35:17","slug":"modelisation-mathematique-et-simulation-numerique-de-la-phyllotaxie","status":"publish","type":"post","link":"https:\/\/blog.univ-angers.fr\/polytech_2A\/2021\/06\/16\/modelisation-mathematique-et-simulation-numerique-de-la-phyllotaxie\/","title":{"rendered":"Mod\u00e9lisation math\u00e9matique et simulation num\u00e9rique de la phyllotaxie"},"content":{"rendered":"<p>Bonjour \u00e0 tous,<\/p>\n<p>Dans le cadre du dernier semestre de PEIP2, il nous est propos\u00e9 de concevoir un projet par groupe d\u2019\u00e9tudiants. Nous sommes deux \u00e9l\u00e8ves \u00e0 avoir travaill\u00e9 sur ce projet, Paul Bolufer ainsi que moi-m\u00eame Marc Berret. Le projet est encadr\u00e9 par des professeurs de l\u2019\u00e9cole et a pour dur\u00e9e une centaine d&#8217;heures.<\/p>\n<p>L\u2019objectif de ce projet est de r\u00e9aliser un simulateur permettant de mod\u00e9liser le d\u00e9veloppement de certaines plantes. Pour notre part, nous avons choisi de le faire sous le langage Python. La mod\u00e9lisation s\u2019appuie sur des mod\u00e8les math\u00e9matiques.<\/p>\n<p><strong>1. Pr\u00e9sentation du projet<\/strong><\/p>\n<p>La phyllotaxie est la science qui \u00e9tudie l\u2019ordre dans lequel sont implant\u00e9es les feuilles, ou plus globalement la disposition des \u00e9l\u00e9ments d\u2019un fruit, d&#8217;une fleur ou d\u2019un bourgeon.<\/p>\n<p>Nous avons ainsi d\u00e9cid\u00e9 d\u2019orienter notre projet vers la cr\u00e9ation d\u2019un programme informatique permettant de simuler la disposition des feuilles lors de la croissance d\u2019une plante. <\/p>\n<p>Pour r\u00e9aliser ce simulateur, il nous a \u00e9t\u00e9 n\u00e9cessaire d\u2019acqu\u00e9rir de nouvelles comp\u00e9tences telles que:<br \/>\n&#8211; la ma\u00eetrise des outils math\u00e9matiques pour comprendre le comportement et l\u2019\u00e9volution des plantes<br \/>\n&#8211; la ma\u00eetrise d\u2019un outil informatique pour r\u00e9aliser ces simulations <\/p>\n<p>Et nous avons rapidement \u00e9t\u00e9 confront\u00e9s \u00e0 de premi\u00e8res contraintes comme:<br \/>\n&#8211; la n\u00e9cessit\u00e9 de r\u00e9aliser un travail de documentation sur le sujet<br \/>\n&#8211; comprendre les mod\u00e8les math\u00e9matiques mis en jeu<br \/>\n&#8211; apprendre un nouveau langage de programmation (Python)<\/p>\n<p>Il \u00e9tait alors important de bien structurer nos s\u00e9ances de travail, d&#8217;adopter une bonne organisation et de se partager les t\u00e2ches afin de mener \u00e0 bien notre projet. <\/p>\n<p><strong>2. Travail r\u00e9alis\u00e9<\/strong><\/p>\n<p>Pour mener \u00e0 bien ce projet, nous avons orient\u00e9 notre travail en deux parties. Dans un premier temps, la documentation sur notre sujet, \u00e0 savoir la phyllotaxie ainsi que les mod\u00e8les math\u00e9matiques. Dans un seconde temps, la mise en pratique par le d\u00e9veloppement du simulateur sur le langage Python.<\/p>\n<ul><strong>2.1 Documentation <\/strong><\/ul>\n<p><U>Les diff\u00e9rents types de phyllotaxie<\/U><\/p>\n<p>Il suffit de changer l\u2019angle pour obtenir une nouvelle forme de phyllotaxie. Il en existe 4 diff\u00e9rentes:<\/p>\n<p><U>Phyllotaxie verticill\u00e9 :<\/U><br \/>\nElle pr\u00e9sente au moins trois organes par n\u0153ud. L\u2019angle entre un n\u0153ud et le suivant est de 45 degr\u00e9s. Ce cas de phyllotaxie est assez fr\u00e9quent dans la nature.<br \/>\n<div id=\"attachment_1583\" style=\"width: 160px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/phyver.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1583\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/phyver-150x150.png\" alt=\"Plants de v\u00e9roniques de Virginie.\" width=\"150\" height=\"150\" class=\"size-thumbnail wp-image-1583\" \/><\/a><p id=\"caption-attachment-1583\" class=\"wp-caption-text\">Plants de v\u00e9roniques de Virginie.<\/p><\/div><\/p>\n<p><U>Phyllotaxie oppos\u00e9e :<\/U><br \/>\nLes feuilles sont oppos\u00e9es deux par deux et on observe une rotation de 90 degr\u00e9s entre un n\u0153ud et le suivant.<br \/>\n<div id=\"attachment_1581\" style=\"width: 160px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/menthe.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1581\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/menthe-150x150.png\" alt=\"Branches de menthe\" width=\"150\" height=\"150\" class=\"size-thumbnail wp-image-1581\" \/><\/a><p id=\"caption-attachment-1581\" class=\"wp-caption-text\">Branches de menthe<\/p><\/div><\/p>\n<p><U>Phyllotaxie spiral\u00e9e :<\/U><br \/>\nIl s&#8217;agit de la forme la plus classique de phyllotaxie, on compte un seul organe par n\u0153ud et un angle de 137,5 degr\u00e9 entre un organe et le suivant. On la retrouve dans 92% des plantes.<br \/>\n<div id=\"attachment_1584\" style=\"width: 160px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/pomme.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1584\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/pomme-150x150.png\" alt=\"Pomme de pin\" width=\"150\" height=\"150\" class=\"size-thumbnail wp-image-1584\" \/><\/a><p id=\"caption-attachment-1584\" class=\"wp-caption-text\">Pomme de pin<\/p><\/div><\/p>\n<p><U>Phyllotaxie altern\u00e9e :<\/U><br \/>\nElle pr\u00e9sente une feuille par n\u0153ud et un angle de 180 degr\u00e9s entre deux organes cons\u00e9cutifs.<br \/>\n<div id=\"attachment_1578\" style=\"width: 160px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/chene.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1578\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/chene-150x150.png\" alt=\"Branche de ch\u00eane\" width=\"150\" height=\"150\" class=\"size-thumbnail wp-image-1578\" \/><\/a><p id=\"caption-attachment-1578\" class=\"wp-caption-text\">Branche de ch\u00eane<\/p><\/div><\/p>\n<p><U>Repr\u00e9sentation math\u00e9matique en deux dimensions (th\u00e9orie)<\/U><\/p>\n<p>Pour dessiner les points, on utilise le rep\u00e8re polaire:<br \/>\nr = c * sqrt(n)<br \/>\nteta= n * angle<br \/>\navec n est le nombre de points, c est la distance entre le point. <\/p>\n<div id=\"attachment_1588\" style=\"width: 160px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/reperepol.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1588\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/reperepol-150x150.png\" alt=\"rep\u00e8re polaire\" width=\"150\" height=\"150\" class=\"size-thumbnail wp-image-1588\" \/><\/a><p id=\"caption-attachment-1588\" class=\"wp-caption-text\">rep\u00e8re polaire<\/p><\/div>\n<p>Nous pouvons passer du rep\u00e8re polaire au rep\u00e8re cart\u00e9sien pour dessiner avec un code informatique. En effet, les langages de programmation ne comprennent pas le rep\u00e8re polaire.<\/p>\n<p>Pour faire ceci, on utilise les propri\u00e9t\u00e9s du cosinus et du sinus qui sont respectivement:<br \/>\ncos = adj\/hyp et sin = opp\/hyp<br \/>\nOn trouve que cos(teta)= x\/r et sin()= y\/r et ainsi x=cos(teta)*r et y=sin(teta)*r <\/p>\n<p>Il suffira juste de faire une boucle en fonction de n et de pr\u00e9ciser les param\u00e8tres de c et de l\u2019angle.<\/p>\n<ul><strong>2.2 Mise en pratique sur Python<\/ul>\n<p><\/strong><\/p>\n<p>Concr\u00e8tement, une fois le sujet compris, il faut le retranscrire sur un programme informatique. Pour ce faire nous avons suivi des formations pour apprendre le langage Python. <\/p>\n<p><U>Repr\u00e9sentation de la phyllotaxie spiral\u00e9e en deux dimensions<\/U> (langage Python, \u00e9diteur VSC) <\/p>\n<div id=\"attachment_1579\" style=\"width: 522px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/code.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1579\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/code.png\" alt=\"Code phyllotaxie en 2D sur Python\" width=\"512\" height=\"381\" class=\"size-full wp-image-1579\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2021\/06\/code.png 512w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2021\/06\/code-300x223.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2021\/06\/code-403x300.png 403w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><p id=\"caption-attachment-1579\" class=\"wp-caption-text\">Code phyllotaxie en 2D sur Python<\/p><\/div>\n<p><U>Explication du code:<\/U><br \/>\nIl faut tout d&#8217;abord importer les modules turtle et math n\u00e9cessaire pour faire la repr\u00e9sentation sous forme de dessins et pour utiliser les outils math\u00e9matiques. (ligne 1 et 2)<\/p>\n<p>Ensuite, on cr\u00e9e la fonction phy2D (ligne 4) et on rentre les param\u00e8tres avec c la distance entre les points, e l&#8217;\u00e9paisseur. On fait une boucle qui va dessiner un grand nombre de points (n=1000). <\/p>\n<p>On passe du rep\u00e8re polaire au cart\u00e9sien. D\u2019ailleurs, dans notre variable a (ligne 9), on convertit notre angle en radian en multipliant par pi\/180 et par n pour que a d\u00e9pend du point choisi. Puis, on dessine les points en changeant \u00e0 chaque fois de position (x,y).<\/p>\n<p>\u00c0 la fin, il suffit simplement d&#8217;appeler la fonction en indiquant les param\u00e8tres et on obtient la figure ci-dessous:<br \/>\n<div id=\"attachment_1582\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/nb-or-2d.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1582\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/nb-or-2d-300x257.png\" alt=\"Repr\u00e9sentation graphique de la phyllotaxie spiral\u00e9e (angle d\u2019or: 137.5 degr\u00e9s)\" width=\"300\" height=\"257\" class=\"size-medium wp-image-1582\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2021\/06\/nb-or-2d-300x257.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2021\/06\/nb-or-2d-349x300.png 349w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2021\/06\/nb-or-2d.png 486w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1582\" class=\"wp-caption-text\">Repr\u00e9sentation graphique de la phyllotaxie spiral\u00e9e (angle d\u2019or: 137.5 degr\u00e9s)<\/p><\/div><\/p>\n<p><U>Repr\u00e9sentation en deux dimensions d\u2019une marguerite et d\u2019un tournesol<\/U><\/p>\n<p>En s\u2019appuyant sur le code pr\u00e9c\u00e9dent, on peut dessiner n\u2019importe quelle plante en 2D. En effet, il suffit juste de cr\u00e9er des fonctions dessinant un p\u00e9tale et les r\u00e9p\u00e9ter le nombre de fois que l\u2019on veut. <\/p>\n<p><U>Simulation marguerite<\/U><br \/>\n<div style=\"width: 584px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-1570-1\" width=\"584\" height=\"518\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/marguerite1.mp4?_=1\" \/><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/marguerite1.mp4\">https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/marguerite1.mp4<\/a><\/video><\/div><\/p>\n<p><U>Simulation tournesol<\/U><br \/>\n<div style=\"width: 584px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-1570-2\" width=\"584\" height=\"514\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/video0.mp4?_=2\" \/><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/video0.mp4\">https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/video0.mp4<\/a><\/video><\/div><\/p>\n<p><U>Cr\u00e9ation de l\u2019application et d\u2019un menu<\/U><\/p>\n<p>Une fois que nos programmes pour repr\u00e9senter la phyllotaxie en 2D et avec des exemples concrets \u00e9taient fonctionnels sur Python, nous avons cr\u00e9\u00e9 l\u2019application pour les regrouper. Ainsi nous nous sommes aid\u00e9s du module tkinter sur Python pour faire les boutons, le menu\u2026 <\/p>\n<p>\u00c0 gauche se trouvent les choix des diff\u00e9rents param\u00e8tres et \u00e0 droite l\u2019interface graphique de dessin.<br \/>\n<div id=\"attachment_1577\" style=\"width: 522px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/appli.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1577\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2021\/06\/appli.png\" alt=\"Interface principale du simulateur\" width=\"512\" height=\"349\" class=\"size-full wp-image-1577\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2021\/06\/appli.png 512w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2021\/06\/appli-300x204.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2021\/06\/appli-440x300.png 440w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><p id=\"caption-attachment-1577\" class=\"wp-caption-text\">Interface principale du simulateur<\/p><\/div><\/p>\n<p><strong><br \/>\nConclusion<\/strong><\/p>\n<p>Pour conclure, ce projet a \u00e9t\u00e9 long mais motivant pour chacun d&#8217;entre nous. En effet, nous avons appr\u00e9ci\u00e9 travailler en \u00e9quipe. Nous sommes tr\u00e8s fiers du travail r\u00e9alis\u00e9 et des notions que nous avons pu d\u00e9couvrir. Le r\u00e9sultat final est conforme au cahier des charges, tout au long de la r\u00e9alisation de ce projet nous nous sommes adapt\u00e9s \u00e0 la fois aux mod\u00e8les math\u00e9matiques ainsi qu&#8217;aux outils informatiques. Nous avons d\u00e9velopp\u00e9 sous Python un simulateur complet permettant de mod\u00e9liser la phyllotaxie en 2D mais aussi sous forme d\u2019exemples avec le cas de la marguerite et du tournesol. Ce travail fut pour nous enrichissant, \u00e0 la fois sur l\u2019aspect des recherches, celui de la d\u00e9couverte mais aussi sur l&#8217;apprentissage d&#8217;un nouveau langage de programmation : Python. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bonjour \u00e0 tous, Dans le cadre du dernier semestre de PEIP2, il nous est propos\u00e9 de concevoir un projet par groupe d\u2019\u00e9tudiants. Nous sommes deux \u00e9l\u00e8ves \u00e0 avoir travaill\u00e9 sur ce projet, Paul Bolufer ainsi que moi-m\u00eame Marc Berret. Le &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/2021\/06\/16\/modelisation-mathematique-et-simulation-numerique-de-la-phyllotaxie\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":74640,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[344],"tags":[383,387,381,384,379,27,153,386,385],"class_list":["post-1570","post","type-post","status-publish","format-standard","hentry","category-344","tag-angle-dor","tag-code","tag-modelisation-mathematique","tag-nombre-dor","tag-phyllotaxie","tag-projet","tag-python","tag-tkinter","tag-turtle"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/1570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/users\/74640"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/comments?post=1570"}],"version-history":[{"count":1,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/1570\/revisions"}],"predecessor-version":[{"id":1573,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/1570\/revisions\/1573"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/media?parent=1570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/categories?post=1570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/tags?post=1570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}