{"id":901,"date":"2026-07-30T12:23:17","date_gmt":"2026-07-30T12:23:17","guid":{"rendered":"https:\/\/matforge.org\/?p=901","raw":"https:\/\/matforge.org\/?p=901"},"modified":"2026-07-30T12:23:17","modified_gmt":"2026-07-30T12:23:17","slug":"nonlinear-solver-methods-newton-broyden-quasi-newton-pdes","status":"publish","type":"post","link":"https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/","title":{"rendered":"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs","raw":"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs"},"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\"> 10<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>Wenn Sie eine nichtlineare partielle Differentialgleichung diskretisieren, erhalten Sie ein nichtlineares algebraisches System. Um es zu l\u00f6sen, muss die richtige Solver-Methode ausgew\u00e4hlt werden. Newtons Methode konvergiert quadratisch, verlangt aber einen vollen Jacobian. Broydens Methode baut den Jacobian billiger, kann aber destabilisieren. Der Jacobi-Free Newton-Krylov (JFNK)-Ansatz vermeidet den Jacobianer und st\u00fctzt sich nur auf Produkte von Jacobian-Vektoren mit physikbasierter Vorkonditionierung, um die Konvergenz r\u00fcckwirkend zu halten.<\/p>\n<p>Die Wahl ist nicht theoretisch. Es bestimmt, ob Ihre Simulation \u00fcberhaupt konvergiert, wie viel Speicher sie verbraucht und ob sie in Minuten oder Tagen endet.<\/p>\n<p><strong><a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" target=\"_blank\" rel=\"nofollow noopener\">Link zum vorhandenen Artikel: Zeitintegrationsmethoden f\u00fcr PDE-Solver<\/a><\/strong> deckt die breitere Landschaft von expliziten versus impliziten Schemata und Operator-Splitting ab. <strong><a href=\"https:\/\/matforge.org\/implicit-vs-explicit-methods-stability-accuracy\/\" target=\"_blank\" rel=\"nofollow noopener\"> Link zum vorhandenen Artikel: Implizite vs. explizite Methoden <\/a> <\/strong> Erl\u00e4utert Stabilit\u00e4tsbereiche, Genauigkeitskriterien und wenn implizite Schemata erforderlich werden. Dieser Artikel konzentriert sich speziell auf die nichtlinearen L\u00f6ser, die sich in jedem impliziten Schema befinden.<\/p>\n<h2>Wenn implizite Methoden einen nichtlinearen Solver erfordern<\/h2>\n<p>Die implizite Zeitintegration erfordert die L\u00f6sung eines nichtlinearen Systems bei jedem Zeitschritt. Betrachten Sie die r\u00fcckst\u00e4ndige Euler-Diskretisierung eines generischen PDE:<\/p>\n<pre><code>F(u\u207f\u207a\u00b9) = 0<\/code><\/pre>\n<p>Das unbekannte <code>u\u207f\u207a\u00b9<\/code> erscheint im Operator <code>F<\/code> durch Diffusionsterme, Reaktionskinetik oder gekoppelte Multiphysik-Gleichungen. Nach r\u00e4umlicher Diskretisierung (finites Volumen, finites Element oder endlicher Unterschied) wird das System:<\/p>\n<pre><code>F(x) = 0, where x \u2208 \u211d\u207f<\/code><\/pre>\n<p>Die Dimension <code>n<\/code> ist die Anzahl der Freiheitsgrade \u2013 typischerweise das Produkt aus Gitterzellen, physikalischen Feldern und Zeitschritt-Iterationen. In einer 3D-Phasenfeldsimulation mit 500\u00b3-Zellen und zwei gekoppelten Feldern kann <code>n<\/code> 10\u2078 leicht \u00fcberschreiten.<\/p>\n<p>Die Herausforderung besteht darin, dass <code>F<\/code>  nichtlinear ist. Sie k\u00f6nnen nicht <code>x = F\u207b\u00b9(0)<\/code> schreiben. Stattdessen ben\u00f6tigen Sie einen iterativen Algorithmus, der eine Sequenz konstruiert, die zur Wurzel konvergiert.<\/p>\n<h2>Newton-Methode: Die Basislinie<\/h2>\n<p>Die Newton-Methode ist die Referenz, anhand derer alle anderen nichtlinearen L\u00f6ser gemessen werden. F\u00fcr das System <code>F(x) = 0<\/code> konstruiert es die Jacobi-Matrix:<\/p>\n<pre><code>J = \u2202F\/\u2202x<\/code><\/pre>\n<p>und iteriert:<\/p>\n<pre><code>x\u2096\u208a\u2081 = x\u2096 \u2212 J\u207b\u00b9\u00b7F(x\u2096)<\/code><\/pre>\n<p>Die Schl\u00fcsseleigenschaft ist <strong>quadratische Konvergenz<\/strong>. Wenn der Jacobian Lipschitz kontinuierlich ist und die anf\u00e4ngliche Vermutung innerhalb des Konvergenzbeckens liegt, erf\u00fcllt der Fehler:<\/p>\n<pre><code>\u2016x\u2096\u208a\u2081 \u2212 x*\u2016 \u2264 C \u00b7 \u2016x\u2096 \u2212 x*\u2016\u00b2<\/code><\/pre>\n<p>Dies bedeutet, dass sich die Anzahl der korrekten Ziffern bei jeder Iteration ungef\u00e4hr verdoppelt. Bei gut erzogenen PDE-Systemen konvergiert die Newton-Methode h\u00e4ufig in 3\u20135 Iterationen.<\/p>\n<h3>Voller Jacobian: Analytisch vs. endlicher Unterschied<\/h3>\n<p>Der Bau des Jacobian ist der teuerste Teil von Newtons Methode. Die Optionen sind:<\/p>\n<p><strong>Analytical Jacobian.<\/strong> Sie leiten <code>\u2202F\/\u2202x<\/code> von Hand oder durch automatische Differenzierung ab. In Bibliotheken wie Fenics erzeugt die Variationsformulierung automatisch den Jacobian durch symbolische Differenzierung. Das Ergebnis ist exakt (bis zur Gleitkommagenauigkeit).<\/p>\n<p><strong>Finite-Difference Jacobian.<\/strong> Sie st\u00f6ren jede Spalte von <code>J<\/code> durch <code>\u03b5<\/code> und bewerten <code>F<\/code> neu:<\/p>\n<pre><code>J\u1d62 \u2248 (F(x + \u03b5\u00b7e\u1d62) \u2212 F(x)) \/ \u03b5<\/code><\/pre>\n<p>Dies erfordert <code>n<\/code> zus\u00e4tzliche Funktionsbewertungen pro Newton-Iteration. F\u00fcr gro\u00dfe <code>n<\/code>  dominiert dies die Kosten.<\/p>\n<p><strong>Block Jacobian.<\/strong> In gekoppelten Systemen mit <code>k<\/code>-Feldern ist der Jacobian blockstrukturiert:<\/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>Wenn Sie nur diagonale Bl\u00f6cke <code>\u2202F\u1d62\/\u2202x\u1d62<\/code>  ben\u00f6tigen, k\u00f6nnen Sie diese unabh\u00e4ngig bewerten &#8211; eine Technik, die als <strong>Diagonales Einfrieren <\/strong> oder <strong> vollst\u00e4ndig gekoppelt gegen getrennte Solver <\/strong> bezeichnet wird.<\/p>\n<h3>Globale Konvergenz: Liniensuche und Vertrauensregionen<\/h3>\n<p>Die Methode von Pure Newton ist eine lokale Methode. Wenn die anf\u00e4ngliche Vermutung weit von der L\u00f6sung entfernt ist, k\u00f6nnen die Iterationen unterschiedlich sein, obwohl die quadratische Konvergenz in der N\u00e4he der Wurzel gilt.<\/p>\n<p><strong>Liniensuche<\/strong> \u00c4ndert den Newton-Schritt, indem er ihn skaliert:<\/p>\n<pre><code>x\u2096\u208a\u2081 = x\u2096 \u2212 \u03b1\u00b7J\u207b\u00b9\u00b7F(x\u2096)<\/code><\/pre>\n<p>wobei <code>\u03b1 \u2208 (0, 1]<\/code> gew\u00e4hlt wird, um eine Verdienstfunktion zu reduzieren. Der klassische Ansatz minimiert <code>\u2016F(x\u2096 \u2212 \u03b1\u00b7J\u207b\u00b9\u00b7F(x\u2096))\u2016<\/code> .<\/p>\n<p><strong>Vertrauensregionen<\/strong> Definieren Sie einen Radius <code>\u0394<\/code>, in dem das quadratische Modell vertrauensw\u00fcrdig ist:<\/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>Wenn die Reduktion der Leistungsfunktion nicht ausreicht, schrumpft der Radius. Wenn es ausreicht, w\u00e4chst der Radius.<\/p>\n<p>Das Paket <code>SNES<\/code>  von PETSC (SNU Nonlinear Equation Solver) bietet sowohl die Liniensuche als auch die Globalisierung der Vertrauensregion. Die Auswahl wirkt sich auf die Gesamtiterationszahl aus, die mehr als die Kosten pro Iteration sind.<\/p>\n<h3>Praktischer Newton: Wenn es funktioniert und wann nicht<\/h3>\n<p>Die Newton-Methode zeichnet sich aus, wenn:<\/p>\n<ul>\n<li>Der Jacobian ist in exakter Form erh\u00e4ltlich (symbolisch, AD oder Blockanalytisch)<\/li>\n<li>Die Nichtlinearit\u00e4ten sind mild (Diffusion, milde Reaktionsbedingungen)<\/li>\n<li>Ged\u00e4chtnis reicht f\u00fcr den vollen Jacobian (oder seine sp\u00e4rliche Faktorisierung)<\/li>\n<\/ul>\n<p>Newtons Methode k\u00e4mpft, wenn:<\/p>\n<ul>\n<li><code>n<\/code> \u00fcberschreitet 10\u2076 und die Montage des vollen Jacobian ist unerschwinglich<\/li>\n<li>Die Funktion <code>F<\/code> ist undurchsichtig (Black-Box-Simulationscode)<\/li>\n<li>Jede Funktionsbewertung dominiert bereits die Laufzeit<\/li>\n<\/ul>\n<p>Bei gro\u00dfen PDEs ist der vollst\u00e4ndige Jacobian-Ansatz oft zu teuer. Hier treten Quasi-Newton-Methoden ein.<\/p>\n<h2>Broydens Quasi-Newton-Methoden<\/h2>\n<p>Broydens Methode geh\u00f6rt zur breiteren Klasse der Quasi-Newton-Methoden. Anstatt <code>J = \u2202F\/\u2202x<\/code> zu berechnen, erstellt es eine Approximation <code>B\u2096 \u2248 J<\/code> durch Rang-1-Updates f\u00fcr die Sekant-Bedingung:<\/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>Die Sekantenbedingung ist eine Gleichung f\u00fcr <code>n<\/code>  Unbekannte in <code>B\u2096\u208a\u2081<\/code>. Die Formulierung von Broyden w\u00e4hlt das Update, das die Frobenius-Norm\u00e4nderung minimiert:<\/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>Gut gegen Bad Broyden<\/h3>\n<p>Broydens urspr\u00fcngliche Methode (manchmal als &#8222;guter Broyden&#8220; bezeichnet) aktualisiert <code>B\u2096<\/code>  unter Verwendung der Sekantengleichung. Die inverse Variante (&#8222;Bad Broyden&#8220;) aktualisiert <code>B\u2096\u207b\u00b9<\/code> direkt:<\/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>wobei <code>\u03b4x = x\u2096\u208a\u2081 \u2212 x\u2096<\/code> und <code>\u03b4y = F(x\u2096\u208a\u2081) \u2212 F(x\u2096)<\/code>.<\/p>\n<p>Das inverse Update ist das, was Pythons <code>scipy.optimize.broyden1<\/code>  verwendet. Es vermeidet es, die Jacobian-N\u00e4herung bei jedem Schritt umzukehren &#8211; eine erhebliche Einsparung f\u00fcr gro\u00dfe Probleme.<\/p>\n<h3>Die Bedingungsnummerninstabilit\u00e4t<\/h3>\n<p>Die wichtigste praktische Einschr\u00e4nkung von Broydens Methode ist, dass die Jacobian-N\u00e4herung schlecht konditioniert werden kann. Das Rank-1-Update \u00e4ndert nur eine Richtung, w\u00e4hrend der Rest der Matrix driftet. \u00dcber viele Iterationen akkumuliert <code>B\u2096<\/code>  veraltete Kr\u00fcmmungsinformationen.<\/p>\n<p>Die Bedingungsnummer <code>\u03ba(B\u2096) = \u2016B\u2096\u2016 \u00b7 \u2016B\u2096\u207b\u00b9\u2016<\/code> kann ohne Bindung wachsen. Eine Bedingungszahl, die 10\u2078 \u00fcberschreitet, f\u00fchrt dazu, dass Krylov-Solver wie GMREs blockieren, selbst wenn das zugrunde liegende Problem gut konditioniert ist.<\/p>\n<p>Dies ist der konkrete Grund, Newton oder JFNK in Produktionssimulationen gegen\u00fcber Broyden zu bevorzugen. Bei leicht nichtlinearen Problemen mit wenigen Freiheitsgraden pro Feld (z. B. 1D-Diffusion, 2D-Steady-State) kann die Methode von Broyden wettbewerbsf\u00e4hig sein. Bei 3D-Systemen mit 10\u2076+ Freiheitsgraden macht die Zustandsdrift sie unzuverl\u00e4ssig.<\/p>\n<h3>Begrenzte Speicher Broyden (L-BFGS)<\/h3>\n<p>F\u00fcr die Optimierung im gro\u00dfen Ma\u00dfstab speichert L-BFGS die letzten <code>m<\/code>-Schrittpaare <code>(\u03b4x\u1d62, \u03b4y\u1d62)<\/code> und konstruiert implizit den inversen Jacobian durch eine Rekursion. Es vermeidet das Speichern der vollst\u00e4ndigen <code>n \u00d7 n<\/code>-Matrix.<\/p>\n<p>L-BFGS ist jedoch f\u00fcr die Optimierung (Minimierung eines skalaren Ziels) konzipiert, nicht f\u00fcr die Wurzelfindung (L\u00f6sung <code>F(x) = 0<\/code> ). F\u00fcr die PDE-Wurzelfindung ist das Broyden-Update mit begrenztem Speicher, das in Solvern wie PetSCs <code>BFGS<\/code>  Solver (nicht L-BFGs) verwendet wird, h\u00e4ufiger.<\/p>\n<h2>Jacobi-Free Newton-Krylov: der moderne Gro\u00dfstandard<\/h2>\n<p>Die Jacobi-freie Newton-Krylov (JFNK)-Methode adressiert den Speicher-Engpass des vollen Jacobi-Newton, indem er niemals den Jacobianer zusammenbaut. Stattdessen verwendet es eine Krylov-Subraummethode (typischerweise GMRES), um das Newton-System zu l\u00f6sen:<\/p>\n<pre><code>J \u00b7 \u0394x = \u2212F(x)<\/code><\/pre>\n<p>GMRES ben\u00f6tigt nur Matrix-Vektor-Produkte <code>J\u00b7v<\/code>. Diese werden durch das <strong>Jacobian-Vektor-Produkt<\/strong> berechnet:<\/p>\n<pre><code>J \u00b7 v \u2248 (F(x + \u03b5\u00b7v) \u2212 F(x)) \/ \u03b5<\/code><\/pre>\n<p>Es wird kein expliziter Jacobianer zusammengestellt. Es werden nur <code>F<\/code> und der St\u00f6rungsvektor <code>v<\/code> ben\u00f6tigt.<\/p>\n<h3>Warum Vorkonditionierung obligatorisch ist<\/h3>\n<p>JFNK mit einem nackten Jacobi-Vektor-Produkt ist selten praktisch. Das Newton-System kann eine gro\u00dfe Bedingungszahl haben, insbesondere wenn der Jacobian stark variierende Eigenwerte aus verschiedenen physikalischen Prozessen hat.<\/p>\n<p><strong>Physics-based Preconditioning (PBP)<\/strong> behebt dies, indem man bekannte Operatoren auswertet. Betrachten Sie ein Konvektions-Diffusions-Reaktionssystem:<\/p>\n<pre><code>J = J_convection + J_diffusion + J_reaction<\/code><\/pre>\n<p>PBP ersetzt den Vorkonditionierer durch:<\/p>\n<pre><code>M = J_diffusion<\/code><\/pre>\n<p>Der Diffusionsoperator dominiert normalerweise das Spektrum und ist oft blocktridiagonal oder tridiagonal pro Feld. Sein Invers kann durch sp\u00e4rliche direkte Faktorisierung oder ILU effizient berechnet werden, w\u00e4hrend die Konvektions- und Reaktionsterme explizit behandelt werden.<\/p>\n<p>Das vorkonditionierte System wird:<\/p>\n<pre><code>M\u207b\u00b9 \u00b7 J \u00b7 \u0394x = \u2212M\u207b\u00b9 \u00b7 F(x)<\/code><\/pre>\n<p>Die Bedingungszahl von <code>M\u207b\u00b9\u00b7J<\/code>  wird dramatisch reduziert, da der Diffusionsoperator &#8211; die Quelle der schlechtesten Konditionierung &#8211; in <code>M<\/code>  ber\u00fccksichtigt wurde.<\/p>\n<p>Ohne Vorkonditionierung kann JFNK Hunderte oder Tausende von GMRES-Iterationen erfordern. Bei PBP konvergiert es oft in 10 bis 50 Iterationen, die dem voll-jakobischen Newton entsprechen oder \u00fcbertreffen.<\/p>\n<h3>Das Newton-Krylov-Muster in der Praxis<\/h3>\n<ol>\n<li><strong>Newton-Residuum konstruieren<\/strong> <code>r = F(x\u2096)<\/code><\/li>\n<li><strong>L\u00f6sung<\/strong> <code>J \u00b7 \u0394x = \u2212r<\/code> <strong>Verwenden von GMREs<\/strong><\/li>\n<li><strong>Jacobian-Vektor-Produkte<\/strong> werden durch endliche Differenzst\u00f6rungen von <code>F<\/code> berechnet.<\/li>\n<li><strong>Preconditioner<\/strong> <code>M<\/code> wird bei jeder GMRES-Iteration angewendet<\/li>\n<li><strong>Update<\/strong> <code>x\u2096\u208a\u2081 = x\u2096 + \u0394x<\/code><\/li>\n<li><strong>Konvergenz<\/strong> auf <code>\u2016r\u2016<\/code> pr\u00fcfen<\/li>\n<\/ol>\n<p>Dieses Muster erscheint in jedem wichtigen PDE-Framework: Fenics \/ Dolfin, PETSC \/ SNES, FIPY und nichtlinearsolve.jl. Der Unterschied liegt darin, wie der Vorkonditionierer aufgebaut ist und wie das Jacobian-Vektor-Produkt berechnet wird.<\/p>\n<h2>Das Polyalgorithmus-Muster: Wie moderne Solver tats\u00e4chlich einsetzen<\/h2>\n<p>Produktionsl\u00f6ser verlassen sich selten auf eine einzige Methode. Stattdessen verwenden sie einen <strong>Polyalgorithmus<\/strong>, der sich den Problemschwierigkeiten anpasst:<\/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>Dies ist das Muster, das von PETSCs <code>SNES<\/code> , SCIMLs <code>DifferentialEquations.jl<\/code>  und dem nichtlinearen Solver von Moose verwendet wird.<\/p>\n<h3>Eisenstat-Walker forcing<\/h3>\n<p>Die Eisenstat-Walker-Strategie (manchmal auch als &#8222;Forcing-Strategie&#8220; bezeichnet) passt die innere Toleranz des Krylov-Solver relativ zum Newton-Residuum an:<\/p>\n<pre><code>\u2016J \u00b7 \u0394x + r\u2016 \u2264 \u03b7\u2096 \u00b7 \u2016r\u2016<\/code><\/pre>\n<p>wo <code>\u03b7\u2096<\/code> sich entspannt, wenn <code>r<\/code> schrumpft. Fr\u00fche Newton-Iterationen verwenden eine lose innere Toleranz (weniger Krylov-Schritte). Wenn der Newton-Rest abnimmt, strafft sich die innere Toleranz (mehr Krylov-Genauigkeit).<\/p>\n<p>Dies verhindert, dass verschwendete Arbeit das lineare System auf hohe Genauigkeit l\u00f6st, wenn der Newton-Iterat noch weit von der Wurzel entfernt ist.<\/p>\n<h2>Entscheidungsrahmen: Wann w\u00e4hlen Sie welche Methode?<\/h2>\n<p>Die folgende Tabelle fasst die praktischen Kompromisse zusammen:<\/p>\n<h2>Methodenvergleich<\/h2>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Kriterium<\/th>\n<th>Newton-Raphson<\/th>\n<th>Broyden (Quasi-Newton)<\/th>\n<th>JFNK (Newton-Krylov)<\/th>\n<\/tr>\n<tr>\n<td>Konvergenzrate<\/td>\n<td>Quadratisch (nahe Wurzel)<\/td>\n<td>Superlinear (pro Iteration), aber unzuverl\u00e4ssig f\u00fcr gro\u00dfe <code>n<\/code><\/td>\n<td>h\u00e4ngt vom Vorkonditionierer ab; Superlinear mit gutem PBP<\/td>\n<\/tr>\n<tr>\n<td>Speicher-Fu\u00dfabdruck<\/td>\n<td>O(n\u00b2) f\u00fcr volles Jacobian (aber sp\u00e4rlich reduziert es)<\/td>\n<td>O (n\u00b2) f\u00fcr inverse Broyden-N\u00e4herung; O(m\u00b7n) f\u00fcr Varianten mit begrenztem Speicher<\/td>\n<td>O(n) \u2014 Nur Funktionsvektoren und Krylov-Speicher<\/td>\n<\/tr>\n<tr>\n<td>Pro-Iteration-Kosten<\/td>\n<td>Hoch (Jacobian Assembly + Factorization)<\/td>\n<td>Niedrig (Rang-1-Update + Funktionsbewertung)<\/td>\n<td>Moderat (JVP + Krylov-Iteration)<\/td>\n<\/tr>\n<tr>\n<td>Jacobian-Anforderung<\/td>\n<td>Voller Jacobian (Analytisch, AD oder FD)<\/td>\n<td>Kein Jacobian (ca. schrittweise)<\/td>\n<td>Kein expliziter Jacobian (nur JVP)<\/td>\n<\/tr>\n<tr>\n<td>Vorkonditionierung<\/td>\n<td>Optional (verbessert die lineare L\u00f6sung in Newton)<\/td>\n<td>Nicht anwendbar (jakobianfrei)<\/td>\n<td>Erforderlich f\u00fcr die praktische Konvergenz (PBP wird dringend empfohlen)<\/td>\n<\/tr>\n<tr>\n<td>Bester Anwendungsfall<\/td>\n<td>Kleine bis mittlere Probleme mit Exact Jacobian verf\u00fcgbar<\/td>\n<td>Mild nichtlineare 1D-2D-Probleme mit begrenztem Budget<\/td>\n<td>3D-Probleme mit gro\u00dfen Freiheitsgraden<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Auswahl nach Problemgr\u00f6\u00dfe<\/h3>\n<p><strong>Kleine Probleme (n &lt; 10\u2074):<\/strong> Voller Newton mit analytischem oder symbolischem Jacobian. Die Kosten werden von der Matrixmontage dominiert, sodass die quadratische Konvergenz die Einrichtungskosten \u00fcberwiegt.<\/p>\n<p><strong>Mittelprobleme (10\u2074 &lt; n &lt; 10\u2076):<\/strong> Broyden kann wettbewerbsf\u00e4hig sein, wenn die Nichtlinearit\u00e4t mild ist. Newton mit sp\u00e4rlicher direkter Faktorisierung ist robuster, kostet aber mehr pro Iteration.<\/p>\n<p><strong>Gro\u00dfe Probleme (n&gt; 10\u2076):<\/strong> JFNK mit physikbasierter Vorkonditionierung ist die Standardwahl. Die vollst\u00e4ndige Jacobi-Versammlung ist unerschwinglich und Broydens Zustandsdrift ist unzuverl\u00e4ssig.<\/p>\n<h3>Auswahl nach Nichtlinearit\u00e4t Schweregrad<\/h3>\n<p><strong>Milde Nichtlinearit\u00e4t (diffusionsdominierte, schwache Reaktionsbegriffe): <\/strong> Newton oder Broyden funktionieren beide gut. Die quadratische Konvergenz von Newton macht es f\u00fcr kleine Systeme attraktiv.<\/p>\n<p><strong> Starke Nichtlinearit\u00e4t (gekoppeltes Phasenfeld, Reaktionsdiffusion mit steifer Kinetik): <\/strong> Newton mit Globalisierung (Liniensuche oder Vertrauensregion) ist unerl\u00e4sslich. Broydens Ann\u00e4herung kann die Suchrichtung irref\u00fchren.<\/p>\n<p><strong>Opaque Nichtlinearit\u00e4t (Blackbox-Simulation, unbekannt <code>F<\/code> ): <\/strong> JFNK oder Broyden, da sie keine explizite Jacobi-Konstruktion erfordern.<\/p>\n<h3>Auswahl nach Speicherbeschr\u00e4nkungen<\/h3>\n<p><strong>Begrenzter Speicher (einzelner Knoten, &lt; 64 GB):<\/strong> JFNK ben\u00f6tigt nur O(n)-Speicher f\u00fcr Vektoren. Newton ben\u00f6tigt O(NNZ(J)) f\u00fcr sp\u00e4rliche Jacobi-Speicher plus O(nnz(l)) f\u00fcr die Faktorisierung.<\/p>\n<p><strong>Gro\u00dfer Speicher (Cluster Node, &gt; 256 GB):<\/strong> F\u00fcr Probleme mit N bis zu 10\u2077 ist das volle Newton m\u00f6glich, sofern der Jacobian nur sp\u00e4rlich ist.<\/p>\n<h2>Codebeispiele: Wie diese Methoden in der Praxis aussehen<\/h2>\n<h3>Scipy: Broydens Methode<\/h3>\n<p>Scipy bietet <code>broyden1<\/code> f\u00fcr die Wurzelfindung mit Broydens Quasi-Newton-Update:<\/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>Die <code>broyden1<\/code>-Funktion baut die inverse Jacobian-N\u00e4herung durch Rang-1-Updates. Bei kleinen Systemen vermeidet es eine vollst\u00e4ndige Jacobian-Montage. Bei gro\u00dfen Systemen kann die Bedingungsdrift Konvergenzfehler verursachen.<\/p>\n<p>Die Schnittstelle <code>root<\/code> unterst\u00fctzt auch <code>'hybr'<\/code> (Minpacks Levenberg-Trust-Region) und <code>'lm'<\/code> (Levenberg-Marquardt), die beide strukturierte Probleme mit den kleinsten Quadraten besser bew\u00e4ltigen k\u00f6nnen als Broyden.<\/p>\n<h3>Fenics: Newton mit symbolischem Jacobian<\/h3>\n<p>Fenics erzeugt den Jacobian symbolisch aus der Variationsform:<\/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>Der Aufruf <code>derivative(F, U, u)<\/code> erzeugt den exakten Jacobian durch automatische Differenzierung. Dies ist das leistungsst\u00e4rkste Merkmal von Fenics bei nichtlinearen Problemen.<\/p>\n<h3>PETSC\/SNES: Newton-Krylov mit Vorkonditionierung<\/h3>\n<p>Das SNES-Paket von PETSC implementiert das vollst\u00e4ndige Newton-Krylov-Muster:<\/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>Der Newton-Krylov-Typ wechselt automatisch zwischen den vollst\u00e4ndigen Varianten von Newton (Assembled Jacobian), Jacobian-freien Newton und Broyden, je nach Konfiguration <code>SNESSetUser Jacobian<\/code> . Das Preconditioner-Setup steuert die Krylov-Konvergenzrate.<\/p>\n<h3>nonlinearsolve.jl: Das Polyalgorithmus-Muster<\/h3>\n<p>Julias DifferentialEquations-\u00d6kosystem verwendet einen Polyalgorithmus, der Methoden verkettet:<\/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>Der <code>JFNK<\/code> -Algorithmus berechnet Jacobi-Vektor-Produkte durch endliche Unterschiede und delegiert an einen Krylov-Subrauml\u00f6ser. Bei steifen Systemen f\u00e4llt der Polyalgorithmus auf <code>TrustRegion<\/code> zur\u00fcck, wenn JFNK blockiert.<\/p>\n<h2>Empirische Leistung: JFNK vs.<\/h2>\n<p>Ein konkreter Benchmark aus der Literatur zeigt den praktischen Vorteil von JFNK. In Nicht-LTE (NLTE) Radiativtransferberechnungen, eine Studie aus dem Jahr 2024 in Astronomie &amp; Astrophysik (A &amp; A) verglich Jacobi-freie Newton-Krylov gegen Operator-Splitting-Ans\u00e4tze. JFNK konvergierte ungef\u00e4hr <strong> 2 \u00d7 schneller <\/strong> als der Operator-Splitting f\u00fcr das gleiche Genauigkeitsziel, w\u00e4hrend vergleichbarer Speicher verwendet wurde. Das Ergebnis zeigt, dass monolithische nichtlineare Solver partitionierte Ans\u00e4tze \u00fcbertreffen k\u00f6nnen, wenn die Nichtlinearit\u00e4t stark ist und der Vorkonditionierer gut an die Physik angepasst ist.<\/p>\n<h2>Zusammenfassung: Welche Methode empfehlen wir?<\/h2>\n<p>Die Empfehlung h\u00e4ngt von der Gr\u00f6\u00dfe und Struktur Ihres Problems ab:<\/p>\n<ul>\n<li><strong>Kleine Probleme mit genauem Jacobian Verf\u00fcgbar:<\/strong> Newton-Raphson. Die quadratische Konvergenz und das robuste Konvergenzbecken \u00fcberwiegen die Kosten der Jacobian.<\/li>\n<li><strong>Klein nichtlineare 1D-2D-Systeme:<\/strong> Die Methode von Broyden ist kosteng\u00fcnstig. Akzeptieren Sie das Risiko einer Bedingung bei kleinen bis mittleren Problemen, bei denen jede Iteration billig ist.<\/li>\n<li><strong>Gro\u00dfskalige 3D-Systeme mit Millionen Freiheitsgraden:<\/strong> JFNK mit physikbasierter Vorkonditionierung. Dies ist die einzige praktikable Option, wenn die vollst\u00e4ndige Jacobian-Versammlung unerschwinglich ist und Broydens Zustandsdrift inakzeptabel ist.<\/li>\n<li><strong>Black-Box-Simulationscodes:<\/strong> JFNK oder Broyden. Beide vermeiden eine explizite Jacobi-Konstruktion.<\/li>\n<li><strong>Kritische Simulationsanforderungen:<\/strong> Newton mit Liniensuche Globalisierung. Die quadratische Konvergenz und die globale Stabilit\u00e4t von Vertrauensregionen sind die zus\u00e4tzlichen Kosten wert.<\/li>\n<\/ul>\n<p>F\u00fcr die meisten PDE-Workflows in der Produktion bietet das Polyalgorithmus-Muster &#8211; schneller Broyden-Fallback auf Newton Fallback to TrustRegion &#8211; das beste Gleichgewicht zwischen Geschwindigkeit, Robustheit und Zuverl\u00e4ssigkeit.<\/p>\n<h2>Verwandte Anleitungen<\/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\">Zeitintegration Methoden f\u00fcr PDE-Solver: Explizite vs implizite Schemata <\/a> &#8211; Grundlagen f\u00fcr implizite Schemata, die nichtlineare L\u00f6ser erfordern.<\/li>\n<li><a href=\"https:\/\/matforge.org\/implicit-vs-explicit-methods-stability-accuracy\/\" target=\"_blank\" rel=\"nofollow noopener\">Implizite vs. explizite Methoden: Stabilit\u00e4t, Genauigkeit, und wann jeder <\/a> verwendet werden soll &#8211; Er\u00f6rtert Stabilit\u00e4tsbereiche und wann implizite Methoden erforderlich werden.<\/li>\n<li><a href=\"https:\/\/matforge.org\/choosing-right-python-pde-solver-fipy-py-pde-fenics\/\" target=\"_blank\" rel=\"nofollow noopener\">Ausw\u00e4hlen des richtigen Python-PDE-Solver: FIPY vs PY-PDE gegen FENICS <\/a> &#8211; Vergleicht Solver-Bibliotheken, einschlie\u00dflich ihrer nichtlinearen Solver-Backends.<\/li>\n<li><a href=\"https:\/\/matforge.org\/managing-large-scale-pde-problems-strategies-solvers-and-hpc-case-studies\/\" target=\"_blank\" rel=\"nofollow noopener\">Verwalten von PDE-Problemen im gro\u00dfen Ma\u00dfstab: Strategien, Solver und HPC-Fallstudien <\/a> &#8211; Deckt nichtlineare Solver mit HPC-Infrastruktur ab.<\/li>\n<li><a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\" target=\"_blank\" rel=\"nofollow noopener\">Operator-Splitting Methoden: Strang-Splitting- und IMEX-Schemata <\/a> &#8211; Alternativen zur monolithischen nichtlinearen L\u00f6sung.<\/li>\n<\/ul>\n<h2>Referenzen<\/h2>\n<ul>\n<li>Last, R. &amp; Faires, J. D. (2011). <em>Numerische Analyse <\/em> (9. Aufl.). Cengage-Lernen. Kapitel 8 behandelt die Newton-Methode und die Quasi-Newton-Methoden.<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Broyden%27s_method\" target=\"_blank\" rel=\"nofollow noopener\">Wikipedia: Broyden-Methode <\/a> &#8211; \u00dcberblick \u00fcber die Quasi-Newton-Wurzelfindungsfamilie.<\/li>\n<li><a href=\"https:\/\/docs.scipy.org\/doc\/scipy\/reference\/generated\/scipy.optimize.broyden1.html\" target=\"_blank\" rel=\"nofollow noopener\"> scipy: scipy.optimize.broyden1 <\/a> &#8211; Dokumentation f\u00fcr SciPys Broyden Solver.<\/li>\n<li><a href=\"https:\/\/petsc.org\/main\/docs\/fieldsn\/snes\/snes.html\" target=\"_blank\" rel=\"nofollow noopener\">PETSC-SNES-Dokumentation<\/a> \u2014 SNU Nonlinear Gleichungsl\u00f6ser f\u00fcr Newton-Krylov-Muster.<\/li>\n<li><a href=\"https:\/\/docs.python-fenics.org\/prob\/fem-solutions\/nonlinear-variables\/\" target=\"_blank\" rel=\"nofollow noopener\">Fenics nichtlinear Solver <\/a> &#8211; Automatische Jacobian-Generierung durch symbolische Differenzierung.<\/li>\n<li><a href=\"https:\/\/diffeq.sciml.ai\/stable\/solvers\/nonsolve_overview\/#jfnk\" target=\"_blank\" rel=\"nofollow noopener\">differentialquations.jl: JFNK <\/a> &#8211; Jacobi-freier Newton-Krylov f\u00fcr PDE-Solver mit Sitz in Julia.<\/li>\n<\/ul>\n<h2>M\u00f6chten Sie Hilfe bei der Implementierung eines nichtlinearen Solvers f\u00fcr Ihre Forschung?<\/h2>\n<p>Die Auswahl der richtigen nichtlinearen Solver-Methode kann den Unterschied zwischen einer Simulation, die in Stunden abgeschlossen ist, und einer, die niemals konvergiert. Wenn Sie mit Newton Iteration Divergenz, Broyden Conditioner Drift oder JFNK Preconditioner Tuning zu k\u00e4mpfen haben, kann unser Team helfen.<\/p>\n<p>Wir spezialisieren uns auf die Erstellung von Verifizierungsframeworks f\u00fcr wissenschaftliche Python- und Julia-Codes, einschlie\u00dflich nichtlinearer Solver-Workflows f\u00fcr PDE-Simulationen. <a href=\"https:\/\/matforge.org\/category\/issue-tracking-tickets-technical-requests\/\" target=\"_blank\" rel=\"nofollow noopener\">\u00dcber unser Issue-Tracking-System Kontakt aufnehmen<\/a> um die Bed\u00fcrfnisse Ihres Projekts zu besprechen.<\/p>\n","protected":false,"raw":"<p>Wenn Sie eine nichtlineare partielle Differentialgleichung diskretisieren, erhalten Sie ein nichtlineares algebraisches System. Um es zu l\u00f6sen, muss die richtige Solver-Methode ausgew\u00e4hlt werden. Newtons Methode konvergiert quadratisch, verlangt aber einen vollen Jacobian. Broydens Methode baut den Jacobian billiger, kann aber destabilisieren. Der Jacobi-Free Newton-Krylov (JFNK)-Ansatz vermeidet den Jacobianer und st\u00fctzt sich nur auf Produkte von Jacobian-Vektoren mit physikbasierter Vorkonditionierung, um die Konvergenz r\u00fcckwirkend zu halten.<\/p>\n<p>Die Wahl ist nicht theoretisch. Es bestimmt, ob Ihre Simulation \u00fcberhaupt konvergiert, wie viel Speicher sie verbraucht und ob sie in Minuten oder Tagen endet.<\/p>\n<p><strong><a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" target=\"_blank\" rel=\"nofollow noopener\">Link zum vorhandenen Artikel: Zeitintegrationsmethoden f\u00fcr PDE-Solver<\/a><\/strong> deckt die breitere Landschaft von expliziten versus impliziten Schemata und Operator-Splitting ab. <strong><a href=\"https:\/\/matforge.org\/implicit-vs-explicit-methods-stability-accuracy\/\" target=\"_blank\" rel=\"nofollow noopener\"> Link zum vorhandenen Artikel: Implizite vs. explizite Methoden <\/a> <\/strong> Erl\u00e4utert Stabilit\u00e4tsbereiche, Genauigkeitskriterien und wenn implizite Schemata erforderlich werden. Dieser Artikel konzentriert sich speziell auf die nichtlinearen L\u00f6ser, die sich in jedem impliziten Schema befinden.<\/p>\n<h2>Wenn implizite Methoden einen nichtlinearen Solver erfordern<\/h2>\n<p>Die implizite Zeitintegration erfordert die L\u00f6sung eines nichtlinearen Systems bei jedem Zeitschritt. Betrachten Sie die r\u00fcckst\u00e4ndige Euler-Diskretisierung eines generischen PDE:<\/p>\n<pre><code>F(u\u207f\u207a\u00b9) = 0<\/code><\/pre>\n<p>Das unbekannte <code>u\u207f\u207a\u00b9<\/code> erscheint im Operator <code>F<\/code> durch Diffusionsterme, Reaktionskinetik oder gekoppelte Multiphysik-Gleichungen. Nach r\u00e4umlicher Diskretisierung (finites Volumen, finites Element oder endlicher Unterschied) wird das System:<\/p>\n<pre><code>F(x) = 0, where x \u2208 \u211d\u207f<\/code><\/pre>\n<p>Die Dimension <code>n<\/code> ist die Anzahl der Freiheitsgrade \u2013 typischerweise das Produkt aus Gitterzellen, physikalischen Feldern und Zeitschritt-Iterationen. In einer 3D-Phasenfeldsimulation mit 500\u00b3-Zellen und zwei gekoppelten Feldern kann <code>n<\/code> 10\u2078 leicht \u00fcberschreiten.<\/p>\n<p>Die Herausforderung besteht darin, dass <code>F<\/code>  nichtlinear ist. Sie k\u00f6nnen nicht <code>x = F\u207b\u00b9(0)<\/code> schreiben. Stattdessen ben\u00f6tigen Sie einen iterativen Algorithmus, der eine Sequenz konstruiert, die zur Wurzel konvergiert.<\/p>\n<h2>Newton-Methode: Die Basislinie<\/h2>\n<p>Die Newton-Methode ist die Referenz, anhand derer alle anderen nichtlinearen L\u00f6ser gemessen werden. F\u00fcr das System <code>F(x) = 0<\/code> konstruiert es die Jacobi-Matrix:<\/p>\n<pre><code>J = \u2202F\/\u2202x<\/code><\/pre>\n<p>und iteriert:<\/p>\n<pre><code>x\u2096\u208a\u2081 = x\u2096 \u2212 J\u207b\u00b9\u00b7F(x\u2096)<\/code><\/pre>\n<p>Die Schl\u00fcsseleigenschaft ist <strong>quadratische Konvergenz<\/strong>. Wenn der Jacobian Lipschitz kontinuierlich ist und die anf\u00e4ngliche Vermutung innerhalb des Konvergenzbeckens liegt, erf\u00fcllt der Fehler:<\/p>\n<pre><code>\u2016x\u2096\u208a\u2081 \u2212 x*\u2016 \u2264 C \u00b7 \u2016x\u2096 \u2212 x*\u2016\u00b2<\/code><\/pre>\n<p>Dies bedeutet, dass sich die Anzahl der korrekten Ziffern bei jeder Iteration ungef\u00e4hr verdoppelt. Bei gut erzogenen PDE-Systemen konvergiert die Newton-Methode h\u00e4ufig in 3\u20135 Iterationen.<\/p>\n<h3>Voller Jacobian: Analytisch vs. endlicher Unterschied<\/h3>\n<p>Der Bau des Jacobian ist der teuerste Teil von Newtons Methode. Die Optionen sind:<\/p>\n<p><strong>Analytical Jacobian.<\/strong> Sie leiten <code>\u2202F\/\u2202x<\/code> von Hand oder durch automatische Differenzierung ab. In Bibliotheken wie Fenics erzeugt die Variationsformulierung automatisch den Jacobian durch symbolische Differenzierung. Das Ergebnis ist exakt (bis zur Gleitkommagenauigkeit).<\/p>\n<p><strong>Finite-Difference Jacobian.<\/strong> Sie st\u00f6ren jede Spalte von <code>J<\/code> durch <code>\u03b5<\/code> und bewerten <code>F<\/code> neu:<\/p>\n<pre><code>J\u1d62 \u2248 (F(x + \u03b5\u00b7e\u1d62) \u2212 F(x)) \/ \u03b5<\/code><\/pre>\n<p>Dies erfordert <code>n<\/code> zus\u00e4tzliche Funktionsbewertungen pro Newton-Iteration. F\u00fcr gro\u00dfe <code>n<\/code>  dominiert dies die Kosten.<\/p>\n<p><strong>Block Jacobian.<\/strong> In gekoppelten Systemen mit <code>k<\/code>-Feldern ist der Jacobian blockstrukturiert:<\/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>Wenn Sie nur diagonale Bl\u00f6cke <code>\u2202F\u1d62\/\u2202x\u1d62<\/code>  ben\u00f6tigen, k\u00f6nnen Sie diese unabh\u00e4ngig bewerten - eine Technik, die als <strong>Diagonales Einfrieren <\/strong> oder <strong> vollst\u00e4ndig gekoppelt gegen getrennte Solver <\/strong> bezeichnet wird.<\/p>\n<h3>Globale Konvergenz: Liniensuche und Vertrauensregionen<\/h3>\n<p>Die Methode von Pure Newton ist eine lokale Methode. Wenn die anf\u00e4ngliche Vermutung weit von der L\u00f6sung entfernt ist, k\u00f6nnen die Iterationen unterschiedlich sein, obwohl die quadratische Konvergenz in der N\u00e4he der Wurzel gilt.<\/p>\n<p><strong>Liniensuche<\/strong> \u00c4ndert den Newton-Schritt, indem er ihn skaliert:<\/p>\n<pre><code>x\u2096\u208a\u2081 = x\u2096 \u2212 \u03b1\u00b7J\u207b\u00b9\u00b7F(x\u2096)<\/code><\/pre>\n<p>wobei <code>\u03b1 \u2208 (0, 1]<\/code> gew\u00e4hlt wird, um eine Verdienstfunktion zu reduzieren. Der klassische Ansatz minimiert <code>\u2016F(x\u2096 \u2212 \u03b1\u00b7J\u207b\u00b9\u00b7F(x\u2096))\u2016<\/code> .<\/p>\n<p><strong>Vertrauensregionen<\/strong> Definieren Sie einen Radius <code>\u0394<\/code>, in dem das quadratische Modell vertrauensw\u00fcrdig ist:<\/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>Wenn die Reduktion der Leistungsfunktion nicht ausreicht, schrumpft der Radius. Wenn es ausreicht, w\u00e4chst der Radius.<\/p>\n<p>Das Paket <code>SNES<\/code>  von PETSC (SNU Nonlinear Equation Solver) bietet sowohl die Liniensuche als auch die Globalisierung der Vertrauensregion. Die Auswahl wirkt sich auf die Gesamtiterationszahl aus, die mehr als die Kosten pro Iteration sind.<\/p>\n<h3>Praktischer Newton: Wenn es funktioniert und wann nicht<\/h3>\n<p>Die Newton-Methode zeichnet sich aus, wenn:<\/p>\n<ul>\n<li>Der Jacobian ist in exakter Form erh\u00e4ltlich (symbolisch, AD oder Blockanalytisch)<\/li>\n<li>Die Nichtlinearit\u00e4ten sind mild (Diffusion, milde Reaktionsbedingungen)<\/li>\n<li>Ged\u00e4chtnis reicht f\u00fcr den vollen Jacobian (oder seine sp\u00e4rliche Faktorisierung)<\/li>\n<\/ul>\n<p>Newtons Methode k\u00e4mpft, wenn:<\/p>\n<ul>\n<li><code>n<\/code> \u00fcberschreitet 10\u2076 und die Montage des vollen Jacobian ist unerschwinglich<\/li>\n<li>Die Funktion <code>F<\/code> ist undurchsichtig (Black-Box-Simulationscode)<\/li>\n<li>Jede Funktionsbewertung dominiert bereits die Laufzeit<\/li>\n<\/ul>\n<p>Bei gro\u00dfen PDEs ist der vollst\u00e4ndige Jacobian-Ansatz oft zu teuer. Hier treten Quasi-Newton-Methoden ein.<\/p>\n<h2>Broydens Quasi-Newton-Methoden<\/h2>\n<p>Broydens Methode geh\u00f6rt zur breiteren Klasse der Quasi-Newton-Methoden. Anstatt <code>J = \u2202F\/\u2202x<\/code> zu berechnen, erstellt es eine Approximation <code>B\u2096 \u2248 J<\/code> durch Rang-1-Updates f\u00fcr die Sekant-Bedingung:<\/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>Die Sekantenbedingung ist eine Gleichung f\u00fcr <code>n<\/code>  Unbekannte in <code>B\u2096\u208a\u2081<\/code>. Die Formulierung von Broyden w\u00e4hlt das Update, das die Frobenius-Norm\u00e4nderung minimiert:<\/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>Gut gegen Bad Broyden<\/h3>\n<p>Broydens urspr\u00fcngliche Methode (manchmal als \"guter Broyden\" bezeichnet) aktualisiert <code>B\u2096<\/code>  unter Verwendung der Sekantengleichung. Die inverse Variante (\"Bad Broyden\") aktualisiert <code>B\u2096\u207b\u00b9<\/code> direkt:<\/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>wobei <code>\u03b4x = x\u2096\u208a\u2081 \u2212 x\u2096<\/code> und <code>\u03b4y = F(x\u2096\u208a\u2081) \u2212 F(x\u2096)<\/code>.<\/p>\n<p>Das inverse Update ist das, was Pythons <code>scipy.optimize.broyden1<\/code>  verwendet. Es vermeidet es, die Jacobian-N\u00e4herung bei jedem Schritt umzukehren - eine erhebliche Einsparung f\u00fcr gro\u00dfe Probleme.<\/p>\n<h3>Die Bedingungsnummerninstabilit\u00e4t<\/h3>\n<p>Die wichtigste praktische Einschr\u00e4nkung von Broydens Methode ist, dass die Jacobian-N\u00e4herung schlecht konditioniert werden kann. Das Rank-1-Update \u00e4ndert nur eine Richtung, w\u00e4hrend der Rest der Matrix driftet. \u00dcber viele Iterationen akkumuliert <code>B\u2096<\/code>  veraltete Kr\u00fcmmungsinformationen.<\/p>\n<p>Die Bedingungsnummer <code>\u03ba(B\u2096) = \u2016B\u2096\u2016 \u00b7 \u2016B\u2096\u207b\u00b9\u2016<\/code> kann ohne Bindung wachsen. Eine Bedingungszahl, die 10\u2078 \u00fcberschreitet, f\u00fchrt dazu, dass Krylov-Solver wie GMREs blockieren, selbst wenn das zugrunde liegende Problem gut konditioniert ist.<\/p>\n<p>Dies ist der konkrete Grund, Newton oder JFNK in Produktionssimulationen gegen\u00fcber Broyden zu bevorzugen. Bei leicht nichtlinearen Problemen mit wenigen Freiheitsgraden pro Feld (z. B. 1D-Diffusion, 2D-Steady-State) kann die Methode von Broyden wettbewerbsf\u00e4hig sein. Bei 3D-Systemen mit 10\u2076+ Freiheitsgraden macht die Zustandsdrift sie unzuverl\u00e4ssig.<\/p>\n<h3>Begrenzte Speicher Broyden (L-BFGS)<\/h3>\n<p>F\u00fcr die Optimierung im gro\u00dfen Ma\u00dfstab speichert L-BFGS die letzten <code>m<\/code>-Schrittpaare <code>(\u03b4x\u1d62, \u03b4y\u1d62)<\/code> und konstruiert implizit den inversen Jacobian durch eine Rekursion. Es vermeidet das Speichern der vollst\u00e4ndigen <code>n \u00d7 n<\/code>-Matrix.<\/p>\n<p>L-BFGS ist jedoch f\u00fcr die Optimierung (Minimierung eines skalaren Ziels) konzipiert, nicht f\u00fcr die Wurzelfindung (L\u00f6sung <code>F(x) = 0<\/code> ). F\u00fcr die PDE-Wurzelfindung ist das Broyden-Update mit begrenztem Speicher, das in Solvern wie PetSCs <code>BFGS<\/code>  Solver (nicht L-BFGs) verwendet wird, h\u00e4ufiger.<\/p>\n<h2>Jacobi-Free Newton-Krylov: der moderne Gro\u00dfstandard<\/h2>\n<p>Die Jacobi-freie Newton-Krylov (JFNK)-Methode adressiert den Speicher-Engpass des vollen Jacobi-Newton, indem er niemals den Jacobianer zusammenbaut. Stattdessen verwendet es eine Krylov-Subraummethode (typischerweise GMRES), um das Newton-System zu l\u00f6sen:<\/p>\n<pre><code>J \u00b7 \u0394x = \u2212F(x)<\/code><\/pre>\n<p>GMRES ben\u00f6tigt nur Matrix-Vektor-Produkte <code>J\u00b7v<\/code>. Diese werden durch das <strong>Jacobian-Vektor-Produkt<\/strong> berechnet:<\/p>\n<pre><code>J \u00b7 v \u2248 (F(x + \u03b5\u00b7v) \u2212 F(x)) \/ \u03b5<\/code><\/pre>\n<p>Es wird kein expliziter Jacobianer zusammengestellt. Es werden nur <code>F<\/code> und der St\u00f6rungsvektor <code>v<\/code> ben\u00f6tigt.<\/p>\n<h3>Warum Vorkonditionierung obligatorisch ist<\/h3>\n<p>JFNK mit einem nackten Jacobi-Vektor-Produkt ist selten praktisch. Das Newton-System kann eine gro\u00dfe Bedingungszahl haben, insbesondere wenn der Jacobian stark variierende Eigenwerte aus verschiedenen physikalischen Prozessen hat.<\/p>\n<p><strong>Physics-based Preconditioning (PBP)<\/strong> behebt dies, indem man bekannte Operatoren auswertet. Betrachten Sie ein Konvektions-Diffusions-Reaktionssystem:<\/p>\n<pre><code>J = J_convection + J_diffusion + J_reaction<\/code><\/pre>\n<p>PBP ersetzt den Vorkonditionierer durch:<\/p>\n<pre><code>M = J_diffusion<\/code><\/pre>\n<p>Der Diffusionsoperator dominiert normalerweise das Spektrum und ist oft blocktridiagonal oder tridiagonal pro Feld. Sein Invers kann durch sp\u00e4rliche direkte Faktorisierung oder ILU effizient berechnet werden, w\u00e4hrend die Konvektions- und Reaktionsterme explizit behandelt werden.<\/p>\n<p>Das vorkonditionierte System wird:<\/p>\n<pre><code>M\u207b\u00b9 \u00b7 J \u00b7 \u0394x = \u2212M\u207b\u00b9 \u00b7 F(x)<\/code><\/pre>\n<p>Die Bedingungszahl von <code>M\u207b\u00b9\u00b7J<\/code>  wird dramatisch reduziert, da der Diffusionsoperator - die Quelle der schlechtesten Konditionierung - in <code>M<\/code>  ber\u00fccksichtigt wurde.<\/p>\n<p>Ohne Vorkonditionierung kann JFNK Hunderte oder Tausende von GMRES-Iterationen erfordern. Bei PBP konvergiert es oft in 10 bis 50 Iterationen, die dem voll-jakobischen Newton entsprechen oder \u00fcbertreffen.<\/p>\n<h3>Das Newton-Krylov-Muster in der Praxis<\/h3>\n<ol>\n<li><strong>Newton-Residuum konstruieren<\/strong> <code>r = F(x\u2096)<\/code><\/li>\n<li><strong>L\u00f6sung<\/strong> <code>J \u00b7 \u0394x = \u2212r<\/code> <strong>Verwenden von GMREs<\/strong><\/li>\n<li><strong>Jacobian-Vektor-Produkte<\/strong> werden durch endliche Differenzst\u00f6rungen von <code>F<\/code> berechnet.<\/li>\n<li><strong>Preconditioner<\/strong> <code>M<\/code> wird bei jeder GMRES-Iteration angewendet<\/li>\n<li><strong>Update<\/strong> <code>x\u2096\u208a\u2081 = x\u2096 + \u0394x<\/code><\/li>\n<li><strong>Konvergenz<\/strong> auf <code>\u2016r\u2016<\/code> pr\u00fcfen<\/li>\n<\/ol>\n<p>Dieses Muster erscheint in jedem wichtigen PDE-Framework: Fenics \/ Dolfin, PETSC \/ SNES, FIPY und nichtlinearsolve.jl. Der Unterschied liegt darin, wie der Vorkonditionierer aufgebaut ist und wie das Jacobian-Vektor-Produkt berechnet wird.<\/p>\n<h2>Das Polyalgorithmus-Muster: Wie moderne Solver tats\u00e4chlich einsetzen<\/h2>\n<p>Produktionsl\u00f6ser verlassen sich selten auf eine einzige Methode. Stattdessen verwenden sie einen <strong>Polyalgorithmus<\/strong>, der sich den Problemschwierigkeiten anpasst:<\/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>Dies ist das Muster, das von PETSCs <code>SNES<\/code> , SCIMLs <code>DifferentialEquations.jl<\/code>  und dem nichtlinearen Solver von Moose verwendet wird.<\/p>\n<h3>Eisenstat-Walker forcing<\/h3>\n<p>Die Eisenstat-Walker-Strategie (manchmal auch als \"Forcing-Strategie\" bezeichnet) passt die innere Toleranz des Krylov-Solver relativ zum Newton-Residuum an:<\/p>\n<pre><code>\u2016J \u00b7 \u0394x + r\u2016 \u2264 \u03b7\u2096 \u00b7 \u2016r\u2016<\/code><\/pre>\n<p>wo <code>\u03b7\u2096<\/code> sich entspannt, wenn <code>r<\/code> schrumpft. Fr\u00fche Newton-Iterationen verwenden eine lose innere Toleranz (weniger Krylov-Schritte). Wenn der Newton-Rest abnimmt, strafft sich die innere Toleranz (mehr Krylov-Genauigkeit).<\/p>\n<p>Dies verhindert, dass verschwendete Arbeit das lineare System auf hohe Genauigkeit l\u00f6st, wenn der Newton-Iterat noch weit von der Wurzel entfernt ist.<\/p>\n<h2>Entscheidungsrahmen: Wann w\u00e4hlen Sie welche Methode?<\/h2>\n<p>Die folgende Tabelle fasst die praktischen Kompromisse zusammen:<\/p>\n<h2>Methodenvergleich<\/h2>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Kriterium<\/th>\n<th>Newton-Raphson<\/th>\n<th>Broyden (Quasi-Newton)<\/th>\n<th>JFNK (Newton-Krylov)<\/th>\n<\/tr>\n<tr>\n<td>Konvergenzrate<\/td>\n<td>Quadratisch (nahe Wurzel)<\/td>\n<td>Superlinear (pro Iteration), aber unzuverl\u00e4ssig f\u00fcr gro\u00dfe <code>n<\/code><\/td>\n<td>h\u00e4ngt vom Vorkonditionierer ab; Superlinear mit gutem PBP<\/td>\n<\/tr>\n<tr>\n<td>Speicher-Fu\u00dfabdruck<\/td>\n<td>O(n\u00b2) f\u00fcr volles Jacobian (aber sp\u00e4rlich reduziert es)<\/td>\n<td>O (n\u00b2) f\u00fcr inverse Broyden-N\u00e4herung; O(m\u00b7n) f\u00fcr Varianten mit begrenztem Speicher<\/td>\n<td>O(n) \u2014 Nur Funktionsvektoren und Krylov-Speicher<\/td>\n<\/tr>\n<tr>\n<td>Pro-Iteration-Kosten<\/td>\n<td>Hoch (Jacobian Assembly + Factorization)<\/td>\n<td>Niedrig (Rang-1-Update + Funktionsbewertung)<\/td>\n<td>Moderat (JVP + Krylov-Iteration)<\/td>\n<\/tr>\n<tr>\n<td>Jacobian-Anforderung<\/td>\n<td>Voller Jacobian (Analytisch, AD oder FD)<\/td>\n<td>Kein Jacobian (ca. schrittweise)<\/td>\n<td>Kein expliziter Jacobian (nur JVP)<\/td>\n<\/tr>\n<tr>\n<td>Vorkonditionierung<\/td>\n<td>Optional (verbessert die lineare L\u00f6sung in Newton)<\/td>\n<td>Nicht anwendbar (jakobianfrei)<\/td>\n<td>Erforderlich f\u00fcr die praktische Konvergenz (PBP wird dringend empfohlen)<\/td>\n<\/tr>\n<tr>\n<td>Bester Anwendungsfall<\/td>\n<td>Kleine bis mittlere Probleme mit Exact Jacobian verf\u00fcgbar<\/td>\n<td>Mild nichtlineare 1D-2D-Probleme mit begrenztem Budget<\/td>\n<td>3D-Probleme mit gro\u00dfen Freiheitsgraden<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Auswahl nach Problemgr\u00f6\u00dfe<\/h3>\n<p><strong>Kleine Probleme (n &lt; 10\u2074):<\/strong> Voller Newton mit analytischem oder symbolischem Jacobian. Die Kosten werden von der Matrixmontage dominiert, sodass die quadratische Konvergenz die Einrichtungskosten \u00fcberwiegt.<\/p>\n<p><strong>Mittelprobleme (10\u2074 &lt; n &lt; 10\u2076):<\/strong> Broyden kann wettbewerbsf\u00e4hig sein, wenn die Nichtlinearit\u00e4t mild ist. Newton mit sp\u00e4rlicher direkter Faktorisierung ist robuster, kostet aber mehr pro Iteration.<\/p>\n<p><strong>Gro\u00dfe Probleme (n&gt; 10\u2076):<\/strong> JFNK mit physikbasierter Vorkonditionierung ist die Standardwahl. Die vollst\u00e4ndige Jacobi-Versammlung ist unerschwinglich und Broydens Zustandsdrift ist unzuverl\u00e4ssig.<\/p>\n<h3>Auswahl nach Nichtlinearit\u00e4t Schweregrad<\/h3>\n<p><strong>Milde Nichtlinearit\u00e4t (diffusionsdominierte, schwache Reaktionsbegriffe): <\/strong> Newton oder Broyden funktionieren beide gut. Die quadratische Konvergenz von Newton macht es f\u00fcr kleine Systeme attraktiv.<\/p>\n<p><strong> Starke Nichtlinearit\u00e4t (gekoppeltes Phasenfeld, Reaktionsdiffusion mit steifer Kinetik): <\/strong> Newton mit Globalisierung (Liniensuche oder Vertrauensregion) ist unerl\u00e4sslich. Broydens Ann\u00e4herung kann die Suchrichtung irref\u00fchren.<\/p>\n<p><strong>Opaque Nichtlinearit\u00e4t (Blackbox-Simulation, unbekannt <code>F<\/code> ): <\/strong> JFNK oder Broyden, da sie keine explizite Jacobi-Konstruktion erfordern.<\/p>\n<h3>Auswahl nach Speicherbeschr\u00e4nkungen<\/h3>\n<p><strong>Begrenzter Speicher (einzelner Knoten, &lt; 64 GB):<\/strong> JFNK ben\u00f6tigt nur O(n)-Speicher f\u00fcr Vektoren. Newton ben\u00f6tigt O(NNZ(J)) f\u00fcr sp\u00e4rliche Jacobi-Speicher plus O(nnz(l)) f\u00fcr die Faktorisierung.<\/p>\n<p><strong>Gro\u00dfer Speicher (Cluster Node, &gt; 256 GB):<\/strong> F\u00fcr Probleme mit N bis zu 10\u2077 ist das volle Newton m\u00f6glich, sofern der Jacobian nur sp\u00e4rlich ist.<\/p>\n<h2>Codebeispiele: Wie diese Methoden in der Praxis aussehen<\/h2>\n<h3>Scipy: Broydens Methode<\/h3>\n<p>Scipy bietet <code>broyden1<\/code> f\u00fcr die Wurzelfindung mit Broydens Quasi-Newton-Update:<\/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>Die <code>broyden1<\/code>-Funktion baut die inverse Jacobian-N\u00e4herung durch Rang-1-Updates. Bei kleinen Systemen vermeidet es eine vollst\u00e4ndige Jacobian-Montage. Bei gro\u00dfen Systemen kann die Bedingungsdrift Konvergenzfehler verursachen.<\/p>\n<p>Die Schnittstelle <code>root<\/code> unterst\u00fctzt auch <code>'hybr'<\/code> (Minpacks Levenberg-Trust-Region) und <code>'lm'<\/code> (Levenberg-Marquardt), die beide strukturierte Probleme mit den kleinsten Quadraten besser bew\u00e4ltigen k\u00f6nnen als Broyden.<\/p>\n<h3>Fenics: Newton mit symbolischem Jacobian<\/h3>\n<p>Fenics erzeugt den Jacobian symbolisch aus der Variationsform:<\/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>Der Aufruf <code>derivative(F, U, u)<\/code> erzeugt den exakten Jacobian durch automatische Differenzierung. Dies ist das leistungsst\u00e4rkste Merkmal von Fenics bei nichtlinearen Problemen.<\/p>\n<h3>PETSC\/SNES: Newton-Krylov mit Vorkonditionierung<\/h3>\n<p>Das SNES-Paket von PETSC implementiert das vollst\u00e4ndige Newton-Krylov-Muster:<\/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>Der Newton-Krylov-Typ wechselt automatisch zwischen den vollst\u00e4ndigen Varianten von Newton (Assembled Jacobian), Jacobian-freien Newton und Broyden, je nach Konfiguration <code>SNESSetUser Jacobian<\/code> . Das Preconditioner-Setup steuert die Krylov-Konvergenzrate.<\/p>\n<h3>nonlinearsolve.jl: Das Polyalgorithmus-Muster<\/h3>\n<p>Julias DifferentialEquations-\u00d6kosystem verwendet einen Polyalgorithmus, der Methoden verkettet:<\/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>Der <code>JFNK<\/code> -Algorithmus berechnet Jacobi-Vektor-Produkte durch endliche Unterschiede und delegiert an einen Krylov-Subrauml\u00f6ser. Bei steifen Systemen f\u00e4llt der Polyalgorithmus auf <code>TrustRegion<\/code> zur\u00fcck, wenn JFNK blockiert.<\/p>\n<h2>Empirische Leistung: JFNK vs.<\/h2>\n<p>Ein konkreter Benchmark aus der Literatur zeigt den praktischen Vorteil von JFNK. In Nicht-LTE (NLTE) Radiativtransferberechnungen, eine Studie aus dem Jahr 2024 in Astronomie &amp; Astrophysik (A &amp; A) verglich Jacobi-freie Newton-Krylov gegen Operator-Splitting-Ans\u00e4tze. JFNK konvergierte ungef\u00e4hr <strong> 2 \u00d7 schneller <\/strong> als der Operator-Splitting f\u00fcr das gleiche Genauigkeitsziel, w\u00e4hrend vergleichbarer Speicher verwendet wurde. Das Ergebnis zeigt, dass monolithische nichtlineare Solver partitionierte Ans\u00e4tze \u00fcbertreffen k\u00f6nnen, wenn die Nichtlinearit\u00e4t stark ist und der Vorkonditionierer gut an die Physik angepasst ist.<\/p>\n<h2>Zusammenfassung: Welche Methode empfehlen wir?<\/h2>\n<p>Die Empfehlung h\u00e4ngt von der Gr\u00f6\u00dfe und Struktur Ihres Problems ab:<\/p>\n<ul>\n<li><strong>Kleine Probleme mit genauem Jacobian Verf\u00fcgbar:<\/strong> Newton-Raphson. Die quadratische Konvergenz und das robuste Konvergenzbecken \u00fcberwiegen die Kosten der Jacobian.<\/li>\n<li><strong>Klein nichtlineare 1D-2D-Systeme:<\/strong> Die Methode von Broyden ist kosteng\u00fcnstig. Akzeptieren Sie das Risiko einer Bedingung bei kleinen bis mittleren Problemen, bei denen jede Iteration billig ist.<\/li>\n<li><strong>Gro\u00dfskalige 3D-Systeme mit Millionen Freiheitsgraden:<\/strong> JFNK mit physikbasierter Vorkonditionierung. Dies ist die einzige praktikable Option, wenn die vollst\u00e4ndige Jacobian-Versammlung unerschwinglich ist und Broydens Zustandsdrift inakzeptabel ist.<\/li>\n<li><strong>Black-Box-Simulationscodes:<\/strong> JFNK oder Broyden. Beide vermeiden eine explizite Jacobi-Konstruktion.<\/li>\n<li><strong>Kritische Simulationsanforderungen:<\/strong> Newton mit Liniensuche Globalisierung. Die quadratische Konvergenz und die globale Stabilit\u00e4t von Vertrauensregionen sind die zus\u00e4tzlichen Kosten wert.<\/li>\n<\/ul>\n<p>F\u00fcr die meisten PDE-Workflows in der Produktion bietet das Polyalgorithmus-Muster - schneller Broyden-Fallback auf Newton Fallback to TrustRegion - das beste Gleichgewicht zwischen Geschwindigkeit, Robustheit und Zuverl\u00e4ssigkeit.<\/p>\n<h2>Verwandte Anleitungen<\/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\">Zeitintegration Methoden f\u00fcr PDE-Solver: Explizite vs implizite Schemata <\/a> - Grundlagen f\u00fcr implizite Schemata, die nichtlineare L\u00f6ser erfordern.<\/li>\n<li><a href=\"https:\/\/matforge.org\/implicit-vs-explicit-methods-stability-accuracy\/\" target=\"_blank\" rel=\"nofollow noopener\">Implizite vs. explizite Methoden: Stabilit\u00e4t, Genauigkeit, und wann jeder <\/a> verwendet werden soll - Er\u00f6rtert Stabilit\u00e4tsbereiche und wann implizite Methoden erforderlich werden.<\/li>\n<li><a href=\"https:\/\/matforge.org\/choosing-right-python-pde-solver-fipy-py-pde-fenics\/\" target=\"_blank\" rel=\"nofollow noopener\">Ausw\u00e4hlen des richtigen Python-PDE-Solver: FIPY vs PY-PDE gegen FENICS <\/a> - Vergleicht Solver-Bibliotheken, einschlie\u00dflich ihrer nichtlinearen Solver-Backends.<\/li>\n<li><a href=\"https:\/\/matforge.org\/managing-large-scale-pde-problems-strategies-solvers-and-hpc-case-studies\/\" target=\"_blank\" rel=\"nofollow noopener\">Verwalten von PDE-Problemen im gro\u00dfen Ma\u00dfstab: Strategien, Solver und HPC-Fallstudien <\/a> - Deckt nichtlineare Solver mit HPC-Infrastruktur ab.<\/li>\n<li><a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\" target=\"_blank\" rel=\"nofollow noopener\">Operator-Splitting Methoden: Strang-Splitting- und IMEX-Schemata <\/a> - Alternativen zur monolithischen nichtlinearen L\u00f6sung.<\/li>\n<\/ul>\n<h2>Referenzen<\/h2>\n<ul>\n<li>Last, R. &amp; Faires, J. D. (2011). <em>Numerische Analyse <\/em> (9. Aufl.). Cengage-Lernen. Kapitel 8 behandelt die Newton-Methode und die Quasi-Newton-Methoden.<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Broyden%27s_method\" target=\"_blank\" rel=\"nofollow noopener\">Wikipedia: Broyden-Methode <\/a> - \u00dcberblick \u00fcber die Quasi-Newton-Wurzelfindungsfamilie.<\/li>\n<li><a href=\"https:\/\/docs.scipy.org\/doc\/scipy\/reference\/generated\/scipy.optimize.broyden1.html\" target=\"_blank\" rel=\"nofollow noopener\"> scipy: scipy.optimize.broyden1 <\/a> - Dokumentation f\u00fcr SciPys Broyden Solver.<\/li>\n<li><a href=\"https:\/\/petsc.org\/main\/docs\/fieldsn\/snes\/snes.html\" target=\"_blank\" rel=\"nofollow noopener\">PETSC-SNES-Dokumentation<\/a> \u2014 SNU Nonlinear Gleichungsl\u00f6ser f\u00fcr Newton-Krylov-Muster.<\/li>\n<li><a href=\"https:\/\/docs.python-fenics.org\/prob\/fem-solutions\/nonlinear-variables\/\" target=\"_blank\" rel=\"nofollow noopener\">Fenics nichtlinear Solver <\/a> - Automatische Jacobian-Generierung durch symbolische Differenzierung.<\/li>\n<li><a href=\"https:\/\/diffeq.sciml.ai\/stable\/solvers\/nonsolve_overview\/#jfnk\" target=\"_blank\" rel=\"nofollow noopener\">differentialquations.jl: JFNK <\/a> - Jacobi-freier Newton-Krylov f\u00fcr PDE-Solver mit Sitz in Julia.<\/li>\n<\/ul>\n<h2>M\u00f6chten Sie Hilfe bei der Implementierung eines nichtlinearen Solvers f\u00fcr Ihre Forschung?<\/h2>\n<p>Die Auswahl der richtigen nichtlinearen Solver-Methode kann den Unterschied zwischen einer Simulation, die in Stunden abgeschlossen ist, und einer, die niemals konvergiert. Wenn Sie mit Newton Iteration Divergenz, Broyden Conditioner Drift oder JFNK Preconditioner Tuning zu k\u00e4mpfen haben, kann unser Team helfen.<\/p>\n<p>Wir spezialisieren uns auf die Erstellung von Verifizierungsframeworks f\u00fcr wissenschaftliche Python- und Julia-Codes, einschlie\u00dflich nichtlinearer Solver-Workflows f\u00fcr PDE-Simulationen. <a href=\"https:\/\/matforge.org\/category\/issue-tracking-tickets-technical-requests\/\" target=\"_blank\" rel=\"nofollow noopener\">\u00dcber unser Issue-Tracking-System Kontakt aufnehmen<\/a> um die Bed\u00fcrfnisse Ihres Projekts zu besprechen.<\/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\"> 10<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Erfahren Sie, wie Sie zwischen Newton-Raphson, Broydens Quasi-Newton und Jacobian-freien Newton-Krylov-Methoden zur L\u00f6sung nichtlinearer PDE-Systeme w\u00e4hlen. Enth\u00e4lt praktische Python-Beispiele und Entscheidungsrahmen.<\/p>\n","protected":false,"raw":"Erfahren Sie, wie Sie zwischen Newton-Raphson, Broydens Quasi-Newton und Jacobian-freien Newton-Krylov-Methoden zur L\u00f6sung nichtlinearer PDE-Systeme w\u00e4hlen. Enth\u00e4lt praktische Python-Beispiele und Entscheidungsrahmen."},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"de_DE","_original_post":"https:\/\/matforge.org\/?p=505","iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-901","post","type-post","status-publish","format-standard","hentry","category-simulation-modeling-projects","de-DE"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs - 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\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs - matforge.org\" \/>\n<meta property=\"og:description\" content=\"Reading Time:  10 minutesErfahren Sie, wie Sie zwischen Newton-Raphson, Broydens Quasi-Newton und Jacobian-freien Newton-Krylov-Methoden zur L\u00f6sung nichtlinearer PDE-Systeme w\u00e4hlen. Enth\u00e4lt praktische Python-Beispiele und Entscheidungsrahmen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/de\/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-07-30T12:23:17+00:00\" \/>\n<meta name=\"author\" content=\"Priya Nair\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Nair\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"14\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/\"},\"author\":{\"name\":\"Priya Nair\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\"},\"headline\":\"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs\",\"datePublished\":\"2026-07-30T12:23:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/\"},\"wordCount\":2388,\"commentCount\":0,\"articleSection\":[\"Simulation & amp; Modellierungsprojekte\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/de\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/\",\"name\":\"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs - matforge.org\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-07-30T12:23:17+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs\"}]},{\"@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\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\",\"name\":\"Priya Nair\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@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":"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs - 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\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/","og_locale":"de_DE","og_type":"article","og_title":"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs - matforge.org","og_description":"Reading Time:  10 minutesErfahren Sie, wie Sie zwischen Newton-Raphson, Broydens Quasi-Newton und Jacobian-freien Newton-Krylov-Methoden zur L\u00f6sung nichtlinearer PDE-Systeme w\u00e4hlen. Enth\u00e4lt praktische Python-Beispiele und Entscheidungsrahmen.","og_url":"https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/","og_site_name":"matforge.org","article_published_time":"2026-07-30T12:23:17+00:00","author":"Priya Nair","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Priya Nair","Gesch\u00e4tzte Lesezeit":"14\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/"},"author":{"name":"Priya Nair","@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795"},"headline":"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs","datePublished":"2026-07-30T12:23:17+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/"},"wordCount":2388,"commentCount":0,"articleSection":["Simulation & amp; Modellierungsprojekte"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/","url":"https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/","name":"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs - matforge.org","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-07-30T12:23:17+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795"},"breadcrumb":{"@id":"https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/de\/nonlinear-solver-methods-newton-broyden-quasi-newton-pdes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/de\/"},{"@type":"ListItem","position":2,"name":"Nichtlineare Solver-Methoden: Newton, Broyden und Quasi-Newton f\u00fcr PDEs"}]},{"@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":"de"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795","name":"Priya Nair","image":{"@type":"ImageObject","inLanguage":"de","@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\/901","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=901"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/901\/revisions"}],"predecessor-version":[{"id":1007,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/901\/revisions\/1007"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}