{"id":653,"date":"2023-06-15T20:17:37","date_gmt":"2023-06-15T18:17:37","guid":{"rendered":"https:\/\/naupacte.com\/?page_id=653"},"modified":"2023-06-17T15:54:25","modified_gmt":"2023-06-17T13:54:25","slug":"numerical-simulation-automatic-differentiation","status":"publish","type":"page","link":"https:\/\/naupacte.com\/index.php\/numerical-modeling-simulation-actors\/numerical-simulation-automatic-differentiation\/","title":{"rendered":"Simulation num\u00e9rique et d\u00e9rivation automatique"},"content":{"rendered":"\n<p>En vue de l&#8217;optimisation d&#8217;un syst\u00e8me r\u00e9gi par un mod\u00e8le num\u00e9rique, il est pertinent de vouloir acc\u00e9der aux <em>sensibilit\u00e9s<\/em> de son \u00e9tat vis-\u00e0-vis de ses param\u00e8tres, comme les coefficients des lois physiques, les param\u00e8tres g\u00e9om\u00e9triques, ou les coefficients de chargement. Les <em>sensibilit\u00e9s<\/em>, recherch\u00e9es par les concepteurs, sont les variations lin\u00e9aris\u00e9es de l&#8217;\u00e9tat en fonction des param\u00e8tres. De fa\u00e7on plus cibl\u00e9e, on veut acc\u00e9der aux sensibilit\u00e9s des <em>crit\u00e8res \u00e0 optimiser<\/em>, c\u2019est-\u00e0-dire \u00e0 leurs gradients dans l\u2019espace des param\u00e8tres de conception.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c0 partir d&#8217;un code de simulation<\/h2>\n\n\n\n<p>Quant on dispose d\u2019un code source de simulation num\u00e9rique, il est naturel de le faire \u00e9voluer afin de lui faire produire les sensibilit\u00e9s recherch\u00e9es.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f3-1024x559.png\" alt=\"\" class=\"wp-image-649\" srcset=\"https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f3-1024x559.png 1024w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f3-300x164.png 300w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f3-768x419.png 768w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f3-1200x655.png 1200w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f3.png 1518w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">Entr\u00e9e\/sortie de la d\u00e9rivation algorithmique<\/figcaption><\/figure>\n\n\n\n<p>Depuis les ann\u00e9es 80, des \u00e9quipes de recherche ont mis au point des logiciels capables de g\u00e9n\u00e9rer le code donnant la d\u00e9riv\u00e9e \u00e0 partir de celui d\u2019origine. Les codes \u00e9crits en Fortran en ont \u00e9t\u00e9 les premiers b\u00e9n\u00e9ficiaires, pour la double raison de l\u2019absence de pointeurs et de leur part tr\u00e8s importante des logiciels de simulation. Depuis environ l&#8217;an 2000, on a vu l\u2019essor du C++ dans la simulation et son traitement par les logiciels de diff\u00e9rentiation source-\u00e0-source. Une technique consiste \u00e0 profiter dans le langage C++ de la surcharge des fonctions et des op\u00e9rateurs, ce qui r\u00e9duit la charge de la participation humaine.<\/p>\n\n\n\n<p>Le principe de la d\u00e9rivation ligne-\u00e0-ligne est simple; il s&#8217;agit une d\u00e9rivation formelle op\u00e9rant sur les instructions et les variables \u00e9l\u00e9mentaires d\u2019un programme informatique. D&#8217;autre part, la complexit\u00e9 est ma\u00eetris\u00e9e: il est prouv\u00e9 que le r\u00e9sultat requiert un nombre d\u2019op\u00e9rations du m\u00eame ordre de grandeur que le calcul initial. Cependant, parmi les difficult\u00e9s, on recense le traitement de la m\u00e9moire, les fonctions implicites r\u00e9solues par une boucle it\u00e9rative de point fixe, le parall\u00e9lisme des instructions, le choix entre mode direct et mode adjoint ou inverse. Enfin, la n\u00e9cessit\u00e9 d&#8217;une certaine assistance humaine en fait plut\u00f4t une m\u00e9thode semi-automatique.<\/p>\n\n\n\n<p>Cependant, malgr\u00e9 les qualit\u00e9s de la diff\u00e9rentiation algorithmique, la connaissance du mod\u00e8le math\u00e9matique doit <em>th\u00e9oriquement<\/em> aider \u00e0 produire un meilleur code. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c0 partir d&#8217;une formule math\u00e9matique<\/h2>\n\n\n\n<p>Id\u00e9alement, le d\u00e9veloppeur suit un mod\u00e8le formul\u00e9 math\u00e9matiquement pour le programmer. En d\u00e9rivant sa formule, il peut en programmer le r\u00e9sultat. Ainsi, une d\u00e9rivation automatique \u00e0 partir d\u2019une formule exige non seulement un m\u00e9canisme de d\u00e9rivation symbolique mais aussi une traduction de la formule en fonction de calcul \u00e9crite en un programme informatique.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f1-1024x559.png\" alt=\"\" class=\"wp-image-647\" srcset=\"https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f1-1024x559.png 1024w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f1-300x164.png 300w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f1-768x419.png 768w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f1-1200x655.png 1200w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f1.png 1518w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">D\u00e9rivation automatique symbolique vs algorithmique<\/figcaption><\/figure>\n\n\n\n<p>La d\u00e9rivation symbolique op\u00e8re sur des expressions et des objets  informatiques repr\u00e9sentant des valeurs ou des variables math\u00e9matiques de  diff\u00e9rentes complexit\u00e9s.<\/p>\n\n\n\n<p>Les modes direct et adjoint mentionn\u00e9s plus haut ne sont pas des notions de la d\u00e9rivation symbolique: la d\u00e9riv\u00e9e est une expression sans \u00e9gard \u00e0 son calcul par la gauche ou la droite. Un automate adoptera ensuite une fa\u00e7on optimale (heuristiquement parlant) de cha\u00eener les produits matriciels issus de la d\u00e9rivation, ou plus pr\u00e9cis\u00e9ment de ceux qui restent apr\u00e8s simplification.<\/p>\n\n\n\n<p>Le travail &#8220;symbolique&#8221; consiste \u00e0 analyser et manipuler des expressions alg\u00e9briques et doit consid\u00e9rer s\u00e9rieusement la t\u00e2che de simplification. La d\u00e9rivation multipliant le nombre de termes, il est important de savoir les recombiner pour all\u00e9ger au maximum le r\u00e9sultat et atteindre l&#8217;efficacit\u00e9 exig\u00e9e par les calculs intensifs de la simulation num\u00e9rique.<\/p>\n\n\n\n<p> Sur le sch\u00e9ma, ce qu&#8217;on nomme <em>impl\u00e9mentation<\/em> et <em>code<\/em> doivent s&#8217;entendre de mani\u00e8re tr\u00e8s abstraite. En effet, comme on ne part plus d&#8217;un code source existant, le code r\u00e9sultant n&#8217;est plus obligatoirement un autre code source mais peut \u00eatre une cha\u00eene de calcul interne ou bien encore une formule et un interpr\u00e9teur de formule.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Traduction de formule en fonction de calcul<\/h3>\n\n\n\n<p>Plusieurs options se pr\u00e9sentent. Soit la formule est interpr\u00e9t\u00e9e, c\u2019est-\u00e0-dire que l\u2019arbre d\u2019expressions est parcouru \u00e0 la vol\u00e9e et calcul\u00e9 en le remontant, de fa\u00e7on interne, sans sortir du programme d\u2019ex\u00e9cution.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"440\" src=\"https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f4-1024x440.png\" alt=\"\" class=\"wp-image-650\" srcset=\"https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f4-1024x440.png 1024w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f4-300x129.png 300w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f4-768x330.png 768w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f4-1536x660.png 1536w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f4-1200x516.png 1200w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f4.png 1922w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">D\u00e9rivation et interpr\u00e9tation de formule de calcul<\/figcaption><\/figure>\n\n\n\n<p>Soit la formule est d\u2019abord analys\u00e9e pour former un arbre d\u2019appel, qui peut \u00eatre soit traduit en un code \u00e9crit dont le r\u00e9sultat de la compilation sera adjoint au binaire ex\u00e9cutable, soit parcouru \u00e0 l&#8217;ex\u00e9cution \u00e0 la condition que les fonctions figurent d\u00e9j\u00e0 dans l\u2019ex\u00e9cutable. Le cas de l&#8217;interpr\u00e9teur en est un cas particulier, pour lequel la formule est \u00e9valu\u00e9e telle quelle, \u00e0 la vol\u00e9e. Retenons que cette \u00e9tape de pr\u00e9paration laisse des possibilit\u00e9s d&#8217;optimisation qui seront appr\u00e9ci\u00e9es pour des formules r\u00e9\u00e9valu\u00e9es apr\u00e8s une mise-\u00e0-jour de ses param\u00e8tres: la cha\u00eene n&#8217;est alors pas reconstruite, seules les valeurs des donn\u00e9es sur lesquelles elle travaille ont chang\u00e9.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"440\" src=\"https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f5-1024x440.png\" alt=\"\" class=\"wp-image-651\" srcset=\"https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f5-1024x440.png 1024w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f5-300x129.png 300w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f5-768x330.png 768w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f5-1536x660.png 1536w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f5-1200x516.png 1200w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f5.png 1922w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">D\u00e9rivation et construction d&#8217;un \u00e9valuateur: code g\u00e9n\u00e9r\u00e9 ou cha\u00eene interne<\/figcaption><\/figure>\n\n\n\n<p>La formation d&#8217;un arbre d&#8217;appel peut sans difficult\u00e9 \u00eatre adapt\u00e9e \u00e0 plusieurs formules qui partageront \u00e9ventuellement des sous-formules.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"208\" src=\"https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f6-1024x208.png\" alt=\"\" class=\"wp-image-652\" srcset=\"https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f6-1024x208.png 1024w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f6-300x61.png 300w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f6-768x156.png 768w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f6-1536x312.png 1536w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f6-1200x243.png 1200w, https:\/\/naupacte.com\/wp-content\/uploads\/2023\/06\/adf_f6.png 1922w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">\u00c9valuateur multi-formules<\/figcaption><\/figure>\n\n\n\n<p> <\/p>\n\n\n\n<p>Le choix de Navpactos s&#8217;est port\u00e9 sur la g\u00e9n\u00e9ration interne d&#8217;un \u00e9valuateur de formules.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Choix d&#8217;un type de d\u00e9rivation<\/h2>\n\n\n\n<p>Celui-ci va d\u00e9pendre de l&#8217;origine de l&#8217;objet \u00e0 d\u00e9river.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00c0 partir d&#8217;un ex\u00e9cutable en bo\u00eete noire: seule la <strong>diff\u00e9rence finie<\/strong> est envisageable, ou bien &#8230;, jouissant du droit de d\u00e9sassemblage, la diff\u00e9rentiation algorithmique de code assembleur!<\/li>\n\n\n\n<li>\u00c0 partir des fonctions en bo\u00eete noire des calculs de second membre et de la matrice: la <strong>m\u00e9thode semi-analytique<\/strong>, c&#8217;est-\u00e0-dire une diff\u00e9rence finie sur le second membre autour de l&#8217;\u00e9tat pr\u00e9alablement calcul\u00e9, puis une r\u00e9solution du syst\u00e8me lin\u00e9aire avec la matrice obtenue lors du calcul de l&#8217;\u00e9tat.<\/li>\n\n\n\n<li>\u00c0 partir d&#8217;un code source: <strong>la d\u00e9rivation de code source<\/strong>, dite <strong>algorithmique<\/strong>. Le choix entre mode direct et mode adjoint d\u00e9pend du degr\u00e9 de d\u00e9rivation et du nombre de param\u00e8tres.<\/li>\n\n\n\n<li>\u00c0 partir d&#8217;un mod\u00e8le d\u00e9fini symboliquement, dans un cadre manipulant de tels mod\u00e8les symboliques: <strong>la d\u00e9rivation symbolique<\/strong>, avec la souplesse de la manipulation des mod\u00e8les et des formules. L&#8217;analyse doit permettre de d\u00e9cider automatiquement l&#8217;utilit\u00e9 du calcul d&#8217;un \u00e9tat adjoint.<\/li>\n\n\n\n<li>\u00c0 partir de <em>rien<\/em>: mod\u00e9liser avec <strong>Navpactos<\/strong> et passer au point pr\u00e9c\u00e9dent!<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/naupacte.com\/index.php\/tensor-algebra-embedded-language-for-numerical-simulation\/automatic-differentiation-and-computing\/\">La d\u00e9rivation avec Navpactos<\/a><\/div>\n\n\n\n<div class=\"wp-block-group has-yellow-background-color has-background\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading\">Pourquoi la d\u00e9rivation automatique d\u00e9signe souvent la d\u00e9rivation algorithmique<\/h3>\n\n\n\n<p>Voici diff\u00e9rentes raisons.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le point de d\u00e9part est en g\u00e9n\u00e9ral un code h\u00e9rit\u00e9, et non une formule math\u00e9matique.<\/li>\n\n\n\n<li>Le r\u00e9sultat d\u2019une simulation num\u00e9rique ne s\u2019exprime pas toujours par des expressions d\u2019alg\u00e8bre formel.<\/li>\n\n\n\n<li>La production d\u2019un code efficace \u00e0 partir d\u2019une expression math\u00e9matique n\u2019est pas garantie. De plus, la d\u00e9rivation symbolique peut entra\u00eener un accroissement de termes. \u00c0 l\u2019oppos\u00e9, la complexit\u00e9 du code d\u00e9riv\u00e9 ligne-\u00e0-ligne est ma\u00eetris\u00e9e.<\/li>\n<\/ul>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>En vue de l&#8217;optimisation d&#8217;un syst\u00e8me r\u00e9gi par un mod\u00e8le num\u00e9rique, il est pertinent de vouloir acc\u00e9der aux sensibilit\u00e9s de son \u00e9tat vis-\u00e0-vis de ses param\u00e8tres, comme les coefficients des lois physiques, les param\u00e8tres g\u00e9om\u00e9triques, ou les coefficients de chargement. Les sensibilit\u00e9s, recherch\u00e9es par les concepteurs, sont les variations lin\u00e9aris\u00e9es de l&#8217;\u00e9tat en fonction des param\u00e8tres. De fa\u00e7on plus cibl\u00e9e, on veut acc\u00e9der aux sensibilit\u00e9s des crit\u00e8res \u00e0 optimiser, c\u2019est-\u00e0-dire \u00e0 leurs gradients dans l\u2019espace des param\u00e8tres de conception. \u00c0 partir d&#8217;un code de simulation Quant on dispose d\u2019un code source de simulation num\u00e9rique, il est naturel de le faire \u00e9voluer afin de lui faire produire les sensibilit\u00e9s recherch\u00e9es. Depuis les ann\u00e9es 80, des \u00e9quipes de recherche ont mis au point des logiciels capables de g\u00e9n\u00e9rer le code donnant la d\u00e9riv\u00e9e \u00e0 partir de celui d\u2019origine. Les codes \u00e9crits en Fortran en ont \u00e9t\u00e9 les premiers b\u00e9n\u00e9ficiaires, pour la double raison de l\u2019absence de pointeurs et de leur part tr\u00e8s importante des logiciels de simulation. Depuis environ l&#8217;an 2000, on a vu l\u2019essor du C++ dans la simulation et son traitement par les logiciels de diff\u00e9rentiation source-\u00e0-source. Une technique consiste \u00e0 profiter dans le langage C++ de la surcharge des fonctions et des op\u00e9rateurs, ce qui r\u00e9duit la charge de la participation humaine. Le principe de la d\u00e9rivation ligne-\u00e0-ligne est simple; il s&#8217;agit une d\u00e9rivation formelle op\u00e9rant sur les instructions et les variables \u00e9l\u00e9mentaires d\u2019un programme informatique. D&#8217;autre part, la complexit\u00e9 est ma\u00eetris\u00e9e: il est prouv\u00e9 que le r\u00e9sultat requiert un nombre d\u2019op\u00e9rations du m\u00eame ordre de grandeur que le calcul initial. Cependant, parmi les difficult\u00e9s, on recense le traitement de la m\u00e9moire, les fonctions implicites r\u00e9solues par une boucle it\u00e9rative de point fixe, le parall\u00e9lisme des instructions, le choix entre mode direct et mode adjoint ou inverse. Enfin, la n\u00e9cessit\u00e9 d&#8217;une certaine assistance humaine en fait plut\u00f4t une m\u00e9thode semi-automatique. Cependant, malgr\u00e9 les qualit\u00e9s de la diff\u00e9rentiation algorithmique, la connaissance du mod\u00e8le math\u00e9matique doit th\u00e9oriquement aider \u00e0 produire un meilleur code. \u00c0 partir d&#8217;une formule math\u00e9matique Id\u00e9alement, le d\u00e9veloppeur suit un mod\u00e8le formul\u00e9 math\u00e9matiquement pour le programmer. En d\u00e9rivant sa formule, il peut en programmer le r\u00e9sultat. Ainsi, une d\u00e9rivation automatique \u00e0 partir d\u2019une formule exige non seulement un m\u00e9canisme de d\u00e9rivation symbolique mais aussi une traduction de la formule en fonction de calcul \u00e9crite en un programme informatique. La d\u00e9rivation symbolique op\u00e8re sur des expressions et des objets informatiques repr\u00e9sentant des valeurs ou des variables math\u00e9matiques de diff\u00e9rentes complexit\u00e9s. Les modes direct et adjoint mentionn\u00e9s plus haut ne sont pas des notions de la d\u00e9rivation symbolique: la d\u00e9riv\u00e9e est une expression sans \u00e9gard \u00e0 son calcul par la gauche ou la droite. Un automate adoptera ensuite une fa\u00e7on optimale (heuristiquement parlant) de cha\u00eener les produits matriciels issus de la d\u00e9rivation, ou plus pr\u00e9cis\u00e9ment de ceux qui restent apr\u00e8s simplification. Le travail &#8220;symbolique&#8221; consiste \u00e0 analyser et manipuler des expressions alg\u00e9briques et doit consid\u00e9rer s\u00e9rieusement la t\u00e2che de simplification. La d\u00e9rivation multipliant le nombre de termes, il est important de savoir les recombiner pour all\u00e9ger au maximum le r\u00e9sultat et atteindre l&#8217;efficacit\u00e9 exig\u00e9e par les calculs intensifs de la simulation num\u00e9rique. Sur le sch\u00e9ma, ce qu&#8217;on nomme impl\u00e9mentation et code doivent s&#8217;entendre de mani\u00e8re tr\u00e8s abstraite. En effet, comme on ne part plus d&#8217;un code source existant, le code r\u00e9sultant n&#8217;est plus obligatoirement un autre code source mais peut \u00eatre une cha\u00eene de calcul interne ou bien encore une formule et un interpr\u00e9teur de formule. Traduction de formule en fonction de calcul Plusieurs options se pr\u00e9sentent. Soit la formule est interpr\u00e9t\u00e9e, c\u2019est-\u00e0-dire que l\u2019arbre d\u2019expressions est parcouru \u00e0 la vol\u00e9e et calcul\u00e9 en le remontant, de fa\u00e7on interne, sans sortir du programme d\u2019ex\u00e9cution. Soit la formule est d\u2019abord analys\u00e9e pour former un arbre d\u2019appel, qui peut \u00eatre soit traduit en un code \u00e9crit dont le r\u00e9sultat de la compilation sera adjoint au binaire ex\u00e9cutable, soit parcouru \u00e0 l&#8217;ex\u00e9cution \u00e0 la condition que les fonctions figurent d\u00e9j\u00e0 dans l\u2019ex\u00e9cutable. Le cas de l&#8217;interpr\u00e9teur en est un cas particulier, pour lequel la formule est \u00e9valu\u00e9e telle quelle, \u00e0 la vol\u00e9e. Retenons que cette \u00e9tape de pr\u00e9paration laisse des possibilit\u00e9s d&#8217;optimisation qui seront appr\u00e9ci\u00e9es pour des formules r\u00e9\u00e9valu\u00e9es apr\u00e8s une mise-\u00e0-jour de ses param\u00e8tres: la cha\u00eene n&#8217;est alors pas reconstruite, seules les valeurs des donn\u00e9es sur lesquelles elle travaille ont chang\u00e9. La formation d&#8217;un arbre d&#8217;appel peut sans difficult\u00e9 \u00eatre adapt\u00e9e \u00e0 plusieurs formules qui partageront \u00e9ventuellement des sous-formules. Le choix de Navpactos s&#8217;est port\u00e9 sur la g\u00e9n\u00e9ration interne d&#8217;un \u00e9valuateur de formules. Choix d&#8217;un type de d\u00e9rivation Celui-ci va d\u00e9pendre de l&#8217;origine de l&#8217;objet \u00e0 d\u00e9river. Pourquoi la d\u00e9rivation automatique d\u00e9signe souvent la d\u00e9rivation algorithmique Voici diff\u00e9rentes raisons.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":121,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-653","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/naupacte.com\/index.php\/wp-json\/wp\/v2\/pages\/653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naupacte.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/naupacte.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/naupacte.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naupacte.com\/index.php\/wp-json\/wp\/v2\/comments?post=653"}],"version-history":[{"count":3,"href":"https:\/\/naupacte.com\/index.php\/wp-json\/wp\/v2\/pages\/653\/revisions"}],"predecessor-version":[{"id":661,"href":"https:\/\/naupacte.com\/index.php\/wp-json\/wp\/v2\/pages\/653\/revisions\/661"}],"up":[{"embeddable":true,"href":"https:\/\/naupacte.com\/index.php\/wp-json\/wp\/v2\/pages\/121"}],"wp:attachment":[{"href":"https:\/\/naupacte.com\/index.php\/wp-json\/wp\/v2\/media?parent=653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}