<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Fibonacci | Dr. Goulu</title><link>https://drgoulu.com/tags/fibonacci/</link><atom:link href="https://drgoulu.com/tags/fibonacci/index.xml" rel="self" type="application/rss+xml"/><description>Fibonacci</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Mon, 26 Jun 2017 00:00:00 +0000</lastBuildDate><image><url>https://drgoulu.com/media/icon_hu_eee4a95885829ab2.png</url><title>Fibonacci</title><link>https://drgoulu.com/tags/fibonacci/</link></image><item><title>Suites infinies en Python</title><link>https://drgoulu.com/2017/06/26/series-infinies-et-oeis-en-python/</link><pubDate>Mon, 26 Jun 2017 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2017/06/26/series-infinies-et-oeis-en-python/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2017/images/E6fJJ_hu_3b7898a4ec4efc1d.webp 320w, https://drgoulu.com/posts/2017/images/E6fJJ_hu_85290121cecac221.webp 480w, https://drgoulu.com/posts/2017/images/E6fJJ_hu_a5739bbe4b0b5dde.webp 600w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2017/images/E6fJJ_hu_3b7898a4ec4efc1d.webp"
width="600"
height="500"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Depuis que je programme en Python, j&amp;rsquo;entasse les petits bouts de code utiles ou potentiellement réutilisables dans &amp;ldquo;Goulib&amp;rdquo;, ma librairie perso et néanmoins disponible en open-source (licence LGPL)  sur
, 
, ReadTheDocs pour
, avec des
&lt;/p&gt;
&lt;p&gt;Comme la valeur d&amp;rsquo;un code se mesure surtout par les tests qui vérifient son bon fonctionnement, je me suis lancé dans un ambitieux projet (de plus&amp;hellip;) : tester un maximum de fonctions de mes modules
et
 en calculant des suites de l&amp;rsquo; 
, plus connue sous son acronyme anglais OEIS.&lt;/p&gt;
&lt;p&gt;Pour cela j&amp;rsquo;ai fait un truc dont je suis vachement fier* :&lt;/p&gt;
&lt;h2 id="la-classe-sequence"&gt;La classe Sequence&lt;/h2&gt;
&lt;p&gt;Ce
(
) permet de représenter une
(sequence en anglais) finie ou infinie de nombres** à partir d&amp;rsquo;&amp;lsquo;une ou plusieurs fonctions passées à
:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;iterf : un
ou générateur produisant les termes de la suite l&amp;rsquo;un après l&amp;rsquo;autre&lt;/li&gt;
&lt;li&gt;itemf : une fonction  retournant le i-ème paramètre de la suite&lt;/li&gt;
&lt;li&gt;containf : une fonction renvoyant vrai (True) si son paramètre appartient à la suite.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On peut créer par exemple la série (infinie) des nombres premiers ainsi :&lt;/p&gt;
&lt;p&gt;
=Sequence(containf=
)&lt;/p&gt;
&lt;p&gt;Ensuite, l&amp;rsquo;objet ainsi créé avec n&amp;rsquo;importe quelle combinaison de ces 3 paramètres peut être utilisé indifféremment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;comme un générateur : for p in A000040() : print(p) # affiche les nombres premiers (jusqu&amp;rsquo;à l&amp;rsquo;infini)&lt;/li&gt;
&lt;li&gt;comme une liste: A000040
\[999\]# renvoie le 1000ème nombre premier (parce que Python indice à partir de 0&amp;hellip;)&lt;/li&gt;
&lt;li&gt;comme un ensemble: 201420142013 in A000040 # renvoie True car ce nombre est premier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Evidemment, si on dispose de fonctions plus efficaces pour chacun de ces paramètres, on peut les utiliser pour rendre les calculs bien plus rapides. Par exemple pour la suite de Fibonacci, on peut exploiter trois algorithmes différents :&lt;/p&gt;
&lt;p&gt;
=Sequence(iterf=
, itemf=
, containf=
)&lt;/p&gt;
&lt;p&gt;En passant, voici comment est définie la séquence &amp;ldquo;auto descriptrice&amp;quot;qui orne la bannière de l&amp;rsquo;OEIS ci-dessus:&lt;/p&gt;
&lt;p&gt;
=Sequence( 
( lambda x: 
( 
( 
( 
( 
(x))))) ,1))&lt;/p&gt;
&lt;p&gt;Compact et presque clair, non ?&lt;/p&gt;
&lt;h2 id="dérivation"&gt;Dérivation&lt;/h2&gt;
&lt;p&gt;Une Sequence peut être dérivée d&amp;rsquo;une autre grâce à plusieurs méthodes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
renvoie une Sequence correspondant à la Sequence source filtrée par une fonction. Par exemple:
=A000040.filter(
) renvoie les &amp;ldquo;exposants de Mersenne&amp;rdquo;, les nombres premiers p tels que $2^p - 1$ est premier.&lt;/li&gt;
&lt;li&gt;
applique une fonction à chaque terme de la Sequence source. Par exemple la série des carrés des nombres premiers peut se définir ainsi:
=A000040.apply(lambda n:n*n)&lt;/li&gt;
&lt;li&gt;Pour éviter l&amp;rsquo;utilisation d&amp;rsquo;apply dans des cas trivialement simples, l&amp;rsquo;addition (et la soustraction) d&amp;rsquo;une Sequence et d&amp;rsquo;un entier sont définies. Par exemple:
=
+1 définit les
à partir des nombres de la forme $2^{2^n}$&lt;/li&gt;
&lt;li&gt;
renvoie une Sequence dont le n-ième terme est obtenu en sommant les n premiers termes de la Sequence source:
=A000040.accumulate()&lt;/li&gt;
&lt;li&gt;
renvoie une Sequence produite en appliquant applique une fonction à chaque paire de termes consécutifs. Ainsi la suite des différences entre nombres premiers consécutifs s&amp;rsquo;écrit:
=A000040.pairwise(operator.sub)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On peut aussi combiner deux Sequences pour en créer une nouvelle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L&amp;rsquo;opérateur % (modulo, pourquoi pas&amp;hellip;) renvoie les termes de la Sequence opérande de gauche qui ne sont PAS dans l&amp;rsquo;opérande de droite. Ainsi:
=A000040 %
définit la Sequence des nombres premiers qui ne sont pas 
&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;opérateur &amp;amp; (and) renvoie les termes de la Sequence opérande de gauche qui sont aussi dans l&amp;rsquo;opérande de droite. Ainsi:
=
&amp;amp; A000040 définit la suite des nombres premiers dont qui ne s&amp;rsquo;écrivent qu&amp;rsquo;avec des 0 et des 1.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;opérateur | (or) renvoie la fusion de deux séquences à l&amp;rsquo;aide du génial
. Ainsi:
=
|
définit les nombres ayant 4 diviseurs (dont 1 et eux-mêmes) comme l&amp;rsquo;union de ceux qui sont le produit de deux nombres premiers avec ceux qui sont le cube d&amp;rsquo;un nombre premier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il y a encore deux méthodes un peu &amp;ldquo;tirées par les cheveux&amp;rdquo; du point de vue mathématique, mais qui fonctionnent très bien informatiquement:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
 renvoie une Sequence
