{"id":904,"date":"2026-07-30T12:23:16","date_gmt":"2026-07-30T12:23:16","guid":{"rendered":"https:\/\/matforge.org\/?p=904","raw":"https:\/\/matforge.org\/?p=904"},"modified":"2026-07-30T12:23:16","modified_gmt":"2026-07-30T12:23:16","slug":"stiff-problems-and-stiff-solvers","status":"publish","type":"post","link":"https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/","title":{"rendered":"Steife Probleme und steife L\u00f6ser: Wenn explizite Methoden fehlschlagen","raw":"Steife Probleme und steife L\u00f6ser: Wenn explizite Methoden fehlschlagen"},"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\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><article>\n<p>Eine zeitabh\u00e4ngige Simulation kann gut formuliert aussehen und einen expliziten Solver dennoch dazu zwingen, Tausende von extrem kleinen Schritten zu machen. Eine Erh\u00f6hung der Bestellung von vorw\u00e4rts euler auf RK4 kann das Problem verz\u00f6gern, beseitigt es jedoch nicht immer. Das System kann steif sein.<\/p>\n<p>Die Steifheit tritt auf, wenn die numerische Stabilit\u00e4t einen viel kleineren Zeitschritt erfordert als der Schritt, um das Verhalten von wissenschaftlichem Interesse aufzul\u00f6sen. Schnelle Komponenten k\u00f6nnen fast sofort abklingen, w\u00e4hrend langsamere Komponenten die Langzeitl\u00f6sung steuern. Ein expliziter Integrator muss f\u00fcr beide stabil bleiben.<\/p>\n<p>Implizite steife Solver k\u00f6nnen schnell abfallende Modi \u00fcberschreiten, da sich ihre Stabilit\u00e4tsbereiche viel weiter in die linke H\u00e4lfte der komplexen Ebene erstrecken. Der Kompromiss besteht darin, dass jeder akzeptierte Schritt eine Bewertung der Jacobian, eine Matrixfaktorisierung, eine iterative lineare Algebra oder eine nichtlineare L\u00f6sung erfordert.<\/p>\n<p>Die richtige Frage ist daher nicht, ob implizite Methoden immer besser sind. Es geht darum, ob die Rechenkosten eines impliziten Schritts niedriger sind als die Kosten der vielen kleinen expliziten Schritte, die f\u00fcr die Stabilit\u00e4t erforderlich sind.<\/p>\n<p>Der breitere Leitfaden <a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" rel=\"nofollow\">Zeitintegrationsmethoden f\u00fcr PDE Solvers <\/a> vergleicht explizite, implizite und IMEX-Ans\u00e4tze. Dieser Artikel konzentriert sich speziell auf Steifigkeit, Stabilit\u00e4tsregionen, Jacobien und steife Solver-Familien.<\/p>\n<h2>Was Steifigkeit bedeutet<\/h2>\n<p>Es gibt keine einzige Definition der Steifigkeit, die perfekt f\u00fcr jedes nichtlineare System, numerische Methode, Toleranz und Integrationsintervall gilt.<\/p>\n<p>Eine n\u00fctzliche praktische Beschreibung ist:<\/p>\n<blockquote>\n<p>Ein Problem ist steif, wenn eine numerische Methode Schritte ausf\u00fchren muss, die aufgrund von Stabilit\u00e4tsbeschr\u00e4nkungen viel kleiner als die f\u00fcr die Genauigkeit erforderliche Skala sind.<\/p>\n<\/blockquote>\n<p>Diese Definition unterstreicht, dass die Steifigkeit teilweise vom L\u00f6ser abh\u00e4ngt. Ein Problem, das f\u00fcr eine explizite Runge-Kutta-Methode steif ist, kann f\u00fcr eine L-stabile implizite Methode beherrschbar sein.<\/p>\n<p>Es h\u00e4ngt auch von der angeforderten Ausgabe ab. Ein schneller chemischer \u00dcbergang kann in einer Studie wissenschaftlich wichtig und in einer anderen irrelevant sein. Wenn es aufgel\u00f6st werden muss, ist ein kleiner Schritt eine Genauigkeitsanforderung und nicht eine unn\u00f6tige Steifigkeitsbeschr\u00e4nkung.<\/p>\n<h2>Ein einfaches steifes System<\/h2>\n<p>Betrachten Sie zwei abfallende Komponenten:<\/p>\n<pre><code>dy\u2081\/dt = -y\u2081\n\ndy\u2082\/dt = -1000y\u2082<\/code><\/pre>\n<p>Die genauen L\u00f6sungen sind:<\/p>\n<pre><code>y\u2081(t) = y\u2081(0)e\u207b\u1d57\n\ny\u2082(t) = y\u2082(0)e\u207b\u00b9\u2070\u2070\u2070\u1d57<\/code><\/pre>\n<p>Die zweite Komponente verschwindet viel schneller als die erste. Die wissenschaftlich relevante L\u00f6sung kann nach ihrer anf\u00e4nglichen vor\u00fcbergehenden L\u00f6sung fast vollst\u00e4ndig durch <code>y\u2081<\/code> gesteuert werden.<\/p>\n<p>Vorw\u00e4rts-Euler, der auf die zweite Gleichung angewendet wird, ist nur stabil, wenn:<\/p>\n<pre><code>|1 - 1000\u0394t| \u2264 1<\/code><\/pre>\n<p>Das gibt:<\/p>\n<pre><code>0 \u2264 \u0394t \u2264 0.002<\/code><\/pre>\n<p>Der Solver muss auch nach dem Vernachl\u00e4ssigen von <code>y\u2082<\/code> einen Schritt in der N\u00e4he dieser Skala fortsetzen. Die langsame Komponente k\u00f6nnte mit viel gr\u00f6\u00dferen Schritten genau dargestellt werden, aber die explizite Stabilit\u00e4t wird durch den schnellen Modus gesteuert.<\/p>\n<h2>Warum das Steifigkeitsverh\u00e4ltnis unvollst\u00e4ndig ist<\/h2>\n<p>F\u00fcr ein lineares System:<\/p>\n<pre><code>dy\/dt = Ay<\/code><\/pre>\n<p>Ein h\u00e4ufig angegebenes Steifigkeitsverh\u00e4ltnis ist:<\/p>\n<pre><code>\u03ba =\nmax |Re(\u03bb\u1d62)|\n\/\nmin |Re(\u03bb\u1d62)|<\/code><\/pre>\n<p>Das Verh\u00e4ltnis kann informativ sein, wenn alle relevanten Eigenwerte negative Realteile haben und sich die Matrix regelm\u00e4\u00dfig verh\u00e4lt. Ein gro\u00dfer Wert deutet auf weit voneinander getrennte Zerfallsraten hin.<\/p>\n<p>Es ist jedoch kein universeller Test. Es enth\u00e4lt nicht das Integrationsintervall, die angeforderte Genauigkeit, die Anfangsbedingung oder die Richtung, in der sich die L\u00f6sung entwickelt. Es kann auch undefiniert oder irref\u00fchrend werden, wenn der Jacobian keine Eigenwerte, Erhaltungsmodi oder ein stark nicht normales Verhalten enth\u00e4lt.<\/p>\n<p>In einem nichtlinearen System \u00e4ndert sich der Jacobian entlang der Flugbahn:<\/p>\n<pre><code>J(t) =\n\u2202f\n\/\n\u2202y\nevaluated at y(t)<\/code><\/pre>\n<p>Ein System kann sich daher w\u00e4hrend einer Simulation zwischen steifen und nicht steifen Regionen bewegen.<\/p>\n<h2>Jacobi-basierte Indikatoren<\/h2>\n<p>Eigenwertsch\u00e4tzungen des lokalen Jacobian sind n\u00fctzlich, da schnelle stabile Modi mit Eigenwerten assoziiert sind, die gro\u00dfe negative Realteile haben.<\/p>\n<p>Ein billigerer Indikator verwendet manchmal die skalierte Spur:<\/p>\n<pre><code>\u03c4(J) =\ntrace(J) \/ d\n=\ndiv(f) \/ d<\/code><\/pre>\n<p>\u00fcber ein Integrationsintervall mit Kennl\u00e4nge <code>T<\/code>, ein stark negativer Wert von:<\/p>\n<pre><code>T trace(J) \/ d<\/code><\/pre>\n<p>kann eine schnelle Phasenvolumenkontraktion und m\u00f6gliche explizite Schrittbeschr\u00e4nkungen anzeigen.<\/p>\n<p>Dies ist ein heuristischer Indikator, keine notwendige und ausreichende Definition der Steifheit. Eine Spur mittelt die Eigenwerte der Eigenwerte und kann eine stark steife Richtung verbergen, wenn andere Richtungen sie kompensieren.<\/p>\n<p>Nicht-normale Systeme k\u00f6nnen auch vor\u00fcbergehendes Wachstum aufweisen, das nicht zuverl\u00e4ssig durch Eigenwerte oder Spuren allein vorhergesagt wird. Logarithmische Normen, direkte Solver-Diagnose und beobachtete Einschr\u00e4nkungen der Schrittgr\u00f6\u00dfe k\u00f6nnen zus\u00e4tzliche Informationen liefern.<\/p>\n<p>Der mathematische Hintergrund ist in <a href=\"https:\/\/en.wikipedia.org\/wiki\/Stiff_equation\" rel=\"nofollow\">Der \u00dcberblick \u00fcber steife Gleichungen <\/a> zusammengefasst. Eine tiefere Analyse, warum die Steifigkeit einer einfachen auf Eigenwerten basierenden Definition widersteht, finden Sie in <a href=\"https:\/\/people.maths.ox.ac.uk\/trefethen\/publication\/PDF\/1993_56.pdf\" rel=\"nofollow\" target=\"_blank\"> Steifheit der Oden <\/a>.<\/p>\n<h2>Praktische Anzeichen von Steifheit<\/h2>\n<p>Ein Modell kann steif sein, wenn:<\/p>\n<ul>\n<li>Eine adaptive explizite Methode reduziert wiederholt ihren Schritt trotz einer reibungslosen L\u00f6sung.<\/li>\n<li>Der explizite Solver macht viele Schritte, nachdem ein schneller Transient bereits verfallen ist.<\/li>\n<li>Eine kleine \u00c4nderung der Schrittweite schaltet die Berechnung von stabil zu explosiv.<\/li>\n<li>Der Jacobian enth\u00e4lt stark negative Modi mit sehr unterschiedlichen Skalen.<\/li>\n<li>Ein impliziter Solver schlie\u00dft die gleiche Berechnung mit weit weniger akzeptierten Schritten ab.<\/li>\n<li>Chemische Reaktionen, Diffusions-, Relaxations- oder Strafbedingungen f\u00fchren sehr kurze Zeitskalen ein.<\/li>\n<\/ul>\n<p>Diese Symptome sollten nicht verwendet werden, um m\u00f6gliche Codierungs- oder Modellierungsfehler zu verwerfen. Falsche Vorzeichen, Einheiten, Randbedingungen oder Jacobis k\u00f6nnen ein Verhalten erzeugen, das der Steifheit \u00e4hnelt.<\/p>\n<h2>Die Dahlquist-Testgleichung<\/h2>\n<p>Stabilit\u00e4t wird h\u00e4ufig untersucht mit:<\/p>\n<pre><code>dy\/dt = \u03bby<\/code><\/pre>\n<p>Die genaue L\u00f6sung nach einem Schritt ist:<\/p>\n<pre><code>y(t + \u0394t) =\ne^(\u03bb\u0394t)y(t)<\/code><\/pre>\n<p>Eine numerische Methode erzeugt:<\/p>\n<pre><code>y\u207f\u207a\u00b9 =\nR(z)y\u207f\n\nz = \u03bb\u0394t<\/code><\/pre>\n<p>Die Funktion <code>R(z)<\/code> ist die Stabilit\u00e4tsfunktion. Die Methode ist absolut stabil, wenn:<\/p>\n<pre><code>|R(z)| \u2264 1<\/code><\/pre>\n<p>Die Menge aller dieser Werte bildet den absoluten Stabilit\u00e4tsbereich.<\/p>\n<p>Eine klare Einf\u00fchrung in die Dahlquist-Gleichung und die A-Stabilit\u00e4t finden Sie in den Anmerkungen zu <a href=\"https:\/\/www.math.iit.edu\/~fass\/478578_Chapter_4.pdf\" rel=\"nofollow\" target=\"_blank\"> IIT Numerical Analysis <\/a>.<\/p>\n<h2>Warum explizite Methoden scheitern<\/h2>\n<p>Vorw\u00e4rts hat Euler:<\/p>\n<pre><code>R(z) = 1 + z<\/code><\/pre>\n<p>Sein Stabilit\u00e4tsbereich ist eine Scheibe, die bei <code>\u22121<\/code> mit dem Radius eins zentriert ist. Entlang der negativen realen Achse:<\/p>\n<pre><code>\u22122 \u2264 z \u2264 0<\/code><\/pre>\n<p>Klassische RK4 hat eine gr\u00f6\u00dfere Region, die sich bis zu ca.:<\/p>\n<pre><code>z \u2248 \u22122.785<\/code><\/pre>\n<p>es ist immer noch begrenzt. Keine explizite Runge-Kutta-Methode kann a-stabil sein.<\/p>\n<p>Wenn ein Jacobian-Eigenwert ungef\u00e4hr <code>\u22121000<\/code>  ist, erfordert RK4 einen Schritt kleiner als ungef\u00e4hr:<\/p>\n<pre><code>\u0394t \u2272 2.785 \/ 1000<\/code><\/pre>\n<p>Eine explizite Methode h\u00f6herer Ordnung verbessert die Genauigkeit und kann das stabile Intervall vergr\u00f6\u00dfern, aber es kann die Stabilit\u00e4t nicht beliebig weit entlang der negativen realen Achse verl\u00e4ngern.<\/p>\n<h2>A-Stabilit\u00e4t<\/h2>\n<p>Eine A-stabile Methode enth\u00e4lt die gesamte linke Halbebene in ihrem Stabilit\u00e4tsbereich:<\/p>\n<pre><code>Re(z) \u2264 0\n\u21d2\n|R(z)| \u2264 1<\/code><\/pre>\n<p>R\u00fcckw\u00e4rts Euler ist a-stabil, weil:<\/p>\n<pre><code>R(z) =\n1 \/ (1 - z)<\/code><\/pre>\n<p>Bei Modi mit negativen Realteilen bleibt das Verfahren unabh\u00e4ngig von der Schrittgr\u00f6\u00dfe stabil.<\/p>\n<p>Dies bedeutet nicht, dass ein beliebig gro\u00dfer Schritt genau ist. A-Stabilit\u00e4t beseitigt eine Stabilit\u00e4tsbeschr\u00e4nkung, beseitigt jedoch keinen Abschneidefehler.<\/p>\n<h2>L-Stabilit\u00e4t<\/h2>\n<p>Eine L-stabile Methode ist a-stabil und erf\u00fcllt auch:<\/p>\n<pre><code>R(z) \u2192 0\nas\nz \u2192 -\u221e<\/code><\/pre>\n<p>Diese Eigenschaft d\u00e4mpft ungel\u00f6ste schnelle Modi stark. R\u00fcckw\u00e4rts Euler ist L-stabil.<\/p>\n<p>Crank-Niconson ist a-stabil, aber nicht L-stabil. Seine Stabilit\u00e4tsfunktion ist:<\/p>\n<pre><code>R(z) =\n(1 + z\/2)\n\/\n(1 - z\/2)<\/code><\/pre>\n<p>Als <code>z \u2192 -\u221e<\/code> n\u00e4hert sich der Faktor <code>\u22121<\/code>. Eine sehr steife Komponente kann sich im Vorzeichen abwechseln, anstatt schnell zu zerfallen. Dies kann zu nicht-physikalischen Oszillationen f\u00fchren, obwohl die Methode begrenzt bleibt.<\/p>\n<p>L-Stabilit\u00e4t ist besonders wertvoll, wenn schnelle Transienten verschwinden sollten, anstatt in der berechneten L\u00f6sung sichtbar zu bleiben.<\/p>\n<h2>Das Prothero-Robinson-Problem<\/h2>\n<p>Das Prothero-Robinson-Testproblem hat die allgemeine Form:<\/p>\n<pre><code>dy\/dt =\n\u03bb[y - g(t)]\n+ g'(t)<\/code><\/pre>\n<p>Seine genaue L\u00f6sung ist:<\/p>\n<pre><code>y(t) =\ng(t)\n+\n[y(0) - g(0)]e^(\u03bbt)<\/code><\/pre>\n<p>Ausw\u00e4hlen:<\/p>\n<pre><code>g(t) = sin(t)<\/code><\/pre>\n<p>gibt:<\/p>\n<pre><code>dy\/dt =\n\u03bb[y - sin(t)]\n+ cos(t)<\/code><\/pre>\n<p>und:<\/p>\n<pre><code>y(t) =\nsin(t)\n+\ny(0)e^(\u03bbt)<\/code><\/pre>\n<p>Wenn <code>g(0)=0<\/code>.<\/p>\n<p>F\u00fcr ein gro\u00dfes negatives <code>\u03bb<\/code> zerf\u00e4llt der exponentielle \u00dcbergang schnell, w\u00e4hrend das reibungslose Forcen <code>sin(t)<\/code> verbleibt. Eine explizite Methode kann immer noch gezwungen sein, den schnell abfallenden Modus f\u00fcr die Stabilit\u00e4t aufzul\u00f6sen.<\/p>\n<p>Das Problem wird auch verwendet, um die steife Auftragsreduzierung zu untersuchen. Einige Methoden erreichen ihre nominale Konvergenzreihenfolge nicht, wenn Steifheit, Erzwingen und Grenz- oder Einschr\u00e4nkungseffekte interagieren.<\/p>\n<h2>Python-Vergleich mit SciPy<\/h2>\n<p>Das folgende Beispiel vergleicht eine explizite Methode mit zwei steifen L\u00f6sern:<\/p>\n<pre><code class=\"language-python\">import numpy as np\n\nfrom scipy.integrate import solve_ivp\n\nstiffness = -1000.0\ntime_interval = (0.0, 10.0)\ninitial_state = [1.0]\n\ndef right_hand_side(time, state):\n    value = state[0]\n\n    return [\n        stiffness\n        * (value - np.sin(time))\n        + np.cos(time)\n    ]\n\ndef jacobian(time, state):\n    return np.array([\n        [stiffness]\n    ])\n\ndef exact_solution(time):\n    return (\n        np.sin(time)\n        + np.exp(stiffness * time)\n    )\n\nmethods = [\n    (\"RK45\", {}),\n    (\"Radau\", {\"jac\": jacobian}),\n    (\"BDF\", {\"jac\": jacobian}),\n    (\"LSODA\", {})\n]\n\nfor method, options in methods:\n    solution = solve_ivp(\n        fun=right_hand_side,\n        t_span=time_interval,\n        y0=initial_state,\n        method=method,\n        rtol=1e-7,\n        atol=1e-9,\n        **options\n    )\n\n    reference = exact_solution(\n        solution.t\n    )\n\n    maximum_error = np.max(\n        np.abs(\n            solution.y[0]\n            - reference\n        )\n    )\n\n    print(method)\n    print(\"  Success:\", solution.success)\n    print(\"  Accepted points:\", solution.t.size)\n    print(\"  Function evaluations:\", solution.nfev)\n    print(\"  Jacobian evaluations:\", solution.njev)\n    print(\"  LU factorizations:\", solution.nlu)\n    print(\"  Maximum error:\", maximum_error)<\/code><\/pre>\n<p>Die genauen Z\u00e4hlungen h\u00e4ngen von Toleranzen, Softwareversion, Anfangszustand, Jacobian-Informationen und Solver-Einstellungen ab. Der wichtige Vergleich ist die Gesamtberechnungskosten bei gleicher Fehlerstufe.<\/p>\n<h2>Familien von steifen L\u00f6sern<\/h2>\n<p>Kein einzelner Solver ist f\u00fcr jedes steife System am besten geeignet. Wichtige \u00dcberlegungen sind:<\/p>\n<ul>\n<li>Systemdimension<\/li>\n<li>Jacobianische Sparsamkeit und Bandbreite<\/li>\n<li>Kosten der Bewertung der rechten Seite<\/li>\n<li>Verf\u00fcgbarkeit analytischer Derivate<\/li>\n<li>angeforderte Toleranz<\/li>\n<li>Vorhandensein von Einschr\u00e4nkungen oder einer Massenmatrix<\/li>\n<li>ob sich das Problem zwischen steifen und nicht steifen Phasen \u00e4ndert<\/li>\n<\/ul>\n<h2>R\u00fcckw\u00e4rtsdifferenzierungsformeln<\/h2>\n<p>BDF-Methoden sind implizite mehrstufige Formeln. Sie approximieren die Ableitung unter Verwendung mehrerer fr\u00fcherer L\u00f6sungswerte und bewerten die ma\u00dfgebliche Gleichung zum neuen Zeitpunkt.<\/p>\n<p>Eine BDF-Formel erster Ordnung ist r\u00fcckw\u00e4rts Euler:<\/p>\n<pre><code>(\n    y\u207f\u207a\u00b9 - y\u207f\n) \/ \u0394t\n=\nf(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\n<p>BDF2 verwendet zwei vorherige Werte:<\/p>\n<pre><code>(\n    3y\u207f\u207a\u00b9\n    - 4y\u207f\n    + y\u207f\u207b\u00b9\n) \/ (2\u0394t)\n=\nf(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\n<p>Implementierungen mit variabler Ordnung k\u00f6nnen mehrere BDF-Bestellungen verwenden und sowohl die Reihenfolge als auch die Schrittgr\u00f6\u00dfe anpassen. Bestellungen eins und zwei sind a-stabil. BDF-Formeln h\u00f6herer Ordnung opfern die volle A-Stabilit\u00e4t, bleiben aber f\u00fcr viele steife Systeme n\u00fctzlich.<\/p>\n<p>BDF-Methoden sind h\u00e4ufig f\u00fcr gro\u00dfe Systeme wirksam, wenn der Jacobian sp\u00e4rlich ist und ein geeigneter linearer L\u00f6ser oder Vorkonditionierer verf\u00fcgbar ist.<\/p>\n<p>Beispiele hierf\u00fcr sind die <code>BDF<\/code> von Scipy, die Matlab <code>ode15s<\/code>, die Sonnenuhren Cvode BDF und die SCIML-Methoden wie <code>QNDF<\/code> und <code>FBDF<\/code>.<\/p>\n<h2>Rosenbrock-Methoden<\/h2>\n<p>Rosenbrock-Methoden sind linear implizite Runge-Kutta-Methoden. Sie linearisieren die B\u00fchnengleichungen und l\u00f6sen Systeme der Form:<\/p>\n<pre><code>(\n    I - \u03b3\u0394tJ\n)k\u1d62\n=\nknown stage terms<\/code><\/pre>\n<p>Dies vermeidet eine vollst\u00e4ndige nichtlineare L\u00f6sung in jeder Phase. Die Methode erfordert immer noch Jacobi-Informationen oder eine n\u00fctzliche Ann\u00e4herung.<\/p>\n<p>Rosenbrock-Methoden sind h\u00e4ufig f\u00fcr kleine und mittlere steife Systeme wirksam, insbesondere bei strengen Toleranzen. Die gleiche Matrixstruktur kann \u00fcber mehrere Stufen wiederverwendet werden.<\/p>\n<p>Beispiele im SCIML-\u00d6kosystem sind:<\/p>\n<ul>\n<li><code>Rosenbrock23<\/code><\/li>\n<li><code>Rodas4<\/code><\/li>\n<li><code>Rodas5P<\/code><\/li>\n<\/ul>\n<p>Die aktuelle <a href=\"https:\/\/docs.sciml.ai\/OrdinaryDiffEq\/stable\/semiimplicit\/Rosenbrock\/\" rel=\"nofollow\" target=\"_blank\"> sciml Rosenbrock-Dokumentation <\/a> enth\u00e4lt methodenspezifische Empfehlungen und Implementierungsdetails.<\/p>\n<h2>SDIrk-Methoden<\/h2>\n<p>Sdirk bedeutet <strong> implizit implizit Runge-Kutta <\/strong>. Jede implizite Stufe verwendet den gleichen Diagonalkoeffizienten in der Runge-Kutta-Matrix.<\/p>\n<p>Dadurch entstehen B\u00fchnensysteme mit wiederholter Struktur:<\/p>\n<pre><code>(\n    I - \u03b3\u0394tJ\n)k\u1d62\n=\nstage residual<\/code><\/pre>\n<p>Eine Matrixfaktorisierung oder ein Vorkonditionierer kann daher schrittweise wiederverwendet werden, wenn der Jacobian festgehalten wird.<\/p>\n<p>SDIrk-Methoden sind einstufige Methoden, wodurch sie nach Ereignissen oder Diskontinuit\u00e4ten leichter neu gestartet werden k\u00f6nnen als mehrstufige BDF-Formeln.<\/p>\n<p>Beispiele sind Esdirk- und Kencarp-Methoden. Einige liefern L-Stabilit\u00e4t und eingebettete Fehlersch\u00e4tzungen.<\/p>\n<h2>TR-BDF2<\/h2>\n<p>TR-BDF2 ist eine zusammengesetzte einstufige Methode. Es kombiniert eine Trapez-Regel-Stufe mit einer R\u00fcckw\u00e4rtsdifferenzierungsstufe zweiter Ordnung.<\/p>\n<p>Es sollte nicht mit gew\u00f6hnlichen BDF-Solvern mit variabler Ordnung gruppiert werden. Seine spezielle Konstruktion bietet Genauigkeit zweiter Ordnung und starke Stabilit\u00e4tseigenschaften, einschlie\u00dflich L-Stabilit\u00e4t f\u00fcr die Standardparameterauswahl.<\/p>\n<p>TR-BDF2 ist oft eine praktische Allzweck-Steifmethode, wenn m\u00e4\u00dfige Ordnung und robuste D\u00e4mpfung wichtiger sind als eine sehr hohe asymptotische Ordnung.<\/p>\n<h2>Vollst\u00e4ndig implizite Runge-Kutta-Methoden<\/h2>\n<p>Firk bedeutet <strong>Voll implizite Runge-Kutta<\/strong>. Die Stufen sind gekoppelt und erfordern normalerweise das L\u00f6sen eines gr\u00f6\u00dferen nichtlinearen Systems.<\/p>\n<p>Wichtige Familien sind:<\/p>\n<ul>\n<li>Radau IIa-Methoden<\/li>\n<li>Gauss-Legendre-Methoden<\/li>\n<li>Lobatto-Methoden<\/li>\n<\/ul>\n<p>RADAU IIA-Methoden k\u00f6nnen hohe Ordnung, A-Stabilit\u00e4t und L-Stabilit\u00e4t bieten. Sie sind attraktiv f\u00fcr steife Probleme mit hoher Genauigkeit, k\u00f6nnen jedoch h\u00f6here Kosten pro Schritt haben als Rosenbrock-, SDIrk- oder BDF-Methoden.<\/p>\n<p>Der <code>Radau<\/code>-Solver von Scipy basiert auf einer Radau IIA-Methode f\u00fcnfter Ordnung.<\/p>\n<h2>Stabilisierte explizite Methoden<\/h2>\n<p>Stabilisierte explizite Methoden verwenden speziell konstruierte Stabilit\u00e4tspolynome, um das stabile Intervall entlang der negativen realen Achse zu verl\u00e4ngern.<\/p>\n<p>Beispiele sind:<\/p>\n<ul>\n<li>RKC-Methoden<\/li>\n<li>rock2<\/li>\n<li>Rock4<\/li>\n<\/ul>\n<p>Bei einem Verfahren mit <code>s<\/code>-Stufen kann das stabile Intervall ungef\u00e4hr wie <code>s\u00b2<\/code> wachsen. Dies macht den Ansatz f\u00fcr gro\u00dfe diffusionsdominierte Systeme n\u00fctzlich, bei denen das Jacobi-Spektrum haupts\u00e4chlich nahe der negativen realen Achse liegt.<\/p>\n<p>Diese Methoden sind nicht a-stabil und l\u00f6sen nicht jede Art von Steifheit. Sie k\u00f6nnen ungeeignet sein, wenn das System erhebliche imagin\u00e4re Eigenwerte, eine stark nichtlineare Reaktionssteifigkeit, differential-algebraische Einschr\u00e4nkungen oder eine schwierige Kopplung aufweist.<\/p>\n<p>Das <a href=\"https:\/\/www.epfl.ch\/labs\/mathicse\/wp-content\/uploads\/2018\/10\/27.2011_AA.pdf\" rel=\"nofollow\" target=\"_blank\"> EPFL-Material zu stabilisierten expliziten Methoden <\/a> veranschaulicht, wie Chebyshev-basierte Methoden die Stabilit\u00e4tsdom\u00e4ne erweitern.<\/p>\n<h2>IMEX-Methoden<\/h2>\n<p>Wenn die Steifheit von der nicht steifen Dynamik getrennt werden kann, kann eine implizit-explizite Methode effizienter sein als die Behandlung des gesamten Systems implizit:<\/p>\n<pre><code>dy\/dt =\nf_nonstiff(y)\n+\nf_stiff(y)<\/code><\/pre>\n<p>Der nicht steife Begriff wird explizit integriert, w\u00e4hrend der steife Begriff implizit integriert wird.<\/p>\n<p>Beispiele sind die explizit und diffusionsbehandelte Advektion oder der Transport explizit behandelt und chemische Reaktionen implizit behandelt.<\/p>\n<p>IMEX-Methoden erfordern eine physikalisch und numerisch aussagekr\u00e4ftige Operatorsplit. Ihre Stabilit\u00e4t h\u00e4ngt vom vollst\u00e4ndig explizit impliziten Paar ab.<\/p>\n<h2>Automatische Steifigkeitsumschaltung<\/h2>\n<p>Einige Algorithmen sch\u00e4tzen die Steifigkeit, w\u00e4hrend sie integrieren und zwischen nicht steifen und steifen Formeln wechseln.<\/p>\n<p>LSODA wechselt zwischen einer Adams-Methode und einer BDF-Methode. Es ist \u00fcber Odepack, SciPy und mehrere Sprachschnittstellen verf\u00fcgbar.<\/p>\n<p>Im SCIML-\u00d6kosystem kann eine automatische Methode einen expliziten Algorithmus mit einem steifen Solver kombinieren, zum Beispiel:<\/p>\n<pre><code class=\"language-julia\">AutoTsit5(\n    Rosenbrock23()\n)<\/code><\/pre>\n<p>Das automatische Umschalten ist n\u00fctzlich, wenn die Steifigkeit unbekannt ist oder nur w\u00e4hrend eines Teils der Flugbahn auftritt. Die Erkennung ist nicht perfekt, daher k\u00f6nnen schwierige Probleme immer noch von der direkten Auswahl eines steifen Solvers profitieren.<\/p>\n<p>Die aktuelle <a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/solvers\/ode_solve\" rel=\"nofollow\" target=\"_blank\"> sciml ODE-Solver-Anleitung <\/a> empfiehlt automatische Umschaltmethoden, wenn die Steifheit ungewiss ist.<\/p>\n<h2>Der Jacobian ist wichtig<\/h2>\n<p>F\u00fcr einen impliziten Schritt kann der nichtlineare Rest sein:<\/p>\n<pre><code>G(y\u207f\u207a\u00b9) =\ny\u207f\u207a\u00b9\n- y\u207f\n- \u0394t f(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\n<p>Die Newton-Methode erfordert:<\/p>\n<pre><code>[\n    I\n    - \u0394tJ\n]\u03b4\n=\n-G<\/code><\/pre>\n<p>wo:<\/p>\n<pre><code>J =\n\u2202f \/ \u2202y<\/code><\/pre>\n<p>Die lineare L\u00f6sung kann die Laufzeit dominieren. Ein steifer Solver wird schlecht funktionieren, wenn er einen gro\u00dfen sp\u00e4rlichen Jacobian als dichte Matrix behandelt.<\/p>\n<p>Die Leistung kann sich verbessern durch:<\/p>\n<ul>\n<li>Ein analytischer Jacobian<\/li>\n<li>Automatische Differenzierung<\/li>\n<li>ein deklariertes Sparsity-Muster<\/li>\n<li>Geb\u00e4nderte Matrixspeicherung<\/li>\n<li>Sp\u00e4rliche direkte Faktorisierung<\/li>\n<li>Krylov-Methoden<\/li>\n<li>Physikbasierte Vorkonditionierung<\/li>\n<li>Matrixfreie Jacobi-Vektor-Produkte<\/li>\n<\/ul>\n<p>Das SCIML-Tutorial zu <a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/tutorials\/advanced_ode_example\/\" rel=\"nofollow\" target=\"_blank\"> L\u00f6sen gro\u00dfer steifer Gleichungen <\/a> zeigt, wie sich die Struktur und die Auswahl der linearen Solver auf die Leistung auswirken.<\/p>\n<h2>L\u00f6ser-Auswahlhandbuch<\/h2>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Problemcharakteristik<\/th>\n<th>M\u00f6glicher Ausgangspunkt<\/th>\n<th>Haupt\u00fcberlegung<\/th>\n<\/tr>\n<tr>\n<td>Nicht steife glatte Ode<\/td>\n<td>adaptive explizite rk<\/td>\n<td>Niedrige Kosten pro Schritt<\/td>\n<\/tr>\n<tr>\n<td>kleines oder mittleres steifes System<\/td>\n<td>Rosenbrock- oder Radau-Methode<\/td>\n<td>Genauigkeit, Jacobi-Kosten und Toleranz<\/td>\n<\/tr>\n<tr>\n<td>Gro\u00dfes sp\u00e4rliches steifes System<\/td>\n<td>BDF, Rosenbrock oder Sdirk mit sp\u00e4rlicher linearer Algebra<\/td>\n<td>Jacobi-Struktur ist wichtiger als eine Schwellenwert f\u00fcr feste Gr\u00f6\u00dfen<\/td>\n<\/tr>\n<tr>\n<td>Hochgenaue steife Integration<\/td>\n<td>RADAU IIA oder HOCHR\u00d6SSEN ROSENBROCK<\/td>\n<td>Gr\u00f6\u00dfere B\u00fchne und l\u00f6sen die Kosten<\/td>\n<\/tr>\n<tr>\n<td>Diffusionsdominierte milde Steifheit<\/td>\n<td>rkc oder rock<\/td>\n<td>Das Spektrum sollte haupts\u00e4chlich in der N\u00e4he der negativen realen Achse liegen<\/td>\n<\/tr>\n<tr>\n<td>Trennbare steife und nicht steife Physik<\/td>\n<td>IMEX-Methode<\/td>\n<td>Ben\u00f6tigt eine geeignete Operatorsplit<\/td>\n<\/tr>\n<tr>\n<td>unbekannte oder sich \u00e4ndernde Steifheit<\/td>\n<td>LSODA oder explizit-implizite automatische Umschaltung<\/td>\n<td>Die Erkennung erh\u00f6ht die Komplexit\u00e4t, aber wenig manuelles Tuning<\/td>\n<\/tr>\n<tr>\n<td>DAE oder Massenmatrixproblem<\/td>\n<td>DAE-f\u00e4hige BDF-, Radau- oder Rosenbrock-Methode<\/td>\n<td>ODE-Solver k\u00f6nnen algebraische Einschr\u00e4nkungen m\u00f6glicherweise nicht richtig durchsetzen<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Warum feste Dimensionsschwellen irref\u00fchrend sind<\/h2>\n<p>Es ist verlockend, Rosenbrock-Methoden unter 1.000 Gleichungen, SDIrk-Methoden bis zu 10.000 und dar\u00fcber hinaus BDF-Methoden zu empfehlen. Solche Schwellen sind nicht zuverl\u00e4ssig.<\/p>\n<p>Ein dichtes 500-Gleichungs-Problem kann teurer sein als ein sp\u00e4rliches System, das Hunderttausende von Gleichungen enth\u00e4lt. Die entscheidenden Faktoren sind:<\/p>\n<ul>\n<li>Anzahl der Jacobian-Eintr\u00e4ge ungleich Null<\/li>\n<li>Ausf\u00fcllen w\u00e4hrend der Faktorisierung<\/li>\n<li>Qualit\u00e4t der Vorkonditionierer<\/li>\n<li>rechte Seite Kosten<\/li>\n<li>Erforderliche Toleranz<\/li>\n<li>H\u00e4ufigkeit von Jacobi-Updates<\/li>\n<li>Verf\u00fcgbarkeit von matrixfreien Produkten<\/li>\n<li>Parallele Skalierbarkeit<\/li>\n<\/ul>\n<p>Die Wahl des Solver sollte durch Vergleiche der Arbeitsgenauigkeit des tats\u00e4chlichen Problems getestet werden.<\/p>\n<h2>Das Beispiel der Flammenausbreitung<\/h2>\n<p>Das Beispiel f\u00fcr die Flammenausbreitung von Cleve Moler verwendet die nichtlineare skalare Gleichung:<\/p>\n<pre><code>dy\/dt =\ny\u00b2(1 - y)<\/code><\/pre>\n<p>Der Anfangswert ist sehr klein. Die L\u00f6sung bleibt f\u00fcr eine lange Induktionsperiode nahe Null, geht schnell \u00fcber und n\u00e4hert sich dann eins.<\/p>\n<p>Im ver\u00f6ffentlichten MATLAB-Vergleich nahm der nicht-steife <code>ode45<\/code>-Solver 3.040 Schritte und 20.179 Funktionsauswertungen vor. Der steife Rosenbrock-basierte <code>ode23s<\/code>  Solver nahm 99 Schritte und 412 Funktionsbewertungen an.<\/p>\n<p>Dies sind ungef\u00e4hr drei\u00dfigmal weniger akzeptierte Schritte, nicht ein Prozent der urspr\u00fcnglichen Schrittzahl.<\/p>\n<p>Das Beispiel und seine Lambert-W-Analyse werden in <a href=\"https:\/\/de.mathworks.com\/company\/technical-articles\/stiff-differential-equations.html\" rel=\"nofollow\" target=\"_blank\"> steifen Differentialgleichungen <\/a> von Cleve Moler beschrieben.<\/p>\n<p>Das Ergebnis sollte nicht als universeller drei\u00dfigfacher Vorteil f\u00fcr implizite Methoden interpretiert werden. Es zeigt, wie stark sich die Effizienz des Solvers \u00e4ndern kann, wenn Stabilit\u00e4t und nicht Genauigkeit einen expliziten Integrator steuert.<\/p>\n<h2>L\u00f6ser fair vergleichen<\/h2>\n<p>Ein fairer Benchmark sollte Methoden mit gleicher Genauigkeit vergleichen. Aufzeichnung:<\/p>\n<ul>\n<li>Globaler Fehler oder Fehler in einer Menge von Interesse<\/li>\n<li>Akzeptierte und abgelehnte Schritte<\/li>\n<li>Rechte Auswertungen<\/li>\n<li>Jacobianische Bewertungen<\/li>\n<li>Lineare L\u00f6sungs- und Faktorisierungen<\/li>\n<li>Nichtlineare Iterationen<\/li>\n<li>Speicherverbrauch<\/li>\n<li>Gesamt-Wanduhrzeit<\/li>\n<\/ul>\n<p>Ein L\u00f6ser, der weniger Schritte unternimmt, kann immer noch langsamer sein, wenn jeder Schritt eine teure Faktorisierung erfordert. Eine Methode mit mehr Funktionsbewertungen kann gewinnen, wenn die Funktion billig ist und die konkurrierende lineare Algebra kostspielig ist.<\/p>\n<h2>H\u00e4ufige Fehler<\/h2>\n<ul>\n<li>Angenommen, jede abweichende explizite L\u00f6sung beweist Steifheit<\/li>\n<li>Das Steifigkeitsverh\u00e4ltnis als endg\u00fcltige Diagnose behandeln<\/li>\n<li>Verwenden der Jacobian Trace als universelle Steifheitsdefinition<\/li>\n<li>Angenommen, jede implizite Methode ist a-stabil<\/li>\n<li>Angenommen, jede A-stabile Methode ist L-stabil<\/li>\n<li>Aufrufen von TR-BDF2 als gew\u00f6hnliche Mehrschritt-BDF-Methode<\/li>\n<li>Erweitern von Firk als explizite Runge-Kutta-Familie<\/li>\n<li>Verwenden eines dichten Jacobian f\u00fcr ein gro\u00dfes sp\u00e4rliches System<\/li>\n<li>Fehlen eines Jacobi- oder Sparsity-Musters, wenn der Solver eines verwenden kann<\/li>\n<li>Ausw\u00e4hlen eines Solvers nur aus der Anzahl der Gleichungen<\/li>\n<li>Verwenden einer stabilisierten expliziten Methode f\u00fcr die Steifigkeit au\u00dferhalb ihres spektralen Designs<\/li>\n<li>Vergleichen von Schrittz\u00e4hlungen ohne Fehler und Laufzeit zu vergleichen<\/li>\n<li>Sehr gro\u00dfe implizite Schritte ohne \u00dcberpr\u00fcfung der zeitlichen Genauigkeit<\/li>\n<\/ul>\n<h2>Ein praktischer Arbeitsablauf<\/h2>\n<ol>\n<li>\u00dcberpr\u00fcfen Sie die Gleichungen, Einheiten, Zeichen und Anfangsbedingungen.<\/li>\n<li>F\u00fchren Sie eine adaptive explizite Methode als Diagnose aus.<\/li>\n<li>\u00dcberpr\u00fcfen Sie akzeptierte Schritte, abgelehnte Schritte und minimale Schrittgr\u00f6\u00dfe.<\/li>\n<li>Sch\u00e4tzen oder analysieren Sie das Jacobi-Spektrum, wo dies praktikabel ist.<\/li>\n<li>Pr\u00fcfen Sie, ob die schnellen Komponenten physikalisch aufgel\u00f6st werden m\u00fcssen.<\/li>\n<li>Versuchen Sie es mit einem L-stabilen steifen Solver mit den gleichen Toleranzen.<\/li>\n<li>Liefern Sie Jacobi-Informationen und Sparsity.<\/li>\n<li>Vergleichen Sie Arbeit und Genauigkeit, nicht nur akzeptierte Schritte.<\/li>\n<li>Wiederholen Sie mit engeren Toleranzen.<\/li>\n<li>Dokumentenl\u00f6ser, Toleranzen, lineare Algebra und Ausfallkriterien.<\/li>\n<\/ol>\n<h2>Verwandte Anleitungen<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" rel=\"nofollow\">Zeitintegrationsmethoden f\u00fcr PDE-Solver<\/a> \u2014 Vergleich explizite, implizite und hybride Ans\u00e4tze.<\/li>\n<li><a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\">Operator-Splitting, Strang-Splitting und IMEX-Schemata<\/a> \u2014 Trennen Sie steif und nicht steife physikalische Prozesse.<\/li>\n<li><a href=\"https:\/\/matforge.org\/mesh-quality-convergence-studies-guide-2\/\">Mesh-Qualit\u00e4ts- und Konvergenzstudien<\/a> &#8211; Bestimmen Sie, ob die r\u00e4umliche Verfeinerung die Steifheit erh\u00f6ht und die L\u00f6sung ver\u00e4ndert.<\/li>\n<li><a href=\"https:\/\/matforge.org\/verification-vs-validation-in-scientific-simulations-a-practical-guide\/\">Verifikation vs. Validierung in wissenschaftlichen Simulationen<\/a> \u2014 Platzieren Sie die Konvergenz des Solver innerhalb der breiterer Glaubw\u00fcrdigkeits-Workflow.<\/li>\n<li><a href=\"https:\/\/matforge.org\/category\/simulation-modeling-projects\/\" rel=\"nofollow\">Simulation &amp; Modellierungsprojekte <\/a> &#8211; Durchsuchen Sie verwandte Matforge-Ressourcen.<\/li>\n<\/ul>\n<h2>weiterlesen<\/h2>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Stiff_equation\" rel=\"nofollow\" target=\"_blank\">Steife Gleichung: Definitionen, Indikatoren und historischer Kontext<\/a><\/li>\n<li><a href=\"https:\/\/people.maths.ox.ac.uk\/trefethen\/publication\/PDF\/1993_56.pdf\" rel=\"nofollow\" target=\"_blank\">Higham und Trefethen: Steifheit der Oden<\/a><\/li>\n<li><a href=\"https:\/\/www.math.iit.edu\/~fass\/478578_Chapter_4.pdf\" rel=\"nofollow\" target=\"_blank\">IIT-Hinweise zur absoluten Stabilit\u00e4t und A-Stabilit\u00e4t<\/a><\/li>\n<li><a href=\"https:\/\/www.epfl.ch\/labs\/mathicse\/wp-content\/uploads\/2018\/10\/27.2011_AA.pdf\" rel=\"nofollow\" target=\"_blank\">EPFL-Material zu stabilisierten expliziten Methoden<\/a><\/li>\n<li><a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/solvers\/ode_solve\" rel=\"nofollow\" target=\"_blank\">SCIML-ODE-Solver-Empfehlungen<\/a><\/li>\n<li><a href=\"https:\/\/de.mathworks.com\/company\/technical-articles\/stiff-differential-equations.html\" rel=\"nofollow\" target=\"_blank\">MathWorks: steife Differentialgleichungen<\/a><\/li>\n<\/ul>\n<h2>Schlussfolgerung<\/h2>\n<p>Steifigkeit tritt auf, wenn die numerische Stabilit\u00e4t ein Verfahren dazu zwingt, schnelle Komponenten n\u00e4her zu l\u00f6sen als die gew\u00fcnschte Ausgabe erfordert. Explizite Runge-Kutta-Methoden haben begrenzte Stabilit\u00e4tsbereiche, sodass gro\u00dfe negative Jacobi-Modi extrem kleine Schritte auferlegen k\u00f6nnen.<\/p>\n<p>A-stabile implizite Methoden beseitigen diese Einschr\u00e4nkung der Stabilit\u00e4t der linken H\u00e4lfte. L-stabile Methoden gehen weiter, indem sie ungel\u00f6ste schnelle Modi stark d\u00e4mpfen. Diese Eigenschaften erkl\u00e4ren, warum r\u00fcckst\u00e4ndige Euler-, BDF-, Rosenbrock-, SDIrk-, TR-BDF2- und Radau-Methoden explizite L\u00f6ser auf steifen Systemen \u00fcbertreffen k\u00f6nnen.<\/p>\n<p>Kein einzelner Diagnose- oder Solver funktioniert f\u00fcr jedes Problem. Eigenwerte, Steifigkeitsverh\u00e4ltnisse, skalierte Divergenz und beobachtete Schrittbeschr\u00e4nkungen liefern alle Teilinformationen. Die Struktur des Jacobian und des linearen Solvers kann wichtiger sein als die nominale Anzahl von Gleichungen.<\/p>\n<p>Stabilisierte explizite Methoden sind n\u00fctzlich, wenn die Steifheit moderat ist und von Negativ-Real-Achsen-Eigenwerten dominiert wird. IMEX-Methoden funktionieren, wenn steife und nicht steife Operatoren getrennt werden k\u00f6nnen. Automatische Umschaltmethoden helfen, wenn sich das Regime w\u00e4hrend der Integration \u00e4ndert.<\/p>\n<p>Die endg\u00fcltige Wahl sollte auf Arbeitsgenauigkeitspr\u00fcfungen basieren. Der beste steife Solver ist die Methode, die die erforderliche wissenschaftliche Genauigkeit mit den niedrigsten zuverl\u00e4ssigen Rechenkosten erreicht.<\/p>\n<\/article>\n","protected":false,"raw":"<article>\n<p>Eine zeitabh\u00e4ngige Simulation kann gut formuliert aussehen und einen expliziten Solver dennoch dazu zwingen, Tausende von extrem kleinen Schritten zu machen. Eine Erh\u00f6hung der Bestellung von vorw\u00e4rts euler auf RK4 kann das Problem verz\u00f6gern, beseitigt es jedoch nicht immer. Das System kann steif sein.<\/p>\n<p>Die Steifheit tritt auf, wenn die numerische Stabilit\u00e4t einen viel kleineren Zeitschritt erfordert als der Schritt, um das Verhalten von wissenschaftlichem Interesse aufzul\u00f6sen. Schnelle Komponenten k\u00f6nnen fast sofort abklingen, w\u00e4hrend langsamere Komponenten die Langzeitl\u00f6sung steuern. Ein expliziter Integrator muss f\u00fcr beide stabil bleiben.<\/p>\n<p>Implizite steife Solver k\u00f6nnen schnell abfallende Modi \u00fcberschreiten, da sich ihre Stabilit\u00e4tsbereiche viel weiter in die linke H\u00e4lfte der komplexen Ebene erstrecken. Der Kompromiss besteht darin, dass jeder akzeptierte Schritt eine Bewertung der Jacobian, eine Matrixfaktorisierung, eine iterative lineare Algebra oder eine nichtlineare L\u00f6sung erfordert.<\/p>\n<p>Die richtige Frage ist daher nicht, ob implizite Methoden immer besser sind. Es geht darum, ob die Rechenkosten eines impliziten Schritts niedriger sind als die Kosten der vielen kleinen expliziten Schritte, die f\u00fcr die Stabilit\u00e4t erforderlich sind.<\/p>\n<p>Der breitere Leitfaden <a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" rel=\"nofollow\">Zeitintegrationsmethoden f\u00fcr PDE Solvers <\/a> vergleicht explizite, implizite und IMEX-Ans\u00e4tze. Dieser Artikel konzentriert sich speziell auf Steifigkeit, Stabilit\u00e4tsregionen, Jacobien und steife Solver-Familien.<\/p>\n<h2>Was Steifigkeit bedeutet<\/h2>\n<p>Es gibt keine einzige Definition der Steifigkeit, die perfekt f\u00fcr jedes nichtlineare System, numerische Methode, Toleranz und Integrationsintervall gilt.<\/p>\n<p>Eine n\u00fctzliche praktische Beschreibung ist:<\/p>\n<blockquote>\n<p>Ein Problem ist steif, wenn eine numerische Methode Schritte ausf\u00fchren muss, die aufgrund von Stabilit\u00e4tsbeschr\u00e4nkungen viel kleiner als die f\u00fcr die Genauigkeit erforderliche Skala sind.<\/p>\n<\/blockquote>\n<p>Diese Definition unterstreicht, dass die Steifigkeit teilweise vom L\u00f6ser abh\u00e4ngt. Ein Problem, das f\u00fcr eine explizite Runge-Kutta-Methode steif ist, kann f\u00fcr eine L-stabile implizite Methode beherrschbar sein.<\/p>\n<p>Es h\u00e4ngt auch von der angeforderten Ausgabe ab. Ein schneller chemischer \u00dcbergang kann in einer Studie wissenschaftlich wichtig und in einer anderen irrelevant sein. Wenn es aufgel\u00f6st werden muss, ist ein kleiner Schritt eine Genauigkeitsanforderung und nicht eine unn\u00f6tige Steifigkeitsbeschr\u00e4nkung.<\/p>\n<h2>Ein einfaches steifes System<\/h2>\n<p>Betrachten Sie zwei abfallende Komponenten:<\/p>\n<pre><code>dy\u2081\/dt = -y\u2081\n\ndy\u2082\/dt = -1000y\u2082<\/code><\/pre>\n<p>Die genauen L\u00f6sungen sind:<\/p>\n<pre><code>y\u2081(t) = y\u2081(0)e\u207b\u1d57\n\ny\u2082(t) = y\u2082(0)e\u207b\u00b9\u2070\u2070\u2070\u1d57<\/code><\/pre>\n<p>Die zweite Komponente verschwindet viel schneller als die erste. Die wissenschaftlich relevante L\u00f6sung kann nach ihrer anf\u00e4nglichen vor\u00fcbergehenden L\u00f6sung fast vollst\u00e4ndig durch <code>y\u2081<\/code> gesteuert werden.<\/p>\n<p>Vorw\u00e4rts-Euler, der auf die zweite Gleichung angewendet wird, ist nur stabil, wenn:<\/p>\n<pre><code>|1 - 1000\u0394t| \u2264 1<\/code><\/pre>\n<p>Das gibt:<\/p>\n<pre><code>0 \u2264 \u0394t \u2264 0.002<\/code><\/pre>\n<p>Der Solver muss auch nach dem Vernachl\u00e4ssigen von <code>y\u2082<\/code> einen Schritt in der N\u00e4he dieser Skala fortsetzen. Die langsame Komponente k\u00f6nnte mit viel gr\u00f6\u00dferen Schritten genau dargestellt werden, aber die explizite Stabilit\u00e4t wird durch den schnellen Modus gesteuert.<\/p>\n<h2>Warum das Steifigkeitsverh\u00e4ltnis unvollst\u00e4ndig ist<\/h2>\n<p>F\u00fcr ein lineares System:<\/p>\n<pre><code>dy\/dt = Ay<\/code><\/pre>\n<p>Ein h\u00e4ufig angegebenes Steifigkeitsverh\u00e4ltnis ist:<\/p>\n<pre><code>\u03ba =\nmax |Re(\u03bb\u1d62)|\n\/\nmin |Re(\u03bb\u1d62)|<\/code><\/pre>\n<p>Das Verh\u00e4ltnis kann informativ sein, wenn alle relevanten Eigenwerte negative Realteile haben und sich die Matrix regelm\u00e4\u00dfig verh\u00e4lt. Ein gro\u00dfer Wert deutet auf weit voneinander getrennte Zerfallsraten hin.<\/p>\n<p>Es ist jedoch kein universeller Test. Es enth\u00e4lt nicht das Integrationsintervall, die angeforderte Genauigkeit, die Anfangsbedingung oder die Richtung, in der sich die L\u00f6sung entwickelt. Es kann auch undefiniert oder irref\u00fchrend werden, wenn der Jacobian keine Eigenwerte, Erhaltungsmodi oder ein stark nicht normales Verhalten enth\u00e4lt.<\/p>\n<p>In einem nichtlinearen System \u00e4ndert sich der Jacobian entlang der Flugbahn:<\/p>\n<pre><code>J(t) =\n\u2202f\n\/\n\u2202y\nevaluated at y(t)<\/code><\/pre>\n<p>Ein System kann sich daher w\u00e4hrend einer Simulation zwischen steifen und nicht steifen Regionen bewegen.<\/p>\n<h2>Jacobi-basierte Indikatoren<\/h2>\n<p>Eigenwertsch\u00e4tzungen des lokalen Jacobian sind n\u00fctzlich, da schnelle stabile Modi mit Eigenwerten assoziiert sind, die gro\u00dfe negative Realteile haben.<\/p>\n<p>Ein billigerer Indikator verwendet manchmal die skalierte Spur:<\/p>\n<pre><code>\u03c4(J) =\ntrace(J) \/ d\n=\ndiv(f) \/ d<\/code><\/pre>\n<p>\u00fcber ein Integrationsintervall mit Kennl\u00e4nge <code>T<\/code>, ein stark negativer Wert von:<\/p>\n<pre><code>T trace(J) \/ d<\/code><\/pre>\n<p>kann eine schnelle Phasenvolumenkontraktion und m\u00f6gliche explizite Schrittbeschr\u00e4nkungen anzeigen.<\/p>\n<p>Dies ist ein heuristischer Indikator, keine notwendige und ausreichende Definition der Steifheit. Eine Spur mittelt die Eigenwerte der Eigenwerte und kann eine stark steife Richtung verbergen, wenn andere Richtungen sie kompensieren.<\/p>\n<p>Nicht-normale Systeme k\u00f6nnen auch vor\u00fcbergehendes Wachstum aufweisen, das nicht zuverl\u00e4ssig durch Eigenwerte oder Spuren allein vorhergesagt wird. Logarithmische Normen, direkte Solver-Diagnose und beobachtete Einschr\u00e4nkungen der Schrittgr\u00f6\u00dfe k\u00f6nnen zus\u00e4tzliche Informationen liefern.<\/p>\n<p>Der mathematische Hintergrund ist in <a href=\"https:\/\/en.wikipedia.org\/wiki\/Stiff_equation\" rel=\"nofollow\">Der \u00dcberblick \u00fcber steife Gleichungen <\/a> zusammengefasst. Eine tiefere Analyse, warum die Steifigkeit einer einfachen auf Eigenwerten basierenden Definition widersteht, finden Sie in <a href=\"https:\/\/people.maths.ox.ac.uk\/trefethen\/publication\/PDF\/1993_56.pdf\" rel=\"nofollow\" target=\"_blank\"> Steifheit der Oden <\/a>.<\/p>\n<h2>Praktische Anzeichen von Steifheit<\/h2>\n<p>Ein Modell kann steif sein, wenn:<\/p>\n<ul>\n<li>Eine adaptive explizite Methode reduziert wiederholt ihren Schritt trotz einer reibungslosen L\u00f6sung.<\/li>\n<li>Der explizite Solver macht viele Schritte, nachdem ein schneller Transient bereits verfallen ist.<\/li>\n<li>Eine kleine \u00c4nderung der Schrittweite schaltet die Berechnung von stabil zu explosiv.<\/li>\n<li>Der Jacobian enth\u00e4lt stark negative Modi mit sehr unterschiedlichen Skalen.<\/li>\n<li>Ein impliziter Solver schlie\u00dft die gleiche Berechnung mit weit weniger akzeptierten Schritten ab.<\/li>\n<li>Chemische Reaktionen, Diffusions-, Relaxations- oder Strafbedingungen f\u00fchren sehr kurze Zeitskalen ein.<\/li>\n<\/ul>\n<p>Diese Symptome sollten nicht verwendet werden, um m\u00f6gliche Codierungs- oder Modellierungsfehler zu verwerfen. Falsche Vorzeichen, Einheiten, Randbedingungen oder Jacobis k\u00f6nnen ein Verhalten erzeugen, das der Steifheit \u00e4hnelt.<\/p>\n<h2>Die Dahlquist-Testgleichung<\/h2>\n<p>Stabilit\u00e4t wird h\u00e4ufig untersucht mit:<\/p>\n<pre><code>dy\/dt = \u03bby<\/code><\/pre>\n<p>Die genaue L\u00f6sung nach einem Schritt ist:<\/p>\n<pre><code>y(t + \u0394t) =\ne^(\u03bb\u0394t)y(t)<\/code><\/pre>\n<p>Eine numerische Methode erzeugt:<\/p>\n<pre><code>y\u207f\u207a\u00b9 =\nR(z)y\u207f\n\nz = \u03bb\u0394t<\/code><\/pre>\n<p>Die Funktion <code>R(z)<\/code> ist die Stabilit\u00e4tsfunktion. Die Methode ist absolut stabil, wenn:<\/p>\n<pre><code>|R(z)| \u2264 1<\/code><\/pre>\n<p>Die Menge aller dieser Werte bildet den absoluten Stabilit\u00e4tsbereich.<\/p>\n<p>Eine klare Einf\u00fchrung in die Dahlquist-Gleichung und die A-Stabilit\u00e4t finden Sie in den Anmerkungen zu <a href=\"https:\/\/www.math.iit.edu\/~fass\/478578_Chapter_4.pdf\" rel=\"nofollow\" target=\"_blank\"> IIT Numerical Analysis <\/a>.<\/p>\n<h2>Warum explizite Methoden scheitern<\/h2>\n<p>Vorw\u00e4rts hat Euler:<\/p>\n<pre><code>R(z) = 1 + z<\/code><\/pre>\n<p>Sein Stabilit\u00e4tsbereich ist eine Scheibe, die bei <code>\u22121<\/code> mit dem Radius eins zentriert ist. Entlang der negativen realen Achse:<\/p>\n<pre><code>\u22122 \u2264 z \u2264 0<\/code><\/pre>\n<p>Klassische RK4 hat eine gr\u00f6\u00dfere Region, die sich bis zu ca.:<\/p>\n<pre><code>z \u2248 \u22122.785<\/code><\/pre>\n<p>es ist immer noch begrenzt. Keine explizite Runge-Kutta-Methode kann a-stabil sein.<\/p>\n<p>Wenn ein Jacobian-Eigenwert ungef\u00e4hr <code>\u22121000<\/code>  ist, erfordert RK4 einen Schritt kleiner als ungef\u00e4hr:<\/p>\n<pre><code>\u0394t \u2272 2.785 \/ 1000<\/code><\/pre>\n<p>Eine explizite Methode h\u00f6herer Ordnung verbessert die Genauigkeit und kann das stabile Intervall vergr\u00f6\u00dfern, aber es kann die Stabilit\u00e4t nicht beliebig weit entlang der negativen realen Achse verl\u00e4ngern.<\/p>\n<h2>A-Stabilit\u00e4t<\/h2>\n<p>Eine A-stabile Methode enth\u00e4lt die gesamte linke Halbebene in ihrem Stabilit\u00e4tsbereich:<\/p>\n<pre><code>Re(z) \u2264 0\n\u21d2\n|R(z)| \u2264 1<\/code><\/pre>\n<p>R\u00fcckw\u00e4rts Euler ist a-stabil, weil:<\/p>\n<pre><code>R(z) =\n1 \/ (1 - z)<\/code><\/pre>\n<p>Bei Modi mit negativen Realteilen bleibt das Verfahren unabh\u00e4ngig von der Schrittgr\u00f6\u00dfe stabil.<\/p>\n<p>Dies bedeutet nicht, dass ein beliebig gro\u00dfer Schritt genau ist. A-Stabilit\u00e4t beseitigt eine Stabilit\u00e4tsbeschr\u00e4nkung, beseitigt jedoch keinen Abschneidefehler.<\/p>\n<h2>L-Stabilit\u00e4t<\/h2>\n<p>Eine L-stabile Methode ist a-stabil und erf\u00fcllt auch:<\/p>\n<pre><code>R(z) \u2192 0\nas\nz \u2192 -\u221e<\/code><\/pre>\n<p>Diese Eigenschaft d\u00e4mpft ungel\u00f6ste schnelle Modi stark. R\u00fcckw\u00e4rts Euler ist L-stabil.<\/p>\n<p>Crank-Niconson ist a-stabil, aber nicht L-stabil. Seine Stabilit\u00e4tsfunktion ist:<\/p>\n<pre><code>R(z) =\n(1 + z\/2)\n\/\n(1 - z\/2)<\/code><\/pre>\n<p>Als <code>z \u2192 -\u221e<\/code> n\u00e4hert sich der Faktor <code>\u22121<\/code>. Eine sehr steife Komponente kann sich im Vorzeichen abwechseln, anstatt schnell zu zerfallen. Dies kann zu nicht-physikalischen Oszillationen f\u00fchren, obwohl die Methode begrenzt bleibt.<\/p>\n<p>L-Stabilit\u00e4t ist besonders wertvoll, wenn schnelle Transienten verschwinden sollten, anstatt in der berechneten L\u00f6sung sichtbar zu bleiben.<\/p>\n<h2>Das Prothero-Robinson-Problem<\/h2>\n<p>Das Prothero-Robinson-Testproblem hat die allgemeine Form:<\/p>\n<pre><code>dy\/dt =\n\u03bb[y - g(t)]\n+ g'(t)<\/code><\/pre>\n<p>Seine genaue L\u00f6sung ist:<\/p>\n<pre><code>y(t) =\ng(t)\n+\n[y(0) - g(0)]e^(\u03bbt)<\/code><\/pre>\n<p>Ausw\u00e4hlen:<\/p>\n<pre><code>g(t) = sin(t)<\/code><\/pre>\n<p>gibt:<\/p>\n<pre><code>dy\/dt =\n\u03bb[y - sin(t)]\n+ cos(t)<\/code><\/pre>\n<p>und:<\/p>\n<pre><code>y(t) =\nsin(t)\n+\ny(0)e^(\u03bbt)<\/code><\/pre>\n<p>Wenn <code>g(0)=0<\/code>.<\/p>\n<p>F\u00fcr ein gro\u00dfes negatives <code>\u03bb<\/code> zerf\u00e4llt der exponentielle \u00dcbergang schnell, w\u00e4hrend das reibungslose Forcen <code>sin(t)<\/code> verbleibt. Eine explizite Methode kann immer noch gezwungen sein, den schnell abfallenden Modus f\u00fcr die Stabilit\u00e4t aufzul\u00f6sen.<\/p>\n<p>Das Problem wird auch verwendet, um die steife Auftragsreduzierung zu untersuchen. Einige Methoden erreichen ihre nominale Konvergenzreihenfolge nicht, wenn Steifheit, Erzwingen und Grenz- oder Einschr\u00e4nkungseffekte interagieren.<\/p>\n<h2>Python-Vergleich mit SciPy<\/h2>\n<p>Das folgende Beispiel vergleicht eine explizite Methode mit zwei steifen L\u00f6sern:<\/p>\n<pre><code class=\"language-python\">import numpy as np\n\nfrom scipy.integrate import solve_ivp\n\nstiffness = -1000.0\ntime_interval = (0.0, 10.0)\ninitial_state = [1.0]\n\ndef right_hand_side(time, state):\n    value = state[0]\n\n    return [\n        stiffness\n        * (value - np.sin(time))\n        + np.cos(time)\n    ]\n\ndef jacobian(time, state):\n    return np.array([\n        [stiffness]\n    ])\n\ndef exact_solution(time):\n    return (\n        np.sin(time)\n        + np.exp(stiffness * time)\n    )\n\nmethods = [\n    (\"RK45\", {}),\n    (\"Radau\", {\"jac\": jacobian}),\n    (\"BDF\", {\"jac\": jacobian}),\n    (\"LSODA\", {})\n]\n\nfor method, options in methods:\n    solution = solve_ivp(\n        fun=right_hand_side,\n        t_span=time_interval,\n        y0=initial_state,\n        method=method,\n        rtol=1e-7,\n        atol=1e-9,\n        **options\n    )\n\n    reference = exact_solution(\n        solution.t\n    )\n\n    maximum_error = np.max(\n        np.abs(\n            solution.y[0]\n            - reference\n        )\n    )\n\n    print(method)\n    print(\"  Success:\", solution.success)\n    print(\"  Accepted points:\", solution.t.size)\n    print(\"  Function evaluations:\", solution.nfev)\n    print(\"  Jacobian evaluations:\", solution.njev)\n    print(\"  LU factorizations:\", solution.nlu)\n    print(\"  Maximum error:\", maximum_error)<\/code><\/pre>\n<p>Die genauen Z\u00e4hlungen h\u00e4ngen von Toleranzen, Softwareversion, Anfangszustand, Jacobian-Informationen und Solver-Einstellungen ab. Der wichtige Vergleich ist die Gesamtberechnungskosten bei gleicher Fehlerstufe.<\/p>\n<h2>Familien von steifen L\u00f6sern<\/h2>\n<p>Kein einzelner Solver ist f\u00fcr jedes steife System am besten geeignet. Wichtige \u00dcberlegungen sind:<\/p>\n<ul>\n<li>Systemdimension<\/li>\n<li>Jacobianische Sparsamkeit und Bandbreite<\/li>\n<li>Kosten der Bewertung der rechten Seite<\/li>\n<li>Verf\u00fcgbarkeit analytischer Derivate<\/li>\n<li>angeforderte Toleranz<\/li>\n<li>Vorhandensein von Einschr\u00e4nkungen oder einer Massenmatrix<\/li>\n<li>ob sich das Problem zwischen steifen und nicht steifen Phasen \u00e4ndert<\/li>\n<\/ul>\n<h2>R\u00fcckw\u00e4rtsdifferenzierungsformeln<\/h2>\n<p>BDF-Methoden sind implizite mehrstufige Formeln. Sie approximieren die Ableitung unter Verwendung mehrerer fr\u00fcherer L\u00f6sungswerte und bewerten die ma\u00dfgebliche Gleichung zum neuen Zeitpunkt.<\/p>\n<p>Eine BDF-Formel erster Ordnung ist r\u00fcckw\u00e4rts Euler:<\/p>\n<pre><code>(\n    y\u207f\u207a\u00b9 - y\u207f\n) \/ \u0394t\n=\nf(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\n<p>BDF2 verwendet zwei vorherige Werte:<\/p>\n<pre><code>(\n    3y\u207f\u207a\u00b9\n    - 4y\u207f\n    + y\u207f\u207b\u00b9\n) \/ (2\u0394t)\n=\nf(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\n<p>Implementierungen mit variabler Ordnung k\u00f6nnen mehrere BDF-Bestellungen verwenden und sowohl die Reihenfolge als auch die Schrittgr\u00f6\u00dfe anpassen. Bestellungen eins und zwei sind a-stabil. BDF-Formeln h\u00f6herer Ordnung opfern die volle A-Stabilit\u00e4t, bleiben aber f\u00fcr viele steife Systeme n\u00fctzlich.<\/p>\n<p>BDF-Methoden sind h\u00e4ufig f\u00fcr gro\u00dfe Systeme wirksam, wenn der Jacobian sp\u00e4rlich ist und ein geeigneter linearer L\u00f6ser oder Vorkonditionierer verf\u00fcgbar ist.<\/p>\n<p>Beispiele hierf\u00fcr sind die <code>BDF<\/code> von Scipy, die Matlab <code>ode15s<\/code>, die Sonnenuhren Cvode BDF und die SCIML-Methoden wie <code>QNDF<\/code> und <code>FBDF<\/code>.<\/p>\n<h2>Rosenbrock-Methoden<\/h2>\n<p>Rosenbrock-Methoden sind linear implizite Runge-Kutta-Methoden. Sie linearisieren die B\u00fchnengleichungen und l\u00f6sen Systeme der Form:<\/p>\n<pre><code>(\n    I - \u03b3\u0394tJ\n)k\u1d62\n=\nknown stage terms<\/code><\/pre>\n<p>Dies vermeidet eine vollst\u00e4ndige nichtlineare L\u00f6sung in jeder Phase. Die Methode erfordert immer noch Jacobi-Informationen oder eine n\u00fctzliche Ann\u00e4herung.<\/p>\n<p>Rosenbrock-Methoden sind h\u00e4ufig f\u00fcr kleine und mittlere steife Systeme wirksam, insbesondere bei strengen Toleranzen. Die gleiche Matrixstruktur kann \u00fcber mehrere Stufen wiederverwendet werden.<\/p>\n<p>Beispiele im SCIML-\u00d6kosystem sind:<\/p>\n<ul>\n<li><code>Rosenbrock23<\/code><\/li>\n<li><code>Rodas4<\/code><\/li>\n<li><code>Rodas5P<\/code><\/li>\n<\/ul>\n<p>Die aktuelle <a href=\"https:\/\/docs.sciml.ai\/OrdinaryDiffEq\/stable\/semiimplicit\/Rosenbrock\/\" rel=\"nofollow\" target=\"_blank\"> sciml Rosenbrock-Dokumentation <\/a> enth\u00e4lt methodenspezifische Empfehlungen und Implementierungsdetails.<\/p>\n<h2>SDIrk-Methoden<\/h2>\n<p>Sdirk bedeutet <strong> implizit implizit Runge-Kutta <\/strong>. Jede implizite Stufe verwendet den gleichen Diagonalkoeffizienten in der Runge-Kutta-Matrix.<\/p>\n<p>Dadurch entstehen B\u00fchnensysteme mit wiederholter Struktur:<\/p>\n<pre><code>(\n    I - \u03b3\u0394tJ\n)k\u1d62\n=\nstage residual<\/code><\/pre>\n<p>Eine Matrixfaktorisierung oder ein Vorkonditionierer kann daher schrittweise wiederverwendet werden, wenn der Jacobian festgehalten wird.<\/p>\n<p>SDIrk-Methoden sind einstufige Methoden, wodurch sie nach Ereignissen oder Diskontinuit\u00e4ten leichter neu gestartet werden k\u00f6nnen als mehrstufige BDF-Formeln.<\/p>\n<p>Beispiele sind Esdirk- und Kencarp-Methoden. Einige liefern L-Stabilit\u00e4t und eingebettete Fehlersch\u00e4tzungen.<\/p>\n<h2>TR-BDF2<\/h2>\n<p>TR-BDF2 ist eine zusammengesetzte einstufige Methode. Es kombiniert eine Trapez-Regel-Stufe mit einer R\u00fcckw\u00e4rtsdifferenzierungsstufe zweiter Ordnung.<\/p>\n<p>Es sollte nicht mit gew\u00f6hnlichen BDF-Solvern mit variabler Ordnung gruppiert werden. Seine spezielle Konstruktion bietet Genauigkeit zweiter Ordnung und starke Stabilit\u00e4tseigenschaften, einschlie\u00dflich L-Stabilit\u00e4t f\u00fcr die Standardparameterauswahl.<\/p>\n<p>TR-BDF2 ist oft eine praktische Allzweck-Steifmethode, wenn m\u00e4\u00dfige Ordnung und robuste D\u00e4mpfung wichtiger sind als eine sehr hohe asymptotische Ordnung.<\/p>\n<h2>Vollst\u00e4ndig implizite Runge-Kutta-Methoden<\/h2>\n<p>Firk bedeutet <strong>Voll implizite Runge-Kutta<\/strong>. Die Stufen sind gekoppelt und erfordern normalerweise das L\u00f6sen eines gr\u00f6\u00dferen nichtlinearen Systems.<\/p>\n<p>Wichtige Familien sind:<\/p>\n<ul>\n<li>Radau IIa-Methoden<\/li>\n<li>Gauss-Legendre-Methoden<\/li>\n<li>Lobatto-Methoden<\/li>\n<\/ul>\n<p>RADAU IIA-Methoden k\u00f6nnen hohe Ordnung, A-Stabilit\u00e4t und L-Stabilit\u00e4t bieten. Sie sind attraktiv f\u00fcr steife Probleme mit hoher Genauigkeit, k\u00f6nnen jedoch h\u00f6here Kosten pro Schritt haben als Rosenbrock-, SDIrk- oder BDF-Methoden.<\/p>\n<p>Der <code>Radau<\/code>-Solver von Scipy basiert auf einer Radau IIA-Methode f\u00fcnfter Ordnung.<\/p>\n<h2>Stabilisierte explizite Methoden<\/h2>\n<p>Stabilisierte explizite Methoden verwenden speziell konstruierte Stabilit\u00e4tspolynome, um das stabile Intervall entlang der negativen realen Achse zu verl\u00e4ngern.<\/p>\n<p>Beispiele sind:<\/p>\n<ul>\n<li>RKC-Methoden<\/li>\n<li>rock2<\/li>\n<li>Rock4<\/li>\n<\/ul>\n<p>Bei einem Verfahren mit <code>s<\/code>-Stufen kann das stabile Intervall ungef\u00e4hr wie <code>s\u00b2<\/code> wachsen. Dies macht den Ansatz f\u00fcr gro\u00dfe diffusionsdominierte Systeme n\u00fctzlich, bei denen das Jacobi-Spektrum haupts\u00e4chlich nahe der negativen realen Achse liegt.<\/p>\n<p>Diese Methoden sind nicht a-stabil und l\u00f6sen nicht jede Art von Steifheit. Sie k\u00f6nnen ungeeignet sein, wenn das System erhebliche imagin\u00e4re Eigenwerte, eine stark nichtlineare Reaktionssteifigkeit, differential-algebraische Einschr\u00e4nkungen oder eine schwierige Kopplung aufweist.<\/p>\n<p>Das <a href=\"https:\/\/www.epfl.ch\/labs\/mathicse\/wp-content\/uploads\/2018\/10\/27.2011_AA.pdf\" rel=\"nofollow\" target=\"_blank\"> EPFL-Material zu stabilisierten expliziten Methoden <\/a> veranschaulicht, wie Chebyshev-basierte Methoden die Stabilit\u00e4tsdom\u00e4ne erweitern.<\/p>\n<h2>IMEX-Methoden<\/h2>\n<p>Wenn die Steifheit von der nicht steifen Dynamik getrennt werden kann, kann eine implizit-explizite Methode effizienter sein als die Behandlung des gesamten Systems implizit:<\/p>\n<pre><code>dy\/dt =\nf_nonstiff(y)\n+\nf_stiff(y)<\/code><\/pre>\n<p>Der nicht steife Begriff wird explizit integriert, w\u00e4hrend der steife Begriff implizit integriert wird.<\/p>\n<p>Beispiele sind die explizit und diffusionsbehandelte Advektion oder der Transport explizit behandelt und chemische Reaktionen implizit behandelt.<\/p>\n<p>IMEX-Methoden erfordern eine physikalisch und numerisch aussagekr\u00e4ftige Operatorsplit. Ihre Stabilit\u00e4t h\u00e4ngt vom vollst\u00e4ndig explizit impliziten Paar ab.<\/p>\n<h2>Automatische Steifigkeitsumschaltung<\/h2>\n<p>Einige Algorithmen sch\u00e4tzen die Steifigkeit, w\u00e4hrend sie integrieren und zwischen nicht steifen und steifen Formeln wechseln.<\/p>\n<p>LSODA wechselt zwischen einer Adams-Methode und einer BDF-Methode. Es ist \u00fcber Odepack, SciPy und mehrere Sprachschnittstellen verf\u00fcgbar.<\/p>\n<p>Im SCIML-\u00d6kosystem kann eine automatische Methode einen expliziten Algorithmus mit einem steifen Solver kombinieren, zum Beispiel:<\/p>\n<pre><code class=\"language-julia\">AutoTsit5(\n    Rosenbrock23()\n)<\/code><\/pre>\n<p>Das automatische Umschalten ist n\u00fctzlich, wenn die Steifigkeit unbekannt ist oder nur w\u00e4hrend eines Teils der Flugbahn auftritt. Die Erkennung ist nicht perfekt, daher k\u00f6nnen schwierige Probleme immer noch von der direkten Auswahl eines steifen Solvers profitieren.<\/p>\n<p>Die aktuelle <a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/solvers\/ode_solve\" rel=\"nofollow\" target=\"_blank\"> sciml ODE-Solver-Anleitung <\/a> empfiehlt automatische Umschaltmethoden, wenn die Steifheit ungewiss ist.<\/p>\n<h2>Der Jacobian ist wichtig<\/h2>\n<p>F\u00fcr einen impliziten Schritt kann der nichtlineare Rest sein:<\/p>\n<pre><code>G(y\u207f\u207a\u00b9) =\ny\u207f\u207a\u00b9\n- y\u207f\n- \u0394t f(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\n<p>Die Newton-Methode erfordert:<\/p>\n<pre><code>[\n    I\n    - \u0394tJ\n]\u03b4\n=\n-G<\/code><\/pre>\n<p>wo:<\/p>\n<pre><code>J =\n\u2202f \/ \u2202y<\/code><\/pre>\n<p>Die lineare L\u00f6sung kann die Laufzeit dominieren. Ein steifer Solver wird schlecht funktionieren, wenn er einen gro\u00dfen sp\u00e4rlichen Jacobian als dichte Matrix behandelt.<\/p>\n<p>Die Leistung kann sich verbessern durch:<\/p>\n<ul>\n<li>Ein analytischer Jacobian<\/li>\n<li>Automatische Differenzierung<\/li>\n<li>ein deklariertes Sparsity-Muster<\/li>\n<li>Geb\u00e4nderte Matrixspeicherung<\/li>\n<li>Sp\u00e4rliche direkte Faktorisierung<\/li>\n<li>Krylov-Methoden<\/li>\n<li>Physikbasierte Vorkonditionierung<\/li>\n<li>Matrixfreie Jacobi-Vektor-Produkte<\/li>\n<\/ul>\n<p>Das SCIML-Tutorial zu <a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/tutorials\/advanced_ode_example\/\" rel=\"nofollow\" target=\"_blank\"> L\u00f6sen gro\u00dfer steifer Gleichungen <\/a> zeigt, wie sich die Struktur und die Auswahl der linearen Solver auf die Leistung auswirken.<\/p>\n<h2>L\u00f6ser-Auswahlhandbuch<\/h2>\n<table class=\"custom-table\">\n<tbody><tr>\n<th>Problemcharakteristik<\/th>\n<th>M\u00f6glicher Ausgangspunkt<\/th>\n<th>Haupt\u00fcberlegung<\/th>\n<\/tr>\n<tr>\n<td>Nicht steife glatte Ode<\/td>\n<td>adaptive explizite rk<\/td>\n<td>Niedrige Kosten pro Schritt<\/td>\n<\/tr>\n<tr>\n<td>kleines oder mittleres steifes System<\/td>\n<td>Rosenbrock- oder Radau-Methode<\/td>\n<td>Genauigkeit, Jacobi-Kosten und Toleranz<\/td>\n<\/tr>\n<tr>\n<td>Gro\u00dfes sp\u00e4rliches steifes System<\/td>\n<td>BDF, Rosenbrock oder Sdirk mit sp\u00e4rlicher linearer Algebra<\/td>\n<td>Jacobi-Struktur ist wichtiger als eine Schwellenwert f\u00fcr feste Gr\u00f6\u00dfen<\/td>\n<\/tr>\n<tr>\n<td>Hochgenaue steife Integration<\/td>\n<td>RADAU IIA oder HOCHR\u00d6SSEN ROSENBROCK<\/td>\n<td>Gr\u00f6\u00dfere B\u00fchne und l\u00f6sen die Kosten<\/td>\n<\/tr>\n<tr>\n<td>Diffusionsdominierte milde Steifheit<\/td>\n<td>rkc oder rock<\/td>\n<td>Das Spektrum sollte haupts\u00e4chlich in der N\u00e4he der negativen realen Achse liegen<\/td>\n<\/tr>\n<tr>\n<td>Trennbare steife und nicht steife Physik<\/td>\n<td>IMEX-Methode<\/td>\n<td>Ben\u00f6tigt eine geeignete Operatorsplit<\/td>\n<\/tr>\n<tr>\n<td>unbekannte oder sich \u00e4ndernde Steifheit<\/td>\n<td>LSODA oder explizit-implizite automatische Umschaltung<\/td>\n<td>Die Erkennung erh\u00f6ht die Komplexit\u00e4t, aber wenig manuelles Tuning<\/td>\n<\/tr>\n<tr>\n<td>DAE oder Massenmatrixproblem<\/td>\n<td>DAE-f\u00e4hige BDF-, Radau- oder Rosenbrock-Methode<\/td>\n<td>ODE-Solver k\u00f6nnen algebraische Einschr\u00e4nkungen m\u00f6glicherweise nicht richtig durchsetzen<\/td>\n<\/tr>\n<\/tbody><\/table>\n<h2>Warum feste Dimensionsschwellen irref\u00fchrend sind<\/h2>\n<p>Es ist verlockend, Rosenbrock-Methoden unter 1.000 Gleichungen, SDIrk-Methoden bis zu 10.000 und dar\u00fcber hinaus BDF-Methoden zu empfehlen. Solche Schwellen sind nicht zuverl\u00e4ssig.<\/p>\n<p>Ein dichtes 500-Gleichungs-Problem kann teurer sein als ein sp\u00e4rliches System, das Hunderttausende von Gleichungen enth\u00e4lt. Die entscheidenden Faktoren sind:<\/p>\n<ul>\n<li>Anzahl der Jacobian-Eintr\u00e4ge ungleich Null<\/li>\n<li>Ausf\u00fcllen w\u00e4hrend der Faktorisierung<\/li>\n<li>Qualit\u00e4t der Vorkonditionierer<\/li>\n<li>rechte Seite Kosten<\/li>\n<li>Erforderliche Toleranz<\/li>\n<li>H\u00e4ufigkeit von Jacobi-Updates<\/li>\n<li>Verf\u00fcgbarkeit von matrixfreien Produkten<\/li>\n<li>Parallele Skalierbarkeit<\/li>\n<\/ul>\n<p>Die Wahl des Solver sollte durch Vergleiche der Arbeitsgenauigkeit des tats\u00e4chlichen Problems getestet werden.<\/p>\n<h2>Das Beispiel der Flammenausbreitung<\/h2>\n<p>Das Beispiel f\u00fcr die Flammenausbreitung von Cleve Moler verwendet die nichtlineare skalare Gleichung:<\/p>\n<pre><code>dy\/dt =\ny\u00b2(1 - y)<\/code><\/pre>\n<p>Der Anfangswert ist sehr klein. Die L\u00f6sung bleibt f\u00fcr eine lange Induktionsperiode nahe Null, geht schnell \u00fcber und n\u00e4hert sich dann eins.<\/p>\n<p>Im ver\u00f6ffentlichten MATLAB-Vergleich nahm der nicht-steife <code>ode45<\/code>-Solver 3.040 Schritte und 20.179 Funktionsauswertungen vor. Der steife Rosenbrock-basierte <code>ode23s<\/code>  Solver nahm 99 Schritte und 412 Funktionsbewertungen an.<\/p>\n<p>Dies sind ungef\u00e4hr drei\u00dfigmal weniger akzeptierte Schritte, nicht ein Prozent der urspr\u00fcnglichen Schrittzahl.<\/p>\n<p>Das Beispiel und seine Lambert-W-Analyse werden in <a href=\"https:\/\/de.mathworks.com\/company\/technical-articles\/stiff-differential-equations.html\" rel=\"nofollow\" target=\"_blank\"> steifen Differentialgleichungen <\/a> von Cleve Moler beschrieben.<\/p>\n<p>Das Ergebnis sollte nicht als universeller drei\u00dfigfacher Vorteil f\u00fcr implizite Methoden interpretiert werden. Es zeigt, wie stark sich die Effizienz des Solvers \u00e4ndern kann, wenn Stabilit\u00e4t und nicht Genauigkeit einen expliziten Integrator steuert.<\/p>\n<h2>L\u00f6ser fair vergleichen<\/h2>\n<p>Ein fairer Benchmark sollte Methoden mit gleicher Genauigkeit vergleichen. Aufzeichnung:<\/p>\n<ul>\n<li>Globaler Fehler oder Fehler in einer Menge von Interesse<\/li>\n<li>Akzeptierte und abgelehnte Schritte<\/li>\n<li>Rechte Auswertungen<\/li>\n<li>Jacobianische Bewertungen<\/li>\n<li>Lineare L\u00f6sungs- und Faktorisierungen<\/li>\n<li>Nichtlineare Iterationen<\/li>\n<li>Speicherverbrauch<\/li>\n<li>Gesamt-Wanduhrzeit<\/li>\n<\/ul>\n<p>Ein L\u00f6ser, der weniger Schritte unternimmt, kann immer noch langsamer sein, wenn jeder Schritt eine teure Faktorisierung erfordert. Eine Methode mit mehr Funktionsbewertungen kann gewinnen, wenn die Funktion billig ist und die konkurrierende lineare Algebra kostspielig ist.<\/p>\n<h2>H\u00e4ufige Fehler<\/h2>\n<ul>\n<li>Angenommen, jede abweichende explizite L\u00f6sung beweist Steifheit<\/li>\n<li>Das Steifigkeitsverh\u00e4ltnis als endg\u00fcltige Diagnose behandeln<\/li>\n<li>Verwenden der Jacobian Trace als universelle Steifheitsdefinition<\/li>\n<li>Angenommen, jede implizite Methode ist a-stabil<\/li>\n<li>Angenommen, jede A-stabile Methode ist L-stabil<\/li>\n<li>Aufrufen von TR-BDF2 als gew\u00f6hnliche Mehrschritt-BDF-Methode<\/li>\n<li>Erweitern von Firk als explizite Runge-Kutta-Familie<\/li>\n<li>Verwenden eines dichten Jacobian f\u00fcr ein gro\u00dfes sp\u00e4rliches System<\/li>\n<li>Fehlen eines Jacobi- oder Sparsity-Musters, wenn der Solver eines verwenden kann<\/li>\n<li>Ausw\u00e4hlen eines Solvers nur aus der Anzahl der Gleichungen<\/li>\n<li>Verwenden einer stabilisierten expliziten Methode f\u00fcr die Steifigkeit au\u00dferhalb ihres spektralen Designs<\/li>\n<li>Vergleichen von Schrittz\u00e4hlungen ohne Fehler und Laufzeit zu vergleichen<\/li>\n<li>Sehr gro\u00dfe implizite Schritte ohne \u00dcberpr\u00fcfung der zeitlichen Genauigkeit<\/li>\n<\/ul>\n<h2>Ein praktischer Arbeitsablauf<\/h2>\n<ol>\n<li>\u00dcberpr\u00fcfen Sie die Gleichungen, Einheiten, Zeichen und Anfangsbedingungen.<\/li>\n<li>F\u00fchren Sie eine adaptive explizite Methode als Diagnose aus.<\/li>\n<li>\u00dcberpr\u00fcfen Sie akzeptierte Schritte, abgelehnte Schritte und minimale Schrittgr\u00f6\u00dfe.<\/li>\n<li>Sch\u00e4tzen oder analysieren Sie das Jacobi-Spektrum, wo dies praktikabel ist.<\/li>\n<li>Pr\u00fcfen Sie, ob die schnellen Komponenten physikalisch aufgel\u00f6st werden m\u00fcssen.<\/li>\n<li>Versuchen Sie es mit einem L-stabilen steifen Solver mit den gleichen Toleranzen.<\/li>\n<li>Liefern Sie Jacobi-Informationen und Sparsity.<\/li>\n<li>Vergleichen Sie Arbeit und Genauigkeit, nicht nur akzeptierte Schritte.<\/li>\n<li>Wiederholen Sie mit engeren Toleranzen.<\/li>\n<li>Dokumentenl\u00f6ser, Toleranzen, lineare Algebra und Ausfallkriterien.<\/li>\n<\/ol>\n<h2>Verwandte Anleitungen<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" rel=\"nofollow\">Zeitintegrationsmethoden f\u00fcr PDE-Solver<\/a> \u2014 Vergleich explizite, implizite und hybride Ans\u00e4tze.<\/li>\n<li><a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\">Operator-Splitting, Strang-Splitting und IMEX-Schemata<\/a> \u2014 Trennen Sie steif und nicht steife physikalische Prozesse.<\/li>\n<li><a href=\"https:\/\/matforge.org\/mesh-quality-convergence-studies-guide-2\/\">Mesh-Qualit\u00e4ts- und Konvergenzstudien<\/a> - Bestimmen Sie, ob die r\u00e4umliche Verfeinerung die Steifheit erh\u00f6ht und die L\u00f6sung ver\u00e4ndert.<\/li>\n<li><a href=\"https:\/\/matforge.org\/verification-vs-validation-in-scientific-simulations-a-practical-guide\/\">Verifikation vs. Validierung in wissenschaftlichen Simulationen<\/a> \u2014 Platzieren Sie die Konvergenz des Solver innerhalb der breiterer Glaubw\u00fcrdigkeits-Workflow.<\/li>\n<li><a href=\"https:\/\/matforge.org\/category\/simulation-modeling-projects\/\" rel=\"nofollow\">Simulation &amp; Modellierungsprojekte <\/a> - Durchsuchen Sie verwandte Matforge-Ressourcen.<\/li>\n<\/ul>\n<h2>weiterlesen<\/h2>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Stiff_equation\" rel=\"nofollow\" target=\"_blank\">Steife Gleichung: Definitionen, Indikatoren und historischer Kontext<\/a><\/li>\n<li><a href=\"https:\/\/people.maths.ox.ac.uk\/trefethen\/publication\/PDF\/1993_56.pdf\" rel=\"nofollow\" target=\"_blank\">Higham und Trefethen: Steifheit der Oden<\/a><\/li>\n<li><a href=\"https:\/\/www.math.iit.edu\/~fass\/478578_Chapter_4.pdf\" rel=\"nofollow\" target=\"_blank\">IIT-Hinweise zur absoluten Stabilit\u00e4t und A-Stabilit\u00e4t<\/a><\/li>\n<li><a href=\"https:\/\/www.epfl.ch\/labs\/mathicse\/wp-content\/uploads\/2018\/10\/27.2011_AA.pdf\" rel=\"nofollow\" target=\"_blank\">EPFL-Material zu stabilisierten expliziten Methoden<\/a><\/li>\n<li><a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/solvers\/ode_solve\" rel=\"nofollow\" target=\"_blank\">SCIML-ODE-Solver-Empfehlungen<\/a><\/li>\n<li><a href=\"https:\/\/de.mathworks.com\/company\/technical-articles\/stiff-differential-equations.html\" rel=\"nofollow\" target=\"_blank\">MathWorks: steife Differentialgleichungen<\/a><\/li>\n<\/ul>\n<h2>Schlussfolgerung<\/h2>\n<p>Steifigkeit tritt auf, wenn die numerische Stabilit\u00e4t ein Verfahren dazu zwingt, schnelle Komponenten n\u00e4her zu l\u00f6sen als die gew\u00fcnschte Ausgabe erfordert. Explizite Runge-Kutta-Methoden haben begrenzte Stabilit\u00e4tsbereiche, sodass gro\u00dfe negative Jacobi-Modi extrem kleine Schritte auferlegen k\u00f6nnen.<\/p>\n<p>A-stabile implizite Methoden beseitigen diese Einschr\u00e4nkung der Stabilit\u00e4t der linken H\u00e4lfte. L-stabile Methoden gehen weiter, indem sie ungel\u00f6ste schnelle Modi stark d\u00e4mpfen. Diese Eigenschaften erkl\u00e4ren, warum r\u00fcckst\u00e4ndige Euler-, BDF-, Rosenbrock-, SDIrk-, TR-BDF2- und Radau-Methoden explizite L\u00f6ser auf steifen Systemen \u00fcbertreffen k\u00f6nnen.<\/p>\n<p>Kein einzelner Diagnose- oder Solver funktioniert f\u00fcr jedes Problem. Eigenwerte, Steifigkeitsverh\u00e4ltnisse, skalierte Divergenz und beobachtete Schrittbeschr\u00e4nkungen liefern alle Teilinformationen. Die Struktur des Jacobian und des linearen Solvers kann wichtiger sein als die nominale Anzahl von Gleichungen.<\/p>\n<p>Stabilisierte explizite Methoden sind n\u00fctzlich, wenn die Steifheit moderat ist und von Negativ-Real-Achsen-Eigenwerten dominiert wird. IMEX-Methoden funktionieren, wenn steife und nicht steife Operatoren getrennt werden k\u00f6nnen. Automatische Umschaltmethoden helfen, wenn sich das Regime w\u00e4hrend der Integration \u00e4ndert.<\/p>\n<p>Die endg\u00fcltige Wahl sollte auf Arbeitsgenauigkeitspr\u00fcfungen basieren. Der beste steife Solver ist die Methode, die die erforderliche wissenschaftliche Genauigkeit mit den niedrigsten zuverl\u00e4ssigen Rechenkosten erreicht.<\/p>\n<\/article>\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\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Wenn explizite Simulationen in die Luft jagen, ist Steifigkeit normalerweise der Schuldige. Erfahren Sie, warum explizite Methoden fehlschlagen, wie man Steifheit diagnostiziert und welche L\u00f6ser tats\u00e4chlich funktionieren.<\/p>\n","protected":false,"raw":"Wenn explizite Simulationen in die Luft jagen, ist Steifigkeit normalerweise der Schuldige. Erfahren Sie, warum explizite Methoden fehlschlagen, wie man Steifheit diagnostiziert und welche L\u00f6ser tats\u00e4chlich funktionieren."},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"de_DE","_original_post":"https:\/\/matforge.org\/?p=493","iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[36,33,37,35,32,38,39,34,40,30,31],"class_list":["post-904","post","type-post","status-publish","format-standard","hentry","category-simulation-modeling-projects","tag-a-stability","tag-bdf-methods","tag-explicit-euler","tag-l-stability","tag-numerical-stability","tag-prothero-robinson-problem","tag-rock-method","tag-rosenbrock-methods","tag-sdirk","tag-stiff-problems","tag-stiff-solvers","de-DE"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Steife ODE-Solver: Warum explizite Methoden fehlschlagen<\/title>\n<meta name=\"description\" content=\"Erfahren Sie, warum Steifheit explizite L\u00f6ser einschr\u00e4nkt und wie BDF, Rosenbrock, SDIrk, Radau und Switching-Methoden schnelle und langsame Dynamiken bew\u00e4ltigen.\" \/>\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\/stiff-problems-and-stiff-solvers\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Steife ODE-Solver: Warum explizite Methoden fehlschlagen\" \/>\n<meta property=\"og:description\" content=\"Erfahren Sie, warum Steifheit explizite L\u00f6ser einschr\u00e4nkt und wie BDF, Rosenbrock, SDIrk, Radau und Switching-Methoden schnelle und langsame Dynamiken bew\u00e4ltigen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-30T12:23:16+00:00\" \/>\n<meta name=\"author\" content=\"Elena Markovska\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elena Markovska\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/stiff-problems-and-stiff-solvers\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/stiff-problems-and-stiff-solvers\\\/\"},\"author\":{\"name\":\"Elena Markovska\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"headline\":\"Steife Probleme und steife L\u00f6ser: Wenn explizite Methoden fehlschlagen\",\"datePublished\":\"2026-07-30T12:23:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/stiff-problems-and-stiff-solvers\\\/\"},\"wordCount\":3124,\"commentCount\":0,\"keywords\":[\"A-Stabilit\u00e4t\",\"BDF-Methoden\",\"explicit Euler\",\"L-stability\",\"numerical stability\",\"PROthero-Robinson problem\",\"ROCK method\",\"Rosenbrock methods\",\"SDIRK\",\"stiff problems\",\"stiff solvers\"],\"articleSection\":[\"Simulation & amp; Modellierungsprojekte\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/stiff-problems-and-stiff-solvers\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/stiff-problems-and-stiff-solvers\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/de\\\/stiff-problems-and-stiff-solvers\\\/\",\"name\":\"Steife ODE-Solver: Warum explizite Methoden fehlschlagen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-07-30T12:23:16+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"description\":\"Erfahren Sie, warum Steifheit explizite L\u00f6ser einschr\u00e4nkt und wie BDF, Rosenbrock, SDIrk, Radau und Switching-Methoden schnelle und langsame Dynamiken bew\u00e4ltigen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/stiff-problems-and-stiff-solvers\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/stiff-problems-and-stiff-solvers\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/stiff-problems-and-stiff-solvers\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Steife Probleme und steife L\u00f6ser: Wenn explizite Methoden fehlschlagen\"}]},{\"@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\\\/980162bb5de46742daece973661d93da\",\"name\":\"Elena Markovska\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"caption\":\"Elena Markovska\"},\"sameAs\":[\"http:\\\/\\\/matforge.org\"],\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/elena-markovska\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Steife ODE-Solver: Warum explizite Methoden fehlschlagen","description":"Erfahren Sie, warum Steifheit explizite L\u00f6ser einschr\u00e4nkt und wie BDF, Rosenbrock, SDIrk, Radau und Switching-Methoden schnelle und langsame Dynamiken bew\u00e4ltigen.","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\/stiff-problems-and-stiff-solvers\/","og_locale":"de_DE","og_type":"article","og_title":"Steife ODE-Solver: Warum explizite Methoden fehlschlagen","og_description":"Erfahren Sie, warum Steifheit explizite L\u00f6ser einschr\u00e4nkt und wie BDF, Rosenbrock, SDIrk, Radau und Switching-Methoden schnelle und langsame Dynamiken bew\u00e4ltigen.","og_url":"https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/","og_site_name":"matforge.org","article_published_time":"2026-07-30T12:23:16+00:00","author":"Elena Markovska","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Elena Markovska","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/"},"author":{"name":"Elena Markovska","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"headline":"Steife Probleme und steife L\u00f6ser: Wenn explizite Methoden fehlschlagen","datePublished":"2026-07-30T12:23:16+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/"},"wordCount":3124,"commentCount":0,"keywords":["A-Stabilit\u00e4t","BDF-Methoden","explicit Euler","L-stability","numerical stability","PROthero-Robinson problem","ROCK method","Rosenbrock methods","SDIRK","stiff problems","stiff solvers"],"articleSection":["Simulation & amp; Modellierungsprojekte"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/","url":"https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/","name":"Steife ODE-Solver: Warum explizite Methoden fehlschlagen","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-07-30T12:23:16+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"description":"Erfahren Sie, warum Steifheit explizite L\u00f6ser einschr\u00e4nkt und wie BDF, Rosenbrock, SDIrk, Radau und Switching-Methoden schnelle und langsame Dynamiken bew\u00e4ltigen.","breadcrumb":{"@id":"https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/de\/stiff-problems-and-stiff-solvers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/de\/"},{"@type":"ListItem","position":2,"name":"Steife Probleme und steife L\u00f6ser: Wenn explizite Methoden fehlschlagen"}]},{"@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\/980162bb5de46742daece973661d93da","name":"Elena Markovska","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","caption":"Elena Markovska"},"sameAs":["http:\/\/matforge.org"],"url":"https:\/\/matforge.org\/author\/elena-markovska\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/904","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=904"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/904\/revisions"}],"predecessor-version":[{"id":1004,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/904\/revisions\/1004"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}