{"id":899,"date":"2026-07-30T12:23:18","date_gmt":"2026-07-30T12:23:18","guid":{"rendered":"https:\/\/matforge.org\/?p=899","raw":"https:\/\/matforge.org\/?p=899"},"modified":"2026-07-30T12:23:18","modified_gmt":"2026-07-30T12:23:18","slug":"error-estimation-verification-methods","status":"publish","type":"post","link":"https:\/\/matforge.org\/de\/error-estimation-verification-methods\/","title":{"rendered":"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung","raw":"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung"},"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\"> 8<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><h2>Schl\u00fcssel zum Mitnehmen<\/h2>\n<ul>\n<li><strong>K\u00fcrzungsfehler ist die Grundlage aller Code\u00fcberpr\u00fcfungen<\/strong> &#8211; Das Verst\u00e4ndnis der Taylor-Serienableitung erkl\u00e4rt, warum MMS funktioniert und warum die Konvergenzraten theoretische Vorhersagen \u00fcbereinstimmen.<\/li>\n<li><strong>Die Methode der hergestellten L\u00f6sungen (MMS) ist jetzt automatisiert <\/strong> &#8211; Frameworks wie Moose und FenicsX verwenden Sympy, um Quellbegriffe symbolisch abzuleiten und die Handberechnungsfehler zu eliminieren, die die fr\u00fchen \u00dcberpr\u00fcfungsbem\u00fchungen belasteten.<\/li>\n<li><strong>Sie ben\u00f6tigen nur 3\u20134 Netzverfeinerungen <\/strong> &#8211; Sobald die genaue Reihenfolge der Genauigkeit der theoretischen Vorhersage \u00fcbereinstimmt, ist eine weitere Verfeinerung der Aufwand verschwendet. Die eigentliche Frage ist: Wann ist die Verifizierung &#8222;gut genug&#8220;?<\/li>\n<li><strong>Error-Terme f\u00fcr f\u00fchrende Ordnung sind diagnostisch<\/strong> \u2013 Die Struktur der Fehlererweiterung f\u00fcr das Abschneiden gibt Ihnen genau an, welche Ableitungs-Approximation fehlschl\u00e4gt, und leitet Ihre Schemaauswahl.<\/li>\n<\/ul>\n<hr>\n<h2>Was Sie tats\u00e4chlich messen<\/h2>\n<p>Lassen Sie uns vor dem Eintauchen in Gleichungen kl\u00e4ren, was wir tats\u00e4chlich \u00fcberpr\u00fcfen. In der Simulationsgemeinschaft werden <strong>Verifikation<\/strong> und <strong>Validierung<\/strong> oft verwechselt \u2013 aber sie beantworten grunds\u00e4tzlich unterschiedliche Fragen:<\/p>\n<ul>\n<li><strong>Verifikation<\/strong> fragt: <em> &#8222;L\u00f6sen wir die Gleichungen richtig?&#8220;<\/em> Es geht um interne Konsistenz. L\u00f6st die numerische Implementierung das mathematische Modell getreu, unabh\u00e4ngig davon, ob dieses Modell die Realit\u00e4t beschreibt?<\/li>\n<li><strong>Validierung<\/strong> fragt: <em>&#8222;L\u00f6sen wir die richtigen Gleichungen?&#8220;<\/em> Es vergleicht Simulationsergebnisse mit physikalischen Experimenten oder Benchmark-Daten.<\/li>\n<\/ul>\n<p>Wenn Sie nach 182 <a href=\"https:\/\/matforge.org\/validation-and-verification-for-pde-simulations-practical-framework\/\">V&amp;V-Framework-\u00dcbersicht<\/a> Ihnen in das Gesamtbild einf\u00fchrten, bohrt dieser Artikel in die mathematische Maschinerie, die die Verifizierung streng macht. Stellen Sie sich das als Begleitst\u00fcck zu unserem <a href=\"https:\/\/matforge.org\/mesh-quality-convergence-studies-guide-2\/\">&gt; Convergence Studies Guide <\/a> vor, der die empirische Seite abdeckt. Hier erkl\u00e4ren wir <strong>Warum<\/strong> Konvergenzstudien funktionieren und zeigen Ihnen, wie Sie sie automatisieren k\u00f6nnen.<\/p>\n<blockquote>\n<p><strong>Mentales Framework: Der Verk\u00fcrzungsfehler-Kompass.<\/strong> Stellen Sie sich einen K\u00fcrzungsfehler als Navigationstool vor. Die Taylor-Serien-Erweiterung gibt Ihnen nicht nur eine Bindung &#8211; sie zeigt die Richtung, in der Ihr Schema voreingenommen ist. Asymmetrie erster Ordnung bei Vorw\u00e4rtsunterschieden? Das ist Ihre Kompassnadel, die auf die dominante Fehlerableitung zeigt.<\/p>\n<\/blockquote>\n<hr>\n<h2>K\u00fcrzungsfehler: Die mathematische Grundlage<\/h2>\n<p>Die h\u00e4ufigste Quelle f\u00fcr numerische Fehler bei Finite-Differenz-, Finite-Elemente- und Finite-Volumen-Methoden ist <strong>K\u00fcrzungsfehler <\/strong> &#8211; der Unterschied zwischen dem genauen Differentialoperator und seiner diskreten Approximation.<\/p>\n<p>Hier ist das, was die meisten Lehrb\u00fccher nicht genug betonen: Die Ableitung von K\u00fcrzungsfehlern \u00fcber Taylor-Serien ist keine akademische \u00dcbung. Es ist die praktische Grundlage f\u00fcr jede Rasterverfeinerung, die Sie jemals durchf\u00fchren werden. Mal sehen warum.<\/p>\n<p>Betrachten Sie die R\u00fcckw\u00e4rts-Euler-Zeitderivate:<\/p>\n<p>$$$frac{u(t) &#8211; U(t &#8211; delta t)}{delta t} = frac{du}{dt} + frac{1}{2} frac{d<sup>2u}{dt<\/sup>2} delta t + o(delta t^2)$$<\/p>\n<p>Der f\u00fchrende Fehlerterm ist <strong>positiv<\/strong> und proportional zu <strong>\u0394t<\/strong>. F\u00fcr Forward Euler kippt das Schild. F\u00fcr einen zentralen Raumunterschied:<\/p>\n<p>$$$frac{u(x + delta x) &#8211; u(x &#8211; delta x)}{2delta x} = frac{dx} + o(delta delta x^2)$$<\/p>\n<p>Beachten Sie die Symmetrie &#8211; die Begriffe der ungeraden Ordnung werden aufgehoben und geben die Genauigkeit <strong> zweiter Ordnung <\/strong> an. Die gerade \/ ungerade Symmetrie der Taylor-Erweiterung ist der Grund, warum zentrale Unterschiede Vorw\u00e4rts- \/ R\u00fcckw\u00e4rts-Schemata \u00fcbertreffen.<\/p>\n<h3>Ein praktischer Vergleich<\/h3>\n<table>\n<thead>\n<tr>\n<th>Schema<\/th>\n<th>Formel<\/th>\n<th>K\u00fcrzungsfehler<\/th>\n<th>Bestellen<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Vorw\u00e4rtsdifferenz<\/td>\n<td><code>(u(x+\u0394x) - u(x)) \/ \u0394x<\/code><\/td>\n<td><code>\u2212\u00bd u'' \u0394x<\/code><\/td>\n<td>1.<\/td>\n<\/tr>\n<tr>\n<td>R\u00fcckw\u00e4rtsunterschied<\/td>\n<td><code>(u(x) - u(x-\u0394x)) \/ \u0394x<\/code><\/td>\n<td><code>\u2212\u00bd u'' \u0394x<\/code><\/td>\n<td>1.<\/td>\n<\/tr>\n<tr>\n<td>Zentraler Unterschied<\/td>\n<td><code>(u(x+\u0394x) - u(x-\u0394x)) \/ 2\u0394x<\/code><\/td>\n<td><code>+(1\/6) u''' \u0394x\u00b2<\/code><\/td>\n<td>2.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Die obige Tabelle ist nicht nur ein Vergleich, sondern ein Diagnosewerkzeug. Wenn Ihre Konvergenzstudie erste Ordnung zeigt, wenn zweiter Ordnung erwartet wurde, sagt Ihnen der Begriff der f\u00fchrenden Ordnung, was nicht stimmt.<\/p>\n<h3>Der Verk\u00fcrzungsfehlerausdruck<\/h3>\n<p>F\u00fcr eine allgemeine Diskretisierung hat der K\u00fcrzungsfehler die Form:<\/p>\n<p>$$  tau = c h ^ r $$<\/p>\n<p>Dabei ist <strong>h<\/strong> der Diskretisierungsparameter (Mesh-Gr\u00f6\u00dfe oder Zeitschritt) und <strong>r<\/strong> die Konvergenzrate. Dieser Ausdruck ist <strong> nicht<\/strong> nur eine asymptotische Bindung &#8211; es ist die tats\u00e4chliche Menge, die Sie empirisch \u00fcberpr\u00fcfen. Jede Rasterverfeinerungsstudie ist grunds\u00e4tzlich ein Versuch zu best\u00e4tigen, dass der theoretische Fehlerausdruck mit dem gemessenen Fehler \u00fcbereinstimmt.<\/p>\n<p>Diese Verbindung zwischen der theoretischen \u03c4 und der empirischen Fehlermessung macht die Code\u00fcberpr\u00fcfung eher rigoros als von Hand gewellt.<\/p>\n<hr>\n<h2>Vom K\u00fcrzungsfehler zur Konvergenz<\/h2>\n<p>Jetzt, da wir den Fehlerausdruck von K\u00fcrzungen haben, verbinden wir ihn mit dem gro\u00dfen Satz der numerischen Analyse: dem <strong> LAX-Richtmyer-\u00c4quivalenzsatz <\/strong>.<\/p>\n<p>Das Theorem besagt, dass es im Englischen ist:<\/p>\n<blockquote>\n<p><strong>Bei linearen, gut gestellten Problemen ist eine konsistente, stabile Diskretisierung konvergent.<\/strong><\/p>\n<\/blockquote>\n<p>Packen wir jeden Begriff auf einer Praktikerebene aus:<\/p>\n<p><strong>consistent<\/strong> bedeutet, dass der K\u00fcrzungsfehler als h \u2192 0 auf Null geht. Wenn Ihr Schema \u03c4 = O (h\u00b2) hat, ist es konsistent.<\/p>\n<p><strong>Stable<\/strong> bedeutet, dass Fehler nicht unendlich wachsen. Die numerische L\u00f6sung bleibt relativ zu den Anfangsdaten begrenzt. Sie \u00fcberpr\u00fcfen die Stabilit\u00e4t durch Von-Neumann-Analyse, Energiemethoden oder praktische CFL-Zustandspr\u00fcfungen.<\/p>\n<p><strong>Konvergent<\/strong> bedeutet, dass die numerische L\u00f6sung der genauen L\u00f6sung als H \u2192 0 n\u00e4hert.<\/p>\n<p>Die Beweisskizze des Theorems (die Sie intuitiv kennen und nicht auswendig lernen sollten):<\/p>\n<ol>\n<li>Die Konsistenz stellt sicher, dass der diskrete Operator den kontinuierlichen Operator ann\u00e4hert.<\/li>\n<li>Stabilit\u00e4t begrenzt die Ausbreitung von Fehlern durch jeden Zeitschritt.<\/li>\n<li>Zusammen garantieren sie, dass der \u00fcber n = t \/ \u0394t-Schritte akkumulierte K\u00fcrzungsfehler begrenzt bleibt und auf Null konvergiert.<\/li>\n<\/ol>\n<p>Der LAX-Richtmyer-Satz erkl\u00e4rt <strong>Warum <\/strong> Stabilit\u00e4tsanforderungen. Sie k\u00f6nnen H nicht einfach willk\u00fcrlich reduzieren; Sie m\u00fcssen auch sicherstellen, dass Ihr Schema stabil ist. F\u00fcr die explizite Zeitintegration ist dies die CFL-Bedingung. Bei impliziten Schemata sind Sie normalerweise sicher, aber die Iterationstoleranz wird zum neuen Stabilit\u00e4tsproblem.<\/p>\n<hr>\n<h2>Die Methode der hergestellten L\u00f6sungen<\/h2>\n<p>Nun zur praktischen Auszahlung: Wie \u00fcberpr\u00fcfen Sie, dass Ihr Code die Gleichungen richtig l\u00f6st? Der strengste Ansatz ist die <strong>Methode der hergestellten L\u00f6sungen (MMS)<\/strong>.<\/p>\n<p>Der Sandia-Bericht von Salari und Park aus dem Jahr 2000 etablierte MMS als Industriestandard und hat jetzt \u00fcber 555 Zitate. Der Grund? MMS arbeitet f\u00fcr <strong>any<\/strong> PDE &#8211; linear, nichtlinear, gekoppelt, Multiphysik &#8211; w\u00e4hrend analytische Benchmarks nur f\u00fcr einfache Testf\u00e4lle existieren.<\/p>\n<h3>Der MMS-Workflow<\/h3>\n<p>Das Sch\u00f6ne an MMS ist, dass es das Verifizierungsproblem auf den Kopf kippt:<\/p>\n<ol>\n<li><strong>W\u00e4hlen Sie eine hergestellte L\u00f6sung<\/strong> u_manufactured(x, t) \u2014 eine beliebige glatte Funktion<\/li>\n<li><strong>Substitute in die PDE<\/strong>, um den Forcing\/Source-Term abzuleiten, der u_manufactured zu einer exakten L\u00f6sung macht<\/li>\n<li><strong>Anfangs- und Randbedingungen<\/strong> von u_manufactured ableiten<\/li>\n<li><strong>Simulation durchf\u00fchren<\/strong> mit diesen modifizierten Eingaben<\/li>\n<li><strong>Vergleiche<\/strong> Die berechnete L\u00f6sung gegen u_manufactured<\/li>\n<\/ol>\n<p>Wenn die numerische L\u00f6sung innerhalb der erwarteten Fehlergrenzen mit der hergestellten L\u00f6sung \u00fcbereinstimmt, wird Ihr Code \u00fcberpr\u00fcft.<\/p>\n<p>Lassen Sie uns dies mit konkretem Python-Code durchgehen. Wir verwenden zwei der am weitesten verbreiteten Open-Source-Frameworks: Moose und FenicsX.<\/p>\n<h3>Moose MMS: Symbolische Automatisierung<\/h3>\n<p>Das Modul <code>mms<\/code> von Moose umschlie\u00dft Sympy, um die automatische Ableitung von Funktionen abzuleiten. So richten Sie eine r\u00e4umliche Konvergenzstudie f\u00fcr eine Diffusionsgleichung ein:<\/p>\n<pre><code class=\"language-python\">import mms\n\n# Define the PDE and manufactured solution\nfs, ss = mms.evaluate(\"-div(grad(u))\", \"sin(2*pi*x)*sin(2*pi*y)\")\n\n# Print forcing function for MOOSE input file\nmms.print_fparser(fs)\n\n# Print exact solution and forcing function as MOOSE hit syntax\nmms.print_hit(fs, \"force\")\nmms.print_hit(ss, \"exact\")\n<\/code><\/pre>\n<p>Die Ausgabe sagt Ihnen genau, was Sie in Ihre <code>.i<\/code> Eingabedatei einf\u00fcgen sollen:<\/p>\n<pre><code>8*pi^2*sin(2*x*pi)*sin(2*y*pi)\n[force]\n  type = ParsedFunction\n  expression = '8*pi^2*sin(2*x*pi)*sin(2*y*pi)'\n[]\n[exact]\n  type = ParsedFunction\n  expression = 'sin(2*x*pi)*sin(2*pi*y)'\n[]\n<\/code><\/pre>\n<p>Diese symbolische Ableitung ist entscheidend. F\u00fcr eine einfache 1D-Diffusionsgleichung k\u00f6nnen Sie den Quellenbegriff von Hand ableiten. F\u00fcr Navier-Stokes oder Elastizit\u00e4t mit gekoppelten Begriffen ist die symbolische Berechnung nicht optional &#8211; es ist die einzige M\u00f6glichkeit, Fehler zu vermeiden.<\/p>\n<p>Die Moose-Eingabedatei sieht dann so aus:<\/p>\n<pre><code>[Mesh]\n  type = GeneratedMesh\n  dim = 2\n  nx = 8\n  ny = 8\n[]\n\n[Kernels]\n  [diff]\n    type = ADDiffusion\n    variable = u\n  []\n  [force]\n    type = BodyForce\n    variable = u\n    function = force\n  []\n[]\n\n[BCs]\n  [all]\n    type = FunctionDirichletBC\n    variable = u\n    function = exact\n    boundary = 'left right top bottom'\n[]\n[]\n\n[Postprocessors]\n  [error]\n    type = ElementL2Error\n    function = exact\n    variable = u\n[]\n[]\n<\/code><\/pre>\n<p>Dann automatisieren Sie die Konvergenzstudie:<\/p>\n<pre><code class=\"language-python\">import mms\n\n# Run 4 levels of refinement for both 1st and 2nd order elements\ndf1 = mms.run_spatial(\"diffusion_mms.i\", 4, console=False)\ndf2 = mms.run_spatial(\"diffusion_mms.i\", 4, \"Variables\/u\/order=SECOND\")\n\nfig = mms.ConvergencePlot(xlabel=\"Element Size ($h$)\", ylabel=\"$L_2$ Error\")\nfig.plot(df1, label=\"1st Order\")\nfig.plot(df2, label=\"2nd Order\")\nfig.save(\"convergence_plot.png\")\n<\/code><\/pre>\n<p>Auf einem Log-Log-Diagramm gibt Ihnen die Steigung jeder Linie die beobachtete Konvergenzrate. Bei Elementen erster Ordnung sollte sich die Steigung 2 n\u00e4hern. Bei Elementen zweiter Ordnung sollte sie sich 3 n\u00e4hern.<\/p>\n<h3>FenicsX: reine Python-Konvergenzstudien<\/h3>\n<p>FenicsX (der Nachfolger von Fenics\/Dolfin) bietet eine ebenso leistungsstarke Python-Schnittstelle. So berechnen Sie Fehlernormen und Konvergenzraten:<\/p>\n<pre><code class=\"language-python\">from dolfinx import default_scalar_type\nfrom dolfinx.fem import (\n    Expression, Function, functionspace,\n    assemble_scalar, dirichletbc, form,\n    locate_dofs_topological,\n)\nfrom dolfinx.fem.petsc import LinearProblem\nfrom dolfinx.mesh import create_unit_square\nfrom ufl import SpatialCoordinate, TestFunction, TrialFunction, div, dx, grad, inner\nfrom mpi4py import MPI\n\nimport ufl\nimport numpy as np\n\ndef u_ex(mod):\n    return lambda x: mod.cos(2 * mod.pi * x[0]) * mod.cos(2 * mod.pi * x[1])\n\nu_numpy = u_ex(np)\nu_ufl = u_ex(ufl)\n\ndef solve_poisson(N=10, degree=1):\n    mesh = create_unit_square(MPI.COMM_WORLD, N, N)\n    x = SpatialCoordinate(mesh)\n    f = -div(grad(u_ufl(x)))\n    V = functionspace(mesh, (\"Lagrange\", degree))\n    u = TrialFunction(V)\n    v = TestFunction(V)\n    a = inner(grad(u), grad(v)) * dx\n    L = f * v * dx\n    u_bc = Function(V)\n    u_bc.interpolate(u_numpy)\n    facets = locate_entities_boundary(\n        mesh, mesh.topology_dim - 1, lambda x: np.full(x.shape[1], True)\n    )\n    dofs = locate_dofs_topological(V, mesh.topology_dim - 1, facets)\n    bcs = [dirichletbc(u_bc, dofs)]\n    problem = LinearProblem(\n        a, L, bcs=bcs,\n        petsc_options={\"ksp_type\": \"preonly\", \"pc_type\": \"lu\"}\n    )\n    return problem.solve(), u_ufl(x)\n<\/code><\/pre>\n<p>Die wichtigste Erkenntnis hierbei ist die <strong>Zuverl\u00e4ssige Fehlernormberechnung<\/strong>. Wenn der Fehler klein ist, kann die direkte Berechnung <code>(u_ex - uh)^2<\/code> unter Rundungsfehlern leiden, da Sie zwei nahezu gleiche Zahlen subtrahieren. Das FenicsX-Tutorial empfiehlt, beide L\u00f6sungen zuerst in einen h\u00f6heren Funktionsbereich zu interpolieren:<\/p>\n<pre><code class=\"language-python\">def error_L2(uh, u_ex, degree_raise=3):\n    degree = uh.function_space.ufl_element().degree\n    family = uh.function_space.ufl_element().family_name\n    mesh = uh.function_space.mesh\n    \n    # Create higher-order space for accurate subtraction\n    W = functionspace(mesh, (family, degree + degree_raise))\n    u_W = Function(W)\n    u_W.interpolate(uh)\n    \n    u_ex_W = Function(W)\n    u_ex_W.interpolate(u_ex)\n    \n    e_W = Function(W)\n    e_W.x.array[:] = u_W.x.array - u_ex_W.x.array\n    \n    error = form(ufl.inner(e_W, e_W) * ufl.dx)\n    error_global = mesh.comm.allreduce(assemble_scalar(error), op=MPI.SUM)\n    return np.sqrt(error_global)\n<\/code><\/pre>\n<p>Dann f\u00fchren Sie die Konvergenzstudie durch:<\/p>\n<pre><code class=\"language-python\">Ns = [4, 8, 16, 32, 64]\nEs = np.zeros(len(Ns))\nhs = np.zeros(len(Ns))\n\nfor i, N in enumerate(Ns):\n    uh, u_ex = solve_poisson(N, degree=1)\n    Es[i] = error_L2(uh, u_numpy)\n    hs[i] = 1.0 \/ Ns[i]\n    print(f\"h: {hs[i]:.2e} Error: {Es[i]:.2e}\")\n\n# Compute observed convergence rates\nrates = np.log(Es[1:] \/ Es[:-1]) \/ np.log(hs[1:] \/ hs[:-1])\nprint(f\"Rates: {rates}\")\n<\/code><\/pre>\n<p>Die Ausgabe von Elementen erster Ordnung zeigt die Raten ann\u00e4hernd 2:<\/p>\n<pre><code>Rates: [1.61 1.89 1.97 1.99]\n<\/code><\/pre>\n<p>F\u00fcr Elemente zweiter Ordnung n\u00e4hert sich der Tarif 3. Dies ist die empirische Manifestation der theoretischen Verk\u00fcrzungsfehleranalyse, die wir zuvor diskutiert haben.<\/p>\n<hr>\n<h2>Praktische Konvergenzstudien: Ergebnisse interpretieren<\/h2>\n<p>Sie haben Ihre Gitterverfeinerungsstudie durchgef\u00fchrt. Sie haben Ihr Log-Log-Plot. Die Steigungen sind nahe an theoretischen Werten. Aber was sagt dir das eigentlich?<\/p>\n<h3>die beobachtete Ordnungsformel<\/h3>\n<p>Bei den Maschengr\u00f6\u00dfen H_i und H_{i-1} mit entsprechenden Fehlern E_i und E_{i-1} lautet die beobachtete Reihenfolge:<\/p>\n<p>$$p approx frac{ln(e_{i-1} \/ e_i)}{ln(h_{i-1} \/ h_i)}$$<\/p>\n<p>Wenn das Rasterverfeinerungsverh\u00e4ltnis <strong>r \u2248 2<\/strong> ist (in Studien), vereinfacht sich dies:<\/p>\n<p>$$p approx log_2(e_{i-1} \/ e_i)$$<\/p>\n<p>Wenn sich Ihre beobachtete Reihenfolge der theoretischen Vorhersage n\u00e4hert, haben Sie best\u00e4tigt, dass Ihr Code im asymptotischen Regime funktioniert. Dies ist der Meilenstein der Verifizierung.<\/p>\n<h3>Grad-Raising: ein praktischer Trick<\/h3>\n<p>Bei L2-Fehlernormen kann die direkte Berechnung die wahre Konvergenzrate aufgrund der Rundung verbergen. Die Grad-Raising-Technik (Interpolation in einen Raum um einen Grad vor der Subtraktion) ist die Standardumgehung in FenicSX. Ohne sie k\u00f6nnten Sie Konvergenz zweiter Ordnung melden, wenn der Code tats\u00e4chlich in dritter Ordnung konvergiert.<\/p>\n<hr>\n<h2>Wann sollte man aufh\u00f6ren zu \u00fcberpr\u00fcfen<\/h2>\n<p>Hier ist die praktische Realit\u00e4t: Verifizierung ist teuer. Jede Netzverfeinerung verdoppelt (oder vervierfacht sich f\u00fcr 2D) Ihre Rechenkosten. Sie k\u00f6nnen nicht unendlich verfeinern. Wann h\u00f6rst du auf?<\/p>\n<p>Das Feld hat drei praktische Heuristiken zusammengef\u00fchrt:<\/p>\n<p><strong>1. Die beobachtete Reihenfolge stimmt mit der theoretischen Vorhersage \u00fcberein. <\/strong> Wenn Sie 3+ Mesh-Verfeinungen haben und die beobachtete Reihenfolge zum theoretischen Wert innerhalb der Toleranz (typisch \u00b1 0,1) konvergiert, wird Ihr Code im asymptotischen Regime \u00fcberpr\u00fcft. Zu \u00dcberpr\u00fcfungszwecken ist keine weitere Verfeinerung erforderlich.<\/p>\n<p><strong>2. Der Gitterkonvergenzindex (GCI) f\u00e4llt unter ~ 1%. <\/strong> Der GCI quantifiziert das Unsicherheitsband aus der Netzverfeinerung. Wenn gci &lt; 1% Ihrer Interessenmenge ist der numerische Fehler im Verh\u00e4ltnis zur Modellierungsunsicherheit vernachl\u00e4ssigbar.<\/p>\n<p><strong>3. Der numerische Fehler f\u00e4llt unter die physikalische Unsicherheit. <\/strong> Wenn Ihre Materialeigenschaften eine Unsicherheit von 5% aufweisen, ist die Verfeinerung bis numerischer Fehler 0,001% verschwenderisch. Die Fehlersch\u00e4tzung \u03c4 = c h ^ r sagt Ihnen, wo sich der praktische Boden befindet.<\/p>\n<h3>Eine praktische Entscheidungs-Checkliste<\/h3>\n<ul>\n<li>[ ] F\u00fchren Sie 3\u20134 Netzverfeinerungen mit Verfeinerungsverh\u00e4ltnis R \u2248 2 durch<\/li>\n<li>[] Berechnen Sie die beobachtete Reihenfolge P aus der Log-Log-Steigung<\/li>\n<li>[ ] Verifizieren Sie, dass p die theoretische Vorhersage innerhalb von \u00b1 0,1 entspricht<\/li>\n<li>[ ] Berechnen Sie GCI f\u00fcr das feinste Netz<\/li>\n<li>[] Vergleichen Sie GCI mit der Modellierungsunsicherheit (typisch 1\u20135%)<\/li>\n<li>[] <strong>Stop, wenn: <\/strong> P best\u00e4tigt wird und gci &lt; 1% von Qoi<\/li>\n<\/ul>\n<p>Wenn Sie MMS f\u00fcr einen Produktionscode ausf\u00fchren, reicht diese Checkliste aus. F\u00fcr sicherheitskritische Anwendungen (wie die Simulation der Kernreaktorsimulation per MPACT-Handbuch) sind zus\u00e4tzliche \u00dcberpr\u00fcfungen f\u00fcr jeden Term in der ma\u00dfgeblichen Gleichung erforderlich.<\/p>\n<hr>\n<h2>Zusammenfassung<\/h2>\n<p>Die Fahrt vom K\u00fcrzungsfehler zur Code\u00fcberpr\u00fcfung folgt einem klaren Weg:<\/p>\n<ol>\n<li><strong>Taylor-Serie<\/strong> zeigt den theoretischen Verk\u00fcrzungsfehlerausdruck \u03c4 = c h ^ r<\/li>\n<li><strong>LAX-Richtmyer-Theorem<\/strong> garantiert die Konvergenz, wenn das Schema konsistent und stabil ist<\/li>\n<li><strong>MMS<\/strong> bietet den praktischen Arbeitsablauf, um zu \u00fcberpr\u00fcfen, ob Ihr Code die theoretische Konvergenzrate erreicht<\/li>\n<li><strong>Rasterverfeinerungsstudien<\/strong> best\u00e4tigen, dass beobachtete Raten theoretische Vorhersagen \u00fcbereinstimmen<\/li>\n<\/ol>\n<p>Die entscheidende Erkenntnis, die dies zusammenh\u00e4lt: Verk\u00fcrzungsfehler ist nicht nur ein theoretisches Konzept &#8211; es ist die messbare Menge, die Ihre Gitterverfeinerungsstudien best\u00e4tigen. Wenn die beobachtete Reihenfolge theoretische Vorhersage \u00fcber 3+ verfeinert, wird Ihr Code \u00fcberpr\u00fcft.<\/p>\n<p>In den n\u00e4chsten Schritten finden Sie in unserem <a href=\"https:\/\/matforge.org\/validation-and-verification-for-pde-simulations-practical-framework\/\">V&amp;v-Framework-\u00dcbersicht<\/a> den Big-Picture-Kontext und unsere <a href=\"https:\/\/matforge.org\/mesh-quality-convergence-studies-guide-2\/\">Konvergenzstudienhandbuch <\/a> f\u00fcr praktische Empfehlungen zur Netzqualit\u00e4t, die diese \u00dcberpr\u00fcfungs-Workflows erg\u00e4nzen.<\/p>\n<hr>\n<h2>Referenzen<\/h2>\n<ul>\n<li>Salari, K. &amp; Park, K. (2000). &#8222;Code-\u00dcberpr\u00fcfung nach der Methode der hergestellten L\u00f6sungen.&#8220; Sandia National Laboratories Bericht SAND2000-0949. <a href=\"https:\/\/prod.sandia.gov\/techlib\/access-control.cgi\/2000\/001444.pdf\" target=\"_blank\" rel=\"nofollow noopener\">Quelle<\/a><\/li>\n<li>Oberkampf, W. &amp; Roy, C. (2010). &#8222;Verifizierung und Validierung im wissenschaftlichen Rechnen.&#8220; Cambridge University Press.<\/li>\n<li>Langtangen, H.P. &#8222;Trunkationsfehleranalyse f\u00fcr Finite-Differenz-Methoden.&#8220; <a href=\"http:\/\/hplgit.github.io\/num-methods-for-PDEs\/doc\/pub\/trunc\/html\/._trunc001.html\">Numerische Methoden f\u00fcr die PDES-Dokumentation<\/a>.<\/li>\n<li>Moose MMS-Dokumentation. <a href=\"https:\/\/mooseframework.inl.gov\/python\/mms.html\" target=\"_blank\" rel=\"nofollow noopener\">Moose-Framework<\/a><\/li>\n<li>FenicsX-Konvergenz-Tutorial. <a href=\"https:\/\/jsdokken.com\/dolfinx-tutorial\/chapter4\/convergence.html\" target=\"_blank\" rel=\"nofollow noopener\">Dolfinx-Tutorial<\/a><\/li>\n<li>Kindo, T. &#8222;Verifizieren Sie Simulationen mit der Methode der hergestellten L\u00f6sungen.&#8220; Comsol Blog. <a href=\"https:\/\/www.comsol.com\/blogs\/verify-simulations-with-the-method-of-manufactured-solutions\" target=\"_blank\" rel=\"nofollow noopener\"> Quelle <\/a><\/li>\n<\/ul>\n","protected":false,"raw":"<h2>Schl\u00fcssel zum Mitnehmen<\/h2>\n<ul>\n<li><strong>K\u00fcrzungsfehler ist die Grundlage aller Code\u00fcberpr\u00fcfungen<\/strong> - Das Verst\u00e4ndnis der Taylor-Serienableitung erkl\u00e4rt, warum MMS funktioniert und warum die Konvergenzraten theoretische Vorhersagen \u00fcbereinstimmen.<\/li>\n<li><strong>Die Methode der hergestellten L\u00f6sungen (MMS) ist jetzt automatisiert <\/strong> - Frameworks wie Moose und FenicsX verwenden Sympy, um Quellbegriffe symbolisch abzuleiten und die Handberechnungsfehler zu eliminieren, die die fr\u00fchen \u00dcberpr\u00fcfungsbem\u00fchungen belasteten.<\/li>\n<li><strong>Sie ben\u00f6tigen nur 3\u20134 Netzverfeinerungen <\/strong> - Sobald die genaue Reihenfolge der Genauigkeit der theoretischen Vorhersage \u00fcbereinstimmt, ist eine weitere Verfeinerung der Aufwand verschwendet. Die eigentliche Frage ist: Wann ist die Verifizierung \"gut genug\"?<\/li>\n<li><strong>Error-Terme f\u00fcr f\u00fchrende Ordnung sind diagnostisch<\/strong> \u2013 Die Struktur der Fehlererweiterung f\u00fcr das Abschneiden gibt Ihnen genau an, welche Ableitungs-Approximation fehlschl\u00e4gt, und leitet Ihre Schemaauswahl.<\/li>\n<\/ul>\n<hr>\n<h2>Was Sie tats\u00e4chlich messen<\/h2>\n<p>Lassen Sie uns vor dem Eintauchen in Gleichungen kl\u00e4ren, was wir tats\u00e4chlich \u00fcberpr\u00fcfen. In der Simulationsgemeinschaft werden <strong>Verifikation<\/strong> und <strong>Validierung<\/strong> oft verwechselt \u2013 aber sie beantworten grunds\u00e4tzlich unterschiedliche Fragen:<\/p>\n<ul>\n<li><strong>Verifikation<\/strong> fragt: <em> \"L\u00f6sen wir die Gleichungen richtig?\"<\/em> Es geht um interne Konsistenz. L\u00f6st die numerische Implementierung das mathematische Modell getreu, unabh\u00e4ngig davon, ob dieses Modell die Realit\u00e4t beschreibt?<\/li>\n<li><strong>Validierung<\/strong> fragt: <em>\"L\u00f6sen wir die richtigen Gleichungen?\"<\/em> Es vergleicht Simulationsergebnisse mit physikalischen Experimenten oder Benchmark-Daten.<\/li>\n<\/ul>\n<p>Wenn Sie nach 182 <a href=\"https:\/\/matforge.org\/validation-and-verification-for-pde-simulations-practical-framework\/\">V&amp;V-Framework-\u00dcbersicht<\/a> Ihnen in das Gesamtbild einf\u00fchrten, bohrt dieser Artikel in die mathematische Maschinerie, die die Verifizierung streng macht. Stellen Sie sich das als Begleitst\u00fcck zu unserem <a href=\"https:\/\/matforge.org\/mesh-quality-convergence-studies-guide-2\/\">&gt; Convergence Studies Guide <\/a> vor, der die empirische Seite abdeckt. Hier erkl\u00e4ren wir <strong>Warum<\/strong> Konvergenzstudien funktionieren und zeigen Ihnen, wie Sie sie automatisieren k\u00f6nnen.<\/p>\n<blockquote><p><strong>Mentales Framework: Der Verk\u00fcrzungsfehler-Kompass.<\/strong> Stellen Sie sich einen K\u00fcrzungsfehler als Navigationstool vor. Die Taylor-Serien-Erweiterung gibt Ihnen nicht nur eine Bindung - sie zeigt die Richtung, in der Ihr Schema voreingenommen ist. Asymmetrie erster Ordnung bei Vorw\u00e4rtsunterschieden? Das ist Ihre Kompassnadel, die auf die dominante Fehlerableitung zeigt.<\/p><\/blockquote>\n<hr>\n<h2>K\u00fcrzungsfehler: Die mathematische Grundlage<\/h2>\n<p>Die h\u00e4ufigste Quelle f\u00fcr numerische Fehler bei Finite-Differenz-, Finite-Elemente- und Finite-Volumen-Methoden ist <strong>K\u00fcrzungsfehler <\/strong> - der Unterschied zwischen dem genauen Differentialoperator und seiner diskreten Approximation.<\/p>\n<p>Hier ist das, was die meisten Lehrb\u00fccher nicht genug betonen: Die Ableitung von K\u00fcrzungsfehlern \u00fcber Taylor-Serien ist keine akademische \u00dcbung. Es ist die praktische Grundlage f\u00fcr jede Rasterverfeinerung, die Sie jemals durchf\u00fchren werden. Mal sehen warum.<\/p>\n<p>Betrachten Sie die R\u00fcckw\u00e4rts-Euler-Zeitderivate:<\/p>\n<p>$$$frac{u(t) - U(t - delta t)}{delta t} = frac{du}{dt} + frac{1}{2} frac{d<sup>2u}{dt<\/sup>2} delta t + o(delta t^2)$$<\/p>\n<p>Der f\u00fchrende Fehlerterm ist <strong>positiv<\/strong> und proportional zu <strong>\u0394t<\/strong>. F\u00fcr Forward Euler kippt das Schild. F\u00fcr einen zentralen Raumunterschied:<\/p>\n<p>$$$frac{u(x + delta x) - u(x - delta x)}{2delta x} = frac{dx} + o(delta delta x^2)$$<\/p>\n<p>Beachten Sie die Symmetrie - die Begriffe der ungeraden Ordnung werden aufgehoben und geben die Genauigkeit <strong> zweiter Ordnung <\/strong> an. Die gerade \/ ungerade Symmetrie der Taylor-Erweiterung ist der Grund, warum zentrale Unterschiede Vorw\u00e4rts- \/ R\u00fcckw\u00e4rts-Schemata \u00fcbertreffen.<\/p>\n<h3>Ein praktischer Vergleich<\/h3>\n<table>\n<thead>\n<tr>\n<th>Schema<\/th>\n<th>Formel<\/th>\n<th>K\u00fcrzungsfehler<\/th>\n<th>Bestellen<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Vorw\u00e4rtsdifferenz<\/td>\n<td><code>(u(x+\u0394x) - u(x)) \/ \u0394x<\/code><\/td>\n<td><code>\u2212\u00bd u'' \u0394x<\/code><\/td>\n<td>1.<\/td>\n<\/tr>\n<tr>\n<td>R\u00fcckw\u00e4rtsunterschied<\/td>\n<td><code>(u(x) - u(x-\u0394x)) \/ \u0394x<\/code><\/td>\n<td><code>\u2212\u00bd u'' \u0394x<\/code><\/td>\n<td>1.<\/td>\n<\/tr>\n<tr>\n<td>Zentraler Unterschied<\/td>\n<td><code>(u(x+\u0394x) - u(x-\u0394x)) \/ 2\u0394x<\/code><\/td>\n<td><code>+(1\/6) u''' \u0394x\u00b2<\/code><\/td>\n<td>2.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Die obige Tabelle ist nicht nur ein Vergleich, sondern ein Diagnosewerkzeug. Wenn Ihre Konvergenzstudie erste Ordnung zeigt, wenn zweiter Ordnung erwartet wurde, sagt Ihnen der Begriff der f\u00fchrenden Ordnung, was nicht stimmt.<\/p>\n<h3>Der Verk\u00fcrzungsfehlerausdruck<\/h3>\n<p>F\u00fcr eine allgemeine Diskretisierung hat der K\u00fcrzungsfehler die Form:<\/p>\n<p>$$  tau = c h ^ r $$<\/p>\n<p>Dabei ist <strong>h<\/strong> der Diskretisierungsparameter (Mesh-Gr\u00f6\u00dfe oder Zeitschritt) und <strong>r<\/strong> die Konvergenzrate. Dieser Ausdruck ist <strong> nicht<\/strong> nur eine asymptotische Bindung - es ist die tats\u00e4chliche Menge, die Sie empirisch \u00fcberpr\u00fcfen. Jede Rasterverfeinerungsstudie ist grunds\u00e4tzlich ein Versuch zu best\u00e4tigen, dass der theoretische Fehlerausdruck mit dem gemessenen Fehler \u00fcbereinstimmt.<\/p>\n<p>Diese Verbindung zwischen der theoretischen \u03c4 und der empirischen Fehlermessung macht die Code\u00fcberpr\u00fcfung eher rigoros als von Hand gewellt.<\/p>\n<hr>\n<h2>Vom K\u00fcrzungsfehler zur Konvergenz<\/h2>\n<p>Jetzt, da wir den Fehlerausdruck von K\u00fcrzungen haben, verbinden wir ihn mit dem gro\u00dfen Satz der numerischen Analyse: dem <strong> LAX-Richtmyer-\u00c4quivalenzsatz <\/strong>.<\/p>\n<p>Das Theorem besagt, dass es im Englischen ist:<\/p>\n<blockquote><p><strong>Bei linearen, gut gestellten Problemen ist eine konsistente, stabile Diskretisierung konvergent.<\/strong><\/p><\/blockquote>\n<p>Packen wir jeden Begriff auf einer Praktikerebene aus:<\/p>\n<p><strong>consistent<\/strong> bedeutet, dass der K\u00fcrzungsfehler als h \u2192 0 auf Null geht. Wenn Ihr Schema \u03c4 = O (h\u00b2) hat, ist es konsistent.<\/p>\n<p><strong>Stable<\/strong> bedeutet, dass Fehler nicht unendlich wachsen. Die numerische L\u00f6sung bleibt relativ zu den Anfangsdaten begrenzt. Sie \u00fcberpr\u00fcfen die Stabilit\u00e4t durch Von-Neumann-Analyse, Energiemethoden oder praktische CFL-Zustandspr\u00fcfungen.<\/p>\n<p><strong>Konvergent<\/strong> bedeutet, dass die numerische L\u00f6sung der genauen L\u00f6sung als H \u2192 0 n\u00e4hert.<\/p>\n<p>Die Beweisskizze des Theorems (die Sie intuitiv kennen und nicht auswendig lernen sollten):<\/p>\n<ol>\n<li>Die Konsistenz stellt sicher, dass der diskrete Operator den kontinuierlichen Operator ann\u00e4hert.<\/li>\n<li>Stabilit\u00e4t begrenzt die Ausbreitung von Fehlern durch jeden Zeitschritt.<\/li>\n<li>Zusammen garantieren sie, dass der \u00fcber n = t \/ \u0394t-Schritte akkumulierte K\u00fcrzungsfehler begrenzt bleibt und auf Null konvergiert.<\/li>\n<\/ol>\n<p>Der LAX-Richtmyer-Satz erkl\u00e4rt <strong>Warum <\/strong> Stabilit\u00e4tsanforderungen. Sie k\u00f6nnen H nicht einfach willk\u00fcrlich reduzieren; Sie m\u00fcssen auch sicherstellen, dass Ihr Schema stabil ist. F\u00fcr die explizite Zeitintegration ist dies die CFL-Bedingung. Bei impliziten Schemata sind Sie normalerweise sicher, aber die Iterationstoleranz wird zum neuen Stabilit\u00e4tsproblem.<\/p>\n<hr>\n<h2>Die Methode der hergestellten L\u00f6sungen<\/h2>\n<p>Nun zur praktischen Auszahlung: Wie \u00fcberpr\u00fcfen Sie, dass Ihr Code die Gleichungen richtig l\u00f6st? Der strengste Ansatz ist die <strong>Methode der hergestellten L\u00f6sungen (MMS)<\/strong>.<\/p>\n<p>Der Sandia-Bericht von Salari und Park aus dem Jahr 2000 etablierte MMS als Industriestandard und hat jetzt \u00fcber 555 Zitate. Der Grund? MMS arbeitet f\u00fcr <strong>any<\/strong> PDE - linear, nichtlinear, gekoppelt, Multiphysik - w\u00e4hrend analytische Benchmarks nur f\u00fcr einfache Testf\u00e4lle existieren.<\/p>\n<h3>Der MMS-Workflow<\/h3>\n<p>Das Sch\u00f6ne an MMS ist, dass es das Verifizierungsproblem auf den Kopf kippt:<\/p>\n<ol>\n<li><strong>W\u00e4hlen Sie eine hergestellte L\u00f6sung<\/strong> u_manufactured(x, t) \u2014 eine beliebige glatte Funktion<\/li>\n<li><strong>Substitute in die PDE<\/strong>, um den Forcing\/Source-Term abzuleiten, der u_manufactured zu einer exakten L\u00f6sung macht<\/li>\n<li><strong>Anfangs- und Randbedingungen<\/strong> von u_manufactured ableiten<\/li>\n<li><strong>Simulation durchf\u00fchren<\/strong> mit diesen modifizierten Eingaben<\/li>\n<li><strong>Vergleiche<\/strong> Die berechnete L\u00f6sung gegen u_manufactured<\/li>\n<\/ol>\n<p>Wenn die numerische L\u00f6sung innerhalb der erwarteten Fehlergrenzen mit der hergestellten L\u00f6sung \u00fcbereinstimmt, wird Ihr Code \u00fcberpr\u00fcft.<\/p>\n<p>Lassen Sie uns dies mit konkretem Python-Code durchgehen. Wir verwenden zwei der am weitesten verbreiteten Open-Source-Frameworks: Moose und FenicsX.<\/p>\n<h3>Moose MMS: Symbolische Automatisierung<\/h3>\n<p>Das Modul <code>mms<\/code> von Moose umschlie\u00dft Sympy, um die automatische Ableitung von Funktionen abzuleiten. So richten Sie eine r\u00e4umliche Konvergenzstudie f\u00fcr eine Diffusionsgleichung ein:<\/p>\n<pre><code class=\"language-python\">import mms\n\n# Define the PDE and manufactured solution\nfs, ss = mms.evaluate(\"-div(grad(u))\", \"sin(2*pi*x)*sin(2*pi*y)\")\n\n# Print forcing function for MOOSE input file\nmms.print_fparser(fs)\n\n# Print exact solution and forcing function as MOOSE hit syntax\nmms.print_hit(fs, \"force\")\nmms.print_hit(ss, \"exact\")\n<\/code><\/pre>\n<p>Die Ausgabe sagt Ihnen genau, was Sie in Ihre <code>.i<\/code> Eingabedatei einf\u00fcgen sollen:<\/p>\n<pre><code>8*pi^2*sin(2*x*pi)*sin(2*y*pi)\n[force]\n  type = ParsedFunction\n  expression = '8*pi^2*sin(2*x*pi)*sin(2*y*pi)'\n[]\n[exact]\n  type = ParsedFunction\n  expression = 'sin(2*x*pi)*sin(2*pi*y)'\n[]\n<\/code><\/pre>\n<p>Diese symbolische Ableitung ist entscheidend. F\u00fcr eine einfache 1D-Diffusionsgleichung k\u00f6nnen Sie den Quellenbegriff von Hand ableiten. F\u00fcr Navier-Stokes oder Elastizit\u00e4t mit gekoppelten Begriffen ist die symbolische Berechnung nicht optional - es ist die einzige M\u00f6glichkeit, Fehler zu vermeiden.<\/p>\n<p>Die Moose-Eingabedatei sieht dann so aus:<\/p>\n<pre><code>[Mesh]\n  type = GeneratedMesh\n  dim = 2\n  nx = 8\n  ny = 8\n[]\n\n[Kernels]\n  [diff]\n    type = ADDiffusion\n    variable = u\n  []\n  [force]\n    type = BodyForce\n    variable = u\n    function = force\n  []\n[]\n\n[BCs]\n  [all]\n    type = FunctionDirichletBC\n    variable = u\n    function = exact\n    boundary = 'left right top bottom'\n[]\n[]\n\n[Postprocessors]\n  [error]\n    type = ElementL2Error\n    function = exact\n    variable = u\n[]\n[]\n<\/code><\/pre>\n<p>Dann automatisieren Sie die Konvergenzstudie:<\/p>\n<pre><code class=\"language-python\">import mms\n\n# Run 4 levels of refinement for both 1st and 2nd order elements\ndf1 = mms.run_spatial(\"diffusion_mms.i\", 4, console=False)\ndf2 = mms.run_spatial(\"diffusion_mms.i\", 4, \"Variables\/u\/order=SECOND\")\n\nfig = mms.ConvergencePlot(xlabel=\"Element Size ($h$)\", ylabel=\"$L_2$ Error\")\nfig.plot(df1, label=\"1st Order\")\nfig.plot(df2, label=\"2nd Order\")\nfig.save(\"convergence_plot.png\")\n<\/code><\/pre>\n<p>Auf einem Log-Log-Diagramm gibt Ihnen die Steigung jeder Linie die beobachtete Konvergenzrate. Bei Elementen erster Ordnung sollte sich die Steigung 2 n\u00e4hern. Bei Elementen zweiter Ordnung sollte sie sich 3 n\u00e4hern.<\/p>\n<h3>FenicsX: reine Python-Konvergenzstudien<\/h3>\n<p>FenicsX (der Nachfolger von Fenics\/Dolfin) bietet eine ebenso leistungsstarke Python-Schnittstelle. So berechnen Sie Fehlernormen und Konvergenzraten:<\/p>\n<pre><code class=\"language-python\">from dolfinx import default_scalar_type\nfrom dolfinx.fem import (\n    Expression, Function, functionspace,\n    assemble_scalar, dirichletbc, form,\n    locate_dofs_topological,\n)\nfrom dolfinx.fem.petsc import LinearProblem\nfrom dolfinx.mesh import create_unit_square\nfrom ufl import SpatialCoordinate, TestFunction, TrialFunction, div, dx, grad, inner\nfrom mpi4py import MPI\n\nimport ufl\nimport numpy as np\n\ndef u_ex(mod):\n    return lambda x: mod.cos(2 * mod.pi * x[0]) * mod.cos(2 * mod.pi * x[1])\n\nu_numpy = u_ex(np)\nu_ufl = u_ex(ufl)\n\ndef solve_poisson(N=10, degree=1):\n    mesh = create_unit_square(MPI.COMM_WORLD, N, N)\n    x = SpatialCoordinate(mesh)\n    f = -div(grad(u_ufl(x)))\n    V = functionspace(mesh, (\"Lagrange\", degree))\n    u = TrialFunction(V)\n    v = TestFunction(V)\n    a = inner(grad(u), grad(v)) * dx\n    L = f * v * dx\n    u_bc = Function(V)\n    u_bc.interpolate(u_numpy)\n    facets = locate_entities_boundary(\n        mesh, mesh.topology_dim - 1, lambda x: np.full(x.shape[1], True)\n    )\n    dofs = locate_dofs_topological(V, mesh.topology_dim - 1, facets)\n    bcs = [dirichletbc(u_bc, dofs)]\n    problem = LinearProblem(\n        a, L, bcs=bcs,\n        petsc_options={\"ksp_type\": \"preonly\", \"pc_type\": \"lu\"}\n    )\n    return problem.solve(), u_ufl(x)\n<\/code><\/pre>\n<p>Die wichtigste Erkenntnis hierbei ist die <strong>Zuverl\u00e4ssige Fehlernormberechnung<\/strong>. Wenn der Fehler klein ist, kann die direkte Berechnung <code>(u_ex - uh)^2<\/code> unter Rundungsfehlern leiden, da Sie zwei nahezu gleiche Zahlen subtrahieren. Das FenicsX-Tutorial empfiehlt, beide L\u00f6sungen zuerst in einen h\u00f6heren Funktionsbereich zu interpolieren:<\/p>\n<pre><code class=\"language-python\">def error_L2(uh, u_ex, degree_raise=3):\n    degree = uh.function_space.ufl_element().degree\n    family = uh.function_space.ufl_element().family_name\n    mesh = uh.function_space.mesh\n    \n    # Create higher-order space for accurate subtraction\n    W = functionspace(mesh, (family, degree + degree_raise))\n    u_W = Function(W)\n    u_W.interpolate(uh)\n    \n    u_ex_W = Function(W)\n    u_ex_W.interpolate(u_ex)\n    \n    e_W = Function(W)\n    e_W.x.array[:] = u_W.x.array - u_ex_W.x.array\n    \n    error = form(ufl.inner(e_W, e_W) * ufl.dx)\n    error_global = mesh.comm.allreduce(assemble_scalar(error), op=MPI.SUM)\n    return np.sqrt(error_global)\n<\/code><\/pre>\n<p>Dann f\u00fchren Sie die Konvergenzstudie durch:<\/p>\n<pre><code class=\"language-python\">Ns = [4, 8, 16, 32, 64]\nEs = np.zeros(len(Ns))\nhs = np.zeros(len(Ns))\n\nfor i, N in enumerate(Ns):\n    uh, u_ex = solve_poisson(N, degree=1)\n    Es[i] = error_L2(uh, u_numpy)\n    hs[i] = 1.0 \/ Ns[i]\n    print(f\"h: {hs[i]:.2e} Error: {Es[i]:.2e}\")\n\n# Compute observed convergence rates\nrates = np.log(Es[1:] \/ Es[:-1]) \/ np.log(hs[1:] \/ hs[:-1])\nprint(f\"Rates: {rates}\")\n<\/code><\/pre>\n<p>Die Ausgabe von Elementen erster Ordnung zeigt die Raten ann\u00e4hernd 2:<\/p>\n<pre><code>Rates: [1.61 1.89 1.97 1.99]\n<\/code><\/pre>\n<p>F\u00fcr Elemente zweiter Ordnung n\u00e4hert sich der Tarif 3. Dies ist die empirische Manifestation der theoretischen Verk\u00fcrzungsfehleranalyse, die wir zuvor diskutiert haben.<\/p>\n<hr>\n<h2>Praktische Konvergenzstudien: Ergebnisse interpretieren<\/h2>\n<p>Sie haben Ihre Gitterverfeinerungsstudie durchgef\u00fchrt. Sie haben Ihr Log-Log-Plot. Die Steigungen sind nahe an theoretischen Werten. Aber was sagt dir das eigentlich?<\/p>\n<h3>die beobachtete Ordnungsformel<\/h3>\n<p>Bei den Maschengr\u00f6\u00dfen H_i und H_{i-1} mit entsprechenden Fehlern E_i und E_{i-1} lautet die beobachtete Reihenfolge:<\/p>\n<p>$$p approx frac{ln(e_{i-1} \/ e_i)}{ln(h_{i-1} \/ h_i)}$$<\/p>\n<p>Wenn das Rasterverfeinerungsverh\u00e4ltnis <strong>r \u2248 2<\/strong> ist (in Studien), vereinfacht sich dies:<\/p>\n<p>$$p approx log_2(e_{i-1} \/ e_i)$$<\/p>\n<p>Wenn sich Ihre beobachtete Reihenfolge der theoretischen Vorhersage n\u00e4hert, haben Sie best\u00e4tigt, dass Ihr Code im asymptotischen Regime funktioniert. Dies ist der Meilenstein der Verifizierung.<\/p>\n<h3>Grad-Raising: ein praktischer Trick<\/h3>\n<p>Bei L2-Fehlernormen kann die direkte Berechnung die wahre Konvergenzrate aufgrund der Rundung verbergen. Die Grad-Raising-Technik (Interpolation in einen Raum um einen Grad vor der Subtraktion) ist die Standardumgehung in FenicSX. Ohne sie k\u00f6nnten Sie Konvergenz zweiter Ordnung melden, wenn der Code tats\u00e4chlich in dritter Ordnung konvergiert.<\/p>\n<hr>\n<h2>Wann sollte man aufh\u00f6ren zu \u00fcberpr\u00fcfen<\/h2>\n<p>Hier ist die praktische Realit\u00e4t: Verifizierung ist teuer. Jede Netzverfeinerung verdoppelt (oder vervierfacht sich f\u00fcr 2D) Ihre Rechenkosten. Sie k\u00f6nnen nicht unendlich verfeinern. Wann h\u00f6rst du auf?<\/p>\n<p>Das Feld hat drei praktische Heuristiken zusammengef\u00fchrt:<\/p>\n<p><strong>1. Die beobachtete Reihenfolge stimmt mit der theoretischen Vorhersage \u00fcberein. <\/strong> Wenn Sie 3+ Mesh-Verfeinungen haben und die beobachtete Reihenfolge zum theoretischen Wert innerhalb der Toleranz (typisch \u00b1 0,1) konvergiert, wird Ihr Code im asymptotischen Regime \u00fcberpr\u00fcft. Zu \u00dcberpr\u00fcfungszwecken ist keine weitere Verfeinerung erforderlich.<\/p>\n<p><strong>2. Der Gitterkonvergenzindex (GCI) f\u00e4llt unter ~ 1%. <\/strong> Der GCI quantifiziert das Unsicherheitsband aus der Netzverfeinerung. Wenn gci &lt; 1% Ihrer Interessenmenge ist der numerische Fehler im Verh\u00e4ltnis zur Modellierungsunsicherheit vernachl\u00e4ssigbar.<\/p>\n<p><strong>3. Der numerische Fehler f\u00e4llt unter die physikalische Unsicherheit. <\/strong> Wenn Ihre Materialeigenschaften eine Unsicherheit von 5% aufweisen, ist die Verfeinerung bis numerischer Fehler 0,001% verschwenderisch. Die Fehlersch\u00e4tzung \u03c4 = c h ^ r sagt Ihnen, wo sich der praktische Boden befindet.<\/p>\n<h3>Eine praktische Entscheidungs-Checkliste<\/h3>\n<ul>\n<li>[ ] F\u00fchren Sie 3\u20134 Netzverfeinerungen mit Verfeinerungsverh\u00e4ltnis R \u2248 2 durch<\/li>\n<li>[] Berechnen Sie die beobachtete Reihenfolge P aus der Log-Log-Steigung<\/li>\n<li>[ ] Verifizieren Sie, dass p die theoretische Vorhersage innerhalb von \u00b1 0,1 entspricht<\/li>\n<li>[ ] Berechnen Sie GCI f\u00fcr das feinste Netz<\/li>\n<li>[] Vergleichen Sie GCI mit der Modellierungsunsicherheit (typisch 1\u20135%)<\/li>\n<li>[] <strong>Stop, wenn: <\/strong> P best\u00e4tigt wird und gci &lt; 1% von Qoi<\/li>\n<\/ul>\n<p>Wenn Sie MMS f\u00fcr einen Produktionscode ausf\u00fchren, reicht diese Checkliste aus. F\u00fcr sicherheitskritische Anwendungen (wie die Simulation der Kernreaktorsimulation per MPACT-Handbuch) sind zus\u00e4tzliche \u00dcberpr\u00fcfungen f\u00fcr jeden Term in der ma\u00dfgeblichen Gleichung erforderlich.<\/p>\n<hr>\n<h2>Zusammenfassung<\/h2>\n<p>Die Fahrt vom K\u00fcrzungsfehler zur Code\u00fcberpr\u00fcfung folgt einem klaren Weg:<\/p>\n<ol>\n<li><strong>Taylor-Serie<\/strong> zeigt den theoretischen Verk\u00fcrzungsfehlerausdruck \u03c4 = c h ^ r<\/li>\n<li><strong>LAX-Richtmyer-Theorem<\/strong> garantiert die Konvergenz, wenn das Schema konsistent und stabil ist<\/li>\n<li><strong>MMS<\/strong> bietet den praktischen Arbeitsablauf, um zu \u00fcberpr\u00fcfen, ob Ihr Code die theoretische Konvergenzrate erreicht<\/li>\n<li><strong>Rasterverfeinerungsstudien<\/strong> best\u00e4tigen, dass beobachtete Raten theoretische Vorhersagen \u00fcbereinstimmen<\/li>\n<\/ol>\n<p>Die entscheidende Erkenntnis, die dies zusammenh\u00e4lt: Verk\u00fcrzungsfehler ist nicht nur ein theoretisches Konzept - es ist die messbare Menge, die Ihre Gitterverfeinerungsstudien best\u00e4tigen. Wenn die beobachtete Reihenfolge theoretische Vorhersage \u00fcber 3+ verfeinert, wird Ihr Code \u00fcberpr\u00fcft.<\/p>\n<p>In den n\u00e4chsten Schritten finden Sie in unserem <a href=\"https:\/\/matforge.org\/validation-and-verification-for-pde-simulations-practical-framework\/\">V&amp;v-Framework-\u00dcbersicht<\/a> den Big-Picture-Kontext und unsere <a href=\"https:\/\/matforge.org\/mesh-quality-convergence-studies-guide-2\/\">Konvergenzstudienhandbuch <\/a> f\u00fcr praktische Empfehlungen zur Netzqualit\u00e4t, die diese \u00dcberpr\u00fcfungs-Workflows erg\u00e4nzen.<\/p>\n<hr>\n<h2>Referenzen<\/h2>\n<ul>\n<li>Salari, K. &amp; Park, K. (2000). \"Code-\u00dcberpr\u00fcfung nach der Methode der hergestellten L\u00f6sungen.\" Sandia National Laboratories Bericht SAND2000-0949. <a href=\"https:\/\/prod.sandia.gov\/techlib\/access-control.cgi\/2000\/001444.pdf\" target=\"_blank\" rel=\"nofollow noopener\">Quelle<\/a><\/li>\n<li>Oberkampf, W. &amp; Roy, C. (2010). \"Verifizierung und Validierung im wissenschaftlichen Rechnen.\" Cambridge University Press.<\/li>\n<li>Langtangen, H.P. \"Trunkationsfehleranalyse f\u00fcr Finite-Differenz-Methoden.\" <a href=\"http:\/\/hplgit.github.io\/num-methods-for-PDEs\/doc\/pub\/trunc\/html\/._trunc001.html\">Numerische Methoden f\u00fcr die PDES-Dokumentation<\/a>.<\/li>\n<li>Moose MMS-Dokumentation. <a href=\"https:\/\/mooseframework.inl.gov\/python\/mms.html\" target=\"_blank\" rel=\"nofollow noopener\">Moose-Framework<\/a><\/li>\n<li>FenicsX-Konvergenz-Tutorial. <a href=\"https:\/\/jsdokken.com\/dolfinx-tutorial\/chapter4\/convergence.html\" target=\"_blank\" rel=\"nofollow noopener\">Dolfinx-Tutorial<\/a><\/li>\n<li>Kindo, T. \"Verifizieren Sie Simulationen mit der Methode der hergestellten L\u00f6sungen.\" Comsol Blog. <a href=\"https:\/\/www.comsol.com\/blogs\/verify-simulations-with-the-method-of-manufactured-solutions\" target=\"_blank\" rel=\"nofollow noopener\"> Quelle <\/a><\/li>\n<\/ul>\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\"> 8<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Schl\u00fcssel zum Mitnehmen K\u00fcrzungsfehler ist die Grundlage aller Code\u00fcberpr\u00fcfungen &#8211; Das Verst\u00e4ndnis der Taylor-Serienableitung erkl\u00e4rt, warum MMS funktioniert und warum die Konvergenzraten theoretische Vorhersagen \u00fcbereinstimmen. Die Methode der hergestellten L\u00f6sungen (MMS) ist jetzt automatisiert &#8211; Frameworks wie Moose und FenicsX verwenden Sympy, um Quellbegriffe symbolisch abzuleiten und die Handberechnungsfehler zu eliminieren, die die fr\u00fchen \u00dcberpr\u00fcfungsbem\u00fchungen [&hellip;]<\/p>\n","protected":false,"raw":""},"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=520","iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-899","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>Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung - 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\/error-estimation-verification-methods\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung - matforge.org\" \/>\n<meta property=\"og:description\" content=\"Reading Time:  8 minutesSchl\u00fcssel zum Mitnehmen K\u00fcrzungsfehler ist die Grundlage aller Code\u00fcberpr\u00fcfungen &#8211; Das Verst\u00e4ndnis der Taylor-Serienableitung erkl\u00e4rt, warum MMS funktioniert und warum die Konvergenzraten theoretische Vorhersagen \u00fcbereinstimmen. Die Methode der hergestellten L\u00f6sungen (MMS) ist jetzt automatisiert &#8211; Frameworks wie Moose und FenicsX verwenden Sympy, um Quellbegriffe symbolisch abzuleiten und die Handberechnungsfehler zu eliminieren, die die fr\u00fchen \u00dcberpr\u00fcfungsbem\u00fchungen [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/de\/error-estimation-verification-methods\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-30T12:23:18+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=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/error-estimation-verification-methods\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/error-estimation-verification-methods\\\/\"},\"author\":{\"name\":\"Elena Markovska\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"headline\":\"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung\",\"datePublished\":\"2026-07-30T12:23:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/error-estimation-verification-methods\\\/\"},\"wordCount\":1904,\"commentCount\":0,\"articleSection\":[\"Simulation & amp; Modellierungsprojekte\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/error-estimation-verification-methods\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/error-estimation-verification-methods\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/de\\\/error-estimation-verification-methods\\\/\",\"name\":\"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung - matforge.org\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-07-30T12:23:18+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/error-estimation-verification-methods\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/error-estimation-verification-methods\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/error-estimation-verification-methods\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung\"}]},{\"@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":"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung - 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\/error-estimation-verification-methods\/","og_locale":"de_DE","og_type":"article","og_title":"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung - matforge.org","og_description":"Reading Time:  8 minutesSchl\u00fcssel zum Mitnehmen K\u00fcrzungsfehler ist die Grundlage aller Code\u00fcberpr\u00fcfungen &#8211; Das Verst\u00e4ndnis der Taylor-Serienableitung erkl\u00e4rt, warum MMS funktioniert und warum die Konvergenzraten theoretische Vorhersagen \u00fcbereinstimmen. Die Methode der hergestellten L\u00f6sungen (MMS) ist jetzt automatisiert &#8211; Frameworks wie Moose und FenicsX verwenden Sympy, um Quellbegriffe symbolisch abzuleiten und die Handberechnungsfehler zu eliminieren, die die fr\u00fchen \u00dcberpr\u00fcfungsbem\u00fchungen [&hellip;]","og_url":"https:\/\/matforge.org\/de\/error-estimation-verification-methods\/","og_site_name":"matforge.org","article_published_time":"2026-07-30T12:23:18+00:00","author":"Elena Markovska","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Elena Markovska","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/de\/error-estimation-verification-methods\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/de\/error-estimation-verification-methods\/"},"author":{"name":"Elena Markovska","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"headline":"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung","datePublished":"2026-07-30T12:23:18+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/de\/error-estimation-verification-methods\/"},"wordCount":1904,"commentCount":0,"articleSection":["Simulation & amp; Modellierungsprojekte"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/de\/error-estimation-verification-methods\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/de\/error-estimation-verification-methods\/","url":"https:\/\/matforge.org\/de\/error-estimation-verification-methods\/","name":"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung - matforge.org","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-07-30T12:23:18+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"breadcrumb":{"@id":"https:\/\/matforge.org\/de\/error-estimation-verification-methods\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/de\/error-estimation-verification-methods\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/de\/error-estimation-verification-methods\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/de\/"},{"@type":"ListItem","position":2,"name":"Fehlerberechnungs- und Verifizierungsmethoden: Vom K\u00fcrzungsfehler bis zur Code\u00fcberpr\u00fcfung"}]},{"@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\/899","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=899"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/899\/revisions"}],"predecessor-version":[{"id":1009,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/899\/revisions\/1009"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=899"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}