{"id":1288,"date":"2026-08-21T14:31:23","date_gmt":"2026-08-21T14:31:23","guid":{"rendered":"https:\/\/matforge.org\/?p=1288","raw":"https:\/\/matforge.org\/?p=1288"},"modified":"2026-08-21T14:31:23","modified_gmt":"2026-08-21T14:31:23","slug":"nonlinear-solver-methods-newton-broyden-quasi-newton-pdes","status":"publish","type":"post","link":"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/","title":{"rendered":"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP","raw":"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 12<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>Lorsque vous discr\u00e9ditez une \u00e9quation aux d\u00e9riv\u00e9es partielles non lin\u00e9aires, vous obtenez un syst\u00e8me alg\u00e9brique non lin\u00e9aire. Pour le r\u00e9soudre, il faut choisir la bonne m\u00e9thode de solveur. La m\u00e9thode de Newton converge quadratiquement mais exige un plein Jacobien. La m\u00e9thode de Broyden construit le Jacobien moins cher mais peut d\u00e9stabiliser. L&rsquo;approche de Newton-Krylov sans Jacobien (JFNK) \u00e9vite enti\u00e8rement le Jacobien, ne s&rsquo;appuyant que sur des produits \u00e0 vecteur jacobien avec un pr\u00e9conditionnement bas\u00e9 sur la physique pour garder la convergence tractable.<\/p>\n<p>Le choix n&rsquo;est pas th\u00e9orique. Il d\u00e9termine si votre simulation converge du tout, combien de m\u00e9moire elle consomme et si elle se termine en quelques minutes ou en jours.<\/p>\n<p><strong><a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" target=\"_blank\" rel=\"nofollow noopener\">Lien vers l&rsquo;article existant&nbsp;: M\u00e9thodes d&rsquo;int\u00e9gration du temps pour les solveurs PDE<\/a><\/strong> Couvre le paysage plus large des sch\u00e9mas explicites par rapport aux sch\u00e9mas implicites et de la division des op\u00e9rateurs. <strong><a href=\"https:\/\/matforge.org\/implicit-vs-explicit-methods-stability-accuracy\/\" target=\"_blank\" rel=\"nofollow noopener\">Lien vers l&rsquo;article existant&nbsp;: m\u00e9thodes implicites ou explicites<\/a><\/strong> Discute des r\u00e9gions de stabilit\u00e9, des crit\u00e8res de pr\u00e9cision et lorsque des sch\u00e9mas implicites deviennent n\u00e9cessaires. Cet article se concentre sp\u00e9cifiquement sur les solveurs non lin\u00e9aires qui se trouvent dans chaque sch\u00e9ma implicite.<\/p>\n<h2>Lorsque les m\u00e9thodes implicites exigent un solveur non lin\u00e9aire<\/h2>\n<p>L&rsquo;int\u00e9gration implicite du temps n\u00e9cessite la r\u00e9solution d&rsquo;un syst\u00e8me non lin\u00e9aire \u00e0 chaque pas de temps. Consid\u00e9rez la discr\u00e9tisation d&rsquo;Euler r\u00e9trograde d&rsquo;un PDE g\u00e9n\u00e9rique&nbsp;:<\/p>\n<pre><code>F(u\u207f\u207a\u00b9) = 0<\/code><\/pre>\n<p>L&rsquo;inconnu <code>u\u207f\u207a\u00b9<\/code> appara\u00eet \u00e0 l&rsquo;int\u00e9rieur de l&rsquo;op\u00e9rateur <code>F<\/code> par des termes de diffusion, une cin\u00e9tique de r\u00e9action ou des \u00e9quations multi-physiques coupl\u00e9es. Apr\u00e8s discr\u00e9tisation spatiale (volume fini, \u00e9l\u00e9ment fini ou diff\u00e9rence finie), le syst\u00e8me devient :<\/p>\n<pre><code>F(x) = 0, where x \u2208 \u211d\u207f<\/code><\/pre>\n<p>La dimension <code>n<\/code> est le nombre de degr\u00e9s de libert\u00e9 &#8211; g\u00e9n\u00e9ralement le produit des cellules de la grille, des champs physiques et des it\u00e9rations de pas de temps. Dans une simulation en champ de phase 3D avec 500&nbsp;\u00b3 de cellules et deux champs coupl\u00e9s, <code>n<\/code> peut facilement d\u00e9passer 10&nbsp;\u2078.<\/p>\n<p>Le d\u00e9fi est que <code>F<\/code> est non lin\u00e9aire. Vous ne pouvez pas \u00e9crire <code>x = F\u207b\u00b9(0)<\/code>. Au lieu de cela, vous avez besoin d&rsquo;un algorithme it\u00e9ratif qui construit une s\u00e9quence convergeant vers la racine.<\/p>\n<h2>La m\u00e9thode de Newton&nbsp;: la ligne de base<\/h2>\n<p>La m\u00e9thode de Newton est la r\u00e9f\u00e9rence par rapport \u00e0 laquelle tous les autres solveurs non lin\u00e9aires sont mesur\u00e9s. Pour le syst\u00e8me <code>F(x) = 0<\/code>, il construit la matrice jacobienne&nbsp;:<\/p>\n<pre><code>J = \u2202F\/\u2202x<\/code><\/pre>\n<p>et it\u00e8re&nbsp;:<\/p>\n<pre><code>x\u2096\u208a\u2081 = x\u2096 \u2212 J\u207b\u00b9\u00b7F(x\u2096)<\/code><\/pre>\n<p>La propri\u00e9t\u00e9 cl\u00e9 est <strong>convergence quadratique<\/strong>. Si le Jacobien est continu de Lipschitz et que la supposition initiale est dans le bassin de convergence, l&rsquo;erreur satisfait :<\/p>\n<pre><code>\u2016x\u2096\u208a\u2081 \u2212 x*\u2016 \u2264 C \u00b7 \u2016x\u2096 \u2212 x*\u2016\u00b2<\/code><\/pre>\n<p>Cela signifie que le nombre de chiffres corrects double \u00e0 chaque it\u00e9ration. Pour les syst\u00e8mes PDE bien \u00e9lev\u00e9s, la m\u00e9thode de Newton converge souvent en 3 \u00e0 5 it\u00e9rations.<\/p>\n<h3>Jacobien complet : diff\u00e9rence analytique ou finie<\/h3>\n<p>La construction du Jacobien est la partie la plus ch\u00e8re de la m\u00e9thode de Newton. Les options sont :<\/p>\n<p><strong>Jacobien analytique.<\/strong> Vous d\u00e9rivez <code>\u2202F\/\u2202x<\/code> \u00e0 la main ou par la diff\u00e9renciation automatique. Dans des biblioth\u00e8ques comme Fenics, la formulation variationnelle g\u00e9n\u00e8re automatiquement le Jacobien par la diff\u00e9renciation symbolique. Le r\u00e9sultat est exact (jusqu&rsquo;\u00e0 une pr\u00e9cision en virgule flottante).<\/p>\n<p><strong>Diff\u00e9rence finie Jacobien.<\/strong> Vous perturbez chaque colonne de <code>J<\/code> par <code>\u03b5<\/code> et r\u00e9\u00e9valuez <code>F<\/code>&nbsp;:<\/p>\n<pre><code>J\u1d62 \u2248 (F(x + \u03b5\u00b7e\u1d62) \u2212 F(x)) \/ \u03b5<\/code><\/pre>\n<p>Cela n\u00e9cessite <code>n<\/code> des \u00e9valuations de fonctions suppl\u00e9mentaires par it\u00e9ration newton. Pour les grands <code>n<\/code>, cela domine le co\u00fbt.<\/p>\n<p><strong>Bloquer Jacobian.<\/strong> Dans les syst\u00e8mes coupl\u00e9s avec <code>k<\/code> champs, le Jacobien est structur\u00e9 en bloc&nbsp;:<\/p>\n<pre><code>J = [ \u2202F\u2081\/\u2202x\u2081  \u2202F\u2081\/\u2202x\u2082  ... ]\n    [ \u2202F\u2082\/\u2202x\u2081  \u2202F\u2082\/\u2202x\u2082  ... ]\n    [          ...       ... ]<\/code><\/pre>\n<p>Si vous n&rsquo;avez besoin que de blocs diagonaux <code>\u2202F\u1d62\/\u2202x\u1d62<\/code>, vous pouvez les \u00e9valuer ind\u00e9pendamment &#8211; une technique appel\u00e9e <strong>gel diagonal<\/strong> ou <strong>solveurs enti\u00e8rement coupl\u00e9s ou s\u00e9par\u00e9s<\/strong>.<\/p>\n<h3>Convergence mondiale&nbsp;: recherche de lignes et r\u00e9gions de confiance<\/h3>\n<p>La m\u00e9thode de Pure Newton est une m\u00e9thode locale. Si la supposition initiale est loin de la solution, les it\u00e9rations peuvent diverger m\u00eame si la convergence quadratique est proche de la racine.<\/p>\n<p><strong>Recherche de ligne<\/strong> modifie l&rsquo;\u00e9tape Newton en la mettant \u00e0 l&rsquo;\u00e9chelle&nbsp;:<\/p>\n<pre><code>x\u2096\u208a\u2081 = x\u2096 \u2212 \u03b1\u00b7J\u207b\u00b9\u00b7F(x\u2096)<\/code><\/pre>\n<p>o\u00f9 <code>\u03b1 \u2208 (0, 1]<\/code> est choisi pour r\u00e9duire une fonction de m\u00e9rite. L&rsquo;approche classique minimise <code>\u2016F(x\u2096 \u2212 \u03b1\u00b7J\u207b\u00b9\u00b7F(x\u2096))\u2016<\/code>.<\/p>\n<p><strong>Les r\u00e9gions de confiance<\/strong> d\u00e9finissent un rayon <code>\u0394<\/code> dans lequel le mod\u00e8le quadratique est approuv\u00e9&nbsp;:<\/p>\n<pre><code>min q(s) = F(x\u2096) + J\u00b7s + \u00bd\u00b7s\u1d40\u00b7H\u00b7s\nsubject to \u2016s\u2016 \u2264 \u0394<\/code><\/pre>\n<p>Lorsque la r\u00e9duction de la fonction de m\u00e9rite est insuffisante, le rayon se r\u00e9tr\u00e9cit. Quand c&rsquo;est suffisant, le rayon grandit.<\/p>\n<p>Le package <code>SNES<\/code> de PETSC (solveur d&rsquo;\u00e9quations non lin\u00e9aires SNU) fournit \u00e0 la fois la mondialisation de recherche en ligne et de r\u00e9gion de confiance. Le choix affecte le nombre total d&rsquo;it\u00e9rations plus que le co\u00fbt par it\u00e9ration.<\/p>\n<h3>Newton pratique : quand \u00e7a marche et quand \u00e7a ne marche pas<\/h3>\n<p>La m\u00e9thode de Newton excelle lorsque&nbsp;:<\/p>\n<ul>\n<li>Le Jacobien est disponible sous une forme exacte (symbolique, AD ou bloc-analytique)<\/li>\n<li>Les non-lin\u00e9arit\u00e9s sont l\u00e9g\u00e8res (diffusion, termes de r\u00e9action l\u00e9gers)<\/li>\n<li>La m\u00e9moire est suffisante pour le Jacobien complet (ou sa factorisation clairsem\u00e9e)<\/li>\n<\/ul>\n<p>La m\u00e9thode de Newton est difficile lorsque :<\/p>\n<ul>\n<li><code>n<\/code> d\u00e9passe 10&nbsp;\u2076 et l&rsquo;assemblage complet de Jacobien est prohibitif<\/li>\n<li>La fonction <code>F<\/code> est opaque (code de simulation en bo\u00eete noire)<\/li>\n<li>Chaque \u00e9valuation de fonction domine d\u00e9j\u00e0 le temps d&rsquo;ex\u00e9cution<\/li>\n<\/ul>\n<p>Pour les PDE \u00e0 grande \u00e9chelle, l&rsquo;approche jacobienne compl\u00e8te est souvent trop ch\u00e8re. C&rsquo;est l\u00e0 que les m\u00e9thodes quasi-newton entrent.<\/p>\n<h2>Les m\u00e9thodes quasi-Newton de Broyden<\/h2>\n<p>La m\u00e9thode de Broyden appartient \u00e0 la classe plus large des m\u00e9thodes quasi-Newton. Au lieu de calculer <code>J = \u2202F\/\u2202x<\/code>, il cr\u00e9e une approximation <code>B\u2096 \u2248 J<\/code> par les mises \u00e0 jour de rang&nbsp;1 de la condition s\u00e9cante&nbsp;:<\/p>\n<pre><code>B\u2096\u208a\u2081 \u00b7 (x\u2096\u208a\u2081 \u2212 x\u2096) = F(x\u2096\u208a\u2081) \u2212 F(x\u2096)<\/code><\/pre>\n<p>La condition s\u00e9cante est une \u00e9quation pour <code>n<\/code> inconnue dans <code>B\u2096\u208a\u2081<\/code>. La formulation de Broyden choisit la mise \u00e0 jour qui minimise le changement de norme Frobenius :<\/p>\n<pre><code>min \u2016B\u2096\u208a\u2081 \u2212 B\u2096\u2016_F\nsubject to B\u2096\u208a\u2081\u00b7(x\u2096\u208a\u2081 \u2212 x\u2096) = F(x\u2096\u208a\u2081) \u2212 F(x\u2096)<\/code><\/pre>\n<h3>bon contre mauvais broyden<\/h3>\n<p>La m\u00e9thode d&rsquo;origine de Broyden (parfois appel\u00e9e \u00ab\u00a0bon Broyden\u00a0\u00bb) est mise \u00e0 jour <code>B\u2096<\/code> \u00e0 l&rsquo;aide de l&rsquo;\u00e9quation s\u00e9cante. La variante inverse (\u00ab\u00a0Bad Broyden\u00a0\u00bb) est mise \u00e0 jour directement <code>B\u2096\u207b\u00b9<\/code>&nbsp;:<\/p>\n<pre><code>B\u2096\u208a\u2081\u207b\u00b9 = B\u2096\u207b\u00b9 + (\u03b4y \u2212 B\u2096\u207b\u00b9\u00b7\u03b4x)\u00b7\u03b4x\u1d40 \/ (\u03b4x\u1d40\u00b7\u03b4x)<\/code><\/pre>\n<p>o\u00f9 <code>\u03b4x = x\u2096\u208a\u2081 \u2212 x\u2096<\/code> et <code>\u03b4y = F(x\u2096\u208a\u2081) \u2212 F(x\u2096)<\/code>.<\/p>\n<p>La mise \u00e0 jour inverse est ce que Python utilise <code>scipy.optimize.broyden1<\/code>. Cela \u00e9vite d&rsquo;inverser l&rsquo;approximation jacobienne \u00e0 chaque \u00e9tape &#8211; une \u00e9conomie importante pour les gros probl\u00e8mes.<\/p>\n<h3>L&rsquo;instabilit\u00e9 du nombre de conditions<\/h3>\n<p>La limitation pratique la plus importante de la m\u00e9thode de Broyden est que son approximation jacobienne peut devenir mal conditionn\u00e9e. La mise \u00e0 jour de rang 1 ne modifie qu&rsquo;une seule direction, tandis que le reste de la matrice d\u00e9rive. Au cours de nombreuses it\u00e9rations, <code>B\u2096<\/code> accumule des informations de courbure obsol\u00e8tes.<\/p>\n<p>Le nombre de conditions <code>\u03ba(B\u2096) = \u2016B\u2096\u2016 \u00b7 \u2016B\u2096\u207b\u00b9\u2016<\/code> peut cro\u00eetre sans borne. Un nombre de conditions exc\u00e9dant 10\u2078 provoque le blocage des solveurs de Krylov comme les GMRES, m\u00eame si le probl\u00e8me sous-jacent est bien conditionn\u00e9.<\/p>\n<p>C&rsquo;est la raison concr\u00e8te de pr\u00e9f\u00e9rer Newton ou JFNK \u00e0 Broyden dans les simulations de production. Pour les probl\u00e8mes l\u00e9g\u00e8rement non lin\u00e9aires avec peu de degr\u00e9s de libert\u00e9 par champ (par exemple, diffusion 1D, r\u00e9gime permanent 2D), la m\u00e9thode de Broyden peut \u00eatre comp\u00e9titive. Pour les syst\u00e8mes 3D avec 10\u2076+ degr\u00e9s de libert\u00e9, la d\u00e9rive de condition la rend peu fiable.<\/p>\n<h3>Broyden \u00e0 m\u00e9moire limit\u00e9e (L-BFGS)<\/h3>\n<p>Pour une optimisation \u00e0 grande \u00e9chelle, L-BFGS stocke les derni\u00e8res paires de pas <code>m<\/code> <code>(\u03b4x\u1d62, \u03b4y\u1d62)<\/code> et construit implicitement l&rsquo;inverse de Jacobien \u00e0 travers une r\u00e9cursivit\u00e9. Cela \u00e9vite de stocker la matrice compl\u00e8te <code>n \u00d7 n<\/code>.<\/p>\n<p>Cependant, L-BFGS est con\u00e7u pour l&rsquo;optimisation (minimation d&rsquo;un objectif scalaire), et non la recherche de racine (r\u00e9solution <code>F(x) = 0<\/code>). Pour la recherche de racines PDE, la mise \u00e0 jour de Broyden \u00e0 m\u00e9moire limit\u00e9e utilis\u00e9e dans les solveurs comme le solveur <code>BFGS<\/code> de PETSC (et non L-BFGS) est plus courante.<\/p>\n<h2>Newton-Krylov sans Jacobian : la norme \u00e0 grande \u00e9chelle moderne<\/h2>\n<p>La m\u00e9thode Newton-Krylov (JFNK) sans Jacobien aborde le goulot d&rsquo;\u00e9tranglement de la m\u00e9moire de Jacobien Newton en assemblant jamais le Jacobien. Au lieu de cela, il utilise une m\u00e9thode de sous-espace Krylov (g\u00e9n\u00e9ralement GMRES) pour r\u00e9soudre le syst\u00e8me Newton&nbsp;:<\/p>\n<pre><code>J \u00b7 \u0394x = \u2212F(x)<\/code><\/pre>\n<p>GMRES ne n\u00e9cessite que les produits Matrix-Vector <code>J\u00b7v<\/code>. Ceux-ci sont calcul\u00e9s via le produit <strong>Jacobian-Vector<\/strong>&nbsp;:<\/p>\n<pre><code>J \u00b7 v \u2248 (F(x + \u03b5\u00b7v) \u2212 F(x)) \/ \u03b5<\/code><\/pre>\n<p>Aucun Jacobien explicite n&rsquo;est assembl\u00e9. Seuls <code>F<\/code> et le vecteur de perturbation <code>v<\/code> sont n\u00e9cessaires.<\/p>\n<h3>Pourquoi le pr\u00e9conditionnement est obligatoire<\/h3>\n<p>JFNK avec un produit \u00e0 vecteur jacobien nu est rarement pratique. Le syst\u00e8me de Newton peut avoir un grand nombre de conditions, en particulier lorsque le Jacobien a des valeurs propres tr\u00e8s variables \u00e0 partir de diff\u00e9rents processus physiques.<\/p>\n<p><strong>Pr\u00e9conditionnement bas\u00e9 sur la physique (PBP)<\/strong> aborde ce probl\u00e8me en tenant compte des op\u00e9rateurs connus. Envisagez un syst\u00e8me de convection-diffusion-r\u00e9action&nbsp;:<\/p>\n<pre><code>J = J_convection + J_diffusion + J_reaction<\/code><\/pre>\n<p>PBP remplace le pr\u00e9conditionneur par :<\/p>\n<pre><code>M = J_diffusion<\/code><\/pre>\n<p>L&rsquo;op\u00e9rateur de diffusion domine g\u00e9n\u00e9ralement le spectre et est souvent tridiagonal ou tridiagonal par champ. Son inverse peut \u00eatre calcul\u00e9 efficacement par la factorisation directe clairsem\u00e9e ou l&rsquo;ILU, tandis que les termes de convection et de r\u00e9action sont trait\u00e9s explicitement.<\/p>\n<p>Le syst\u00e8me pr\u00e9conditionn\u00e9 devient :<\/p>\n<pre><code>M\u207b\u00b9 \u00b7 J \u00b7 \u0394x = \u2212M\u207b\u00b9 \u00b7 F(x)<\/code><\/pre>\n<p>Le nombre de conditions de <code>M\u207b\u00b9\u00b7J<\/code> est consid\u00e9rablement r\u00e9duit car l&rsquo;op\u00e9rateur de diffusion &#8211; la source du pire conditionnement &#8211; a \u00e9t\u00e9 pris en compte dans <code>M<\/code>.<\/p>\n<p>Sans pr\u00e9conditionnement, JFNK peut n\u00e9cessiter des centaines ou des milliers d&rsquo;it\u00e9rations GMRES. Avec le PBP, il converge souvent en 10 \u00e0 50 it\u00e9rations, correspondant ou d\u00e9passant le Newton Jacobien.<\/p>\n<h3>Le mod\u00e8le Newton-Krylov en pratique<\/h3>\n<ol>\n<li><strong>Construire le r\u00e9sidu newton<\/strong> <code>r = F(x\u2096)<\/code><\/li>\n<li><strong>R\u00e9soudre<\/strong> <code>J \u00b7 \u0394x = \u2212r<\/code> <strong>Utiliser GMRES<\/strong><\/li>\n<li><strong>Les produits Jacobian-Vector<\/strong> sont calcul\u00e9s par des perturbations de diff\u00e9rences finies de <code>F<\/code><\/li>\n<li><strong>Preconditionneur<\/strong> <code>M<\/code> est appliqu\u00e9 \u00e0 chaque it\u00e9ration GMRES<\/li>\n<li><strong>Mise \u00e0 jour<\/strong> <code>x\u2096\u208a\u2081 = x\u2096 + \u0394x<\/code><\/li>\n<li><strong>V\u00e9rifier la convergence<\/strong> sur <code>\u2016r\u2016<\/code><\/li>\n<\/ol>\n<p>Ce mod\u00e8le appara\u00eet dans tous les principaux cadres PDE&nbsp;: FENICS\/Dolfin, Petsc\/SNES, FIPY et NonLinearSolve.jl. La diff\u00e9rence r\u00e9side dans la fa\u00e7on dont le pr\u00e9conditionneur est construit et la fa\u00e7on dont le produit de vecteur jacobien est calcul\u00e9.<\/p>\n<h2>Le mod\u00e8le de polyalgorithme&nbsp;: comment les solveurs modernes se d\u00e9ploient r\u00e9ellement<\/h2>\n<p>Les solveurs de production s&rsquo;appuient rarement sur une seule m\u00e9thode. Au lieu de cela, ils utilisent un <strong>polyalgorithm<\/strong> qui s&rsquo;adapte \u00e0 la difficult\u00e9 du probl\u00e8me&nbsp;:<\/p>\n<pre><code>1. Start with fast Broyden (cheap per iteration, no Jacobian)\n2. If convergence stalls, fall back to full Newton (robust quadratic convergence)\n3. If Newton also fails, fall back to TrustRegion (globally convergent)<\/code><\/pre>\n<p>Il s&rsquo;agit du mod\u00e8le utilis\u00e9 par PETSC <code>SNES<\/code>, <code>DifferentialEquations.jl<\/code> de Sciml et le solveur non lin\u00e9aire de Moose.<\/p>\n<h3>Eisenstat-Walker for\u00e7ant<\/h3>\n<p>La strat\u00e9gie Eisenstat-Walker (parfois appel\u00e9e la \u00ab\u00a0strat\u00e9gie de force\u00a0\u00bb) adapte la tol\u00e9rance int\u00e9rieure du solveur de Krylov par rapport au r\u00e9sidu de Newton&nbsp;:<\/p>\n<pre><code>\u2016J \u00b7 \u0394x + r\u2016 \u2264 \u03b7\u2096 \u00b7 \u2016r\u2016<\/code><\/pre>\n<p>o\u00f9 <code>\u03b7\u2096<\/code> se d\u00e9tend comme <code>r<\/code> r\u00e9tr\u00e9cit. Les premi\u00e8res it\u00e9rations de Newton utilisent une tol\u00e9rance int\u00e9rieure l\u00e2che (moins de pas de Krylov). Au fur et \u00e0 mesure que le r\u00e9sidu de Newton diminue, la tol\u00e9rance int\u00e9rieure se resserre (plus de pr\u00e9cision de Krylov).<\/p>\n<p>Cela emp\u00eache les travaux perdus de r\u00e9soudre le syst\u00e8me lin\u00e9aire avec une grande pr\u00e9cision lorsque le Newton Iterate est encore loin de la racine.<\/p>\n<h2>Cadre de d\u00e9cision&nbsp;: quand choisir la m\u00e9thode<\/h2>\n<p>Le tableau suivant r\u00e9sume les compromis pratiques :<\/p>\n<h2>Comparaison des m\u00e9thodes<\/h2>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Crit\u00e8re<\/th>\n<th>Newton-Raphson<\/th>\n<th>Broyden (quasi-Newton)<\/th>\n<th>JFNK (Newton-Krylov)<\/th>\n<\/tr>\n<tr>\n<td>taux de convergence<\/td>\n<td>Quadratique (racine proche)<\/td>\n<td>Superlin\u00e9aire (par it\u00e9ration), mais peu fiable pour les grands <code>n<\/code><\/td>\n<td>D\u00e9pend du pr\u00e9conditionneur ; Super lin\u00e9aire avec un bon PBP<\/td>\n<\/tr>\n<tr>\n<td>Empreinte m\u00e9moire<\/td>\n<td>O(n\u00b2) pour Jacobien complet (mais le peu moins le r\u00e9duit)<\/td>\n<td>O(n\u00b2) pour l&rsquo;approximation inverse de Broyden&nbsp;; O(m\u00b7n) pour les variantes \u00e0 m\u00e9moire limit\u00e9e<\/td>\n<td>O(n) \u2014 Uniquement les vecteurs de fonction et le stockage de Krylov<\/td>\n<\/tr>\n<tr>\n<td>Co\u00fbt par it\u00e9ration<\/td>\n<td>\u00c9lev\u00e9 (assemblage jacobien + factorisation)<\/td>\n<td>Faible (mise \u00e0 jour de rang 1 + \u00e9valuation de la fonction)<\/td>\n<td>Mod\u00e9r\u00e9 (JVP + it\u00e9ration Krylov)<\/td>\n<\/tr>\n<tr>\n<td>Exigence Jacobienne<\/td>\n<td>Jacobien complet (analytique, AD ou FD)<\/td>\n<td>Pas de Jacobien (appropri\u00e9 \u00e0 partir des \u00e9tapes)<\/td>\n<td>Pas de Jacobien explicite (JVP uniquement)<\/td>\n<\/tr>\n<tr>\n<td>pr\u00e9conditionnement<\/td>\n<td>Facultatif (am\u00e9liore la r\u00e9solution lin\u00e9aire \u00e0 Newton)<\/td>\n<td>Non applicable (sans jacobie)<\/td>\n<td>Requis pour la convergence pratique (PBP fortement recommand\u00e9)<\/td>\n<\/tr>\n<tr>\n<td>Meilleur cas d&rsquo;utilisation<\/td>\n<td>Probl\u00e8mes de petite \u00e0 moyenne avec Jacobien exact disponible<\/td>\n<td>Probl\u00e8mes 1D-2D l\u00e9g\u00e8rement non lin\u00e9aires avec un budget limit\u00e9<\/td>\n<td>Des probl\u00e8mes 3D \u00e0 grande \u00e9chelle avec des millions de degr\u00e9s de libert\u00e9<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Choisir par taille de probl\u00e8me<\/h3>\n<p><strong>Petit probl\u00e8mes (n &lt;&nbsp;; 10&nbsp;\u2074)&nbsp;:<\/strong> Newton complet avec jacobien analytique ou symbolique. Le co\u00fbt est domin\u00e9 par l&rsquo;assemblage matriciel, de sorte que la convergence quadratique l&#8217;emporte sur le co\u00fbt de configuration.<\/p>\n<p><strong>Probl\u00e8mes moyens (10\u2074 &lt; n &lt; 10\u2076):<\/strong> Broyden peut \u00eatre comp\u00e9titif si la non-lin\u00e9arit\u00e9 est l\u00e9g\u00e8re. Newton avec une factorisation directe clairsem\u00e9e est plus robuste mais co\u00fbte plus cher par it\u00e9ration.<\/p>\n<p><strong>De gros probl\u00e8mes (n &gt; 10\u2076):<\/strong> JFNK avec un pr\u00e9conditionnement bas\u00e9 sur la physique est le choix standard. L&rsquo;assemblage jacobien complet est prohibitif et la d\u00e9rive de l&rsquo;\u00e9tat de Broyden n&rsquo;est pas fiable.<\/p>\n<h3>Choisir par non-lin\u00e9arit\u00e9<\/h3>\n<p><strong>Non lin\u00e9arit\u00e9 l\u00e9g\u00e8re (termes de r\u00e9action faiblement domin\u00e9s par la diffusion)&nbsp;:<\/strong> Newton ou Broyden fonctionnent bien. La convergence quadratique de Newton le rend attrayant pour les petits syst\u00e8mes.<\/p>\n<p><strong> La non-lin\u00e9arit\u00e9 forte (champ de phase coupl\u00e9, r\u00e9action-diffusion avec une cin\u00e9tique rigide)&nbsp;:<\/strong> Newton avec la mondialisation (recherche de ligne ou r\u00e9gion de confiance) est essentielle. L&rsquo;approximation de Broyden peut induire la direction de recherche en erreur.<\/p>\n<p><strong> Non-lin\u00e9arit\u00e9 opaque (simulation en bo\u00eete noire, inconnue <code>F<\/code>):<\/strong> JFNK ou Broyden, car ils ne n\u00e9cessitent pas de construction jacobienne explicite.<\/p>\n<h3>Choisir par des contraintes de m\u00e9moire<\/h3>\n<p><strong>M\u00e9moire limit\u00e9e (single-n\u0153ud, &lt; 64&nbsp;Go)&nbsp;:<\/strong> JFNK ne n\u00e9cessite que le stockage O(n) pour les vecteurs. Newton n\u00e9cessite O(nz(j)) pour le stockage jacobien clairsem\u00e9 plus O(nNZ(L)) pour la factorisation.<\/p>\n<p><strong>M\u00e9moire compl\u00e8te (noeud de cluster, &gt; 256&nbsp;Go)&nbsp;:<\/strong> Newton complet devient r\u00e9alisable pour des probl\u00e8mes avec N jusqu&rsquo;\u00e0 10&nbsp;\u2077, \u00e0 condition que le Jacobien soit clairsem\u00e9.<\/p>\n<h2>Exemples de code&nbsp;: \u00e0 quoi ressemblent ces m\u00e9thodes en pratique<\/h2>\n<h3>Scipy : la m\u00e9thode de Broyden<\/h3>\n<p>Scipy fournit <code>broyden1<\/code> pour la recherche de racine avec la mise \u00e0 jour quasi-Newton de Broyden&nbsp;:<\/p>\n<pre><code class=\"language-python\">from scipy.optimize import broyden1, root\n\ndef f(x):\n    \"\"\"System F(x) = 0\"\"\"\n    return [x[0]**2 + x[1] - 1,\n            x[0] + x[1]**2 - 2]\n\nresult = broyden1(f, [0.5, 0.5])\nprint(f\"Solution: {result.x}\")\n<\/code><\/pre>\n<p>La fonction <code>broyden1<\/code> construit l&rsquo;approximation jacobienne inverse gr\u00e2ce aux mises \u00e0 jour de rang&nbsp;1. Pour les petits syst\u00e8mes, il \u00e9vite l&rsquo;assemblage complet de Jacobien. Pour les grands syst\u00e8mes, la d\u00e9rive de l&rsquo;\u00e9tat peut entra\u00eener une d\u00e9faillance de la convergence.<\/p>\n<p>L&rsquo;interface <code>root<\/code> prend \u00e9galement en charge <code>'hybr'<\/code> (Levenberg-Trust-r\u00e9gion de Minpack) et <code>'lm'<\/code> (Levenberg-Marquardt), qui peuvent tous deux mieux g\u00e9rer les probl\u00e8mes structur\u00e9s des moindres carr\u00e9s que Broyden.<\/p>\n<h3>Fenics : Newton avec Jacobien symbolique<\/h3>\n<p>Fenics g\u00e9n\u00e8re symboliquement le Jacobien \u00e0 partir de la forme variationnelle :<\/p>\n<pre><code class=\"language-python\">from fenics import *\n\nmesh = UnitSquareMesh(32, 32)\nV = FunctionSpace(mesh, \"P\", 1)\n\nu = TrialFunction(V)\nv = TestFunction(V)\n\nf = Constant(1.0)\na = dot(grad(u), grad(v)) * dx\nL = f * v * dx\n\nu_solution = Function(V)\nsolve(a == L, u_solution)\n\n# Nonlinear: Newton iterate with automatic Jacobian\nU = Function(V)  # current solution\nu = TrialFunction(V)\n\nF = dot(grad(U), grad(v)) * dx - f * v * dx  # residual\nA = derivative(F, U, u)  # Jacobian (symbolic)\n\nproblem = NonlinearProblem(F, U, bcs)\nsolver = NewtonSolver(MPI.comm.world)\nsolver.parameters[\"linear_solver\"] = \"petsc\"\nsolver.solve(problem)\n<\/code><\/pre>\n<p>L&rsquo;appel <code>derivative(F, U, u)<\/code> g\u00e9n\u00e8re le Jacobien exact gr\u00e2ce \u00e0 la diff\u00e9renciation automatique. C&rsquo;est la caract\u00e9ristique la plus puissante de Fenics pour les probl\u00e8mes non lin\u00e9aires.<\/p>\n<h3>PETSC\/SNES : Newton-Krylov avec pr\u00e9conditionnement<\/h3>\n<p>Le package SNES de PETSC met en \u0153uvre le mod\u00e8le complet de Newton-Krylov :<\/p>\n<pre><code class=\"language-python\">from pysns import SNES\n\n# Define residual function\ndef residual(x):\n    # Return F(x) \u2014 the nonlinear residual\n    return F_of_x(x)\n\n# Create SNES solver\nsnes = SNESCreate()\nsnesSetFunction(snes, x, residual)\n\n# Set Newton-Krylov with preconditioning\nSNESSetType(snes, SNESNEWTONKRYLOV)\nSNESSetKrylovDimension(snes, 50)  # GMRES max iterations\n\n# Configure preconditioner (physics-based)\nksp = SNESGetKSP(snes)\nKSPSetType(ksp, KSPPRECONDEL)  # ILU preconditioner\nKSPSetPreconditioner(ksp, PCILU)\n\n# Solve\nSNESSetUp(snes)\nSNESSolve(snes)\n<\/code><\/pre>\n<p>Le type Newton-Krylov bascule automatiquement entre les variantes compl\u00e8tes de Newton (assembl\u00e9e Jacobienne), de Newton sans Jacobian et de Broyden en fonction de la configuration <code>SNESSetUser Jacobian<\/code>. La configuration du pr\u00e9conditionneur contr\u00f4le le taux de convergence de Krylov.<\/p>\n<h3>NonLinearSolve.jl : le motif polyalgorithme<\/h3>\n<p>L&rsquo;\u00e9cosyst\u00e8me des diff\u00e9renciations de Julia utilise un polyalgorithme qui encha\u00eene les m\u00e9thodes :<\/p>\n<pre><code class=\"language-julia\">using DifferentialEquations\n\n# Define the nonlinear system\nf! = (residual, x) -&gt; begin\n    residual[1] = x[1]^2 + x[2] - 1\n    residual[2] = x[1] + x[2]^2 - 2\nend\n\n# Newton-Krylov with Eisenstein-Walker forcing\nprob = NonlinearProblem(f!, [0.5, 0.5])\nsol = solve(prob, NewtonRaphson(); abstol=1e-8, reltol=1e-6)\n\n# For large-scale systems: Jacobian-free Newton-Krylov\nsol = solve(prob, JFNK(); abstol=1e-8)\n<\/code><\/pre>\n<p>L&rsquo;algorithme <code>JFNK<\/code> calcule les produits \u00e0 vecteur jacobien par des diff\u00e9rences finies et d\u00e9l\u00e8gue \u00e0 un solveur de sous-espace de Krylov. Pour les syst\u00e8mes rigides, le polyalgorithme revient \u00e0 <code>TrustRegion<\/code> si JFNK d\u00e9croche.<\/p>\n<h2>Performances empiriques : JFNK vs Op\u00e9rateur-Split<\/h2>\n<p>Une r\u00e9f\u00e9rence concr\u00e8te de la litt\u00e9rature d\u00e9montre l&rsquo;avantage pratique de JFNK. Dans les calculs de transfert radiatif non-LTE (NLTE), une \u00e9tude de 2024 en astronomie &amp; L&rsquo;astrophysique (A&amp;a) a compar\u00e9 Newton-Krylov sans Jacobiens \u00e0 des approches de fractionnement d&rsquo;op\u00e9rateur. JFNK a converg\u00e9 approximativement <strong>2\u00d7<\/strong> que le fractionnement de l&rsquo;op\u00e9rateur pour la m\u00eame cible de pr\u00e9cision, tout en utilisant une m\u00e9moire comparable. Le r\u00e9sultat met en \u00e9vidence que les solveurs non lin\u00e9aires monolithiques peuvent surpasser les approches partitionn\u00e9es lorsque la non-lin\u00e9arit\u00e9 est forte et que le pr\u00e9conditionneur est bien adapt\u00e9 \u00e0 la physique.<\/p>\n<h2>R\u00e9sum\u00e9&nbsp;: Quelle m\u00e9thode recommandons-nous&nbsp;?<\/h2>\n<p>La recommandation d\u00e9pend de l&rsquo;\u00e9chelle et de la structure de votre probl\u00e8me&nbsp;:<\/p>\n<ul>\n<li><strong>Petits probl\u00e8mes avec Jacobien exact disponible&nbsp;:<\/strong> Newton-Raphson. La convergence quadratique et le bassin de convergence robuste l&#8217;emportent sur le co\u00fbt jacobien.<\/li>\n<li><strong>Syst\u00e8mes 1D-2D non lin\u00e9aires l\u00e9g\u00e8rement non lin\u00e9aires&nbsp;:<\/strong> La m\u00e9thode de Broyden est rentable. Acceptez le risque de d\u00e9rive des conditions pour les petits et moyens probl\u00e8mes o\u00f9 chaque it\u00e9ration est bon march\u00e9.<\/li>\n<li><strong>Syst\u00e8mes 3D \u00e0 grande \u00e9chelle avec des millions de degr\u00e9s de libert\u00e9&nbsp;:<\/strong> JFNK avec un pr\u00e9conditionnement bas\u00e9 sur la physique. C&rsquo;est la seule option viable lorsque l&rsquo;assemblage complet de Jacobien est prohibitif et que la d\u00e9rive de l&rsquo;\u00e9tat de Broyden est inacceptable.<\/li>\n<li><strong>Codes de simulation en bo\u00eete noire&nbsp;:<\/strong> JFNK ou Broyden. Les deux \u00e9vitent la construction jacobienne explicite.<\/li>\n<li><strong>Exigences de simulation critiques&nbsp;:<\/strong> Newton avec la mondialisation de recherche en ligne. La convergence quadratique et la stabilit\u00e9 mondiale des m\u00e9thodes de la r\u00e9gion de confiance valent le co\u00fbt suppl\u00e9mentaire.<\/li>\n<\/ul>\n<p>Pour la plupart des workflows PDE de production, le mod\u00e8le de polyalgorithme &#8211; Fast Broyden repli vers Newton Fallback to TrustRegion &#8211; offre le meilleur \u00e9quilibre entre vitesse, robustesse et fiabilit\u00e9.<\/p>\n<h2>Guides connexes<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" target=\"_blank\" rel=\"nofollow noopener\">M\u00e9thodes d&rsquo;int\u00e9gration temporelle pour les solveurs PDE&nbsp;: sch\u00e9mas explicites ou implicites<\/a>&nbsp;: guide de base pour les sch\u00e9mas implicites qui n\u00e9cessitent des solveurs non lin\u00e9aires.<\/li>\n<li><a href=\"https:\/\/matforge.org\/implicit-vs-explicit-methods-stability-accuracy\/\" target=\"_blank\" rel=\"nofollow noopener\">Implicite vs M\u00e9thodes explicites&nbsp;: stabilit\u00e9, pr\u00e9cision, et quand utiliser chacun<\/a> &#8211; discute des r\u00e9gions de stabilit\u00e9 et lorsque des m\u00e9thodes implicites deviennent n\u00e9cessaires.<\/li>\n<li><a href=\"https:\/\/matforge.org\/choosing-right-python-pde-solver-fipy-py-pde-fenics\/\" target=\"_blank\" rel=\"nofollow noopener\">Choisir le bon solveur Python PDE&nbsp;: FIPY vs PY-PDE vs Fenics<\/a> \u2014 compare les biblioth\u00e8ques de solveurs, y compris leurs backends de solveurs non lin\u00e9aires.<\/li>\n<li><a href=\"https:\/\/matforge.org\/managing-large-scale-pde-problems-strategies-solvers-and-hpc-case-studies\/\" target=\"_blank\" rel=\"nofollow noopener\">Gestion des probl\u00e8mes de PDE \u00e0 grande \u00e9chelle&nbsp;: strat\u00e9gies, solveurs et \u00e9tudes de cas HPC<\/a> \u2014 couvre les solveurs non lin\u00e9aires \u00e0 grande \u00e9chelle avec l&rsquo;infrastructure HPC.<\/li>\n<li><a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\" target=\"_blank\" rel=\"nofollow noopener\">M\u00e9thodes de fractionnement des op\u00e9rateurs&nbsp;: sch\u00e9mas de fractionnement de Strang et IMEX<\/a>&nbsp;: alternatives \u00e0 la r\u00e9solution non lin\u00e9aire monolithique.<\/li>\n<\/ul>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>fardeau, r., &amp; Faires, J.&nbsp;D. (2011). <em>Analyse num\u00e9rique<\/em> (9e \u00e9d.). Cengager l&rsquo;apprentissage. Le chapitre 8 couvre la m\u00e9thode de Newton et les m\u00e9thodes quasi-Newton.<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Broyden%27s_method\" target=\"_blank\" rel=\"nofollow noopener\">Wikipedia&nbsp;: m\u00e9thode de Broyden<\/a> \u2014 Aper\u00e7u de la famille de recherche de racines quasi-Newton.<\/li>\n<li><a href=\"https:\/\/docs.scipy.org\/doc\/scipy\/reference\/generated\/scipy.optimize.broyden1.html\" target=\"_blank\" rel=\"nofollow noopener\">scipy&nbsp;: scipy.optimize.broyden1<\/a> \u2014 Documentation pour le solveur Broyden de Scipy.<\/li>\n<li><a href=\"https:\/\/petsc.org\/main\/docs\/fieldsn\/snes\/snes.html\" target=\"_blank\" rel=\"nofollow noopener\">documentation PETSC SNES<\/a> \u2014 \u00e9quation non lin\u00e9aire du SNU Solveur pour les mod\u00e8les Newton-Krylov.<\/li>\n<li><a href=\"https:\/\/docs.python-fenics.org\/prob\/fem-solutions\/nonlinear-variables\/\" target=\"_blank\" rel=\"nofollow noopener\">Fenics Non lin\u00e9aire Solveurs<\/a> &#8211; g\u00e9n\u00e9ration jacobienne automatique gr\u00e2ce \u00e0 la diff\u00e9renciation symbolique.<\/li>\n<li><a href=\"https:\/\/diffeq.sciml.ai\/stable\/solvers\/nonsolve_overview\/#jfnk\" target=\"_blank\" rel=\"nofollow noopener\">differentialequations.jl&nbsp;: JFNK<\/a> \u2014 Newton-Krylov sans Jacobiens pour les solveurs PDE bas\u00e9s sur Julia.<\/li>\n<\/ul>\n<h2>Vous voulez de l&rsquo;aide pour mettre en place un solveur non lin\u00e9aire pour votre recherche&nbsp;?<\/h2>\n<p>Choisir la bonne m\u00e9thode de solveur non lin\u00e9aire peut faire la diff\u00e9rence entre une simulation qui se termine en heures et une autre qui ne converge jamais. Si vous \u00eates aux prises avec la divergence de Newton Iteration, Broyden Condition Drift ou JFNK Preconditioner Tuning, notre \u00e9quipe peut vous aider.<\/p>\n<p>Nous nous sp\u00e9cialisons dans la cr\u00e9ation de cadres de v\u00e9rification pour les codes Python et Julia scientifiques, y compris les workflows de solveurs non lin\u00e9aires pour les simulations PDE. <a href=\"https:\/\/matforge.org\/category\/issue-tracking-tickets-technical-requests\/\" target=\"_blank\" rel=\"nofollow noopener\">Contactez-vous via notre syst\u00e8me de suivi des probl\u00e8mes<\/a> pour discuter des besoins de votre projet.<\/p>\n","protected":false,"raw":"<p>Lorsque vous discr\u00e9ditez une \u00e9quation aux d\u00e9riv\u00e9es partielles non lin\u00e9aires, vous obtenez un syst\u00e8me alg\u00e9brique non lin\u00e9aire. Pour le r\u00e9soudre, il faut choisir la bonne m\u00e9thode de solveur. La m\u00e9thode de Newton converge quadratiquement mais exige un plein Jacobien. La m\u00e9thode de Broyden construit le Jacobien moins cher mais peut d\u00e9stabiliser. L'approche de Newton-Krylov sans Jacobien (JFNK) \u00e9vite enti\u00e8rement le Jacobien, ne s'appuyant que sur des produits \u00e0 vecteur jacobien avec un pr\u00e9conditionnement bas\u00e9 sur la physique pour garder la convergence tractable.<\/p>\n<p>Le choix n'est pas th\u00e9orique. Il d\u00e9termine si votre simulation converge du tout, combien de m\u00e9moire elle consomme et si elle se termine en quelques minutes ou en jours.<\/p>\n<p><strong><a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" target=\"_blank\" rel=\"nofollow noopener\">Lien vers l'article existant&nbsp;: M\u00e9thodes d'int\u00e9gration du temps pour les solveurs PDE<\/a><\/strong> Couvre le paysage plus large des sch\u00e9mas explicites par rapport aux sch\u00e9mas implicites et de la division des op\u00e9rateurs. <strong><a href=\"https:\/\/matforge.org\/implicit-vs-explicit-methods-stability-accuracy\/\" target=\"_blank\" rel=\"nofollow noopener\">Lien vers l'article existant&nbsp;: m\u00e9thodes implicites ou explicites<\/a><\/strong> Discute des r\u00e9gions de stabilit\u00e9, des crit\u00e8res de pr\u00e9cision et lorsque des sch\u00e9mas implicites deviennent n\u00e9cessaires. Cet article se concentre sp\u00e9cifiquement sur les solveurs non lin\u00e9aires qui se trouvent dans chaque sch\u00e9ma implicite.<\/p>\n<h2>Lorsque les m\u00e9thodes implicites exigent un solveur non lin\u00e9aire<\/h2>\n<p>L'int\u00e9gration implicite du temps n\u00e9cessite la r\u00e9solution d'un syst\u00e8me non lin\u00e9aire \u00e0 chaque pas de temps. Consid\u00e9rez la discr\u00e9tisation d'Euler r\u00e9trograde d'un PDE g\u00e9n\u00e9rique&nbsp;:<\/p>\n<pre><code>F(u\u207f\u207a\u00b9) = 0<\/code><\/pre>\n<p>L'inconnu <code>u\u207f\u207a\u00b9<\/code> appara\u00eet \u00e0 l'int\u00e9rieur de l'op\u00e9rateur <code>F<\/code> par des termes de diffusion, une cin\u00e9tique de r\u00e9action ou des \u00e9quations multi-physiques coupl\u00e9es. Apr\u00e8s discr\u00e9tisation spatiale (volume fini, \u00e9l\u00e9ment fini ou diff\u00e9rence finie), le syst\u00e8me devient :<\/p>\n<pre><code>F(x) = 0, where x \u2208 \u211d\u207f<\/code><\/pre>\n<p>La dimension <code>n<\/code> est le nombre de degr\u00e9s de libert\u00e9 - g\u00e9n\u00e9ralement le produit des cellules de la grille, des champs physiques et des it\u00e9rations de pas de temps. Dans une simulation en champ de phase 3D avec 500&nbsp;\u00b3 de cellules et deux champs coupl\u00e9s, <code>n<\/code> peut facilement d\u00e9passer 10&nbsp;\u2078.<\/p>\n<p>Le d\u00e9fi est que <code>F<\/code> est non lin\u00e9aire. Vous ne pouvez pas \u00e9crire <code>x = F\u207b\u00b9(0)<\/code>. Au lieu de cela, vous avez besoin d'un algorithme it\u00e9ratif qui construit une s\u00e9quence convergeant vers la racine.<\/p>\n<h2>La m\u00e9thode de Newton&nbsp;: la ligne de base<\/h2>\n<p>La m\u00e9thode de Newton est la r\u00e9f\u00e9rence par rapport \u00e0 laquelle tous les autres solveurs non lin\u00e9aires sont mesur\u00e9s. Pour le syst\u00e8me <code>F(x) = 0<\/code>, il construit la matrice jacobienne&nbsp;:<\/p>\n<pre><code>J = \u2202F\/\u2202x<\/code><\/pre>\n<p>et it\u00e8re&nbsp;:<\/p>\n<pre><code>x\u2096\u208a\u2081 = x\u2096 \u2212 J\u207b\u00b9\u00b7F(x\u2096)<\/code><\/pre>\n<p>La propri\u00e9t\u00e9 cl\u00e9 est <strong>convergence quadratique<\/strong>. Si le Jacobien est continu de Lipschitz et que la supposition initiale est dans le bassin de convergence, l'erreur satisfait :<\/p>\n<pre><code>\u2016x\u2096\u208a\u2081 \u2212 x*\u2016 \u2264 C \u00b7 \u2016x\u2096 \u2212 x*\u2016\u00b2<\/code><\/pre>\n<p>Cela signifie que le nombre de chiffres corrects double \u00e0 chaque it\u00e9ration. Pour les syst\u00e8mes PDE bien \u00e9lev\u00e9s, la m\u00e9thode de Newton converge souvent en 3 \u00e0 5 it\u00e9rations.<\/p>\n<h3>Jacobien complet : diff\u00e9rence analytique ou finie<\/h3>\n<p>La construction du Jacobien est la partie la plus ch\u00e8re de la m\u00e9thode de Newton. Les options sont :<\/p>\n<p><strong>Jacobien analytique.<\/strong> Vous d\u00e9rivez <code>\u2202F\/\u2202x<\/code> \u00e0 la main ou par la diff\u00e9renciation automatique. Dans des biblioth\u00e8ques comme Fenics, la formulation variationnelle g\u00e9n\u00e8re automatiquement le Jacobien par la diff\u00e9renciation symbolique. Le r\u00e9sultat est exact (jusqu'\u00e0 une pr\u00e9cision en virgule flottante).<\/p>\n<p><strong>Diff\u00e9rence finie Jacobien.<\/strong> Vous perturbez chaque colonne de <code>J<\/code> par <code>\u03b5<\/code> et r\u00e9\u00e9valuez <code>F<\/code>&nbsp;:<\/p>\n<pre><code>J\u1d62 \u2248 (F(x + \u03b5\u00b7e\u1d62) \u2212 F(x)) \/ \u03b5<\/code><\/pre>\n<p>Cela n\u00e9cessite <code>n<\/code> des \u00e9valuations de fonctions suppl\u00e9mentaires par it\u00e9ration newton. Pour les grands <code>n<\/code>, cela domine le co\u00fbt.<\/p>\n<p><strong>Bloquer Jacobian.<\/strong> Dans les syst\u00e8mes coupl\u00e9s avec <code>k<\/code> champs, le Jacobien est structur\u00e9 en bloc&nbsp;:<\/p>\n<pre><code>J = [ \u2202F\u2081\/\u2202x\u2081  \u2202F\u2081\/\u2202x\u2082  ... ]\n    [ \u2202F\u2082\/\u2202x\u2081  \u2202F\u2082\/\u2202x\u2082  ... ]\n    [          ...       ... ]<\/code><\/pre>\n<p>Si vous n'avez besoin que de blocs diagonaux <code>\u2202F\u1d62\/\u2202x\u1d62<\/code>, vous pouvez les \u00e9valuer ind\u00e9pendamment - une technique appel\u00e9e <strong>gel diagonal<\/strong> ou <strong>solveurs enti\u00e8rement coupl\u00e9s ou s\u00e9par\u00e9s<\/strong>.<\/p>\n<h3>Convergence mondiale&nbsp;: recherche de lignes et r\u00e9gions de confiance<\/h3>\n<p>La m\u00e9thode de Pure Newton est une m\u00e9thode locale. Si la supposition initiale est loin de la solution, les it\u00e9rations peuvent diverger m\u00eame si la convergence quadratique est proche de la racine.<\/p>\n<p><strong>Recherche de ligne<\/strong> modifie l'\u00e9tape Newton en la mettant \u00e0 l'\u00e9chelle&nbsp;:<\/p>\n<pre><code>x\u2096\u208a\u2081 = x\u2096 \u2212 \u03b1\u00b7J\u207b\u00b9\u00b7F(x\u2096)<\/code><\/pre>\n<p>o\u00f9 <code>\u03b1 \u2208 (0, 1]<\/code> est choisi pour r\u00e9duire une fonction de m\u00e9rite. L'approche classique minimise <code>\u2016F(x\u2096 \u2212 \u03b1\u00b7J\u207b\u00b9\u00b7F(x\u2096))\u2016<\/code>.<\/p>\n<p><strong>Les r\u00e9gions de confiance<\/strong> d\u00e9finissent un rayon <code>\u0394<\/code> dans lequel le mod\u00e8le quadratique est approuv\u00e9&nbsp;:<\/p>\n<pre><code>min q(s) = F(x\u2096) + J\u00b7s + \u00bd\u00b7s\u1d40\u00b7H\u00b7s\nsubject to \u2016s\u2016 \u2264 \u0394<\/code><\/pre>\n<p>Lorsque la r\u00e9duction de la fonction de m\u00e9rite est insuffisante, le rayon se r\u00e9tr\u00e9cit. Quand c'est suffisant, le rayon grandit.<\/p>\n<p>Le package <code>SNES<\/code> de PETSC (solveur d'\u00e9quations non lin\u00e9aires SNU) fournit \u00e0 la fois la mondialisation de recherche en ligne et de r\u00e9gion de confiance. Le choix affecte le nombre total d'it\u00e9rations plus que le co\u00fbt par it\u00e9ration.<\/p>\n<h3>Newton pratique : quand \u00e7a marche et quand \u00e7a ne marche pas<\/h3>\n<p>La m\u00e9thode de Newton excelle lorsque&nbsp;:<\/p>\n<ul>\n<li>Le Jacobien est disponible sous une forme exacte (symbolique, AD ou bloc-analytique)<\/li>\n<li>Les non-lin\u00e9arit\u00e9s sont l\u00e9g\u00e8res (diffusion, termes de r\u00e9action l\u00e9gers)<\/li>\n<li>La m\u00e9moire est suffisante pour le Jacobien complet (ou sa factorisation clairsem\u00e9e)<\/li>\n<\/ul>\n<p>La m\u00e9thode de Newton est difficile lorsque :<\/p>\n<ul>\n<li><code>n<\/code> d\u00e9passe 10&nbsp;\u2076 et l'assemblage complet de Jacobien est prohibitif<\/li>\n<li>La fonction <code>F<\/code> est opaque (code de simulation en bo\u00eete noire)<\/li>\n<li>Chaque \u00e9valuation de fonction domine d\u00e9j\u00e0 le temps d'ex\u00e9cution<\/li>\n<\/ul>\n<p>Pour les PDE \u00e0 grande \u00e9chelle, l'approche jacobienne compl\u00e8te est souvent trop ch\u00e8re. C'est l\u00e0 que les m\u00e9thodes quasi-newton entrent.<\/p>\n<h2>Les m\u00e9thodes quasi-Newton de Broyden<\/h2>\n<p>La m\u00e9thode de Broyden appartient \u00e0 la classe plus large des m\u00e9thodes quasi-Newton. Au lieu de calculer <code>J = \u2202F\/\u2202x<\/code>, il cr\u00e9e une approximation <code>B\u2096 \u2248 J<\/code> par les mises \u00e0 jour de rang&nbsp;1 de la condition s\u00e9cante&nbsp;:<\/p>\n<pre><code>B\u2096\u208a\u2081 \u00b7 (x\u2096\u208a\u2081 \u2212 x\u2096) = F(x\u2096\u208a\u2081) \u2212 F(x\u2096)<\/code><\/pre>\n<p>La condition s\u00e9cante est une \u00e9quation pour <code>n<\/code> inconnue dans <code>B\u2096\u208a\u2081<\/code>. La formulation de Broyden choisit la mise \u00e0 jour qui minimise le changement de norme Frobenius :<\/p>\n<pre><code>min \u2016B\u2096\u208a\u2081 \u2212 B\u2096\u2016_F\nsubject to B\u2096\u208a\u2081\u00b7(x\u2096\u208a\u2081 \u2212 x\u2096) = F(x\u2096\u208a\u2081) \u2212 F(x\u2096)<\/code><\/pre>\n<h3>bon contre mauvais broyden<\/h3>\n<p>La m\u00e9thode d'origine de Broyden (parfois appel\u00e9e \"bon Broyden\") est mise \u00e0 jour <code>B\u2096<\/code> \u00e0 l'aide de l'\u00e9quation s\u00e9cante. La variante inverse (\"Bad Broyden\") est mise \u00e0 jour directement <code>B\u2096\u207b\u00b9<\/code>&nbsp;:<\/p>\n<pre><code>B\u2096\u208a\u2081\u207b\u00b9 = B\u2096\u207b\u00b9 + (\u03b4y \u2212 B\u2096\u207b\u00b9\u00b7\u03b4x)\u00b7\u03b4x\u1d40 \/ (\u03b4x\u1d40\u00b7\u03b4x)<\/code><\/pre>\n<p>o\u00f9 <code>\u03b4x = x\u2096\u208a\u2081 \u2212 x\u2096<\/code> et <code>\u03b4y = F(x\u2096\u208a\u2081) \u2212 F(x\u2096)<\/code>.<\/p>\n<p>La mise \u00e0 jour inverse est ce que Python utilise <code>scipy.optimize.broyden1<\/code>. Cela \u00e9vite d'inverser l'approximation jacobienne \u00e0 chaque \u00e9tape - une \u00e9conomie importante pour les gros probl\u00e8mes.<\/p>\n<h3>L'instabilit\u00e9 du nombre de conditions<\/h3>\n<p>La limitation pratique la plus importante de la m\u00e9thode de Broyden est que son approximation jacobienne peut devenir mal conditionn\u00e9e. La mise \u00e0 jour de rang 1 ne modifie qu'une seule direction, tandis que le reste de la matrice d\u00e9rive. Au cours de nombreuses it\u00e9rations, <code>B\u2096<\/code> accumule des informations de courbure obsol\u00e8tes.<\/p>\n<p>Le nombre de conditions <code>\u03ba(B\u2096) = \u2016B\u2096\u2016 \u00b7 \u2016B\u2096\u207b\u00b9\u2016<\/code> peut cro\u00eetre sans borne. Un nombre de conditions exc\u00e9dant 10\u2078 provoque le blocage des solveurs de Krylov comme les GMRES, m\u00eame si le probl\u00e8me sous-jacent est bien conditionn\u00e9.<\/p>\n<p>C'est la raison concr\u00e8te de pr\u00e9f\u00e9rer Newton ou JFNK \u00e0 Broyden dans les simulations de production. Pour les probl\u00e8mes l\u00e9g\u00e8rement non lin\u00e9aires avec peu de degr\u00e9s de libert\u00e9 par champ (par exemple, diffusion 1D, r\u00e9gime permanent 2D), la m\u00e9thode de Broyden peut \u00eatre comp\u00e9titive. Pour les syst\u00e8mes 3D avec 10\u2076+ degr\u00e9s de libert\u00e9, la d\u00e9rive de condition la rend peu fiable.<\/p>\n<h3>Broyden \u00e0 m\u00e9moire limit\u00e9e (L-BFGS)<\/h3>\n<p>Pour une optimisation \u00e0 grande \u00e9chelle, L-BFGS stocke les derni\u00e8res paires de pas <code>m<\/code> <code>(\u03b4x\u1d62, \u03b4y\u1d62)<\/code> et construit implicitement l'inverse de Jacobien \u00e0 travers une r\u00e9cursivit\u00e9. Cela \u00e9vite de stocker la matrice compl\u00e8te <code>n \u00d7 n<\/code>.<\/p>\n<p>Cependant, L-BFGS est con\u00e7u pour l'optimisation (minimation d'un objectif scalaire), et non la recherche de racine (r\u00e9solution <code>F(x) = 0<\/code>). Pour la recherche de racines PDE, la mise \u00e0 jour de Broyden \u00e0 m\u00e9moire limit\u00e9e utilis\u00e9e dans les solveurs comme le solveur <code>BFGS<\/code> de PETSC (et non L-BFGS) est plus courante.<\/p>\n<h2>Newton-Krylov sans Jacobian : la norme \u00e0 grande \u00e9chelle moderne<\/h2>\n<p>La m\u00e9thode Newton-Krylov (JFNK) sans Jacobien aborde le goulot d'\u00e9tranglement de la m\u00e9moire de Jacobien Newton en assemblant jamais le Jacobien. Au lieu de cela, il utilise une m\u00e9thode de sous-espace Krylov (g\u00e9n\u00e9ralement GMRES) pour r\u00e9soudre le syst\u00e8me Newton&nbsp;:<\/p>\n<pre><code>J \u00b7 \u0394x = \u2212F(x)<\/code><\/pre>\n<p>GMRES ne n\u00e9cessite que les produits Matrix-Vector <code>J\u00b7v<\/code>. Ceux-ci sont calcul\u00e9s via le produit <strong>Jacobian-Vector<\/strong>&nbsp;:<\/p>\n<pre><code>J \u00b7 v \u2248 (F(x + \u03b5\u00b7v) \u2212 F(x)) \/ \u03b5<\/code><\/pre>\n<p>Aucun Jacobien explicite n'est assembl\u00e9. Seuls <code>F<\/code> et le vecteur de perturbation <code>v<\/code> sont n\u00e9cessaires.<\/p>\n<h3>Pourquoi le pr\u00e9conditionnement est obligatoire<\/h3>\n<p>JFNK avec un produit \u00e0 vecteur jacobien nu est rarement pratique. Le syst\u00e8me de Newton peut avoir un grand nombre de conditions, en particulier lorsque le Jacobien a des valeurs propres tr\u00e8s variables \u00e0 partir de diff\u00e9rents processus physiques.<\/p>\n<p><strong>Pr\u00e9conditionnement bas\u00e9 sur la physique (PBP)<\/strong> aborde ce probl\u00e8me en tenant compte des op\u00e9rateurs connus. Envisagez un syst\u00e8me de convection-diffusion-r\u00e9action&nbsp;:<\/p>\n<pre><code>J = J_convection + J_diffusion + J_reaction<\/code><\/pre>\n<p>PBP remplace le pr\u00e9conditionneur par :<\/p>\n<pre><code>M = J_diffusion<\/code><\/pre>\n<p>L'op\u00e9rateur de diffusion domine g\u00e9n\u00e9ralement le spectre et est souvent tridiagonal ou tridiagonal par champ. Son inverse peut \u00eatre calcul\u00e9 efficacement par la factorisation directe clairsem\u00e9e ou l'ILU, tandis que les termes de convection et de r\u00e9action sont trait\u00e9s explicitement.<\/p>\n<p>Le syst\u00e8me pr\u00e9conditionn\u00e9 devient :<\/p>\n<pre><code>M\u207b\u00b9 \u00b7 J \u00b7 \u0394x = \u2212M\u207b\u00b9 \u00b7 F(x)<\/code><\/pre>\n<p>Le nombre de conditions de <code>M\u207b\u00b9\u00b7J<\/code> est consid\u00e9rablement r\u00e9duit car l'op\u00e9rateur de diffusion - la source du pire conditionnement - a \u00e9t\u00e9 pris en compte dans <code>M<\/code>.<\/p>\n<p>Sans pr\u00e9conditionnement, JFNK peut n\u00e9cessiter des centaines ou des milliers d'it\u00e9rations GMRES. Avec le PBP, il converge souvent en 10 \u00e0 50 it\u00e9rations, correspondant ou d\u00e9passant le Newton Jacobien.<\/p>\n<h3>Le mod\u00e8le Newton-Krylov en pratique<\/h3>\n<ol>\n<li><strong>Construire le r\u00e9sidu newton<\/strong> <code>r = F(x\u2096)<\/code><\/li>\n<li><strong>R\u00e9soudre<\/strong> <code>J \u00b7 \u0394x = \u2212r<\/code> <strong>Utiliser GMRES<\/strong><\/li>\n<li><strong>Les produits Jacobian-Vector<\/strong> sont calcul\u00e9s par des perturbations de diff\u00e9rences finies de <code>F<\/code><\/li>\n<li><strong>Preconditionneur<\/strong> <code>M<\/code> est appliqu\u00e9 \u00e0 chaque it\u00e9ration GMRES<\/li>\n<li><strong>Mise \u00e0 jour<\/strong> <code>x\u2096\u208a\u2081 = x\u2096 + \u0394x<\/code><\/li>\n<li><strong>V\u00e9rifier la convergence<\/strong> sur <code>\u2016r\u2016<\/code><\/li>\n<\/ol>\n<p>Ce mod\u00e8le appara\u00eet dans tous les principaux cadres PDE&nbsp;: FENICS\/Dolfin, Petsc\/SNES, FIPY et NonLinearSolve.jl. La diff\u00e9rence r\u00e9side dans la fa\u00e7on dont le pr\u00e9conditionneur est construit et la fa\u00e7on dont le produit de vecteur jacobien est calcul\u00e9.<\/p>\n<h2>Le mod\u00e8le de polyalgorithme&nbsp;: comment les solveurs modernes se d\u00e9ploient r\u00e9ellement<\/h2>\n<p>Les solveurs de production s'appuient rarement sur une seule m\u00e9thode. Au lieu de cela, ils utilisent un <strong>polyalgorithm<\/strong> qui s'adapte \u00e0 la difficult\u00e9 du probl\u00e8me&nbsp;:<\/p>\n<pre><code>1. Start with fast Broyden (cheap per iteration, no Jacobian)\n2. If convergence stalls, fall back to full Newton (robust quadratic convergence)\n3. If Newton also fails, fall back to TrustRegion (globally convergent)<\/code><\/pre>\n<p>Il s'agit du mod\u00e8le utilis\u00e9 par PETSC <code>SNES<\/code>, <code>DifferentialEquations.jl<\/code> de Sciml et le solveur non lin\u00e9aire de Moose.<\/p>\n<h3>Eisenstat-Walker for\u00e7ant<\/h3>\n<p>La strat\u00e9gie Eisenstat-Walker (parfois appel\u00e9e la \"strat\u00e9gie de force\") adapte la tol\u00e9rance int\u00e9rieure du solveur de Krylov par rapport au r\u00e9sidu de Newton&nbsp;:<\/p>\n<pre><code>\u2016J \u00b7 \u0394x + r\u2016 \u2264 \u03b7\u2096 \u00b7 \u2016r\u2016<\/code><\/pre>\n<p>o\u00f9 <code>\u03b7\u2096<\/code> se d\u00e9tend comme <code>r<\/code> r\u00e9tr\u00e9cit. Les premi\u00e8res it\u00e9rations de Newton utilisent une tol\u00e9rance int\u00e9rieure l\u00e2che (moins de pas de Krylov). Au fur et \u00e0 mesure que le r\u00e9sidu de Newton diminue, la tol\u00e9rance int\u00e9rieure se resserre (plus de pr\u00e9cision de Krylov).<\/p>\n<p>Cela emp\u00eache les travaux perdus de r\u00e9soudre le syst\u00e8me lin\u00e9aire avec une grande pr\u00e9cision lorsque le Newton Iterate est encore loin de la racine.<\/p>\n<h2>Cadre de d\u00e9cision&nbsp;: quand choisir la m\u00e9thode<\/h2>\n<p>Le tableau suivant r\u00e9sume les compromis pratiques :<\/p>\n<h2>Comparaison des m\u00e9thodes<\/h2>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Crit\u00e8re<\/th>\n<th>Newton-Raphson<\/th>\n<th>Broyden (quasi-Newton)<\/th>\n<th>JFNK (Newton-Krylov)<\/th>\n<\/tr>\n<tr>\n<td>taux de convergence<\/td>\n<td>Quadratique (racine proche)<\/td>\n<td>Superlin\u00e9aire (par it\u00e9ration), mais peu fiable pour les grands <code>n<\/code><\/td>\n<td>D\u00e9pend du pr\u00e9conditionneur ; Super lin\u00e9aire avec un bon PBP<\/td>\n<\/tr>\n<tr>\n<td>Empreinte m\u00e9moire<\/td>\n<td>O(n\u00b2) pour Jacobien complet (mais le peu moins le r\u00e9duit)<\/td>\n<td>O(n\u00b2) pour l'approximation inverse de Broyden&nbsp;; O(m\u00b7n) pour les variantes \u00e0 m\u00e9moire limit\u00e9e<\/td>\n<td>O(n) \u2014 Uniquement les vecteurs de fonction et le stockage de Krylov<\/td>\n<\/tr>\n<tr>\n<td>Co\u00fbt par it\u00e9ration<\/td>\n<td>\u00c9lev\u00e9 (assemblage jacobien + factorisation)<\/td>\n<td>Faible (mise \u00e0 jour de rang 1 + \u00e9valuation de la fonction)<\/td>\n<td>Mod\u00e9r\u00e9 (JVP + it\u00e9ration Krylov)<\/td>\n<\/tr>\n<tr>\n<td>Exigence Jacobienne<\/td>\n<td>Jacobien complet (analytique, AD ou FD)<\/td>\n<td>Pas de Jacobien (appropri\u00e9 \u00e0 partir des \u00e9tapes)<\/td>\n<td>Pas de Jacobien explicite (JVP uniquement)<\/td>\n<\/tr>\n<tr>\n<td>pr\u00e9conditionnement<\/td>\n<td>Facultatif (am\u00e9liore la r\u00e9solution lin\u00e9aire \u00e0 Newton)<\/td>\n<td>Non applicable (sans jacobie)<\/td>\n<td>Requis pour la convergence pratique (PBP fortement recommand\u00e9)<\/td>\n<\/tr>\n<tr>\n<td>Meilleur cas d'utilisation<\/td>\n<td>Probl\u00e8mes de petite \u00e0 moyenne avec Jacobien exact disponible<\/td>\n<td>Probl\u00e8mes 1D-2D l\u00e9g\u00e8rement non lin\u00e9aires avec un budget limit\u00e9<\/td>\n<td>Des probl\u00e8mes 3D \u00e0 grande \u00e9chelle avec des millions de degr\u00e9s de libert\u00e9<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Choisir par taille de probl\u00e8me<\/h3>\n<p><strong>Petit probl\u00e8mes (n &lt;&nbsp;; 10&nbsp;\u2074)&nbsp;:<\/strong> Newton complet avec jacobien analytique ou symbolique. Le co\u00fbt est domin\u00e9 par l'assemblage matriciel, de sorte que la convergence quadratique l'emporte sur le co\u00fbt de configuration.<\/p>\n<p><strong>Probl\u00e8mes moyens (10\u2074 &lt; n &lt; 10\u2076):<\/strong> Broyden peut \u00eatre comp\u00e9titif si la non-lin\u00e9arit\u00e9 est l\u00e9g\u00e8re. Newton avec une factorisation directe clairsem\u00e9e est plus robuste mais co\u00fbte plus cher par it\u00e9ration.<\/p>\n<p><strong>De gros probl\u00e8mes (n &gt; 10\u2076):<\/strong> JFNK avec un pr\u00e9conditionnement bas\u00e9 sur la physique est le choix standard. L'assemblage jacobien complet est prohibitif et la d\u00e9rive de l'\u00e9tat de Broyden n'est pas fiable.<\/p>\n<h3>Choisir par non-lin\u00e9arit\u00e9<\/h3>\n<p><strong>Non lin\u00e9arit\u00e9 l\u00e9g\u00e8re (termes de r\u00e9action faiblement domin\u00e9s par la diffusion)&nbsp;:<\/strong> Newton ou Broyden fonctionnent bien. La convergence quadratique de Newton le rend attrayant pour les petits syst\u00e8mes.<\/p>\n<p><strong> La non-lin\u00e9arit\u00e9 forte (champ de phase coupl\u00e9, r\u00e9action-diffusion avec une cin\u00e9tique rigide)&nbsp;:<\/strong> Newton avec la mondialisation (recherche de ligne ou r\u00e9gion de confiance) est essentielle. L'approximation de Broyden peut induire la direction de recherche en erreur.<\/p>\n<p><strong> Non-lin\u00e9arit\u00e9 opaque (simulation en bo\u00eete noire, inconnue <code>F<\/code>):<\/strong> JFNK ou Broyden, car ils ne n\u00e9cessitent pas de construction jacobienne explicite.<\/p>\n<h3>Choisir par des contraintes de m\u00e9moire<\/h3>\n<p><strong>M\u00e9moire limit\u00e9e (single-n\u0153ud, &lt; 64&nbsp;Go)&nbsp;:<\/strong> JFNK ne n\u00e9cessite que le stockage O(n) pour les vecteurs. Newton n\u00e9cessite O(nz(j)) pour le stockage jacobien clairsem\u00e9 plus O(nNZ(L)) pour la factorisation.<\/p>\n<p><strong>M\u00e9moire compl\u00e8te (noeud de cluster, &gt; 256&nbsp;Go)&nbsp;:<\/strong> Newton complet devient r\u00e9alisable pour des probl\u00e8mes avec N jusqu'\u00e0 10&nbsp;\u2077, \u00e0 condition que le Jacobien soit clairsem\u00e9.<\/p>\n<h2>Exemples de code&nbsp;: \u00e0 quoi ressemblent ces m\u00e9thodes en pratique<\/h2>\n<h3>Scipy : la m\u00e9thode de Broyden<\/h3>\n<p>Scipy fournit <code>broyden1<\/code> pour la recherche de racine avec la mise \u00e0 jour quasi-Newton de Broyden&nbsp;:<\/p>\n<pre><code class=\"language-python\">from scipy.optimize import broyden1, root\n\ndef f(x):\n    \"\"\"System F(x) = 0\"\"\"\n    return [x[0]**2 + x[1] - 1,\n            x[0] + x[1]**2 - 2]\n\nresult = broyden1(f, [0.5, 0.5])\nprint(f\"Solution: {result.x}\")\n<\/code><\/pre>\n<p>La fonction <code>broyden1<\/code> construit l'approximation jacobienne inverse gr\u00e2ce aux mises \u00e0 jour de rang&nbsp;1. Pour les petits syst\u00e8mes, il \u00e9vite l'assemblage complet de Jacobien. Pour les grands syst\u00e8mes, la d\u00e9rive de l'\u00e9tat peut entra\u00eener une d\u00e9faillance de la convergence.<\/p>\n<p>L'interface <code>root<\/code> prend \u00e9galement en charge <code>'hybr'<\/code> (Levenberg-Trust-r\u00e9gion de Minpack) et <code>'lm'<\/code> (Levenberg-Marquardt), qui peuvent tous deux mieux g\u00e9rer les probl\u00e8mes structur\u00e9s des moindres carr\u00e9s que Broyden.<\/p>\n<h3>Fenics : Newton avec Jacobien symbolique<\/h3>\n<p>Fenics g\u00e9n\u00e8re symboliquement le Jacobien \u00e0 partir de la forme variationnelle :<\/p>\n<pre><code class=\"language-python\">from fenics import *\n\nmesh = UnitSquareMesh(32, 32)\nV = FunctionSpace(mesh, \"P\", 1)\n\nu = TrialFunction(V)\nv = TestFunction(V)\n\nf = Constant(1.0)\na = dot(grad(u), grad(v)) * dx\nL = f * v * dx\n\nu_solution = Function(V)\nsolve(a == L, u_solution)\n\n# Nonlinear: Newton iterate with automatic Jacobian\nU = Function(V)  # current solution\nu = TrialFunction(V)\n\nF = dot(grad(U), grad(v)) * dx - f * v * dx  # residual\nA = derivative(F, U, u)  # Jacobian (symbolic)\n\nproblem = NonlinearProblem(F, U, bcs)\nsolver = NewtonSolver(MPI.comm.world)\nsolver.parameters[\"linear_solver\"] = \"petsc\"\nsolver.solve(problem)\n<\/code><\/pre>\n<p>L'appel <code>derivative(F, U, u)<\/code> g\u00e9n\u00e8re le Jacobien exact gr\u00e2ce \u00e0 la diff\u00e9renciation automatique. C'est la caract\u00e9ristique la plus puissante de Fenics pour les probl\u00e8mes non lin\u00e9aires.<\/p>\n<h3>PETSC\/SNES : Newton-Krylov avec pr\u00e9conditionnement<\/h3>\n<p>Le package SNES de PETSC met en \u0153uvre le mod\u00e8le complet de Newton-Krylov :<\/p>\n<pre><code class=\"language-python\">from pysns import SNES\n\n# Define residual function\ndef residual(x):\n    # Return F(x) \u2014 the nonlinear residual\n    return F_of_x(x)\n\n# Create SNES solver\nsnes = SNESCreate()\nsnesSetFunction(snes, x, residual)\n\n# Set Newton-Krylov with preconditioning\nSNESSetType(snes, SNESNEWTONKRYLOV)\nSNESSetKrylovDimension(snes, 50)  # GMRES max iterations\n\n# Configure preconditioner (physics-based)\nksp = SNESGetKSP(snes)\nKSPSetType(ksp, KSPPRECONDEL)  # ILU preconditioner\nKSPSetPreconditioner(ksp, PCILU)\n\n# Solve\nSNESSetUp(snes)\nSNESSolve(snes)\n<\/code><\/pre>\n<p>Le type Newton-Krylov bascule automatiquement entre les variantes compl\u00e8tes de Newton (assembl\u00e9e Jacobienne), de Newton sans Jacobian et de Broyden en fonction de la configuration <code>SNESSetUser Jacobian<\/code>. La configuration du pr\u00e9conditionneur contr\u00f4le le taux de convergence de Krylov.<\/p>\n<h3>NonLinearSolve.jl : le motif polyalgorithme<\/h3>\n<p>L'\u00e9cosyst\u00e8me des diff\u00e9renciations de Julia utilise un polyalgorithme qui encha\u00eene les m\u00e9thodes :<\/p>\n<pre><code class=\"language-julia\">using DifferentialEquations\n\n# Define the nonlinear system\nf! = (residual, x) -&gt; begin\n    residual[1] = x[1]^2 + x[2] - 1\n    residual[2] = x[1] + x[2]^2 - 2\nend\n\n# Newton-Krylov with Eisenstein-Walker forcing\nprob = NonlinearProblem(f!, [0.5, 0.5])\nsol = solve(prob, NewtonRaphson(); abstol=1e-8, reltol=1e-6)\n\n# For large-scale systems: Jacobian-free Newton-Krylov\nsol = solve(prob, JFNK(); abstol=1e-8)\n<\/code><\/pre>\n<p>L'algorithme <code>JFNK<\/code> calcule les produits \u00e0 vecteur jacobien par des diff\u00e9rences finies et d\u00e9l\u00e8gue \u00e0 un solveur de sous-espace de Krylov. Pour les syst\u00e8mes rigides, le polyalgorithme revient \u00e0 <code>TrustRegion<\/code> si JFNK d\u00e9croche.<\/p>\n<h2>Performances empiriques : JFNK vs Op\u00e9rateur-Split<\/h2>\n<p>Une r\u00e9f\u00e9rence concr\u00e8te de la litt\u00e9rature d\u00e9montre l'avantage pratique de JFNK. Dans les calculs de transfert radiatif non-LTE (NLTE), une \u00e9tude de 2024 en astronomie &amp; L'astrophysique (A&amp;a) a compar\u00e9 Newton-Krylov sans Jacobiens \u00e0 des approches de fractionnement d'op\u00e9rateur. JFNK a converg\u00e9 approximativement <strong>2\u00d7<\/strong> que le fractionnement de l'op\u00e9rateur pour la m\u00eame cible de pr\u00e9cision, tout en utilisant une m\u00e9moire comparable. Le r\u00e9sultat met en \u00e9vidence que les solveurs non lin\u00e9aires monolithiques peuvent surpasser les approches partitionn\u00e9es lorsque la non-lin\u00e9arit\u00e9 est forte et que le pr\u00e9conditionneur est bien adapt\u00e9 \u00e0 la physique.<\/p>\n<h2>R\u00e9sum\u00e9&nbsp;: Quelle m\u00e9thode recommandons-nous&nbsp;?<\/h2>\n<p>La recommandation d\u00e9pend de l'\u00e9chelle et de la structure de votre probl\u00e8me&nbsp;:<\/p>\n<ul>\n<li><strong>Petits probl\u00e8mes avec Jacobien exact disponible&nbsp;:<\/strong> Newton-Raphson. La convergence quadratique et le bassin de convergence robuste l'emportent sur le co\u00fbt jacobien.<\/li>\n<li><strong>Syst\u00e8mes 1D-2D non lin\u00e9aires l\u00e9g\u00e8rement non lin\u00e9aires&nbsp;:<\/strong> La m\u00e9thode de Broyden est rentable. Acceptez le risque de d\u00e9rive des conditions pour les petits et moyens probl\u00e8mes o\u00f9 chaque it\u00e9ration est bon march\u00e9.<\/li>\n<li><strong>Syst\u00e8mes 3D \u00e0 grande \u00e9chelle avec des millions de degr\u00e9s de libert\u00e9&nbsp;:<\/strong> JFNK avec un pr\u00e9conditionnement bas\u00e9 sur la physique. C'est la seule option viable lorsque l'assemblage complet de Jacobien est prohibitif et que la d\u00e9rive de l'\u00e9tat de Broyden est inacceptable.<\/li>\n<li><strong>Codes de simulation en bo\u00eete noire&nbsp;:<\/strong> JFNK ou Broyden. Les deux \u00e9vitent la construction jacobienne explicite.<\/li>\n<li><strong>Exigences de simulation critiques&nbsp;:<\/strong> Newton avec la mondialisation de recherche en ligne. La convergence quadratique et la stabilit\u00e9 mondiale des m\u00e9thodes de la r\u00e9gion de confiance valent le co\u00fbt suppl\u00e9mentaire.<\/li>\n<\/ul>\n<p>Pour la plupart des workflows PDE de production, le mod\u00e8le de polyalgorithme - Fast Broyden repli vers Newton Fallback to TrustRegion - offre le meilleur \u00e9quilibre entre vitesse, robustesse et fiabilit\u00e9.<\/p>\n<h2>Guides connexes<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" target=\"_blank\" rel=\"nofollow noopener\">M\u00e9thodes d'int\u00e9gration temporelle pour les solveurs PDE&nbsp;: sch\u00e9mas explicites ou implicites<\/a>&nbsp;: guide de base pour les sch\u00e9mas implicites qui n\u00e9cessitent des solveurs non lin\u00e9aires.<\/li>\n<li><a href=\"https:\/\/matforge.org\/implicit-vs-explicit-methods-stability-accuracy\/\" target=\"_blank\" rel=\"nofollow noopener\">Implicite vs M\u00e9thodes explicites&nbsp;: stabilit\u00e9, pr\u00e9cision, et quand utiliser chacun<\/a> - discute des r\u00e9gions de stabilit\u00e9 et lorsque des m\u00e9thodes implicites deviennent n\u00e9cessaires.<\/li>\n<li><a href=\"https:\/\/matforge.org\/choosing-right-python-pde-solver-fipy-py-pde-fenics\/\" target=\"_blank\" rel=\"nofollow noopener\">Choisir le bon solveur Python PDE&nbsp;: FIPY vs PY-PDE vs Fenics<\/a> \u2014 compare les biblioth\u00e8ques de solveurs, y compris leurs backends de solveurs non lin\u00e9aires.<\/li>\n<li><a href=\"https:\/\/matforge.org\/managing-large-scale-pde-problems-strategies-solvers-and-hpc-case-studies\/\" target=\"_blank\" rel=\"nofollow noopener\">Gestion des probl\u00e8mes de PDE \u00e0 grande \u00e9chelle&nbsp;: strat\u00e9gies, solveurs et \u00e9tudes de cas HPC<\/a> \u2014 couvre les solveurs non lin\u00e9aires \u00e0 grande \u00e9chelle avec l'infrastructure HPC.<\/li>\n<li><a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\" target=\"_blank\" rel=\"nofollow noopener\">M\u00e9thodes de fractionnement des op\u00e9rateurs&nbsp;: sch\u00e9mas de fractionnement de Strang et IMEX<\/a>&nbsp;: alternatives \u00e0 la r\u00e9solution non lin\u00e9aire monolithique.<\/li>\n<\/ul>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>fardeau, r., &amp; Faires, J.&nbsp;D. (2011). <em>Analyse num\u00e9rique<\/em> (9e \u00e9d.). Cengager l'apprentissage. Le chapitre 8 couvre la m\u00e9thode de Newton et les m\u00e9thodes quasi-Newton.<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Broyden%27s_method\" target=\"_blank\" rel=\"nofollow noopener\">Wikipedia&nbsp;: m\u00e9thode de Broyden<\/a> \u2014 Aper\u00e7u de la famille de recherche de racines quasi-Newton.<\/li>\n<li><a href=\"https:\/\/docs.scipy.org\/doc\/scipy\/reference\/generated\/scipy.optimize.broyden1.html\" target=\"_blank\" rel=\"nofollow noopener\">scipy&nbsp;: scipy.optimize.broyden1<\/a> \u2014 Documentation pour le solveur Broyden de Scipy.<\/li>\n<li><a href=\"https:\/\/petsc.org\/main\/docs\/fieldsn\/snes\/snes.html\" target=\"_blank\" rel=\"nofollow noopener\">documentation PETSC SNES<\/a> \u2014 \u00e9quation non lin\u00e9aire du SNU Solveur pour les mod\u00e8les Newton-Krylov.<\/li>\n<li><a href=\"https:\/\/docs.python-fenics.org\/prob\/fem-solutions\/nonlinear-variables\/\" target=\"_blank\" rel=\"nofollow noopener\">Fenics Non lin\u00e9aire Solveurs<\/a> - g\u00e9n\u00e9ration jacobienne automatique gr\u00e2ce \u00e0 la diff\u00e9renciation symbolique.<\/li>\n<li><a href=\"https:\/\/diffeq.sciml.ai\/stable\/solvers\/nonsolve_overview\/#jfnk\" target=\"_blank\" rel=\"nofollow noopener\">differentialequations.jl&nbsp;: JFNK<\/a> \u2014 Newton-Krylov sans Jacobiens pour les solveurs PDE bas\u00e9s sur Julia.<\/li>\n<\/ul>\n<h2>Vous voulez de l'aide pour mettre en place un solveur non lin\u00e9aire pour votre recherche&nbsp;?<\/h2>\n<p>Choisir la bonne m\u00e9thode de solveur non lin\u00e9aire peut faire la diff\u00e9rence entre une simulation qui se termine en heures et une autre qui ne converge jamais. Si vous \u00eates aux prises avec la divergence de Newton Iteration, Broyden Condition Drift ou JFNK Preconditioner Tuning, notre \u00e9quipe peut vous aider.<\/p>\n<p>Nous nous sp\u00e9cialisons dans la cr\u00e9ation de cadres de v\u00e9rification pour les codes Python et Julia scientifiques, y compris les workflows de solveurs non lin\u00e9aires pour les simulations PDE. <a href=\"https:\/\/matforge.org\/category\/issue-tracking-tickets-technical-requests\/\" target=\"_blank\" rel=\"nofollow noopener\">Contactez-vous via notre syst\u00e8me de suivi des probl\u00e8mes<\/a> pour discuter des besoins de votre projet.<\/p>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 12<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Apprenez \u00e0 choisir entre Newton-Raphson, quasi-Newton de Broyden et les m\u00e9thodes de Newton-Krylov sans Jacobian pour r\u00e9soudre des syst\u00e8mes PDE non lin\u00e9aires. Comprend des exemples pratiques de Python et des cadres de d\u00e9cision.<\/p>\n","protected":false,"raw":"Apprenez \u00e0 choisir entre Newton-Raphson, quasi-Newton de Broyden et les m\u00e9thodes de Newton-Krylov sans Jacobian pour r\u00e9soudre des syst\u00e8mes PDE non lin\u00e9aires. Comprend des exemples pratiques de Python et des cadres de d\u00e9cision."},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"fr_FR","_original_post":"https:\/\/matforge.org\/?p=505","iawp_total_views":1,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1288","post","type-post","status-publish","format-standard","hentry","category-simulation-modeling-projects","fr-FR"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP - matforge.org<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP - matforge.org\" \/>\n<meta property=\"og:description\" content=\"Reading Time:  12 minutesApprenez \u00e0 choisir entre Newton-Raphson, quasi-Newton de Broyden et les m\u00e9thodes de Newton-Krylov sans Jacobian pour r\u00e9soudre des syst\u00e8mes PDE non lin\u00e9aires. Comprend des exemples pratiques de Python et des cadres de d\u00e9cision.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-21T14:31:23+00:00\" \/>\n<meta name=\"author\" content=\"Priya Nair\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Nair\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/\"},\"author\":{\"name\":\"Priya Nair\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\"},\"headline\":\"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP\",\"datePublished\":\"2026-08-21T14:31:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/\"},\"wordCount\":3405,\"commentCount\":0,\"articleSection\":[\"Simulation &amp; Projets de mod\u00e9lisation\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/fr\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/\",\"name\":\"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP - matforge.org\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-08-21T14:31:23+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\",\"name\":\"Priya Nair\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g\",\"caption\":\"Priya Nair\"},\"sameAs\":[\"http:\\\/\\\/matforge.org\"],\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/priya-nair\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP - matforge.org","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/","og_locale":"fr_FR","og_type":"article","og_title":"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP - matforge.org","og_description":"Reading Time:  12 minutesApprenez \u00e0 choisir entre Newton-Raphson, quasi-Newton de Broyden et les m\u00e9thodes de Newton-Krylov sans Jacobian pour r\u00e9soudre des syst\u00e8mes PDE non lin\u00e9aires. Comprend des exemples pratiques de Python et des cadres de d\u00e9cision.","og_url":"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/","og_site_name":"matforge.org","article_published_time":"2026-08-21T14:31:23+00:00","author":"Priya Nair","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Priya Nair","Dur\u00e9e de lecture estim\u00e9e":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/"},"author":{"name":"Priya Nair","@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795"},"headline":"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP","datePublished":"2026-08-21T14:31:23+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/"},"wordCount":3405,"commentCount":0,"articleSection":["Simulation &amp; Projets de mod\u00e9lisation"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/","url":"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/","name":"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP - matforge.org","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-08-21T14:31:23+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795"},"breadcrumb":{"@id":"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/fr\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/"},{"@type":"ListItem","position":2,"name":"M\u00e9thodes de solveur non lin\u00e9aires : Newton, Broyden et Quasi-Newton pour les EDP"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795","name":"Priya Nair","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g","caption":"Priya Nair"},"sameAs":["http:\/\/matforge.org"],"url":"https:\/\/matforge.org\/author\/priya-nair\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=1288"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1288\/revisions"}],"predecessor-version":[{"id":1402,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1288\/revisions\/1402"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=1288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=1288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=1288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}