{"id":358,"date":"2022-06-10T07:02:28","date_gmt":"2022-06-10T06:02:28","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/mathsinfo\/?p=358"},"modified":"2022-06-19T08:03:04","modified_gmt":"2022-06-19T07:03:04","slug":"kata9","status":"publish","type":"post","link":"https:\/\/blog.univ-angers.fr\/mathsinfo\/2022\/06\/10\/kata9\/","title":{"rendered":"Neuvi\u00e8me exercice en Python, JavaScript et APL"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-8.png\"><img loading=\"lazy\" decoding=\"async\" width=\"721\" height=\"493\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-8.png\" alt=\"\" class=\"wp-image-359\" srcset=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-8.png 721w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-8-300x205.png 300w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-8-439x300.png 439w\" sizes=\"auto, (max-width: 721px) 100vw, 721px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"391\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-9.png\" alt=\"\" class=\"wp-image-360\" srcset=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-9.png 636w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-9-300x184.png 300w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-9-488x300.png 488w\" sizes=\"auto, (max-width: 636px) 100vw, 636px\" \/><\/a><\/figure>\n\n\n\n<p><span style=\"text-decoration: underline\">R\u00e9sum\u00e9 en fran\u00e7ais<\/span> : Des lapins naissent et deviennent matures au bout de 1 mois, \u00e2ge auquel ils pourront se reproduire.<br>Cr\u00e9ez une fonction qui d\u00e9termine le nombre de <strong>paires de lapins matures<\/strong> apr\u00e8s <strong>n<\/strong> mois en commen\u00e7ant par un <strong>unique<\/strong> couple de lapins immatures et qui se reproduisent \u00e0 raison de <strong>b<\/strong> paires \u00e0 la fin de chaque mois. Voir le tableau ci-dessus dans le cas de <strong>n<\/strong> = 5 mois avec un taux de reproduction de <strong>b<\/strong> = 3 pour bien comprendre le d\u00e9roulement. Quelques autres exemples :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt; lapins(0, 4)\n0                     # Apr\u00e8s 0 mois, il n'y a pas de paire adultes\n&gt;&gt; lapins(1, 4)\n1                     # Apr\u00e8s 1 mois, une seule paire d'adultes\n&gt;&gt;lapins(4, 0)\n1                     # Lapins st\u00e9riles (taux = 0), on reste \u00e0 1\n&gt;&gt; lapins(6, 3)       \n40 \n&gt;&gt; lapins(8, 12)\n8425\n&gt;&gt; lapins(7, 4)\n181 \n\n# (1 0) &gt; (0 1) &gt; (4 1) &gt; (4 5) &gt; (20 9) &gt; (36 29) &gt; (116 65) &gt; 181<\/code><\/pre>\n\n\n\n<p>Cet exercice \u00e9tant assez facile, proposons <strong>diff\u00e9rentes versions<\/strong> :<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Une simple boucle<\/h2>\n\n\n\n<p>On part de <strong>0<\/strong> adulte et d&rsquo;une paire de lapins <strong>immatures<\/strong>. <strong>Chaque mois<\/strong>, le nouveau nombre <strong>d&rsquo;immatures<\/strong> est <strong>\u00e9gal<\/strong> au nombre d&rsquo;<strong>adultes qui se reproduisent avec un taux b<\/strong> (c&rsquo;est-\u00e0-dire la multiplication du nombre d&rsquo;adultes par le coefficient <strong>b<\/strong>). Et le nouveau nombre <strong>d&rsquo;adultes<\/strong> est \u00e9gal au nombre <strong>d&rsquo;adultes<\/strong> <strong>pr\u00e9c\u00e9dents<\/strong> + les<strong> immatures pr\u00e9c\u00e9dents<\/strong> qui deviennent adultes.<\/p>\n\n\n\n<p>Il faut faire attention \u00e0 l&rsquo;\u00e9criture du processus, voici une version <strong>INCORRECTE<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def lapins(n, b):\n    immatures, adultes = 1, 0\n    for i in range(n):\n        immatures = b * adultes         # on \u00e9crase immatures trop t\u00f4t\n        adultes =  adultes + immatures\n    return adultes<\/code><\/pre>\n\n\n\n<p>En effet, on commence par mettre \u00e0 jour la variable <strong>immatures<\/strong> puis on utilise cette valeur \u00e0 la ligne suivante, or nous avions besoin de la valeur <strong>pr\u00e9c\u00e9dente<\/strong> de <strong>immatures<\/strong> et non pas de la valeur actualis\u00e9e. Une technique classique est d&rsquo;utiliser une variable <strong>temporaire<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def lapins(n, b):\n    immatures, adultes = 1, 0\n    for i in range(n):\n        temp = immatures            # On m\u00e9morise valeur pr\u00e9c\u00e9dente\n        immatures = b * adultes\n        adultes =  adultes + temp   # que l'on utilise ici\n    return adultes<\/code><\/pre>\n\n\n\n<p>Mais en Python ou en JavaScript, on peut \u00e9galement utiliser cette \u00e9criture <strong>CORRECTE<\/strong> :<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">python<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>def lapins(n, b):\n    immatures, adultes = 1, 0\n    for i in range(n):\n        immatures, adultes = b * adultes, adultes + immatures\n    return adultes\n\n&gt;&gt; lapins(8,12)\n8425\n&gt;&gt; lapins(0,4)\n0\n&gt;&gt; lapins(4,0)\n1<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">javascript<\/h3>\n\n\n\n<p>La traduction est quasi identique en <strong>JavaScript<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> const lapins = (n, b) =&gt; {\n  let &#091;immatures, adultes] = &#091;1, 0];\n  for (let i = 0; i &lt; n; i++) {\n    &#091;immatures, adultes] = &#091;adultes * b, immatures + adultes];\n  }\n  return adultes;\n}<\/code><\/pre>\n\n\n\n<p>Avec d&rsquo;infinies variations, par exemple en utilisant un <strong>objet<\/strong> et une boucle <strong>Tant que<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const lapins = (n, b) =&gt; {\n  const tous = {immatures: 1, adultes: 0};    \/\/ Tous les lapins\n  mois = 0;\n  while (mois &lt; n) {\n    let temp = tous.adultes;\n    tous.adultes += tous.immatures;\n    tous.immatures = temp * b;\n    mois++;\n  }  \n  return tous.adultes;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Version r\u00e9cursive<\/h2>\n\n\n\n<p>Reprenons l&rsquo;exemple propos\u00e9 dans l&rsquo;\u00e9nonc\u00e9 avec n = 5 et b = 3. Le nombre de paires d&rsquo;adultes matures est successivement : 0 \u2192 1 \u2192 1 \u2192 4 \u2192 7 \u2192 19<\/p>\n\n\n\n<p>Si on note <strong>u<\/strong> la suite donnant le nombre d&rsquo;adultes au fil des mois, on a u(0) = 0, u(1) = 1 etc.<\/p>\n\n\n\n<p>Cette suite peut \u00eatre d\u00e9finie par une <strong>relation de r\u00e9currence<\/strong> :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/lapins1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"259\" height=\"44\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/lapins1.png\" alt=\"\" class=\"wp-image-373\" \/><\/a><\/figure>\n\n\n\n<p>Ce qui signifie que le nombre de paires d&rsquo;adultes au mois <strong>n+1<\/strong> est <strong>3 fois<\/strong> le nombre de paires <strong>d&rsquo;adultes<\/strong> <strong>2 mois avant<\/strong> (reproduction) + les <strong>immatures<\/strong> du <strong>mois pr\u00e9c\u00e9dent<\/strong> qui deviennent adultes.<\/p>\n\n\n\n<p>Essayez en effet de vous convaincre que 0 \u2192 1 \u2192 <span style=\"text-decoration: underline\">1<\/span> \u2192 <span style=\"text-decoration: underline\">4<\/span> \u2192 <span style=\"text-decoration: underline\">7<\/span> \u2192 <span style=\"text-decoration: underline\">19<\/span> correspond \u00e0 :<\/p>\n\n\n\n<p>u(2) = <span style=\"text-decoration: underline\">1<\/span> = <strong>3 *<\/strong> 0 <strong>+<\/strong> 1, u(3) = <span style=\"text-decoration: underline\">4<\/span> = <strong>3 *<\/strong> 1 <strong>+<\/strong> 1, u(4) = <span style=\"text-decoration: underline\">7<\/span> = <strong>3 *<\/strong> 1 <strong>+<\/strong> 4, u(5) = <span style=\"text-decoration: underline\">19<\/span> = <strong>3 *<\/strong> 4 <strong>+<\/strong> 7 \ud83e\udd14<\/p>\n\n\n\n<p>Les <strong>traductions<\/strong> en Python et JavaScript sont imm\u00e9diates :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"text-decoration: underline\">Python<\/span>\n\ndef lapins(n, b):\n  if n &lt;= 1: return n\n  return b * lapins(n - 2, b) + lapins(n - 1, b)\n\n<span style=\"text-decoration: underline\">JavaScript<\/span>\n\nconst lapins = (n, b) =&gt; n &lt;= 1 ? \n                         n : \n                         b * lapins(n - 2, b) + lapins(n - 1, b)\n\n&gt;&gt; lapins(5,3)\n19\n&gt;&gt; lapins(8,12)\n8425<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Version matricielle<\/h2>\n\n\n\n<p>Autre vision en utilisant cette fois-ci un <strong>calcul matriciel<\/strong>. En effet, observons que :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/lapin2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"364\" height=\"44\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/lapin2.png\" alt=\"\" class=\"wp-image-375\" srcset=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/lapin2.png 364w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/lapin2-300x36.png 300w\" sizes=\"auto, (max-width: 364px) 100vw, 364px\" \/><\/a><\/figure>\n\n\n\n<p>On peut donc calculer <strong>u(n+1)<\/strong> et <strong>u(n) <\/strong>\u00e0 l&rsquo;aide des <strong>puissances<\/strong> d&rsquo;une unique matrice 2 x 2 :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/lapin3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"187\" height=\"45\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/lapin3.png\" alt=\"\" class=\"wp-image-376\" \/><\/a><\/figure>\n\n\n\n<p>De fa\u00e7on <strong>plus g\u00e9n\u00e9rale<\/strong>, le nombre de paires d&rsquo;adultes pour un taux de reproduction <strong>b<\/strong> peut \u00eatre calcul\u00e9 par :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/lapin4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"187\" height=\"45\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/lapin4.png\" alt=\"\" class=\"wp-image-377\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Python<\/h3>\n\n\n\n<p>Pour calculer la puissance d&rsquo;une matrice 2 x 2, nous pouvons cr\u00e9er une fonction de multiplication ou utiliser une biblioth\u00e8que comme <strong>numpy<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import numpy as np                 # On importe numpy\n\nm = np.array(&#091;&#091;1, 3], &#091;1, 0]])     # Cr\u00e9ation de la matrice m\n\nfor k in range(5):                 # Calcul de m^0, m^1... m^4\n  print('m^{} = {}'.format(k, np.linalg.matrix_power(m, k)))\n\n<span style=\"text-decoration: underline\">R\u00e9sultats<\/span>\n\nm^0 = &#091;&#091;1 0], &#091;0 1]]\nm^1 = &#091;&#091;1 3], &#091;1 0]]\nm^2 = &#091;&#091;4 3], &#091;1 3]]\nm^3 = &#091;&#091; 7 12], &#091; 4  3]]\nm^4 = &#091;&#091;19 21], &#091; 7 12]]<\/code><\/pre>\n\n\n\n<p>Attention cependant, la biblioth\u00e8que <strong>numpy<\/strong> ne g\u00e8re pas (par d\u00e9faut) les entiers arbitrairement grands et peut donner des r\u00e9sultats <strong>FAUX<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt; np.linalg.matrix_power(m, 50)      # m \u00e0 la puissance 50\n\n&#091;&#091; 827677709047869124 1078278355240672323]\n &#091; 359426118413557441  468251590634311683]]    # R\u00e9sultat EXACT\n\n&gt;&gt; np.linalg.matrix_power(m, 70)      # m \u00e0 la puissance 70\n&#091;&#091;   23110438186405259  6654818438609454037]\n &#091;<strong>-3930641878366699193<\/strong>  3953752316553104452]]  # R\u00e9sultat FAUX !<\/code><\/pre>\n\n\n\n<p>On peut malgr\u00e9 tout pr\u00e9ciser comment les donn\u00e9es doivent \u00eatre stock\u00e9es (entier, flottant, objet) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import numpy as np\n\nm = np.array(&#091;&#091;1, 3], &#091;1, 0]], <span style=\"text-decoration: underline\">dtype=object<\/span>)  # en tant qu'objet\n\n&gt;&gt; np.linalg.matrix_power(m, 70)\n&#091;&#091;14551031556125490725277067 18956729415189764489429973]\n &#091;6318909805063254829809991 8232121751062235895467076]]   # EXACT !<\/code><\/pre>\n\n\n\n<p><strong>Programme final<\/strong> en Python :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import numpy as np\n\ndef lapins(n, b):\n    m = np.array(&#091;&#091;1, b], &#091;1, 0]], dtype=object)\n    return np.linalg.matrix_power(m, n)&#091;1]&#091;0]    # on r\u00e9cup\u00e8re u(n)\n\n&gt;&gt; lapins(8, 12)\n8425\n&gt;&gt; lapins(0, 4)\n0\n&gt;&gt; lapins(4, 0)\n1<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Javascript<\/h3>\n\n\n\n<p>Il existe des biblioth\u00e8ques JavaScript pour faire du calcul matriciel, par exemple <a rel=\"noreferrer noopener\" href=\"https:\/\/mathjs.org\/\" target=\"_blank\">math.js<\/a> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt; m = &#091;&#091;1, 3], &#091;1, 0]]\n\n&gt;&gt; math.pow(m,4)\n0: &#091;19, 21]\n1: &#091;7, 12]\n\n&gt;&gt; math.pow(m,70)\n0: &#091;1.455103155612549e+25, 1.8956729415189765e+25]\n1: &#091;6.318909805063255e+24, 8.232121751062236e+24]<\/code><\/pre>\n\n\n\n<p>Sinon, vous pouvez vous cr\u00e9er une petite fonction permettant de mettre une matrice 2 x 2 \u00e0 une puissance quelconque, par exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const power = (m, n) =&gt;      \/\/ Matrice m \u00e0 la puissance n\n{\n    &#091;&#091;a, b], &#091;c, d]] = m;    \/\/ On r\u00e9cup\u00e8re les coefficients\n    r = &#091;&#091;1, 0], &#091;0, 1]]     \/\/ Matrice unit\u00e9\n    for (i = 0; i &lt; n; i++)  \/\/ n multiplications matricielles\n    {\n      &#091;e, f] = &#091;a * r&#091;0]&#091;0] + c * r&#091;0]&#091;1], b * r&#091;0]&#091;0] + d * r&#091;0]&#091;1]];\n      &#091;g, h] = &#091;a * r&#091;1]&#091;0] + c * r&#091;1]&#091;1], b * r&#091;1]&#091;0] + d * r&#091;1]&#091;1]];\n      r = &#091;&#091;e, f], &#091;g, h]];\n    };\n    return r\n}\n\n&gt;&gt; power(&#091;&#091;1, 3],&#091;1, 0]], 4)\n0: &#091;19, 21]\n1: &#091;7, 12]\n\n&gt;&gt; power(&#091;&#091;1, 3],&#091;1, 0]], 70)\n0: &#091;1.455103155612549e+25, 1.8956729415189765e+25]\n1: &#091;6.318909805063255e+24, 8.232121751062236e+24]<\/code><\/pre>\n\n\n\n<p><strong>Programme final <\/strong>en JavaScript qui utilise la fonction <strong>power<\/strong> ci-dessus :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lapins = (n, b) =&gt;  power(&#091;&#091;1, b],&#091;1, 0]], n)&#091;1]&#091;0]\n\n&gt;&gt; lapins(8, 12)\n8425<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Version APL<\/h2>\n\n\n\n<p>Reprenons l&rsquo;id\u00e9e du calcul matriciel. En APL, on d\u00e9finit une matrice en pr\u00e9cisant ses <strong>dimensions<\/strong> suivi de \u2374 et des <strong>valeurs<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      m \u2190 2 2 \u2374 1 3 1 0     \u235d  Matrice 2 x 2\n1 3\n1 0<\/code><\/pre>\n\n\n\n<p>Pour la mettre au <strong>carr\u00e9<\/strong> on utilise le <strong>produit interne<\/strong> (ici somme des produits) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      m +.\u00d7 m\n4 3\n1 3<\/code><\/pre>\n\n\n\n<p>Et avec une <strong>r\u00e9duction<\/strong> on peut obtenir par exemple <strong>m^4<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      +.\u00d7\/ m m m m\n\u250c\u2500\u2500\u2500\u2500\u2500\u2510\n\u250219 21\u2502\n\u2502 7 12\u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2518<\/code><\/pre>\n\n\n\n<p>Pour <strong>g\u00e9n\u00e9raliser<\/strong> \u00e0 une puissance quelconque <strong>r<\/strong>, il va falloir dupliquer la matrice <strong>r<\/strong> fois, exemple avec <strong>r = 4<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      4 \u2374 \u2282 m\n\u250c\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2510\n\u25021 3\u25021 3\u25021 3\u25021 3\u2502\n\u25021 0\u25021 0\u25021 0\u25021 0\u2502\n\u2514\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518<\/code><\/pre>\n\n\n\n<p>D&rsquo;o\u00f9 cette fonction pour mettre une matrice <strong>m<\/strong> \u00e0 la puissance <strong>r<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      power \u2190 {+.\u00d7\/ \u237a \u2374 \u2282 \u2375}\n\n      4 power m\n\u250c\u2500\u2500\u2500\u2500\u2500\u2510\n\u250219 21\u2502\n\u2502 7 12\u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2518\n      1 power m\n\u250c\u2500\u2500\u2500\u2510\n\u25021 3\u2502\n\u25021 0\u2502\n\u2514\u2500\u2500\u2500\u2518\n      0 power m\nDOMAIN ERROR<\/code><\/pre>\n\n\n\n<p>Cette alternative sugg\u00e9r\u00e9e par <a rel=\"noreferrer noopener\" href=\"https:\/\/twitter.com\/dyalogapl\/status\/1534175228493975556\" target=\"_blank\">Dyalog APL sur Twitter<\/a> a l&rsquo;avantage de g\u00e9rer le cas <strong>r = 0<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      power \u2190 {+.\u00d7 \u2363 (\u237a - 1) \u2368 \u2375}\n\n      4 power m\n19 21\n 7 12\n      1 power m\n1 3\n1 0\n      0 power m      \u235d On obtient bien la matrice identit\u00e9\n1 0\n0 1<\/code><\/pre>\n\n\n\n<p>\u2363 permet de <strong>r\u00e9p\u00e9ter<\/strong> une op\u00e9ration plusieurs fois et \u2368 <strong>d&rsquo;inverser<\/strong> les param\u00e8tres :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      \u00d7\u23633 \u2368 2       \u235d 2 \u2192 2 \u00d7 2 = 4 \u2192 4 \u00d7 4 = 16\n16\n      +\u23633 \u2368 2       \u235d 2 \u2192 2 + 2 = 4 \u2192 4 + 4 = 8\n8\n      +\u2218\u00f7\u2363 20 \u23681    \u235d 1 + 1 \/ (1 + 1 \/ (1 + ...)) \u2243 Nombre d'or\n1.618033985<\/code><\/pre>\n\n\n\n<p>Une fois que l&rsquo;on aura calcul\u00e9 la puissance de la matrice, il faut <strong>r\u00e9cup\u00e9rer<\/strong> l&rsquo;\u00e9l\u00e9ment \u00e0 la ligne 2 et colonne 1. Pour cela, on utilise \u2283 (<strong>pick<\/strong>) et on accole (<strong>laminate<\/strong>) les lignes de la matrice :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      m \u2190 2 2  \u2374 7 9 5 8     \u235d Matrice 2 x 2\n      ,\/ m                   \u235d Laminage (on accole les lignes)\n\u250c\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2510\n\u25027 9\u25025 8\u2502\n\u2514\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n      2 \u2283 ,\/ m               \u235d 2e terme\n5 8\n      2 1 \u2283 ,\/ m             \u235d 1er terme du 2e terme\n5\n\n\u235d On peut \u00e9galement utiliser \u2337 (index)\n\n      2 1 \u2337 m\n5<\/code><\/pre>\n\n\n\n<p><strong>Programme final<\/strong> en APL :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      lapins \u2190  {2 1 \u2337 +.\u00d7 \u2363 (\u237a - 1) \u2368 2 2 \u2374 1 \u2375 1 0} \n\n      8 lapins 12\n8425\n      0 lapins 4\n0\n      4 lapins 0\n1\n      7 lapins 4\n181<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>R\u00e9sum\u00e9 en fran\u00e7ais : Des lapins naissent et deviennent matures au bout de 1 mois, \u00e2ge auquel ils pourront se reproduire.Cr\u00e9ez une fonction qui d\u00e9termine le nombre de paires de lapins matures apr\u00e8s n mois en commen\u00e7ant par un unique &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/2022\/06\/10\/kata9\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4913,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-358","post","type-post","status-publish","format-standard","hentry","category-twitter"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/users\/4913"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/comments?post=358"}],"version-history":[{"count":38,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/358\/revisions"}],"predecessor-version":[{"id":658,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/358\/revisions\/658"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/media?parent=358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/categories?post=358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/tags?post=358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}