(par défaut) en triant les termes de la Sequence d&amp;rsquo;origine. Par exemple, voici la suites des surfaces des
 dans l&amp;rsquo;ordre croissant:
=Sequence(math2.primitive_triples).apply(lambda x:x
\[0\]*x
\[1\]//2) .sort()&lt;/li&gt;
&lt;li&gt;
 renvoie une Sequence où les termes redondants de la suite d&amp;rsquo;origine sont absents, par exemple:
 =
 .unique() // oui, parce que le 5 appartient à deux paires de nombres premiers jumeaux &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ces méthodes utilisent respectivement 
 et 
 qui fonctionnent tant que la suite initiale est &amp;ldquo;presque&amp;rdquo; triée, à savoir tant que l&amp;rsquo;écart n entre un terme $a_i+n \leq a_i$ n&amp;rsquo;excède pas le paramètre &amp;ldquo;buffer&amp;rdquo; de la fonction. On peut évidemment trouver des suites qui ne pourront &amp;ldquo;mathématiquement&amp;rdquo; pas être traitées ainsi, mais informatiquement j&amp;rsquo;arrive à reproduire les suites de l&amp;rsquo;OEIS rencontrées jusqu&amp;rsquo;ici avec buffer=100 seulement&lt;/p&gt;
&lt;h2 id="le-dictionnaire-oeis"&gt;Le dictionnaire OEIS&lt;/h2&gt;
&lt;p&gt;J&amp;rsquo;ai ainsi constitué peu à peu le fichier 
 qui définit actuellement environ 150 séries de l&amp;rsquo;OEIS, et que j&amp;rsquo;étoffe lorsque l&amp;rsquo;occasion se présente. A la fin de ce module, j&amp;rsquo;utilise la géniale possibilité d&amp;rsquo;introspection de Python pour regrouper toutes les Sequence définies dans un dictionnaire fort utile pour les tests:&lt;/p&gt;
\[python\]&lt;p&gt;# Construit le dictionnaire OEIS par introspection : Simple et WOW ! oeis={} # on crée le dictionnaire vide seqs=globals().copy() # on copie tous les objets déclarés dans ce module for id in seqs: # on parcourt tous les identificateurs des objets if id&lt;/p&gt;
\[0\]&lt;p&gt;==&amp;lsquo;A&amp;rsquo; and len(id)==7: # et s&amp;rsquo;ils ont un nom de séquence OEIS &amp;hellip; oeis&lt;/p&gt;
\[id\]&lt;p&gt;=seqs&lt;/p&gt;
\[id\]&lt;p&gt; # on les ajoute au dictionnaire &amp;hellip; seqs&lt;/p&gt;
\[id\]&lt;p&gt;.name=id # et on définit leur champ name &lt;/p&gt;
\[/python\]&lt;h2 id="performance"&gt;Performance&lt;/h2&gt;
&lt;p&gt;Un point important est qu&amp;rsquo;aucun calcul n&amp;rsquo;est effectué lors des opérations ci-dessus. Ce n&amp;rsquo;est qu&amp;rsquo;au moment d&amp;rsquo;utiliser les Sequence ainsi définies que les fonctions iterf, itemf, containf et leurs éventuelles compositions sont évaluées.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est un peu &amp;ldquo;automagique&amp;rdquo;, mais il faut tout de même veiller à utiliser les algorithmes les plus efficaces, et c&amp;rsquo;est même un des buts que je poursuis avec ce projet. Par exemple la suite des nombres premiers dont qui ne s&amp;rsquo;écrivent qu&amp;rsquo;avec des 0 et des 1
=
&amp;amp; A000040 aurait pu s’écrire également: A020449=A000040 &amp;amp; A007088 mais la première formulation est beaucoup plus rapide car la série A007088 des nombres ne s&amp;rsquo;écrivant qu&amp;rsquo;avec des 0 et des 1 croît beaucoup plus vite que celle des nombres premiers A000040. Il est par conséquent beaucoup plus rapide de tester si les nombres du genre 1101010101011101 sont premiers que d&amp;rsquo;énumérer tous les nombres premiers de 16 chiffres et de jeter ceux qui contiennent d&amp;rsquo;autres chiffres que des 0 ou 1.&lt;/p&gt;
&lt;p&gt;Malgré toutes ces précautions, parcourir une suite infinie prendra forcément un temps infini, et ces idiots d&amp;rsquo;ordinateurs ne sont toujours pas foutus de gérer le
. J&amp;rsquo;ai donc écrit un
 qui limite le temps de calcul d&amp;rsquo;une boucle ainsi :&lt;/p&gt;
&lt;p&gt;for x in
(suite,1): print(x) # affiche tous les termes calculables en 1 seconde (au total)&lt;/p&gt;
&lt;p&gt;Ce décorateur est utilisé en particulier dans
 la fonction appelée par 
 pour afficher les dix premiers termes d&amp;rsquo;une Sequence, ou du moins ceux qu&amp;rsquo;on peut calculer en moins d&amp;rsquo;une seconde.&lt;/p&gt;
&lt;p&gt;Les suites particulièrement lentes sont par exemple
ou 
 dont le n-ième terme donne le nombre de nombres inférieurs à 10^n  satisfaisant une certaine condition. Faute de meilleur algorithme, chaque terme prend 10x plus de temps que le précédent &amp;hellip;&lt;/p&gt;
&lt;h2 id="tests"&gt;Tests&lt;/h2&gt;
&lt;p&gt;Voià, tous les ingrédients sont prêts pour tester si mes beaux algorithmes fonctionnent correctement, ce qui était le but initial je le rappelle.&lt;/p&gt;
&lt;p&gt;Pour ceci, il suffit de vérifier que chaque Sequence fournit bien les mêmes termes que ceux disponibles dans l&amp;rsquo;OEIS. Ceci est facilité par le fait que l&amp;rsquo;OEIS fournit pour chaque suite les n premières valeurs dans un fichier texte en
accessible par le web. Par exemple 
 fournit les 10'000 premiers nombres premiers.&lt;/p&gt;
&lt;p&gt;Donc mon fichier 
 est lui aussi génialement simple* : il traverse le dictionnaire oeis et pour chaque Sequence il télécharge les N termes de référence du site OEIS, vérifie que les n premiers termes de la Sequence sont bien ceux attendus, et produit une erreur sinon. Ou un avertissement si itimeout a limité n à moins de 10.&lt;/p&gt;
&lt;p&gt;Ces tests sont automatiquement exécutés (avec beaucoup d&amp;rsquo;autres)
chaque fois que je pousse une nouvelle version de
, ce qui fait que je suis averti si modification crée un problème avec une ancienne version de Python ou si un Pingouin détecte un problème invisible de mes Fenêtres.&lt;/p&gt;
&lt;h2 id="débogage-de-loeis-"&gt;Débogage&amp;hellip; de l&amp;rsquo;OEIS !&lt;/h2&gt;
&lt;p&gt;J&amp;rsquo;ai ainsi beaucoup débogué, amélioré et optimisé la plupart des fonctions de  
et beaucoup d&amp;rsquo;
, et je compte poursuivre dans cette voie qui permet d&amp;rsquo;utiliser les données de l&amp;rsquo;OEIS comme une référence, validées par de nombreux utilisateurs.&lt;/p&gt;
&lt;p&gt;Sauf que des fois, le bug était chez eux. Et je ne suis pas peu fier d&amp;rsquo;
sur l&amp;rsquo;OEIS :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
 , comme déjà mentionné dans
, le 20ème terme de la série est 145, pas 142.&lt;/li&gt;
&lt;li&gt;
, dont certains termes avaient besoins de 0 supplémentaires. Tant qu&amp;rsquo;à faire j&amp;rsquo;ai fourni un B-file contenant les 1000 premiers termes exacts pour remplacer l&amp;rsquo;ancien qui n&amp;rsquo;en avait que 500.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A cette occasion j&amp;rsquo;ai remarqué que l&amp;rsquo;édition de l&amp;rsquo;OEIS est un peu rébarbative, ce qui peut décourager les contributeurs débutants. Peut-être que mon modeste projet pourrait servir de base à un site plus interactif, utilisant du code (Python of course) pour calculer dynamiquement les suites requises &amp;hellip;&lt;/p&gt;
&lt;p&gt;Ce long article mijoté pendant plus de six mois se termine par un appel aux allumés du code bonnes volontés : si cet article vous a motivé , n&amp;rsquo;hésitez pas à contribuer à la Goulib sur GitHub.&lt;/p&gt;
&lt;p&gt;Pour ma part je m&amp;rsquo;attaque aux
et
qui seront l&amp;rsquo;occasion de nettoyer le code du 
  en utilisant et testant le module 
&lt;/p&gt;
&lt;h3 id="notes"&gt;Notes&lt;/h3&gt;
&lt;p&gt;*sinon je n&amp;rsquo;en parlerais pas ici&amp;hellip; **ou d&amp;rsquo;autres objets mais je n&amp;rsquo;ai pas encore trouvé quoi&amp;hellip;&lt;/p&gt;</description></item><item><title>Comment calculer le 10'000'000'000'000'000'000 ème terme de la suite de Fibonacci</title><link>https://drgoulu.com/2017/04/25/comment-calculer-le-1e19-eme-terme-de-la-suite-de-fibonacci/</link><pubDate>Tue, 25 Apr 2017 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2017/04/25/comment-calculer-le-1e19-eme-terme-de-la-suite-de-fibonacci/</guid><description>&lt;p&gt;Tombé l&amp;rsquo;autre jour sur un problème idiot
mais intéressant : calculer le 1019 ème terme de la
. Idiot parce que ça ne sert à rien. Intéressant parce que ça sous-entend qu&amp;rsquo;il existe une manière de calculer le n-ième terme de cette suite définie par récurrence sans calculer tous les termes précédents. En effet, calculer les termes les uns après les autres prendrait dans les 300'000 ans à raison d&amp;rsquo;une microseconde par terme&amp;hellip;&lt;/p&gt;
&lt;h2 id="un-nombre-dor-mais-flottant"&gt;Un nombre d&amp;rsquo;or, mais flottant&lt;/h2&gt;
&lt;p&gt;Comme même les ésotéristes le savent, la suite de Fibonacci est liée au
 A partir de ce fait, Moivre, Euler et Binet ont indépendamment obtenu ce qu&amp;rsquo;on appelle aujourd&amp;rsquo;hui la
, et qui donne directement le n-ième terme de la suite:&lt;/p&gt;
&lt;p&gt;$\mathcal F_n=\frac1{\sqrt5}(\varphi^n-\varphi'^n)$, avec $ \varphi=\frac{1+\sqrt5}2$, et $ \varphi'=-\frac1\varphi$ .&lt;/p&gt;
&lt;p&gt;En pratique, le terme en $ \varphi'$ devient rapidement négligeable et il suffit de chercher l&amp;rsquo;entier le plus proche de $\frac{\varphi^n}{\sqrt5}$. Par exemple pour n=50, on peut calculer très vite $\mathcal F_{50}\approx\frac{\varphi^{50}}{\sqrt5}$ = 12586269025&lt;/p&gt;
&lt;p&gt;Mais on se heurte rapidement au problème de la précision de calcul en nombres flottants sur nos ordinateurs : $\varphi$ étant
(mais pas aussi
que $\pi$ &amp;hellip;), il faut calculer $\varphi^n$ avec au moins autant de décimales que $\mathcal F_n$ comporte de chiffres. Dès n=71 on dépasse les 53 bits de la mantisse des nombres &amp;ldquo;extended precision&amp;rdquo; et les dernières décimales des termes calculés sont faux.&lt;/p&gt;
&lt;p&gt;Dit autrement, à partir de n=70 la division $\mathcal F_n/\mathcal F_{n-1}$ donne au moins autant de décimales de $ \varphi$ que son calcul en nombres flottants&lt;/p&gt;
&lt;h2 id="la-matrice-salvatrice"&gt;La Matrice salvatrice&lt;/h2&gt;
&lt;p&gt;Pour une méthode de calcul en nombres entiers atteignant (presque) la rapidité de la formule de Binet, il faut utiliser l&amp;rsquo;idée d&amp;rsquo;un certain Brenner : écrire la récurrence de Fibonacci sous forme matricielle
. La matrice toute simple $Q=\begin{pmatrix}1&amp;1\\\\1&amp;0\end{pmatrix}$ permet d&amp;rsquo;obtenir un nouveau terme de la série de Fibonacci en la multipliant par un vecteur formé des deux termes précédents:&lt;/p&gt;
&lt;p&gt;$\begin{pmatrix}1&amp;1\\\\1&amp;0\end{pmatrix}\begin{pmatrix}\mathcal F_{n-1}\\\\\mathcal F_{n-2}\end{pmatrix}=\begin{pmatrix}\mathcal F_{n}\\\\\mathcal F_{n-1}\end{pmatrix}$&lt;/p&gt;
&lt;p&gt;En enchaînant les multiplications matricielles, on obtient le n-ième terme à partir des deux premiers (0,1) ainsi :&lt;/p&gt;
&lt;p&gt;$\begin{pmatrix}1&amp;1\\\\1&amp;0\end{pmatrix}^{n-1}\begin{pmatrix}1\\\\0\end{pmatrix}=\begin{pmatrix}\mathcal F_{n}\\\\\mathcal F_{n-1}\end{pmatrix}$&lt;/p&gt;
&lt;p&gt;En fait on retrouve les termes de la suite directement dans la matrice  $Q^n = \begin{pmatrix}\mathcal F_{n+1}&amp;\mathcal F_{n}\\\\\mathcal F_{n}&amp;\mathcal F_{n-1}\end{pmatrix}$.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;algorithme de l&amp;rsquo;
permet d&amp;rsquo;élever la matrice Q à la puissance n en effectuant log2(n) multiplications de matrices 2x2, soit
pour n=1019. Ultra rapide, et facilement généralisable à d&amp;rsquo;autres formules de récurrence !&lt;/p&gt;
&lt;p&gt;Malheureusement, la fonction
 souffre d&amp;rsquo;une
qui empêche de l&amp;rsquo;utiliser dès n=71 car elle utilise les nombres flottants. Il m&amp;rsquo;a donc fallu la réécrire, en résolvant une petite contrainte technologique au passage.&lt;/p&gt;
&lt;h2 id="vers-les-pétaoctets-et-au-delà-"&gt;Vers les pétaoctets et au delà &amp;hellip;&lt;/h2&gt;
&lt;p&gt;Il se trouve que le 1019-ième terme de la suite de Fibonacci est trop grand pour tenir dans le plus super des ordinateurs. En effet, la longueur du n-ième terme de la suite s&amp;rsquo;obtient facilement en prenant le log (base 10)  de la formule de Binet : $\mathcal L_n=\lceil n\log{\varphi}\rceil$ , soit grosso-modo n*0.208987640249978733769272089237555416822459239918210953539&amp;hellip;&lt;/p&gt;
&lt;p&gt;Vérifions. Pour n=1000, on obtient:&lt;/p&gt;
&lt;p&gt;$\mathcal F_{1000}$=43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875 qui comporte bien pile 209 chiffres.&lt;/p&gt;
&lt;p&gt;Donc $\mathcal F_{10^{19}}$ comporte 2089876402499787337 chiffres &amp;hellip; Il faudrait 
 
octets de RAM (de préférence&amp;hellip;) pour stocker ce nombre &amp;hellip;&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 500px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2017/images/1nv66i_hu_7b93cc781b3ade88.webp" srcset="https://drgoulu.com/posts/2017/images/1nv66i_hu_7b93cc781b3ade88.webp 320w, https://drgoulu.com/posts/2017/images/1nv66i_hu_b71a7d5dd930ae.webp 480w, https://drgoulu.com/posts/2017/images/1nv66i_hu_8e32ab0b43c8315.webp 500w" sizes="(max-width: 640px) 100vw, 500px" alt="(mon premier meme ... désolé ...)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;(mon premier meme &amp;hellip; désolé &amp;hellip;)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id="et-modulo1000000007-"&gt;Et modulo 1000000007 ?&lt;/h2&gt;
&lt;p&gt;Fort heureusement, le problème idiot avait un petit détail en prime : il fallait calculer le résultat
1000000007, et ça, ça change tout.&lt;/p&gt;
&lt;p&gt;Ce nombre est premier (pour que ça soit plus intéressant), mais surtout il est inférieur à 230, ce qui fait que la multiplication modulo 1000000007 ne nécessite que des opérations sur des 
32 bits (signés), ultra rapide.&lt;/p&gt;
&lt;p&gt;Voici donc quelques fonctions Python tirées du
 qui effectuent:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le produit matriciel, optionnellement modulaire&lt;/li&gt;
&lt;li&gt;l&amp;rsquo;exponentiation rapide d&amp;rsquo;une matrice, optionnellement modulaire, et qui corrige le bug de numpy.matrix_power&lt;/li&gt;
&lt;li&gt;le calcul quasi instantané du n-ième terme de la série de Fibonacci, avec une option modulaire vivement recommandée pour de grands n&lt;/li&gt;
&lt;/ul&gt;
\[gist id="f56725fa32fbb4840c855a8309662c9d"\]&lt;p&gt;Avec ça on obtient fibonacci(int(1E19),1000000007) = 647754067 ce qui nous fait une belle jambe,  mais nous a appris pas mal de choses intéressantes, non ?&lt;/p&gt;
&lt;p&gt;Prochaine étape : trouver la
correspondante &amp;hellip;&lt;/p&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;
 sur StackOverflow (et
qui m&amp;rsquo;a inspiré cet article)&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Weisstein, Eric W. &amp;ldquo;
.&amp;rdquo; From MathWorld&amp;ndash;A Wolfram Web Resource.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Arthur Charpentier &amp;ldquo;
, 2016 sur Freakonometrics (mention spéciale pour l&amp;rsquo;image de la spirale&amp;hellip;)&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Nombre d'or et abeilles</title><link>https://drgoulu.com/2016/07/03/nombre-dor-et-abeilles/</link><pubDate>Sun, 03 Jul 2016 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2016/07/03/nombre-dor-et-abeilles/</guid><description>&lt;p&gt;Le
ou &amp;ldquo;divine proportion&amp;quot;représente parait-il le rapport le plus esthétiquement parfait que l&amp;rsquo;on puisse trouver dans la nature, dans les monuments antiques, les œuvres d&amp;rsquo;art célèbres ou un simple rectangle. Alors dites : lequel de ces rectangles vous parait-il le mieux proportionné ?&lt;/p&gt;
&lt;p&gt;&lt;figure class="aligncenter" style="max-width: 586px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/rectangles_hu_22d07c6b181764aa.webp" srcset="https://drgoulu.com/posts/2016/images/rectangles_hu_22d07c6b181764aa.webp 320w, https://drgoulu.com/posts/2016/images/rectangles_hu_83ecb17b40ccd5b7.webp 480w, https://drgoulu.com/posts/2016/images/rectangles_hu_b3d296f15cdd82b.webp 586w" sizes="(max-width: 640px) 100vw, 586px" alt="rectangles" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Quel rectangle vous semble le mieux proportionné ?&lt;/figcaption&gt;&lt;/figure&gt;
Si vous avez répondu 5, vous avez la même préférence que les 34% des participants à un sondage identique
, mais ce n&amp;rsquo;est pas un rectangle d&amp;rsquo;or. Le rectangle d&amp;rsquo;or, c&amp;rsquo;est le 2, choisi par 18% des gens, mais aussi le 9, choisi par 5%, soit nettement moins que les 11% de moyenne. Autrement dit : vous n&amp;rsquo;êtes statistiquement pas foutus de trouver du divin dans un rectangle&amp;hellip;&lt;/p&gt;
&lt;p&gt;Ce fameux &amp;ldquo;nombre d&amp;rsquo;or&amp;rdquo; Φ est défini historiquement comme le rapport de deux nombres a et b satisfaisant l&amp;rsquo;équation $a/b = (a+b)/a$. La solution est $\phi = a/b = (1+\sqrt{5})/2$ soit approximativement 1.6180339887. Et ça c&amp;rsquo;est approximativement, parce qu&amp;rsquo;avec seulement 6 décimales, 1.618034 peut déjà être pas mal d&amp;rsquo;autres choses selon le génial
. Par exemple :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
$$7^{1/3}-6^{3/4}/13$$&lt;/li&gt;
&lt;li&gt;
$$3/18541$$&lt;/li&gt;
&lt;li&gt;
$$Re((20+5i)^{13/14})$$&lt;/li&gt;
&lt;li&gt;
$$Im((4-24i)^{1/11})$$&lt;/li&gt;
&lt;li&gt;
(2,23/19)&lt;/li&gt;
&lt;li&gt;et d&amp;rsquo;autres nombres encore&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et avec seulement 4 décimales, 1.6180 correspond à l&amp;rsquo;arrondi de dizaines, voire de centaines d&amp;rsquo;expressions répertoriées dans l&amp;rsquo;inverseur, dont
.&lt;/p&gt;
&lt;p&gt;Bref, quand quelqu&amp;rsquo;un vous dit que le nombre d&amp;rsquo;or est présent dans une construction antérieure à Euclide (300 avant JC), ou une structure &amp;ldquo;naturelle&amp;rdquo;, il faut qu&amp;rsquo;il le prouve par des mesures précises au millionième pour obtenir 6 ou 7 décimales, parce que 1.62 c&amp;rsquo;est plus proche de 6/37037 que je trouve très beau aussi, voire divin. Ou de 9/55555, nombre si magnifique que je m&amp;rsquo;empresse de le baptiser &amp;ldquo;nombre de platine&amp;rdquo; pour la postérité.&lt;/p&gt;
&lt;figure class="alignleft" style="max-width: 320px; width: 100%;"&gt;&lt;a href="https://fr.wikipedia.org/wiki/Homme_de_Vitruve" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/Da_Vinci_Vitruve_Luc_Viatour_hu_4cbf5e1cdf8fd9ad.webp" srcset="https://drgoulu.com/posts/2016/images/Da_Vinci_Vitruve_Luc_Viatour_hu_4cbf5e1cdf8fd9ad.webp 320w, https://drgoulu.com/posts/2016/images/Da_Vinci_Vitruve_Luc_Viatour_hu_9f8058858d4dac12.webp 480w, https://drgoulu.com/posts/2016/images/Da_Vinci_Vitruve_Luc_Viatour_hu_cdc12226a28f29e2.webp 559w" sizes="(max-width: 640px) 100vw, 320px" alt="%image_alt%" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;L&amp;rsquo;homme vitruvien de Léonard de Vinci. Illustration Wikipédia&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Ou alors il faut prouver que la construction géométrique ou mathématique de l&amp;rsquo;oeuvre aboutit bien à $\\phi=(1+\\sqrt{5})/2$ . Par exemple dans le célèbre
de Léonard de Vinci, comme chacun sait. Sauf que non. De Vinci ne fait nulle part référence au nombre d&amp;rsquo;or ni dans son texte explicatif de la figure, ni dans sa construction géométrique. Les proportions que Vinci utilise sont celles conseillées par l&amp;rsquo;architecte romain
1/10, 1/4, 1/8 et 1/6 . Il faut bien chercher pour trouver un quasi nombre d&amp;rsquo;or dans cette oeuvre. Le plus proche est celui entre la hauteur du corps (482 pixels sur l&amp;rsquo;image) et la distance entre le nombril et la plante des pieds (294 pixels), qui donne environ 1.639
. Même pas 2 décimales exactes et pas de construction géométrique : ce n&amp;rsquo;est pas le nombre d&amp;rsquo;or, désolé. Ni celui de platine, grande tristesse&amp;hellip; Alors je désigne en vitesse la proportion 294/482 &amp;ldquo;nombre de
&amp;rdquo; et voilà : Léonard de Vinci connaissait le nombre de scandium 500 ans avant vous et moi. Wow !&lt;/p&gt;
&lt;p&gt;En fait il n&amp;rsquo;y a que deux manières simples de tomber pile sur le nombre d&amp;rsquo;or:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;figure class="alignright" style="max-width: 250px; width: 100%;"&gt;&lt;a href="http://www.maths-et-tiques.fr/index.php/histoire-des-maths/nombres/le-nombre-d-or" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/rector_hu_528071a58772b17a.webp" srcset="https://drgoulu.com/posts/2016/images/rector_hu_528071a58772b17a.webp 250w" sizes="(max-width: 640px) 100vw, 250px" alt="%image_alt%" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Construction d&amp;rsquo;un rectangle d&amp;rsquo;or avec règle et compas (source : Maths et Tiques)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;calculer ou construire explicitement deux nombres a et b tels que $a/b = (a+b)/a = (1+\\sqrt{5})/2$. Par exemple dans la construction ci-contre, où l&amp;rsquo;on part d&amp;rsquo;un triangle rectangle ABC dont le côté AC est la moitié du côté AB et que l&amp;rsquo;on reporte l’hypoténuse en prolongement du côté AC, on forme un &amp;ldquo;rectangle d&amp;rsquo;or&amp;rdquo; dont les côtés a=AD et b=AB sont tels que a/b=Φ. En passant, les
A3, A4, A5 etc ne sont pas des rectangles d&amp;rsquo;or. Les côtés du papier a et b sont définis de manière à ce que le rapport soit préservé si on coupe ou plie la feuille en deux. On a donc $a/b = 2b/a = \\sqrt{2} = 1.4142135624$ qui est très différent de Φ.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;figure class="alignright" style="max-width: 240px; width: 100%;"&gt;&lt;a href="https://commons.wikimedia.org/wiki/File:Fibonacci_blocks.svg?uselang=fr" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/792px-Fibonacci_blocks.svg_hu_a9cceb95f7a69f03.webp" srcset="https://drgoulu.com/posts/2016/images/792px-Fibonacci_blocks.svg_hu_a9cceb95f7a69f03.webp 320w, https://drgoulu.com/posts/2016/images/792px-Fibonacci_blocks.svg_hu_a008f7fcb686f43d.webp 480w, https://drgoulu.com/posts/2016/images/792px-Fibonacci_blocks.svg_hu_d88facce554903a6.webp 760w" sizes="(max-width: 640px) 100vw, 240px" alt="Carrés de Fibonacci" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Carrés de Fibonacci&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;A partir de la
, suite dans laquelle chaque terme est la somme des deux précédents : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 etc (
). Il se trouve que le rapport entre deux nombres consécutifs de la suite converge vers $\\phi : \\lim\_{n \\to \\infty} \\frac{\\mathcal F\_{n}}{\\mathcal F\_{n-1}} = \\phi$. On voit donc qu&amp;rsquo;en juxtaposant des carrés dont les côtés correspondent à la suite de Fibonacci comme ci-contre, le rapport des cotés du rectangle va converger vers Φ au fur et à mesure qu&amp;rsquo;on ajoute des carrés.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Voilà les deux constructions mathématiques simples qui conduisent au nombre d&amp;rsquo;or. Aucune des deux ne correspond à un phénomène naturel à ma connaissance.&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 240px; width: 100%;"&gt;&lt;a href="https://commons.wikimedia.org/wiki/File:FakeRealLogSpiral.svg" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/1599px-FakeRealLogSpiral.svg_hu_13f9dfd17e7f95cf.webp" srcset="https://drgoulu.com/posts/2016/images/1599px-FakeRealLogSpiral.svg_hu_13f9dfd17e7f95cf.webp 320w, https://drgoulu.com/posts/2016/images/1599px-FakeRealLogSpiral.svg_hu_b6079ee4090ce5f3.webp 480w, https://drgoulu.com/posts/2016/images/1599px-FakeRealLogSpiral.svg_hu_8e360a49cb4de42a.webp 760w" sizes="(max-width: 640px) 100vw, 240px" alt="spirale d&amp;#39;or en vert, et spirale logarithmique l&amp;#39;approchant en rouge" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;spirale d&amp;rsquo;or en vert, et spirale logarithmique l&amp;rsquo;approchant en rouge&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Certains ont pourtant vu le nombre d&amp;rsquo;or dans des spirales comme celle de la coquille du
. Effectivement, en traçant des quart de cercles dans chaque carré de Fibonacci on dessine la &amp;ldquo;
&amp;rdquo; qui est très proche d&amp;rsquo;une
d&amp;rsquo;équation $r = a.e^{b\\theta}$ particulière, celle obtenue pour $b=3\\phi+2$. Mais il existe une infinité de spirales logarithmiques avec des paramètre b différents, et certaines se retrouvent dans la nature car elles résultent d&amp;rsquo;équations différentielles assez simples. C&amp;rsquo;est le cas de la coquille du nautile, mais son b est nettement inférieur à 3Φ+2, donc non, la coquille du nautile n&amp;rsquo;a rien à voir avec le nombre d&amp;rsquo;or
.&lt;/p&gt;
&lt;p&gt;Et puis il y a la
: des graines de tournesol aux pommes de pin, beaucoup de structures botaniques croissent en faisant de jolies spirales apparentes, les &amp;ldquo;parastiches&amp;rdquo;. Certaines tournent dans un sens et s&amp;rsquo;entrecroisent avec d&amp;rsquo;autres orientées en sens inverse, et Ô stupeur, le nombre de parastiches dans chaque sens correspond toujours à deux termes consécutifs de la suite de Fibonacci.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2016/images/paquerette_hu_8553f53f8f2715af.webp 320w, https://drgoulu.com/posts/2016/images/paquerette_hu_807038e417fcefc2.webp 480w, https://drgoulu.com/posts/2016/images/paquerette_hu_3c651cae4f04c39b.webp 502w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2016/images/paquerette_hu_8553f53f8f2715af.webp"
width="502"
height="376"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Et le rapport entre deux termes de la suite de Fibonacci étant &amp;ldquo;proche&amp;rdquo; de Φ. 34/21= 1.619047&amp;hellip; pour la marguerite ci-dessus. Serait-ce la Signature du Grand Architecte de Toutes Choses ?&lt;/p&gt;
&lt;p&gt;Non, c&amp;rsquo;est juste le résultat d&amp;rsquo;une optimisation. Ces structures sont issues d&amp;rsquo;un
qui produit des feuilles, pétales, graines etc. à intervalles réguliers. Pour maximiser l&amp;rsquo;efficacité de la plante, il faut que chaque organe accède au maximum de lumière en faisant le moins d&amp;rsquo;ombre possible aux autres, et pour cela il faut qu&amp;rsquo;il s&amp;rsquo;éloigne du centre dans une direction différente des précédents, et ceci, étonnamment, forme les parastiches spiraux. Deux chercheurs français, Stéphane Douady et Yves Coudert ont montré en 1992 qu&amp;rsquo;il n&amp;rsquo;y a pas besoin d&amp;rsquo;un organisme vivant pour produire de telles structures. Ils ont généré des gouttes d&amp;rsquo;un
à intervalles réguliers au centre d&amp;rsquo;une plaque soumise à un champ magnéique radial. Les gouttes se repoussent mutuellement et lorsque&amp;rsquo;elles sont produites à une cadence assez élevée, elles forment des &amp;ldquo;parastiches&amp;rdquo; spiraux :&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 640px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/9Qy8QnNqB4A"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Evidemment les matheux se sont aussi attaqués au problème. En 1907 déjà, un dénommé
a montré que l’optimum était atteint lorsque chaque graine (ou pétale ou feuille etc&amp;hellip;) s&amp;rsquo;éloignait de la précédente selon un &amp;ldquo;
&amp;rdquo; de $\\frac{2 \\pi}{\\phi+1}=137.5^{\\circ}$ environ, et que la structure formait bien des parastiches dont le nombre dans chaque sens correspond à deux termes consécutifs de la suite de Fibonacci. Joli. Très joli, même.&lt;/p&gt;
&lt;figure class="alignleft" style="max-width: 400px; width: 100%;"&gt;&lt;a href="https://en.wikipedia.org/wiki/File:Natural_Beehive_and_Honeycombs.jpg" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/Natural_Beehive_and_Honeycombs_hu_c5ea633e8d320a5b.webp" srcset="https://drgoulu.com/posts/2016/images/Natural_Beehive_and_Honeycombs_hu_c5ea633e8d320a5b.webp 320w, https://drgoulu.com/posts/2016/images/Natural_Beehive_and_Honeycombs_hu_3814df1a5075495.webp 480w, https://drgoulu.com/posts/2016/images/Natural_Beehive_and_Honeycombs_hu_c0b1f6a5aa59308d.webp 760w" sizes="(max-width: 640px) 100vw, 400px" alt="Nid naturel d&amp;#39;Apis Dorsata par Muhammad Mahdi Karim (CC Wikipedia)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Nid naturel d&amp;rsquo;Apis Dorsata par Muhammad Mahdi Karim (CC Wikipedia)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Alors quand Tâniel m&amp;rsquo;a parlé de son bouquin sur le nombre d&amp;rsquo;or dans les nids d&amp;rsquo;abeilles
j&amp;rsquo;étais un peu méfiant mais pas fondamentalement sceptique a priori. Les abeilles sont d&amp;rsquo;excellentes optimisatrices, on sait que leurs rayons d&amp;rsquo;
hexagonales à fond rhombique (3 losanges) permet de minimiser la cire utilisée pour produire un maximum d&amp;rsquo;alvéoles de petit diamètre
,
&lt;/p&gt;
&lt;p&gt;Sauf que pas tout à fait. En 1964,
a montré qu&amp;rsquo;il existait une forme de fond d&amp;rsquo;alvéole qui permettrait aux abeilles d&amp;rsquo;économiser 0.35% de cire. Peut-être la trouveront-elles aussi après quelques millions d&amp;rsquo;années d&amp;rsquo;évolution. En attendant, ni le nombre d&amp;rsquo;or ni l&amp;rsquo;angle d&amp;rsquo;or n&amp;rsquo;apparaissent dans la
des alvéoles, car on n&amp;rsquo;y trouve ni pentagone, ni nombres de Fibonacci, ni rien qui ressemble à un apex.&lt;/p&gt;
&lt;p&gt;Donc la &amp;ldquo;découverte&amp;rdquo; que les nids d&amp;rsquo;abeilles elliptiques s&amp;rsquo;inscrivent dans un cadre rectangulaire dont le rapport vaut 1.6±0.4 me semble plus probablement due à une &amp;ldquo;loi inhérente du Cosmos&amp;rdquo; comme la résistance des matériaux qu&amp;rsquo;à un nombre d&amp;rsquo;or vachement moins universel que e, pi, ou
, désolé&amp;hellip;&lt;/p&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Cyril Jaquier, Kévin Drapel &amp;ldquo;
&amp;rdquo; Projet STS EPFL, 25 avril 2005&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Jean-Paul Krivine &amp;ldquo;
&amp;rdquo;, SPS n° 278, août 2007&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Christiane Rousseau, &amp;ldquo;
&amp;rdquo;, 2008, Accromath, Vol 3, p.8-11&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;S. Douady et Y. Couder, La physique des spirales végétales, La Recherche, janvier 1993, p. 26&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;Daniel Favre &amp;ldquo;
&amp;rdquo;, 2016, Blurb&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;Philip Ball &amp;ldquo;
&amp;rdquo;, 2016 April 7 sur Nautilus&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;Alain Satabin &amp;ldquo;
&amp;rdquo;, 2004, Dossier Pour la Science, N°44&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>