{"id":7513,"date":"2025-06-29T18:46:32","date_gmt":"2025-06-29T16:46:32","guid":{"rendered":"https:\/\/spgoo.org\/?page_id=7513"},"modified":"2025-06-30T18:11:58","modified_gmt":"2025-06-30T16:11:58","slug":"numeric-js","status":"publish","type":"page","link":"https:\/\/spgoo.org\/?page_id=7513","title":{"rendered":"Numeric.js"},"content":{"rendered":" <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/numeric\/1.2.6\/numeric.min.js\"><\/script>\r\n <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/11.7.0\/styles\/default.min.css\">\r\n <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/11.7.0\/highlight.min.js\"><\/script>\r\n\r\n\r\n<style>\r\n   .example h2 {\r\n    text-align: left;\r\n    color: #333;\r\n\tfont-size: 1.5em;\r\n\tmargin-block-start: 0.83em;\r\n    margin-block-end: 0.83em;\r\n    margin-inline-start: 0px;\r\n    margin-inline-end: 0px;\r\n    font-weight: bold;\r\n    }\r\n\t\r\n\t.exemple p {\r\n\t\tcolor : black;\r\n\t    margin-block-start: 1em;\r\n\t    margin-block-end: 1em;\r\n\t    margin-inline-start: 0px;\r\n\t    margin-inline-end: 0px;\r\n\t}\r\n\t\r\n    .example, .interactive {\r\n      background: white;\r\n      padding: 1.5rem;\r\n      border-radius: 12px;\r\n      box-shadow: 0 2px 5px rgba(0,0,0,0.1);\r\n      margin-bottom: 2rem;\r\n    }\r\n    .code {\r\n      background: #f0f0f0;\r\n      padding: 0.8rem;\r\n      border-radius: 8px;\r\n      font-family: monospace;\r\n      color: cadetblue;\r\n      white-space: pre-wrap;\r\n    }\r\n    .result {\r\n      background: #e8f5e9;\r\n      padding: 0.8rem;\r\n      border-radius: 8px;\r\n      white-space: pre-wrap;\r\n      font-family: monospace;\r\n    }\r\n    textarea {\r\n      width: 100%;\r\n      height: 100px;\r\n      font-family: monospace;\r\n      font-size: 1rem;\r\n      padding: 1rem;\r\n      margin-top: 1rem;\r\n      border: 1px solid #ccc;\r\n      border-radius: 8px;\r\n    }\r\n    button {\r\n      margin-top: 1rem;i\r\n      padding: 0.8rem 1.2rem;\r\n      font-size: 1rem;\r\n      background-color: cadetblue;\r\n      color: white;\r\n      border: none;\r\n      border-radius: 8px;\r\n      cursor: pointer;\r\n    }\r\n    button:hover {\r\n      background-color: #4c9;\r\n    }\r\n  <\/style>\r\n\r\n <h1>Biblioth\u00e8que Numeric.js<\/h1>\r\n <a href=\"https:\/\/ccc-js.github.io\/numeric2\/\">Lien<\/a>\r\n <p>Dans les diff\u00e9rents d\u00e9veloppements de plateforme au sein de SPGoO, il est n\u00e9cessaire de disposer de solutions cl\u00e9s en main pour diff\u00e9rentes r\u00e9solutions num\u00e9riques, ce qui nous permet de nous concentrer sur l&#8217;apport m\u00e9tier de nos disciplines en nous appuyant sur des briques logicielles \u00e9prouv\u00e9es. Pour cela, plusieurs solutions existent et parmis ces solutions, s\u00e9lectionner et v\u00e9rifier celle qui est la plus apte selon nos crit\u00e8res \u00e0 \u00eatre int\u00e9gr\u00e9e dans nos dispositifs. Le travail pr\u00e9sent\u00e9 dans cette page est le fruit de la patience et de la tenacit\u00e9 de Cyrille.   <\/p>\r\n  <div id=\"examples-container\"><\/div>\r\n\r\n\t<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\" style=\"text-align:left;font-size:16px;color:lightblue\" id=\"fonctions_arithmetiques\">\r\n\t\t<summary>Fonctions arithm\u00e9tiques<\/summary>\r\n\t<\/details>\r\n\r\n\t<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\" style=\"text-align:left;font-size:16px;color:lightblue\" id=\"fonctions_elementaires\">\r\n\t\t<summary>Fonctions \u00e9l\u00e9mentaires<\/summary>\r\n\t<\/details>\r\n\r\n\t<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\" style=\"text-align:left;font-size:16px;color:lightblue\" id=\"fonctions_matricielles\">\r\n\t\t<summary>Fonctions matricielles<\/summary>\r\n\t<\/details>\r\n\r\n\t<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\" style=\"text-align:left;font-size:16px;color:lightblue\" id=\"fonctions_trigonometriques\">\r\n\t\t<summary>Fonctions trigonom\u00e8triques<\/summary>\r\n\t<\/details>\r\n\t\r\n\t<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\" style=\"text-align:left;font-size:16px;color:lightblue\" id=\"fonctions_arith_plus\">\r\n\t\t<summary>Fonctions aithm\u00e9tiques plus<\/summary>\r\n\t<\/details>\r\n\r\n\t<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\" style=\"text-align:left;font-size:16px;color:lightblue\" id=\"fonctions_vectorielles\">\r\n\t\t<summary>Fonctions vectorielles-matricielles<\/summary>\r\n\t<\/details>\r\n\r\n\r\n\r\n  <div class=\"interactive\">\r\n    <h2>\ud83d\udca1 Essaie ton propre code<\/h2>\r\n    <p>\u00c9cris une expression avec <code>numeric<\/code> (ex : <code>numeric.add([1,2], [3,4])<\/code>) :<\/p>\r\n    <textarea id=\"user-code\">\/\/ Tape ton code ici\r\nnumeric.dot([[1, 2], [3, 4]], [[5, 6], [7, 8]])<\/textarea>\r\n    <br>\r\n    <button onclick=\"\">Ex\u00e9cuter<\/button>\r\n    <div id=\"user-result\" class=\"result\"><\/div>\r\n  <\/div>\r\n\r\n <script>\r\n    const examples = [\r\n      { categ:\"fonctions_arithmetiques\", title: \"Addition de deux vecteurs\", description: \"On additionne deux vecteurs.\", code: \"numeric.add([1,2,3],[1,2,3])\" },\r\n      { categ:\"fonctions_arithmetiques\",title: \"Produit de deux matrices\", description: \"Multiplication classique.\", code: \"numeric.dot([[1, 2], [3, 4]], [[5, 6], [7, 8]])\" },\r\n      { categ:\"fonctions_arithmetiques\",title: \"Inverse d'une matrice\", description: \"Calcul de l'inverse d'une matrice.\", code: \"numeric.inv([[1, 2], [3, 4]])\" },\r\n      { categ:\"fonctions_arithmetiques\",title: \"Norme d\u2019un vecteur\", description: \"Norme euclidienne du vecteur.\", code: \"numeric.norm2([1,2,3])\" },\r\n      { categ:\"fonctions_arithmetiques\",title: \"R\u00e9solution d\u2019un syst\u00e8me lin\u00e9aire\", description: \"On r\u00e9sout Ax = b.\", code: \"numeric.solve([[2, 1], [1, 3]], [8, 13])\" },\r\n\r\n      \/\/ Fonctions \u00e9l\u00e9mentaires\r\n      { categ:\"fonctions_elementaires\",title: \"Valeur absolue (vecteur)\", description: \"numeric.abs([-2,-1,0,1,2])\", code: \"numeric.abs([-2,-1,0,1,2])\" },\r\n      { categ:\"fonctions_elementaires\",title: \"Valeur absolue (matrice)\", description: \"numeric.abs([[-1,2],[3,-4]])\", code: \"numeric.abs([[-1,2],[3,-4]])\" },\r\n      { categ:\"fonctions_elementaires\",title: \"Exponentielle\", description: \"numeric.exp([[1,2],[3,4]])\", code: \"numeric.exp([[1,2],[3,4]])\" },\r\n      { categ:\"fonctions_elementaires\",title: \"Logarithme\", description: \"numeric.log([[1,2],[3,4]])\", code: \"numeric.log([[1,2],[3,4]])\" },\r\n      { categ:\"fonctions_elementaires\",title: \"Arrondi inf\u00e9rieur\", description: \"numeric.floor([[1.2,2.4],[-3.6,-4.9]])\", code: \"numeric.floor([[1.2,2.4],[-3.6,-4.9]])\" },\r\n      { categ:\"fonctions_elementaires\",title: \"Arrondi sup\u00e9rieur\", description: \"numeric.ceil([[1.2,2.4],[-3.6,-4.9]])\", code: \"numeric.ceil([[1.2,2.4],[-3.6,-4.9]])\" },\r\n      { categ:\"fonctions_elementaires\",title: \"Arrondi classique\", description: \"numeric.round([[1.2,2.4],[-3.6,-4.9]])\", code: \"numeric.round([[1.2,2.4],[-3.6,-4.9]])\" },\r\n      { categ:\"fonctions_elementaires\",title: \"Puissance \u00e9l\u00e9ment par \u00e9l\u00e9ment\", description: \"numeric.pow([[1,2],[3,4]],3.2)\", code: \"numeric.pow([[1,2],[3,4]],3.2)\" },\r\n      { categ:\"fonctions_elementaires\",title: \"Racine carr\u00e9e (valeurs absolues)\", description: \"numeric.sqrt(numeric.abs([[-1,2],[3,-4]]))\", code: \"numeric.sqrt(numeric.abs([[-1,2],[3,-4]]))\" },\r\n      { categ:\"fonctions_elementaires\",title: \"Oppos\u00e9 des \u00e9l\u00e9ments\", description: \"numeric.neg([1,-2,3])\", code: \"numeric.neg([1,-2,3])\" },\r\n\r\n      \/\/ Fonctions trigonom\u00e9triques\r\n      { categ:\"fonctions_trigonometriques\", title: \"Sinus\", description: \"numeric.sin([1,2,3,4])\", code: \"numeric.sin([1,2,3,4])\" },\r\n      { categ:\"fonctions_trigonometriques\",title: \"Cosinus\", description: \"numeric.cos([1,2,3,4])\", code: \"numeric.cos([1,2,3,4])\" },\r\n      { categ:\"fonctions_trigonometriques\",title: \"Tangente\", description: \"numeric.tan([1,2,3,4])\", code: \"numeric.tan([1,2,3,4])\" },\r\n      { categ:\"fonctions_trigonometriques\",title: \"Arc sinus\", description: \"numeric.asin([1,2,3,4])\", code: \"numeric.asin([1,2,3,4])\" },\r\n      { categ:\"fonctions_trigonometriques\",title: \"Arc cosinus\", description: \"numeric.acos([1,2,3,4])\", code: \"numeric.acos([1,2,3,4])\" },\r\n      { categ:\"fonctions_trigonometriques\",title: \"Arc tangente\", description: \"numeric.atan([1,2,3,4])\", code: \"numeric.atan([1,2,3,4])\" },\r\n\t  \r\n  \t  \/\/ Cr\u00e9ation de matrices\r\n      { categ:\"fonctions_matricielles\",title: \"Cr\u00e9er une matrice identit\u00e9\", description: \"numeric.identity(4)\", code: \"numeric.identity(4)\" },\r\n      { categ:\"fonctions_matricielles\",title: \"Cr\u00e9er une matrice diagonale\", description: \"numeric.diag([1,2,3,4,5,6,7,8,9])\", code: \"numeric.diag([1,2,3,4,5,6,7,8,9])\" },\r\n      { categ:\"fonctions_matricielles\",title: \"Cr\u00e9er une matrice al\u00e9atoire\", description: \"numeric.random([2,3])\", code: \"numeric.random([2,3])\" },\r\n      { categ:\"fonctions_matricielles\",title: \"Cr\u00e9er une matrice remplie par un nombre\", description: \"numeric.rep([3,3],9)\", code: \"numeric.rep([3,3],9)\" },\r\n      { categ:\"fonctions_matricielles\",title: \"Cr\u00e9er un vecteur rempli d\u2019un seul nombre\", description: \"numeric.rep([3],9)\", code: \"numeric.rep([3],9)\" },\r\n      { categ:\"fonctions_matricielles\",title: \"Cr\u00e9er une liste de nombres (linspace)\", description: \"numeric.linspace(1,6)\", code: \"numeric.linspace(1,6)\" },\r\n      { categ:\"fonctions_matricielles\",title: \"Cr\u00e9er une liste avec un pas d\u00e9fini\", description: \"numeric.linspace(1,5,10)\", code: \"numeric.linspace(1,5,10)\" },\r\n\r\n      \/\/ Op\u00e9rations arithm\u00e9tiques\r\n      { categ:\"fonctions_arith_plus\",title: \"Addition : nombre + vecteur\", description: \"numeric.add(1,[2,3])\", code: \"numeric.add(1,[2,3])\" },\r\n      { categ:\"fonctions_arith_plus\",title: \"Addition : vecteur + nombre\", description: \"numeric.add([2,3],1)\", code: \"numeric.add([2,3],1)\" },\r\n      { categ:\"fonctions_arith_plus\",title: \"Addition : nombre + matrice\", description: \"numeric.add(1,[[2,3],[2,3]])\", code: \"numeric.add(1,[[2,3],[2,3]])\" },\r\n      { categ:\"fonctions_arith_plus\",title: \"Addition : matrice + nombre\", description: \"numeric.add([[2,3],[2,3]],1)\", code: \"numeric.add([[2,3],[2,3]],1)\" },\r\n      { categ:\"fonctions_arith_plus\",title: \"Addition : matrice + matrice\", description: \"numeric.add([[2,3],[2,3]],[[2,3],[2,3]])\", code: \"numeric.add([[2,3],[2,3]],[[2,3],[2,3]])\" },\r\n      { categ:\"fonctions_arith_plus\",title: \"Soustraction\", description: \"numeric.sub([5,6],[2,3])\", code: \"numeric.sub([5,6],[2,3])\" },\r\n      { categ:\"fonctions_arith_plus\",title: \"Multiplication\", description: \"numeric.mul([2,3],[4,5])\", code: \"numeric.mul([2,3],[4,5])\" },\r\n      { categ:\"fonctions_arith_plus\",title: \"Division\", description: \"numeric.div([8,6],[2,3])\", code: \"numeric.div([8,6],[2,3])\" },\r\n\r\n      \/\/ Produits vectoriels et matriciels\r\n      { categ:\"fonctions_vectorielles\", title: \"Produit vectoriel (dotVV)\", description: \"numeric.dotVV([1,2,3],[4,4,6])\", code: \"numeric.dotVV([1,2,3],[4,4,6])\" },\r\n      { categ:\"fonctions_vectorielles\",title: \"Produit vectoriel (dot)\", description: \"numeric.dot([1,2,3],[4,4,6])\", code: \"numeric.dot([1,2,3],[4,4,6])\" },\r\n      { categ:\"fonctions_vectorielles\",title: \"Vecteur \u00d7 Matrice\", description: \"numeric.dotVM([1,2,3],[[1,0,0],[0,1,0],[0,0,1]])\", code: \"numeric.dotVM([1,2,3],[[1,0,0],[0,1,0],[0,0,1]])\" },\r\n      { categ:\"fonctions_vectorielles\",title: \"Matrice \u00d7 Vecteur\", description: \"numeric.dotMV([[1,0,0],[0,1,0],[0,0,1]],[1,2,3])\", code: \"numeric.dotMV([[1,0,0],[0,1,0],[0,0,1]],[1,2,3])\" },\r\n\t\t\r\n    ];\r\n\r\n    \r\n\t \r\n\t examples.forEach(example => {\r\n\t  const categ=example.categ;\r\n\t  const container = document.getElementById(categ);\r\n      const result = eval(example.code);\r\n      const div = document.createElement(\"div\");\r\n      div.className = \"example\";\r\n\r\n      const title = `<h2>${example.title}<\/h2>`;\r\n      const description = `<p style=\"color:black\">${example.description}<\/p>`;\r\n      const codeBlock = `<div class=\"code\">${example.code}<\/div>`;\r\n      const resultFormatted = Array.isArray(result) ? formatArray(result) : result;\r\n      const resultBlock = `<div class=\"result\"><strong>R\u00e9sultat :<\/strong><br>${resultFormatted}<\/div>`;\r\n      div.innerHTML = title + description + codeBlock + resultBlock;\r\n      \r\n\t  container.appendChild(div);\r\n    });\r\n\r\n    function formatArray(arr) {\r\n      if (!Array.isArray(arr)) return arr;\r\n      if (Array.isArray(arr[0])) {\r\n        return arr.map(row => JSON.stringify(row)).join(\"<br>\");\r\n      } else {\r\n        return JSON.stringify(arr);\r\n      }\r\n    }\r\n\tfunction runUserCode() {\r\n      const input = document.getElementById(\"user-code\").value;\r\n      const resultDiv = document.getElementById(\"user-result\");\r\n      try {\r\n        const result = eval(input);\r\n        const formatted = Array.isArray(result) ? formatArray(result) : result;\r\n        resultDiv.innerHTML = `<strong>R\u00e9sultat :<\/strong><br>${formatted}`;\r\n      } catch (err) {\r\n        resultDiv.innerHTML = `<span style=\"color:red;\">Erreur : ${err.message}<\/span>`;\r\n      }\r\n    }\r\n\t \r\n\t \r\n  <\/script>\r\n\r\n\r\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7513","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/7513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spgoo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7513"}],"version-history":[{"count":8,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/7513\/revisions"}],"predecessor-version":[{"id":7667,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/7513\/revisions\/7667"}],"wp:attachment":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}