{"id":527,"date":"2026-07-21T14:38:54","date_gmt":"2026-07-21T14:38:54","guid":{"rendered":"https:\/\/matforge.org\/?p=527","raw":"https:\/\/matforge.org\/?p=527"},"modified":"2026-07-22T08:18:03","modified_gmt":"2026-07-22T08:18:03","slug":"stiff-problems-and-stiff-solvers","status":"publish","type":"post","link":"https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/","title":{"rendered":"Problemas r\u00edgidos y solucionadores r\u00edgidos: cuando los m\u00e9todos expl\u00edcitos fallan","raw":"Problemas r\u00edgidos y solucionadores r\u00edgidos: cuando los m\u00e9todos expl\u00edcitos fallan"},"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\"> 13<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><article>\n<p>Una simulaci\u00f3n dependiente del tiempo puede parecer bien formulada y a\u00fan obligar a un solucionador expl\u00edcito a dar miles de pasos extremadamente peque\u00f1os. Aumentar el orden de Forward Euler a RK4 puede retrasar el problema, pero no siempre lo elimina. El sistema puede estar r\u00edgido.<\/p>\n<p>La rigidez aparece cuando la estabilidad num\u00e9rica requiere un paso de tiempo mucho menor que el paso necesario para resolver el comportamiento de inter\u00e9s cient\u00edfico. Los componentes r\u00e1pidos pueden decaer casi de inmediato, mientras que los componentes m\u00e1s lentos controlan la soluci\u00f3n a largo plazo. Un integrador expl\u00edcito debe permanecer estable para ambos.<\/p>\n<p>Los solucionadores r\u00edgidos impl\u00edcitos pueden pasar por encima de los modos de decaimiento r\u00e1pido porque sus regiones de estabilidad se extienden mucho m\u00e1s hacia la mitad izquierda del plano complejo. La compensaci\u00f3n es que cada paso aceptado puede requerir evaluaci\u00f3n jacobiana, factorizaci\u00f3n de matriz, \u00e1lgebra lineal iterativa o soluci\u00f3n no lineal.<\/p>\n<p>Por lo tanto, la pregunta correcta no es si los m\u00e9todos impl\u00edcitos son siempre mejores. Es si el costo computacional de un paso impl\u00edcito es menor que el costo de los muchos peque\u00f1os pasos expl\u00edcitos necesarios para la estabilidad.<\/p>\n<p>La gu\u00eda m\u00e1s amplia <a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" rel=\"nofollow\">M\u00e9todos de integraci\u00f3n de tiempo para PDE Solvers<\/a> compara los enfoques expl\u00edcitos, impl\u00edcitos y IMEX. Este art\u00edculo se centra espec\u00edficamente en la rigidez, las regiones de estabilidad, los jacobianos y las familias de soluci\u00f3n r\u00edgida.<\/p>\n<h2>que significa rigidez<\/h2>\n<p>No existe una definici\u00f3n \u00fanica de rigidez que se aplique perfectamente a cada sistema no lineal, m\u00e9todo num\u00e9rico, tolerancia e intervalo de integraci\u00f3n.<\/p>\n<p>Una descripci\u00f3n pr\u00e1ctica \u00fatil es:<\/p>\n<blockquote>\n<p>Un problema es r\u00edgido cuando un m\u00e9todo num\u00e9rico debe tomar pasos mucho m\u00e1s peque\u00f1os que la escala requerida para la precisi\u00f3n debido a las restricciones de estabilidad.<\/p>\n<\/blockquote>\n<p>Esta definici\u00f3n enfatiza que la rigidez depende en parte del solucionador. Un problema que es r\u00edgido para un m\u00e9todo Runge-Kutta expl\u00edcito puede ser manejable para un m\u00e9todo impl\u00edcito L-estable.<\/p>\n<p>Tambi\u00e9n depende de la salida solicitada. Un transitorio qu\u00edmico r\u00e1pido puede ser cient\u00edficamente importante en un estudio e irrelevante en otro. Si debe resolverse, un peque\u00f1o paso es un requisito de precisi\u00f3n en lugar de una restricci\u00f3n de rigidez innecesaria.<\/p>\n<h2>un simple sistema r\u00edgido<\/h2>\n<p>Considere dos componentes en descomposici\u00f3n:<\/p>\n<pre><code>dy\u2081\/dt = -y\u2081\r\n\r\ndy\u2082\/dt = -1000y\u2082<\/code><\/pre>\n<p>Las soluciones exactas son:<\/p>\n<pre><code>y\u2081(t) = y\u2081(0)e\u207b\u1d57\r\n\r\ny\u2082(t) = y\u2082(0)e\u207b\u00b9\u2070\u2070\u2070\u1d57<\/code><\/pre>\n<p>El segundo componente desaparece mucho m\u00e1s r\u00e1pido que el primero. Despu\u00e9s de su transitorio inicial, la soluci\u00f3n cient\u00edficamente relevante puede ser controlada casi en su totalidad por <code>y\u2081<\/code>.<\/p>\n<p>Euler forward aplicado a la segunda ecuaci\u00f3n es estable solo cuando:<\/p>\n<pre><code>|1 - 1000\u0394t| \u2264 1<\/code><\/pre>\n<p>Esto da:<\/p>\n<pre><code>0 \u2264 \u0394t \u2264 0.002<\/code><\/pre>\n<p>El solucionador debe continuar usando un paso cerca de esta escala incluso despu\u00e9s de que <code>y\u2082<\/code> se haya vuelto insignificante. El componente lento podr\u00eda representarse con precisi\u00f3n con pasos mucho m\u00e1s grandes, pero el modo r\u00e1pido controla la estabilidad expl\u00edcita.<\/p>\n<h2>Por qu\u00e9 la relaci\u00f3n de rigidez est\u00e1 incompleta<\/h2>\n<p>Para un sistema lineal:<\/p>\n<pre><code>dy\/dt = Ay<\/code><\/pre>\n<p>Una relaci\u00f3n de rigidez citada com\u00fanmente es:<\/p>\n<pre><code>\u03ba =\r\nmax |Re(\u03bb\u1d62)|\r\n\/\r\nmin |Re(\u03bb\u1d62)|<\/code><\/pre>\n<p>La relaci\u00f3n puede ser informativa cuando todos los valores propios relevantes tienen partes reales negativas y la matriz se comporta regularmente. Un gran valor sugiere tasas de decaimiento muy separadas.<\/p>\n<p>Sin embargo, no es una prueba universal. No incluye el intervalo de integraci\u00f3n, la precisi\u00f3n solicitada, la condici\u00f3n inicial o la direcci\u00f3n en la que evoluciona la soluci\u00f3n. Tambi\u00e9n puede volverse indefinido o enga\u00f1oso cuando el jacobiano contiene cero valores propios, modos de conservaci\u00f3n o comportamiento fuertemente no normal.<\/p>\n<p>En un sistema no lineal, el jacobiano cambia a lo largo de la trayectoria:<\/p>\n<pre><code>J(t) =\r\n\u2202f\r\n\/\r\n\u2202y\r\nevaluated at y(t)<\/code><\/pre>\n<p>Por lo tanto, un sistema puede moverse entre regiones r\u00edgidas y no r\u00edgidas durante una simulaci\u00f3n.<\/p>\n<h2>Indicadores basados en jacobianos<\/h2>\n<p>Las estimaciones de valor propio del jacobiano local son \u00fatiles porque los modos estables r\u00e1pidos est\u00e1n asociados con valores propios que tienen grandes partes negativas reales.<\/p>\n<p>Un indicador m\u00e1s barato a veces usa el rastro escalado:<\/p>\n<pre><code>\u03c4(J) =\r\ntrace(J) \/ d\r\n=\r\ndiv(f) \/ d<\/code><\/pre>\n<p>sobre un intervalo de integraci\u00f3n con longitud caracter\u00edstica <code>T<\/code>, un valor muy negativo de:<\/p>\n<pre><code>T trace(J) \/ d<\/code><\/pre>\n<p>Puede indicar una r\u00e1pida contracci\u00f3n de volumen de fase y posibles restricciones de pasos expl\u00edcitas.<\/p>\n<p>Este es un indicador heur\u00edstico, no una definici\u00f3n necesaria y suficiente de rigidez. Una traza promedia las partes reales de valor propio y puede ocultar una direcci\u00f3n fuertemente r\u00edgida cuando otras direcciones lo compensan.<\/p>\n<p>Los sistemas no normales tambi\u00e9n pueden exhibir un crecimiento transitorio que no se predice de manera confiable por valores propios o trazas solos. Las normas logar\u00edtmicas, los diagn\u00f3sticos del solucionador directo y las restricciones de tama\u00f1o de paso observadas pueden proporcionar informaci\u00f3n adicional.<\/p>\n<p>El fondo matem\u00e1tico se resume en <a href=\"https:\/\/en.wikipedia.org\/wiki\/Stiff_equation\" rel=\"nofollow\">La descripci\u00f3n general de las ecuaciones r\u00edgidas<\/a>. Un an\u00e1lisis m\u00e1s profundo de por qu\u00e9 la rigidez resiste una definici\u00f3n simple basada en valores propios se proporciona en <a href=\"https:\/\/people.maths.ox.ac.uk\/trefethen\/publication\/PDF\/1993_56.pdf\" rel=\"nofollow\" target=\"_blank\">rigidez de odes<\/a>.<\/p>\n<h2>Signos pr\u00e1cticos de rigidez<\/h2>\n<p>Un modelo puede ser r\u00edgido cuando:<\/p>\n<ul>\n<li>Un m\u00e9todo expl\u00edcito adaptativo reduce repetidamente su paso a pesar de una soluci\u00f3n suave.<\/li>\n<li>El solucionador expl\u00edcito toma muchos pasos despu\u00e9s de que un transitorio r\u00e1pido ya haya deca\u00eddo.<\/li>\n<li>Un peque\u00f1o cambio en el tama\u00f1o de paso cambia el c\u00e1lculo de estable a explosivo.<\/li>\n<li>El jacobiano contiene modos fuertemente negativos con escalas muy diferentes.<\/li>\n<li>Un solucionador impl\u00edcito completa el mismo c\u00e1lculo con muchos menos pasos aceptados.<\/li>\n<li>Las reacciones qu\u00edmicas, la difusi\u00f3n, la relajaci\u00f3n o los t\u00e9rminos de penalizaci\u00f3n introducen escalas de tiempo muy cortas.<\/li>\n<\/ul>\n<p>Estos s\u00edntomas no deben usarse para descartar posibles errores de codificaci\u00f3n o modelado. Los signos, unidades, condiciones de contorno o jacobianos incorrectos pueden crear un comportamiento que se asemeja a la rigidez.<\/p>\n<h2>La ecuaci\u00f3n de prueba de Dahlquist<\/h2>\n<p>La estabilidad se estudia com\u00fanmente con:<\/p>\n<pre><code>dy\/dt = \u03bby<\/code><\/pre>\n<p>La soluci\u00f3n exacta despu\u00e9s de un paso es:<\/p>\n<pre><code>y(t + \u0394t) =\r\ne^(\u03bb\u0394t)y(t)<\/code><\/pre>\n<p>Un m\u00e9todo num\u00e9rico produce:<\/p>\n<pre><code>y\u207f\u207a\u00b9 =\r\nR(z)y\u207f\r\n\r\nz = \u03bb\u0394t<\/code><\/pre>\n<p>La funci\u00f3n <code>R(z)<\/code> es la funci\u00f3n de estabilidad. El m\u00e9todo es absolutamente estable cuando:<\/p>\n<pre><code>|R(z)| \u2264 1<\/code><\/pre>\n<p>El conjunto de todos estos valores forma la regi\u00f3n de estabilidad absoluta.<\/p>\n<p>Una introducci\u00f3n clara a la ecuaci\u00f3n de Dahlquist y la estabilidad A est\u00e1 disponible en las <a href=\"https:\/\/www.math.iit.edu\/~fass\/478578_Chapter_4.pdf\" rel=\"nofollow\" target=\"_blank\">IIT Numerical Analysis Notes<\/a>.<\/p>\n<h2>Por qu\u00e9 fallan los m\u00e9todos expl\u00edcitos<\/h2>\n<p>Euler delantero tiene:<\/p>\n<pre><code>R(z) = 1 + z<\/code><\/pre>\n<p>Su regi\u00f3n de estabilidad es un disco centrado en <code>\u22121<\/code> con radio uno. A lo largo del eje real negativo:<\/p>\n<pre><code>\u22122 \u2264 z \u2264 0<\/code><\/pre>\n<p>Cl\u00e1sico RK4 tiene una regi\u00f3n m\u00e1s grande, que se extiende hasta aproximadamente:<\/p>\n<pre><code>z \u2248 \u22122.785<\/code><\/pre>\n<p>todav\u00eda est\u00e1 delimitado. Ning\u00fan m\u00e9todo expl\u00edcito de Runge-Kutta puede ser A-estable.<\/p>\n<p>Cuando un valor propio jacobiano es aproximadamente <code>\u22121000<\/code>, RK4 requiere un paso m\u00e1s peque\u00f1o que aproximadamente:<\/p>\n<pre><code>\u0394t \u2272 2.785 \/ 1000<\/code><\/pre>\n<p>Un m\u00e9todo expl\u00edcito de orden superior mejora la precisi\u00f3n y puede aumentar el intervalo estable, pero no puede extender la estabilidad arbitrariamente a lo largo del eje real negativo.<\/p>\n<h2>A-estabilidad<\/h2>\n<p>Un m\u00e9todo A-estable contiene todo el semiplano izquierdo en su regi\u00f3n de estabilidad:<\/p>\n<pre><code>Re(z) \u2264 0\r\n\u21d2\r\n|R(z)| \u2264 1<\/code><\/pre>\n<p>Euler hacia atr\u00e1s es estable porque:<\/p>\n<pre><code>R(z) =\r\n1 \/ (1 - z)<\/code><\/pre>\n<p>Para los modos con partes reales negativas, el m\u00e9todo permanece estable independientemente del tama\u00f1o del paso.<\/p>\n<p>Esto no significa que un paso arbitrariamente grande sea exacto. La estabilidad A elimina una restricci\u00f3n de estabilidad pero no elimina el error de truncamiento.<\/p>\n<h2>Estabilidad L<\/h2>\n<p>Un m\u00e9todo L-estable es A-estable y tambi\u00e9n satisface:<\/p>\n<pre><code>R(z) \u2192 0\r\nas\r\nz \u2192 -\u221e<\/code><\/pre>\n<p>Esta propiedad amortigua fuertemente los modos r\u00e1pidos no resueltos. Euler hacia atr\u00e1s es estable en L.<\/p>\n<p>Crank-Nicolson es estable pero no en L. Su funci\u00f3n de estabilidad es:<\/p>\n<pre><code>R(z) =\r\n(1 + z\/2)\r\n\/\r\n(1 - z\/2)<\/code><\/pre>\n<p>Como <code>z \u2192 -\u221e<\/code>, el factor se acerca a <code>\u22121<\/code>. Un componente muy r\u00edgido puede alternar en signo en lugar de decaer r\u00e1pidamente. Esto puede crear oscilaciones no f\u00edsicas a pesar de que el m\u00e9todo permanece limitado.<\/p>\n<p>La estabilidad L es especialmente valiosa cuando los transitorios r\u00e1pidos deber\u00edan desaparecer en lugar de permanecer visibles en la soluci\u00f3n calculada.<\/p>\n<h2>El problema de Prothero-Robinson<\/h2>\n<p>El problema de la prueba Prothero-Robinson tiene la forma general:<\/p>\n<pre><code>dy\/dt =\r\n\u03bb[y - g(t)]\r\n+ g'(t)<\/code><\/pre>\n<p>Su soluci\u00f3n exacta es:<\/p>\n<pre><code>y(t) =\r\ng(t)\r\n+\r\n[y(0) - g(0)]e^(\u03bbt)<\/code><\/pre>\n<p>Elegir:<\/p>\n<pre><code>g(t) = sin(t)<\/code><\/pre>\n<p>da:<\/p>\n<pre><code>dy\/dt =\r\n\u03bb[y - sin(t)]\r\n+ cos(t)<\/code><\/pre>\n<p>y:<\/p>\n<pre><code>y(t) =\r\nsin(t)\r\n+\r\ny(0)e^(\u03bbt)<\/code><\/pre>\n<p>Cuando <code>g(0)=0<\/code>.<\/p>\n<p>Para un gran negativo <code>\u03bb<\/code>, el transitorio exponencial decae r\u00e1pidamente, mientras que el forzamiento suave <code>sin(t)<\/code> permanece. Un m\u00e9todo expl\u00edcito a\u00fan puede verse obligado a resolver el modo de estabilidad que se est\u00e1 deteriorando r\u00e1pidamente.<\/p>\n<p>El problema tambi\u00e9n se utiliza para estudiar la reducci\u00f3n de orden r\u00edgido. Algunos m\u00e9todos no logran lograr su orden de convergencia nominal cuando interact\u00faan la rigidez, el forzamiento y los efectos de l\u00edmite o de restricci\u00f3n.<\/p>\n<h2>Comparaci\u00f3n de Python con Scipy<\/h2>\n<p>El siguiente ejemplo compara un m\u00e9todo expl\u00edcito con dos solucionadores r\u00edgidos:<\/p>\n<pre><code class=\"language-python\">import numpy as np\r\n\r\nfrom scipy.integrate import solve_ivp\r\n\r\nstiffness = -1000.0\r\ntime_interval = (0.0, 10.0)\r\ninitial_state = [1.0]\r\n\r\ndef right_hand_side(time, state):\r\n    value = state[0]\r\n\r\n    return [\r\n        stiffness\r\n        * (value - np.sin(time))\r\n        + np.cos(time)\r\n    ]\r\n\r\ndef jacobian(time, state):\r\n    return np.array([\r\n        [stiffness]\r\n    ])\r\n\r\ndef exact_solution(time):\r\n    return (\r\n        np.sin(time)\r\n        + np.exp(stiffness * time)\r\n    )\r\n\r\nmethods = [\r\n    (\"RK45\", {}),\r\n    (\"Radau\", {\"jac\": jacobian}),\r\n    (\"BDF\", {\"jac\": jacobian}),\r\n    (\"LSODA\", {})\r\n]\r\n\r\nfor method, options in methods:\r\n    solution = solve_ivp(\r\n        fun=right_hand_side,\r\n        t_span=time_interval,\r\n        y0=initial_state,\r\n        method=method,\r\n        rtol=1e-7,\r\n        atol=1e-9,\r\n        **options\r\n    )\r\n\r\n    reference = exact_solution(\r\n        solution.t\r\n    )\r\n\r\n    maximum_error = np.max(\r\n        np.abs(\r\n            solution.y[0]\r\n            - reference\r\n        )\r\n    )\r\n\r\n    print(method)\r\n    print(\"  Success:\", solution.success)\r\n    print(\"  Accepted points:\", solution.t.size)\r\n    print(\"  Function evaluations:\", solution.nfev)\r\n    print(\"  Jacobian evaluations:\", solution.njev)\r\n    print(\"  LU factorizations:\", solution.nlu)\r\n    print(\"  Maximum error:\", maximum_error)<\/code><\/pre>\n<p>Los recuentos exactos dependen de las tolerancias, la versi\u00f3n del software, el estado inicial, la informaci\u00f3n jacobiana y la configuraci\u00f3n del solucionador. La comparaci\u00f3n importante es el costo computacional total en el mismo nivel de error.<\/p>\n<h2>Familias de solucionadores r\u00edgidos<\/h2>\n<p>Ning\u00fan solucionador es mejor para cada sistema r\u00edgido. Las consideraciones importantes incluyen:<\/p>\n<ul>\n<li>Dimensi\u00f3n del sistema<\/li>\n<li>Escasez y ancho de banda jacobiano<\/li>\n<li>Costo de evaluar el lado derecho<\/li>\n<li>Disponibilidad de derivados anal\u00edticos<\/li>\n<li>Tolerancia solicitada<\/li>\n<li>presencia de restricciones o una matriz de masa<\/li>\n<li>Si el problema cambia entre las fases r\u00edgidas y no r\u00edgidas<\/li>\n<\/ul>\n<h2>F\u00f3rmulas de diferenciaci\u00f3n hacia atr\u00e1s<\/h2>\n<p>Los m\u00e9todos BDF son f\u00f3rmulas de varios pasos impl\u00edcitas. Se aproximan a la derivada utilizando varios valores de soluci\u00f3n anteriores y eval\u00faan la ecuaci\u00f3n de gobierno en el nuevo tiempo.<\/p>\n<p>Una f\u00f3rmula BDF de primer orden es Euler hacia atr\u00e1s:<\/p>\n<pre><code>(\r\n    y\u207f\u207a\u00b9 - y\u207f\r\n) \/ \u0394t\r\n=\r\nf(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\n<p>BDF2 utiliza dos valores anteriores:<\/p>\n<pre><code>(\r\n    3y\u207f\u207a\u00b9\r\n    - 4y\u207f\r\n    + y\u207f\u207b\u00b9\r\n) \/ (2\u0394t)\r\n=\r\nf(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\n<p>Las implementaciones de orden variable pueden usar varios pedidos de BDF y adaptar tanto el orden como el tama\u00f1o del paso. Los pedidos uno y dos son A-estable. Las f\u00f3rmulas BDF de orden superior sacrifican la estabilidad A completa, pero siguen siendo \u00fatiles para muchos sistemas r\u00edgidos.<\/p>\n<p>Los m\u00e9todos BDF son a menudo efectivos para sistemas grandes cuando el jacobiano es escaso y se dispone de un solucionador lineal o preacondicionador escaso adecuado.<\/p>\n<p>Los ejemplos incluyen <code>BDF<\/code> de Scipy, <code>ode15s<\/code> de MATLAB, CVODE BDF y m\u00e9todos SCIML como <code>QNDF<\/code> y <code>FBDF<\/code>.<\/p>\n<h2>M\u00e9todos de Rosenbrock<\/h2>\n<p>Los m\u00e9todos de Rosenbrock son m\u00e9todos linealmente impl\u00edcitos de Runge-Kutta. Linealizan las ecuaciones de etapa y resuelven sistemas de la forma:<\/p>\n<pre><code>(\r\n    I - \u03b3\u0394tJ\r\n)k\u1d62\r\n=\r\nknown stage terms<\/code><\/pre>\n<p>Esto evita una soluci\u00f3n no lineal completa en cada etapa. El m\u00e9todo a\u00fan requiere informaci\u00f3n jacobiana o una aproximaci\u00f3n \u00fatil.<\/p>\n<p>Los m\u00e9todos de Rosenbrock son a menudo efectivos para sistemas peque\u00f1os y medianos r\u00edgidos, especialmente con tolerancias estrictas. La misma estructura de matriz puede reutilizarse en varias etapas.<\/p>\n<p>Los ejemplos en el ecosistema SCIML incluyen:<\/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>La <a href=\"https:\/\/docs.sciml.ai\/OrdinaryDiffEq\/stable\/semiimplicit\/Rosenbrock\/\" rel=\"nofollow\" target=\"_blank\">Documentaci\u00f3n actual de Sciml Rosenbrock<\/a> proporciona recomendaciones espec\u00edficas del m\u00e9todo y detalles de implementaci\u00f3n.<\/p>\n<h2>M\u00e9todos de SDIRC<\/h2>\n<p>sdirk significa <strong>solamente impl\u00edcitamente diagonalmente impl\u00edcita-Kutta<\/strong>. Cada etapa impl\u00edcita utiliza el mismo coeficiente diagonal en la matriz de Runge-Kutta.<\/p>\n<p>Esto produce sistemas esc\u00e9nicos con una estructura repetida:<\/p>\n<pre><code>(\r\n    I - \u03b3\u0394tJ\r\n)k\u1d62\r\n=\r\nstage residual<\/code><\/pre>\n<p>Por lo tanto, una factorizaci\u00f3n de matriz o preacondicionador puede reutilizarse a trav\u00e9s de etapas cuando el jacobiano se mantiene fijo.<\/p>\n<p>Los m\u00e9todos SDIRK son m\u00e9todos de un solo paso, lo que facilita su reinicio despu\u00e9s de eventos o discontinuidades que las f\u00f3rmulas BDF de varios pasos.<\/p>\n<p>Los ejemplos incluyen los m\u00e9todos ESdirk y Kencarp. Algunos proporcionan estabilidad en L y estimaciones de errores integrados.<\/p>\n<h2>Tr-BDF2<\/h2>\n<p>TR-BDF2 es un m\u00e9todo compuesto de un solo paso. Combina una etapa de regla trapezoidal con una etapa de diferenciaci\u00f3n hacia atr\u00e1s de segundo orden.<\/p>\n<p>No debe agruparse con solucionadores de BDF de varios pasos de orden variable ordinario. Su construcci\u00f3n especial ofrece precisi\u00f3n de segundo orden y fuertes propiedades de estabilidad, incluida la estabilidad en L para la elecci\u00f3n de par\u00e1metros est\u00e1ndar.<\/p>\n<p>TR-BDF2 es a menudo un m\u00e9todo r\u00edgido pr\u00e1ctico de prop\u00f3sito general cuando el orden moderado y la amortiguaci\u00f3n robusta son m\u00e1s importantes que el orden asint\u00f3tico muy alto.<\/p>\n<h2>M\u00e9todos Runge-Kutta completamente impl\u00edcitos<\/h2>\n<p>Firk significa <strong>totalmente impl\u00edcito Runge-Kutta<\/strong>. Las etapas est\u00e1n acopladas y normalmente requieren resolver un sistema no lineal m\u00e1s grande.<\/p>\n<p>Las familias importantes incluyen:<\/p>\n<ul>\n<li>M\u00e9todos de Radau IIa<\/li>\n<li>M\u00e9todos Gauss-Legendre<\/li>\n<li>M\u00e9todos de Lobatto<\/li>\n<\/ul>\n<p>Los m\u00e9todos de Radau IIA pueden proporcionar un alto orden, estabilidad A y L-estabilidad. Son atractivos para problemas r\u00edgidos de alta precisi\u00f3n, pero pueden tener un mayor costo por paso que los m\u00e9todos de Rosenbrock, SDIRK o BDF.<\/p>\n<p>El solucionador <code>Radau<\/code> de Scipy se basa en un m\u00e9todo Radau IIa de quinto orden.<\/p>\n<h2>M\u00e9todos expl\u00edcitos estabilizados<\/h2>\n<p>Los m\u00e9todos expl\u00edcitos estabilizados utilizan polinomios de estabilidad especialmente construidos para extender el intervalo estable a lo largo del eje real negativo.<\/p>\n<p>Los ejemplos incluyen:<\/p>\n<ul>\n<li>M\u00e9todos de RKC<\/li>\n<li>roca2<\/li>\n<li>roca4<\/li>\n<\/ul>\n<p>Para un m\u00e9todo con <code>s<\/code> etapas, el intervalo estable puede crecer aproximadamente como <code>s\u00b2<\/code>. Esto hace que el enfoque sea \u00fatil para grandes sistemas dominados por difusi\u00f3n donde el espectro jacobiano se encuentra principalmente cerca del eje real negativo.<\/p>\n<p>Estos m\u00e9todos no son estables y no resuelven todo tipo de rigidez. Pueden ser inadecuados cuando el sistema tiene valores propios sustanciales imaginarios, rigidez de reacci\u00f3n altamente no lineal, restricciones algebraicas diferenciales o acoplamiento dif\u00edcil.<\/p>\n<p>El material <a href=\"https:\/\/www.epfl.ch\/labs\/mathicse\/wp-content\/uploads\/2018\/10\/27.2011_AA.pdf\" rel=\"nofollow\" target=\"_blank\">EPFL sobre m\u00e9todos expl\u00edcitos estabilizados<\/a> ilustra c\u00f3mo los m\u00e9todos basados en Chebyshev extienden el dominio de estabilidad.<\/p>\n<h2>M\u00e9todos de Imex<\/h2>\n<p>Cuando se puede separar la rigidez de la din\u00e1mica no r\u00edgida, un m\u00e9todo impl\u00edcito-expl\u00edcito puede ser m\u00e1s eficiente que tratar impl\u00edcitamente el sistema completo:<\/p>\n<pre><code>dy\/dt =\r\nf_nonstiff(y)\r\n+\r\nf_stiff(y)<\/code><\/pre>\n<p>El t\u00e9rmino no r\u00edgido se integra expl\u00edcitamente, mientras que el t\u00e9rmino r\u00edgido se integra impl\u00edcitamente.<\/p>\n<p>Los ejemplos incluyen la advecci\u00f3n tratada expl\u00edcitamente y la difusi\u00f3n tratada impl\u00edcitamente, o el transporte tratado expl\u00edcitamente y las reacciones qu\u00edmicas tratadas impl\u00edcitamente.<\/p>\n<p>Los m\u00e9todos IMEX requieren una divisi\u00f3n de operador significativa f\u00edsica y num\u00e9ricamente. Su estabilidad depende del par completo expl\u00edcito-impl\u00edcito.<\/p>\n<h2>Conmutaci\u00f3n de rigidez autom\u00e1tica<\/h2>\n<p>Algunos algoritmos estiman la rigidez mientras se integran y cambian entre f\u00f3rmulas no r\u00edgidas y r\u00edgidas.<\/p>\n<p>LSODA cambia entre un m\u00e9todo ADAMS y un m\u00e9todo BDF. Est\u00e1 disponible a trav\u00e9s de Odepack, Scipy y varias interfaces de idioma.<\/p>\n<p>En el ecosistema SCIML, un m\u00e9todo autom\u00e1tico puede combinar un algoritmo expl\u00edcito con un solucionador r\u00edgido, por ejemplo:<\/p>\n<pre><code class=\"language-julia\">AutoTsit5(\r\n    Rosenbrock23()\r\n)<\/code><\/pre>\n<p>La conmutaci\u00f3n autom\u00e1tica es \u00fatil cuando se desconoce la rigidez o solo aparece durante parte de la trayectoria. La detecci\u00f3n no es perfecta, por lo que los problemas dif\u00edciles a\u00fan pueden beneficiarse de seleccionar un solucionador r\u00edgido directamente.<\/p>\n<p>La <a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/solvers\/ode_solve\" rel=\"nofollow\" target=\"_blank\">gu\u00eda del solucionador de ODE de SciML<\/a> recomienda m\u00e9todos de conmutaci\u00f3n autom\u00e1tica cuando la rigidez es incierta.<\/p>\n<h2>Los asuntos jacobianos<\/h2>\n<p>Para un paso impl\u00edcito, el residuo no lineal puede ser:<\/p>\n<pre><code>G(y\u207f\u207a\u00b9) =\r\ny\u207f\u207a\u00b9\r\n- y\u207f\r\n- \u0394t f(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\n<p>El m\u00e9todo de Newton requiere:<\/p>\n<pre><code>[\r\n    I\r\n    - \u0394tJ\r\n]\u03b4\r\n=\r\n-G<\/code><\/pre>\n<p>donde:<\/p>\n<pre><code>J =\r\n\u2202f \/ \u2202y<\/code><\/pre>\n<p>La soluci\u00f3n lineal puede dominar el tiempo de ejecuci\u00f3n. Un solucionador r\u00edgido funcionar\u00e1 mal si trata a un jacobiano escaso grande como una matriz densa.<\/p>\n<p>El rendimiento puede mejorar a trav\u00e9s de:<\/p>\n<ul>\n<li>Un jacobiano anal\u00edtico<\/li>\n<li>Diferenciaci\u00f3n autom\u00e1tica<\/li>\n<li>un patr\u00f3n de escasez declarado<\/li>\n<li>Almacenamiento de matriz con bandas<\/li>\n<li>Factorizaci\u00f3n directa escasa<\/li>\n<li>M\u00e9todos de Krylov<\/li>\n<li>Preacondicionamiento basado en la f\u00edsica<\/li>\n<li>Productos vectoriales jacobianos sin matriz<\/li>\n<\/ul>\n<p>El tutorial de SCIML sobre <a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/tutorials\/advanced_ode_example\/\" rel=\"nofollow\" target=\"_blank\">resolviendo grandes ecuaciones r\u00edgidas<\/a> muestra c\u00f3mo la estructura jacobiana y la selecci\u00f3n del solucionador lineal afectan el rendimiento.<\/p>\n<h2>Gu\u00eda de selecci\u00f3n de solucionador<\/h2>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Caracter\u00edstica del problema<\/th>\n<th>Posible punto de partida<\/th>\n<th>Consideraci\u00f3n principal<\/th>\n<\/tr>\n<tr>\n<td>Oda suave no r\u00edgida<\/td>\n<td>RK expl\u00edcito adaptativo<\/td>\n<td>Bajo costo por paso<\/td>\n<\/tr>\n<tr>\n<td>Sistema r\u00edgido peque\u00f1o o mediano<\/td>\n<td>M\u00e9todo Rosenbrock o Radau<\/td>\n<td>Precisi\u00f3n, costo jacobiano y tolerancia<\/td>\n<\/tr>\n<tr>\n<td>Gran sistema r\u00edgido escaso<\/td>\n<td>BDF, Rosenbrock o SDIRK con escasa \u00e1lgebra lineal<\/td>\n<td>La estructura jacobiana importa m\u00e1s que un umbral de tama\u00f1o fijo<\/td>\n<\/tr>\n<tr>\n<td>Integraci\u00f3n r\u00edgida de alta precisi\u00f3n<\/td>\n<td>Radau IIa o Rosenbrock de alto orden<\/td>\n<td>Mayor costo de etapa y soluci\u00f3n<\/td>\n<\/tr>\n<tr>\n<td>Rigidez leve dominada por difusi\u00f3n<\/td>\n<td>RKC o roca<\/td>\n<td>El espectro debe estar principalmente cerca del eje real negativo<\/td>\n<\/tr>\n<tr>\n<td>F\u00edsica r\u00edgida y no r\u00edgida separable<\/td>\n<td>M\u00e9todo de imex<\/td>\n<td>Requiere una divisi\u00f3n adecuada del operador<\/td>\n<\/tr>\n<tr>\n<td>Rigidez desconocida o cambiante<\/td>\n<td>LSODA o conmutaci\u00f3n autom\u00e1tica impl\u00edcita expl\u00edcita<\/td>\n<td>La detecci\u00f3n agrega complejidad pero poco ajuste manual<\/td>\n<\/tr>\n<tr>\n<td>DAE o problema de matriz de masa<\/td>\n<td>M\u00e9todo BDF, Radau o Rosenbrock con capacidad DAE<\/td>\n<td>Es posible que los solucionadores de ODE no apliquen las restricciones algebraicas correctamente<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Por qu\u00e9 los umbrales de dimensi\u00f3n fija son enga\u00f1osos<\/h2>\n<p>Es tentador recomendar m\u00e9todos de Rosenbrock por debajo de 1000 ecuaciones, m\u00e9todos SDIRK hasta 10 000 y m\u00e9todos BDF por encima de eso. Tales umbrales no son confiables.<\/p>\n<p>Un denso problema de ecuaci\u00f3n 500 puede ser m\u00e1s caro que un sistema escaso que contiene cientos de miles de ecuaciones. Los factores decisivos incluyen:<\/p>\n<ul>\n<li>N\u00famero de entradas jacobianas distintas de cero<\/li>\n<li>Relleno durante la factorizaci\u00f3n<\/li>\n<li>Calidad del preacondicionador<\/li>\n<li>costo del lado derecho<\/li>\n<li>Tolerancia requerida<\/li>\n<li>Frecuencia de actualizaciones jacobianas<\/li>\n<li>Disponibilidad de productos sin matriz<\/li>\n<li>Escalabilidad paralela<\/li>\n<\/ul>\n<p>La elecci\u00f3n del solucionador debe probarse a trav\u00e9s de comparaciones de trabajo-precisi\u00f3n sobre el problema real.<\/p>\n<h2>El ejemplo de propagaci\u00f3n de llama<\/h2>\n<p>El ejemplo de propagaci\u00f3n de llama de Cleve Moler utiliza la ecuaci\u00f3n escalar no lineal:<\/p>\n<pre><code>dy\/dt =\r\ny\u00b2(1 - y)<\/code><\/pre>\n<p>El valor inicial es muy peque\u00f1o. La soluci\u00f3n permanece cerca de cero durante un largo per\u00edodo de inducci\u00f3n, hace transiciones r\u00e1pidamente y luego se acerca a uno.<\/p>\n<p>En la comparaci\u00f3n publicada de MATLAB, el solucionador no r\u00edgido <code>ode45<\/code> tom\u00f3 3040 pasos y 20 179 evaluaciones de funciones. El r\u00edgido solucionador basado en Rosenbrock <code>ode23s<\/code> tom\u00f3 99 pasos y 412 evaluaciones de funciones.<\/p>\n<p>Estos son aproximadamente treinta veces menos pasos aceptados, no uno por ciento del conteo original de pasos.<\/p>\n<p>El ejemplo y su representaci\u00f3n anal\u00edtica de Lambert W se describen en <a href=\"https:\/\/de.mathworks.com\/company\/technical-articles\/stiff-differential-equations.html\" rel=\"nofollow\" target=\"_blank\">ecuaciones diferenciales r\u00edgidas<\/a> de Cleve Moler.<\/p>\n<p>El resultado no debe interpretarse como una ventaja triple universal para los m\u00e9todos impl\u00edcitos. Demuestra cu\u00e1n fuertemente puede cambiar la eficiencia del solucionador cuando la estabilidad en lugar de la precisi\u00f3n controla un integrador expl\u00edcito.<\/p>\n<h2>Comparando los solucionadores de manera justa<\/h2>\n<p>Un punto de referencia justo deber\u00eda comparar m\u00e9todos con una precisi\u00f3n equivalente. Registro:<\/p>\n<ul>\n<li>Error o error global en una cantidad de inter\u00e9s<\/li>\n<li>Pasos aceptados y rechazados<\/li>\n<li>Evaluaciones del lado derecho<\/li>\n<li>Evaluaciones jacobianas<\/li>\n<li>Soluciones y factorizaciones lineales<\/li>\n<li>Iteraciones no lineales<\/li>\n<li>consumo de memoria<\/li>\n<li>Tiempo total del reloj de pared<\/li>\n<\/ul>\n<p>Un solucionador que toma menos pasos a\u00fan puede ser m\u00e1s lento si cada paso requiere una costosa factorizaci\u00f3n. Un m\u00e9todo con m\u00e1s evaluaciones de funciones puede ganar cuando la funci\u00f3n es barata y el \u00e1lgebra lineal de la competencia es costosa.<\/p>\n<h2>Errores comunes<\/h2>\n<ul>\n<li>Suponiendo que cada soluci\u00f3n expl\u00edcita divergente demuestra la rigidez<\/li>\n<li>Tratar la relaci\u00f3n de rigidez como un diagn\u00f3stico definitivo<\/li>\n<li>Usando la traza jacobiana como una definici\u00f3n de rigidez universal<\/li>\n<li>Suponiendo que cada m\u00e9todo impl\u00edcito es estable<\/li>\n<li>Suponiendo que cada m\u00e9todo A-estable es L-estable<\/li>\n<li>Llamar a TR-BDF2 un m\u00e9todo BDF de varios pasos ordinario<\/li>\n<li>Expandir a Firk incorrectamente como una familia Runge-Kutta expl\u00edcita<\/li>\n<li>Usando un jacobiano denso para un gran sistema escaso<\/li>\n<li>No proporcionar un patr\u00f3n jacobiano o escasez cuando el solucionador puede usar uno<\/li>\n<li>Seleccionar un solucionador solo del n\u00famero de ecuaciones<\/li>\n<li>Usando un m\u00e9todo expl\u00edcito estabilizado para la rigidez fuera de su dise\u00f1o espectral<\/li>\n<li>Comparar recuentos de pasos sin comparar errores y tiempo de ejecuci\u00f3n<\/li>\n<li>Dar pasos impl\u00edcitos muy grandes sin verificar la precisi\u00f3n temporal<\/li>\n<\/ul>\n<h2>un flujo de trabajo pr\u00e1ctico<\/h2>\n<ol>\n<li>Verifique las ecuaciones, unidades, signos y condiciones iniciales.<\/li>\n<li>Ejecute un m\u00e9todo expl\u00edcito adaptativo como diagn\u00f3stico.<\/li>\n<li>Inspeccione los pasos aceptados, los pasos rechazados y el tama\u00f1o de paso m\u00ednimo.<\/li>\n<li>Estime o analice el espectro jacobiano cuando sea pr\u00e1ctico.<\/li>\n<li>Compruebe si los componentes r\u00e1pidos deben resolverse f\u00edsicamente.<\/li>\n<li>Pruebe un solucionador r\u00edgido estable en L con las mismas tolerancias.<\/li>\n<li>Suministrar informaci\u00f3n y escasez jacobiano.<\/li>\n<li>Compare el trabajo y la precisi\u00f3n, no solo los pasos aceptados.<\/li>\n<li>Repita con tolerancias m\u00e1s estrictas.<\/li>\n<li>Solucionador de documentos, tolerancias, \u00e1lgebra lineal y criterios de falla.<\/li>\n<\/ol>\n<h2>Gu\u00edas relacionadas<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" rel=\"nofollow\">m\u00e9todos de integraci\u00f3n de tiempo para solucionadores de PDE<\/a> \u2014 Comparar enfoques expl\u00edcitos, impl\u00edcitos e h\u00edbridos.<\/li>\n<li><a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\">Esquemas de divisi\u00f3n de operadores, divisiones de estrangulamiento y esquemas IMEX<\/a> \u2014 Separe los procesos f\u00edsicos r\u00edgidos y no r\u00edgidos.<\/li>\n<li><a href=\"https:\/\/matforge.org\/mesh-quality-convergence-studies-guide-2\/\">estudios de calidad y convergencia de malla<\/a> \u2014 Determine si el refinamiento espacial aumenta la rigidez y cambia la soluci\u00f3n.<\/li>\n<li><a href=\"https:\/\/matforge.org\/verification-vs-validation-in-scientific-simulations-a-practical-guide\/\">verificaci\u00f3n vs. validaci\u00f3n en simulaciones cient\u00edficas<\/a> \u2014 Coloque la convergencia del solucionador dentro el flujo de trabajo de credibilidad m\u00e1s amplio.<\/li>\n<li><a href=\"https:\/\/matforge.org\/category\/simulation-modeling-projects\/\" rel=\"nofollow\">simulaci\u00f3n &amp; Proyectos de modelado<\/a> \u2014 Explore los recursos relacionados de MatForge.<\/li>\n<\/ul>\n<h2>Lectura adicional<\/h2>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Stiff_equation\" rel=\"nofollow\" target=\"_blank\">Ecuaci\u00f3n r\u00edgida: definiciones, indicadores y contexto hist\u00f3rico<\/a><\/li>\n<li><a href=\"https:\/\/people.maths.ox.ac.uk\/trefethen\/publication\/PDF\/1993_56.pdf\" rel=\"nofollow\" target=\"_blank\">Higham y Trefethen: rigidez de las odas<\/a><\/li>\n<li><a href=\"https:\/\/www.math.iit.edu\/~fass\/478578_Chapter_4.pdf\" rel=\"nofollow\" target=\"_blank\">Notas IIT sobre estabilidad absoluta y estabilidad A<\/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\">Material EPFL sobre m\u00e9todos expl\u00edcitos estabilizados<\/a><\/li>\n<li><a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/solvers\/ode_solve\" rel=\"nofollow\" target=\"_blank\">Recomendaciones para el solucionador de odas SCIML<\/a><\/li>\n<li><a href=\"https:\/\/de.mathworks.com\/company\/technical-articles\/stiff-differential-equations.html\" rel=\"nofollow\" target=\"_blank\">MathWorks: Ecuaciones diferenciales r\u00edgidas<\/a><\/li>\n<\/ul>\n<h2>Conclusi\u00f3n<\/h2>\n<p>La rigidez ocurre cuando la estabilidad num\u00e9rica fuerza un m\u00e9todo para resolver los componentes r\u00e1pidos m\u00e1s de cerca de lo que requiere la salida deseada. Los m\u00e9todos expl\u00edcitos de Runge-Kutta tienen regiones de estabilidad limitadas, por lo que los grandes modos jacobianos negativos pueden imponer pasos extremadamente peque\u00f1os.<\/p>\n<p>Los m\u00e9todos impl\u00edcitos A-estables eliminan esta restricci\u00f3n de estabilidad del semiplano izquierdo. Los m\u00e9todos L-estables van m\u00e1s all\u00e1 al amortiguar fuertemente los modos r\u00e1pidos no resueltos. Estas propiedades explican por qu\u00e9 los m\u00e9todos de Euler, BDF, Rosenbrock, Sdirk, TR-BDF2 y radau pueden superar a los solucionadores expl\u00edcitos en sistemas r\u00edgidos.<\/p>\n<p>Ning\u00fan diagn\u00f3stico o solucionador funciona para todos los problemas. Los valores propios, las relaciones de rigidez, la divergencia escalada y las restricciones de pasos observadas proporcionan informaci\u00f3n parcial. La estructura del solucionador jacobiano y lineal puede importar m\u00e1s que el n\u00famero nominal de ecuaciones.<\/p>\n<p>Los m\u00e9todos expl\u00edcitos estabilizados son \u00fatiles cuando la rigidez es moderada y est\u00e1 dominada por valores propios del eje real negativo. Los m\u00e9todos IMEX funcionan cuando se pueden separar operadores r\u00edgidos y no r\u00edgidos. Los m\u00e9todos de conmutaci\u00f3n autom\u00e1tica ayudan cuando el r\u00e9gimen cambia durante la integraci\u00f3n.<\/p>\n<p>La elecci\u00f3n final debe basarse en pruebas de precisi\u00f3n de trabajo. El mejor solucionador r\u00edgido es el m\u00e9todo que alcanza la precisi\u00f3n cient\u00edfica requerida con el menor costo computacional confiable.<\/p>\n<\/article>\n","protected":false,"raw":"<article>\r\n<p>Una simulaci\u00f3n dependiente del tiempo puede parecer bien formulada y a\u00fan obligar a un solucionador expl\u00edcito a dar miles de pasos extremadamente peque\u00f1os. Aumentar el orden de Forward Euler a RK4 puede retrasar el problema, pero no siempre lo elimina. El sistema puede estar r\u00edgido.<\/p>\r\n<p>La rigidez aparece cuando la estabilidad num\u00e9rica requiere un paso de tiempo mucho menor que el paso necesario para resolver el comportamiento de inter\u00e9s cient\u00edfico. Los componentes r\u00e1pidos pueden decaer casi de inmediato, mientras que los componentes m\u00e1s lentos controlan la soluci\u00f3n a largo plazo. Un integrador expl\u00edcito debe permanecer estable para ambos.<\/p>\r\n<p>Los solucionadores r\u00edgidos impl\u00edcitos pueden pasar por encima de los modos de decaimiento r\u00e1pido porque sus regiones de estabilidad se extienden mucho m\u00e1s hacia la mitad izquierda del plano complejo. La compensaci\u00f3n es que cada paso aceptado puede requerir evaluaci\u00f3n jacobiana, factorizaci\u00f3n de matriz, \u00e1lgebra lineal iterativa o soluci\u00f3n no lineal.<\/p>\r\n<p>Por lo tanto, la pregunta correcta no es si los m\u00e9todos impl\u00edcitos son siempre mejores. Es si el costo computacional de un paso impl\u00edcito es menor que el costo de los muchos peque\u00f1os pasos expl\u00edcitos necesarios para la estabilidad.<\/p>\r\n<p>La gu\u00eda m\u00e1s amplia <a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" rel=\"nofollow\">M\u00e9todos de integraci\u00f3n de tiempo para PDE Solvers<\/a> compara los enfoques expl\u00edcitos, impl\u00edcitos y IMEX. Este art\u00edculo se centra espec\u00edficamente en la rigidez, las regiones de estabilidad, los jacobianos y las familias de soluci\u00f3n r\u00edgida.<\/p>\r\n<h2>que significa rigidez<\/h2>\r\n<p>No existe una definici\u00f3n \u00fanica de rigidez que se aplique perfectamente a cada sistema no lineal, m\u00e9todo num\u00e9rico, tolerancia e intervalo de integraci\u00f3n.<\/p>\r\n<p>Una descripci\u00f3n pr\u00e1ctica \u00fatil es:<\/p>\r\n<blockquote>\r\n<p>Un problema es r\u00edgido cuando un m\u00e9todo num\u00e9rico debe tomar pasos mucho m\u00e1s peque\u00f1os que la escala requerida para la precisi\u00f3n debido a las restricciones de estabilidad.<\/p>\r\n<\/blockquote>\r\n<p>Esta definici\u00f3n enfatiza que la rigidez depende en parte del solucionador. Un problema que es r\u00edgido para un m\u00e9todo Runge-Kutta expl\u00edcito puede ser manejable para un m\u00e9todo impl\u00edcito L-estable.<\/p>\r\n<p>Tambi\u00e9n depende de la salida solicitada. Un transitorio qu\u00edmico r\u00e1pido puede ser cient\u00edficamente importante en un estudio e irrelevante en otro. Si debe resolverse, un peque\u00f1o paso es un requisito de precisi\u00f3n en lugar de una restricci\u00f3n de rigidez innecesaria.<\/p>\r\n<h2>un simple sistema r\u00edgido<\/h2>\r\n<p>Considere dos componentes en descomposici\u00f3n:<\/p>\r\n<pre><code>dy\u2081\/dt = -y\u2081\r\n\r\ndy\u2082\/dt = -1000y\u2082<\/code><\/pre>\r\n<p>Las soluciones exactas son:<\/p>\r\n<pre><code>y\u2081(t) = y\u2081(0)e\u207b\u1d57\r\n\r\ny\u2082(t) = y\u2082(0)e\u207b\u00b9\u2070\u2070\u2070\u1d57<\/code><\/pre>\r\n<p>El segundo componente desaparece mucho m\u00e1s r\u00e1pido que el primero. Despu\u00e9s de su transitorio inicial, la soluci\u00f3n cient\u00edficamente relevante puede ser controlada casi en su totalidad por <code>y\u2081<\/code>.<\/p>\r\n<p>Euler forward aplicado a la segunda ecuaci\u00f3n es estable solo cuando:<\/p>\r\n<pre><code>|1 - 1000\u0394t| \u2264 1<\/code><\/pre>\r\n<p>Esto da:<\/p>\r\n<pre><code>0 \u2264 \u0394t \u2264 0.002<\/code><\/pre>\r\n<p>El solucionador debe continuar usando un paso cerca de esta escala incluso despu\u00e9s de que <code>y\u2082<\/code> se haya vuelto insignificante. El componente lento podr\u00eda representarse con precisi\u00f3n con pasos mucho m\u00e1s grandes, pero el modo r\u00e1pido controla la estabilidad expl\u00edcita.<\/p>\r\n<h2>Por qu\u00e9 la relaci\u00f3n de rigidez est\u00e1 incompleta<\/h2>\r\n<p>Para un sistema lineal:<\/p>\r\n<pre><code>dy\/dt = Ay<\/code><\/pre>\r\n<p>Una relaci\u00f3n de rigidez citada com\u00fanmente es:<\/p>\r\n<pre><code>\u03ba =\r\nmax |Re(\u03bb\u1d62)|\r\n\/\r\nmin |Re(\u03bb\u1d62)|<\/code><\/pre>\r\n<p>La relaci\u00f3n puede ser informativa cuando todos los valores propios relevantes tienen partes reales negativas y la matriz se comporta regularmente. Un gran valor sugiere tasas de decaimiento muy separadas.<\/p>\r\n<p>Sin embargo, no es una prueba universal. No incluye el intervalo de integraci\u00f3n, la precisi\u00f3n solicitada, la condici\u00f3n inicial o la direcci\u00f3n en la que evoluciona la soluci\u00f3n. Tambi\u00e9n puede volverse indefinido o enga\u00f1oso cuando el jacobiano contiene cero valores propios, modos de conservaci\u00f3n o comportamiento fuertemente no normal.<\/p>\r\n<p>En un sistema no lineal, el jacobiano cambia a lo largo de la trayectoria:<\/p>\r\n<pre><code>J(t) =\r\n\u2202f\r\n\/\r\n\u2202y\r\nevaluated at y(t)<\/code><\/pre>\r\n<p>Por lo tanto, un sistema puede moverse entre regiones r\u00edgidas y no r\u00edgidas durante una simulaci\u00f3n.<\/p>\r\n<h2>Indicadores basados en jacobianos<\/h2>\r\n<p>Las estimaciones de valor propio del jacobiano local son \u00fatiles porque los modos estables r\u00e1pidos est\u00e1n asociados con valores propios que tienen grandes partes negativas reales.<\/p>\r\n<p>Un indicador m\u00e1s barato a veces usa el rastro escalado:<\/p>\r\n<pre><code>\u03c4(J) =\r\ntrace(J) \/ d\r\n=\r\ndiv(f) \/ d<\/code><\/pre>\r\n<p>sobre un intervalo de integraci\u00f3n con longitud caracter\u00edstica <code>T<\/code>, un valor muy negativo de:<\/p>\r\n<pre><code>T trace(J) \/ d<\/code><\/pre>\r\n<p>Puede indicar una r\u00e1pida contracci\u00f3n de volumen de fase y posibles restricciones de pasos expl\u00edcitas.<\/p>\r\n<p>Este es un indicador heur\u00edstico, no una definici\u00f3n necesaria y suficiente de rigidez. Una traza promedia las partes reales de valor propio y puede ocultar una direcci\u00f3n fuertemente r\u00edgida cuando otras direcciones lo compensan.<\/p>\r\n<p>Los sistemas no normales tambi\u00e9n pueden exhibir un crecimiento transitorio que no se predice de manera confiable por valores propios o trazas solos. Las normas logar\u00edtmicas, los diagn\u00f3sticos del solucionador directo y las restricciones de tama\u00f1o de paso observadas pueden proporcionar informaci\u00f3n adicional.<\/p>\r\n<p>El fondo matem\u00e1tico se resume en <a href=\"https:\/\/en.wikipedia.org\/wiki\/Stiff_equation\" rel=\"nofollow\">La descripci\u00f3n general de las ecuaciones r\u00edgidas<\/a>. Un an\u00e1lisis m\u00e1s profundo de por qu\u00e9 la rigidez resiste una definici\u00f3n simple basada en valores propios se proporciona en <a href=\"https:\/\/people.maths.ox.ac.uk\/trefethen\/publication\/PDF\/1993_56.pdf\" rel=\"nofollow\" target=\"_blank\">rigidez de odes<\/a>.<\/p>\r\n<h2>Signos pr\u00e1cticos de rigidez<\/h2>\r\n<p>Un modelo puede ser r\u00edgido cuando:<\/p>\r\n<ul>\r\n<li>Un m\u00e9todo expl\u00edcito adaptativo reduce repetidamente su paso a pesar de una soluci\u00f3n suave.<\/li>\r\n<li>El solucionador expl\u00edcito toma muchos pasos despu\u00e9s de que un transitorio r\u00e1pido ya haya deca\u00eddo.<\/li>\r\n<li>Un peque\u00f1o cambio en el tama\u00f1o de paso cambia el c\u00e1lculo de estable a explosivo.<\/li>\r\n<li>El jacobiano contiene modos fuertemente negativos con escalas muy diferentes.<\/li>\r\n<li>Un solucionador impl\u00edcito completa el mismo c\u00e1lculo con muchos menos pasos aceptados.<\/li>\r\n<li>Las reacciones qu\u00edmicas, la difusi\u00f3n, la relajaci\u00f3n o los t\u00e9rminos de penalizaci\u00f3n introducen escalas de tiempo muy cortas.<\/li>\r\n<\/ul>\r\n<p>Estos s\u00edntomas no deben usarse para descartar posibles errores de codificaci\u00f3n o modelado. Los signos, unidades, condiciones de contorno o jacobianos incorrectos pueden crear un comportamiento que se asemeja a la rigidez.<\/p>\r\n<h2>La ecuaci\u00f3n de prueba de Dahlquist<\/h2>\r\n<p>La estabilidad se estudia com\u00fanmente con:<\/p>\r\n<pre><code>dy\/dt = \u03bby<\/code><\/pre>\r\n<p>La soluci\u00f3n exacta despu\u00e9s de un paso es:<\/p>\r\n<pre><code>y(t + \u0394t) =\r\ne^(\u03bb\u0394t)y(t)<\/code><\/pre>\r\n<p>Un m\u00e9todo num\u00e9rico produce:<\/p>\r\n<pre><code>y\u207f\u207a\u00b9 =\r\nR(z)y\u207f\r\n\r\nz = \u03bb\u0394t<\/code><\/pre>\r\n<p>La funci\u00f3n <code>R(z)<\/code> es la funci\u00f3n de estabilidad. El m\u00e9todo es absolutamente estable cuando:<\/p>\r\n<pre><code>|R(z)| \u2264 1<\/code><\/pre>\r\n<p>El conjunto de todos estos valores forma la regi\u00f3n de estabilidad absoluta.<\/p>\r\n<p>Una introducci\u00f3n clara a la ecuaci\u00f3n de Dahlquist y la estabilidad A est\u00e1 disponible en las <a href=\"https:\/\/www.math.iit.edu\/~fass\/478578_Chapter_4.pdf\" rel=\"nofollow\" target=\"_blank\">IIT Numerical Analysis Notes<\/a>.<\/p>\r\n<h2>Por qu\u00e9 fallan los m\u00e9todos expl\u00edcitos<\/h2>\r\n<p>Euler delantero tiene:<\/p>\r\n<pre><code>R(z) = 1 + z<\/code><\/pre>\r\n<p>Su regi\u00f3n de estabilidad es un disco centrado en <code>\u22121<\/code> con radio uno. A lo largo del eje real negativo:<\/p>\r\n<pre><code>\u22122 \u2264 z \u2264 0<\/code><\/pre>\r\n<p>Cl\u00e1sico RK4 tiene una regi\u00f3n m\u00e1s grande, que se extiende hasta aproximadamente:<\/p>\r\n<pre><code>z \u2248 \u22122.785<\/code><\/pre>\r\n<p>todav\u00eda est\u00e1 delimitado. Ning\u00fan m\u00e9todo expl\u00edcito de Runge-Kutta puede ser A-estable.<\/p>\r\n<p>Cuando un valor propio jacobiano es aproximadamente <code>\u22121000<\/code>, RK4 requiere un paso m\u00e1s peque\u00f1o que aproximadamente:<\/p>\r\n<pre><code>\u0394t \u2272 2.785 \/ 1000<\/code><\/pre>\r\n<p>Un m\u00e9todo expl\u00edcito de orden superior mejora la precisi\u00f3n y puede aumentar el intervalo estable, pero no puede extender la estabilidad arbitrariamente a lo largo del eje real negativo.<\/p>\r\n<h2>A-estabilidad<\/h2>\r\n<p>Un m\u00e9todo A-estable contiene todo el semiplano izquierdo en su regi\u00f3n de estabilidad:<\/p>\r\n<pre><code>Re(z) \u2264 0\r\n\u21d2\r\n|R(z)| \u2264 1<\/code><\/pre>\r\n<p>Euler hacia atr\u00e1s es estable porque:<\/p>\r\n<pre><code>R(z) =\r\n1 \/ (1 - z)<\/code><\/pre>\r\n<p>Para los modos con partes reales negativas, el m\u00e9todo permanece estable independientemente del tama\u00f1o del paso.<\/p>\r\n<p>Esto no significa que un paso arbitrariamente grande sea exacto. La estabilidad A elimina una restricci\u00f3n de estabilidad pero no elimina el error de truncamiento.<\/p>\r\n<h2>Estabilidad L<\/h2>\r\n<p>Un m\u00e9todo L-estable es A-estable y tambi\u00e9n satisface:<\/p>\r\n<pre><code>R(z) \u2192 0\r\nas\r\nz \u2192 -\u221e<\/code><\/pre>\r\n<p>Esta propiedad amortigua fuertemente los modos r\u00e1pidos no resueltos. Euler hacia atr\u00e1s es estable en L.<\/p>\r\n<p>Crank-Nicolson es estable pero no en L. Su funci\u00f3n de estabilidad es:<\/p>\r\n<pre><code>R(z) =\r\n(1 + z\/2)\r\n\/\r\n(1 - z\/2)<\/code><\/pre>\r\n<p>Como <code>z \u2192 -\u221e<\/code>, el factor se acerca a <code>\u22121<\/code>. Un componente muy r\u00edgido puede alternar en signo en lugar de decaer r\u00e1pidamente. Esto puede crear oscilaciones no f\u00edsicas a pesar de que el m\u00e9todo permanece limitado.<\/p>\r\n<p>La estabilidad L es especialmente valiosa cuando los transitorios r\u00e1pidos deber\u00edan desaparecer en lugar de permanecer visibles en la soluci\u00f3n calculada.<\/p>\r\n<h2>El problema de Prothero-Robinson<\/h2>\r\n<p>El problema de la prueba Prothero-Robinson tiene la forma general:<\/p>\r\n<pre><code>dy\/dt =\r\n\u03bb[y - g(t)]\r\n+ g'(t)<\/code><\/pre>\r\n<p>Su soluci\u00f3n exacta es:<\/p>\r\n<pre><code>y(t) =\r\ng(t)\r\n+\r\n[y(0) - g(0)]e^(\u03bbt)<\/code><\/pre>\r\n<p>Elegir:<\/p>\r\n<pre><code>g(t) = sin(t)<\/code><\/pre>\r\n<p>da:<\/p>\r\n<pre><code>dy\/dt =\r\n\u03bb[y - sin(t)]\r\n+ cos(t)<\/code><\/pre>\r\n<p>y:<\/p>\r\n<pre><code>y(t) =\r\nsin(t)\r\n+\r\ny(0)e^(\u03bbt)<\/code><\/pre>\r\n<p>Cuando <code>g(0)=0<\/code>.<\/p>\r\n<p>Para un gran negativo <code>\u03bb<\/code>, el transitorio exponencial decae r\u00e1pidamente, mientras que el forzamiento suave <code>sin(t)<\/code> permanece. Un m\u00e9todo expl\u00edcito a\u00fan puede verse obligado a resolver el modo de estabilidad que se est\u00e1 deteriorando r\u00e1pidamente.<\/p>\r\n<p>El problema tambi\u00e9n se utiliza para estudiar la reducci\u00f3n de orden r\u00edgido. Algunos m\u00e9todos no logran lograr su orden de convergencia nominal cuando interact\u00faan la rigidez, el forzamiento y los efectos de l\u00edmite o de restricci\u00f3n.<\/p>\r\n<h2>Comparaci\u00f3n de Python con Scipy<\/h2>\r\n<p>El siguiente ejemplo compara un m\u00e9todo expl\u00edcito con dos solucionadores r\u00edgidos:<\/p>\r\n<pre><code class=\"language-python\">import numpy as np\r\n\r\nfrom scipy.integrate import solve_ivp\r\n\r\nstiffness = -1000.0\r\ntime_interval = (0.0, 10.0)\r\ninitial_state = [1.0]\r\n\r\ndef right_hand_side(time, state):\r\n    value = state[0]\r\n\r\n    return [\r\n        stiffness\r\n        * (value - np.sin(time))\r\n        + np.cos(time)\r\n    ]\r\n\r\ndef jacobian(time, state):\r\n    return np.array([\r\n        [stiffness]\r\n    ])\r\n\r\ndef exact_solution(time):\r\n    return (\r\n        np.sin(time)\r\n        + np.exp(stiffness * time)\r\n    )\r\n\r\nmethods = [\r\n    (\"RK45\", {}),\r\n    (\"Radau\", {\"jac\": jacobian}),\r\n    (\"BDF\", {\"jac\": jacobian}),\r\n    (\"LSODA\", {})\r\n]\r\n\r\nfor method, options in methods:\r\n    solution = solve_ivp(\r\n        fun=right_hand_side,\r\n        t_span=time_interval,\r\n        y0=initial_state,\r\n        method=method,\r\n        rtol=1e-7,\r\n        atol=1e-9,\r\n        **options\r\n    )\r\n\r\n    reference = exact_solution(\r\n        solution.t\r\n    )\r\n\r\n    maximum_error = np.max(\r\n        np.abs(\r\n            solution.y[0]\r\n            - reference\r\n        )\r\n    )\r\n\r\n    print(method)\r\n    print(\"  Success:\", solution.success)\r\n    print(\"  Accepted points:\", solution.t.size)\r\n    print(\"  Function evaluations:\", solution.nfev)\r\n    print(\"  Jacobian evaluations:\", solution.njev)\r\n    print(\"  LU factorizations:\", solution.nlu)\r\n    print(\"  Maximum error:\", maximum_error)<\/code><\/pre>\r\n<p>Los recuentos exactos dependen de las tolerancias, la versi\u00f3n del software, el estado inicial, la informaci\u00f3n jacobiana y la configuraci\u00f3n del solucionador. La comparaci\u00f3n importante es el costo computacional total en el mismo nivel de error.<\/p>\r\n<h2>Familias de solucionadores r\u00edgidos<\/h2>\r\n<p>Ning\u00fan solucionador es mejor para cada sistema r\u00edgido. Las consideraciones importantes incluyen:<\/p>\r\n<ul>\r\n<li>Dimensi\u00f3n del sistema<\/li>\r\n<li>Escasez y ancho de banda jacobiano<\/li>\r\n<li>Costo de evaluar el lado derecho<\/li>\r\n<li>Disponibilidad de derivados anal\u00edticos<\/li>\r\n<li>Tolerancia solicitada<\/li>\r\n<li>presencia de restricciones o una matriz de masa<\/li>\r\n<li>Si el problema cambia entre las fases r\u00edgidas y no r\u00edgidas<\/li>\r\n<\/ul>\r\n<h2>F\u00f3rmulas de diferenciaci\u00f3n hacia atr\u00e1s<\/h2>\r\n<p>Los m\u00e9todos BDF son f\u00f3rmulas de varios pasos impl\u00edcitas. Se aproximan a la derivada utilizando varios valores de soluci\u00f3n anteriores y eval\u00faan la ecuaci\u00f3n de gobierno en el nuevo tiempo.<\/p>\r\n<p>Una f\u00f3rmula BDF de primer orden es Euler hacia atr\u00e1s:<\/p>\r\n<pre><code>(\r\n    y\u207f\u207a\u00b9 - y\u207f\r\n) \/ \u0394t\r\n=\r\nf(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\r\n<p>BDF2 utiliza dos valores anteriores:<\/p>\r\n<pre><code>(\r\n    3y\u207f\u207a\u00b9\r\n    - 4y\u207f\r\n    + y\u207f\u207b\u00b9\r\n) \/ (2\u0394t)\r\n=\r\nf(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\r\n<p>Las implementaciones de orden variable pueden usar varios pedidos de BDF y adaptar tanto el orden como el tama\u00f1o del paso. Los pedidos uno y dos son A-estable. Las f\u00f3rmulas BDF de orden superior sacrifican la estabilidad A completa, pero siguen siendo \u00fatiles para muchos sistemas r\u00edgidos.<\/p>\r\n<p>Los m\u00e9todos BDF son a menudo efectivos para sistemas grandes cuando el jacobiano es escaso y se dispone de un solucionador lineal o preacondicionador escaso adecuado.<\/p>\r\n<p>Los ejemplos incluyen <code>BDF<\/code> de Scipy, <code>ode15s<\/code> de MATLAB, CVODE BDF y m\u00e9todos SCIML como <code>QNDF<\/code> y <code>FBDF<\/code>.<\/p>\r\n<h2>M\u00e9todos de Rosenbrock<\/h2>\r\n<p>Los m\u00e9todos de Rosenbrock son m\u00e9todos linealmente impl\u00edcitos de Runge-Kutta. Linealizan las ecuaciones de etapa y resuelven sistemas de la forma:<\/p>\r\n<pre><code>(\r\n    I - \u03b3\u0394tJ\r\n)k\u1d62\r\n=\r\nknown stage terms<\/code><\/pre>\r\n<p>Esto evita una soluci\u00f3n no lineal completa en cada etapa. El m\u00e9todo a\u00fan requiere informaci\u00f3n jacobiana o una aproximaci\u00f3n \u00fatil.<\/p>\r\n<p>Los m\u00e9todos de Rosenbrock son a menudo efectivos para sistemas peque\u00f1os y medianos r\u00edgidos, especialmente con tolerancias estrictas. La misma estructura de matriz puede reutilizarse en varias etapas.<\/p>\r\n<p>Los ejemplos en el ecosistema SCIML incluyen:<\/p>\r\n<ul>\r\n<li><code>Rosenbrock23<\/code><\/li>\r\n<li><code>Rodas4<\/code><\/li>\r\n<li><code>Rodas5P<\/code><\/li>\r\n<\/ul>\r\n<p>La <a href=\"https:\/\/docs.sciml.ai\/OrdinaryDiffEq\/stable\/semiimplicit\/Rosenbrock\/\" rel=\"nofollow\" target=\"_blank\">Documentaci\u00f3n actual de Sciml Rosenbrock<\/a> proporciona recomendaciones espec\u00edficas del m\u00e9todo y detalles de implementaci\u00f3n.<\/p>\r\n<h2>M\u00e9todos de SDIRC<\/h2>\r\n<p>sdirk significa <strong>solamente impl\u00edcitamente diagonalmente impl\u00edcita-Kutta<\/strong>. Cada etapa impl\u00edcita utiliza el mismo coeficiente diagonal en la matriz de Runge-Kutta.<\/p>\r\n<p>Esto produce sistemas esc\u00e9nicos con una estructura repetida:<\/p>\r\n<pre><code>(\r\n    I - \u03b3\u0394tJ\r\n)k\u1d62\r\n=\r\nstage residual<\/code><\/pre>\r\n<p>Por lo tanto, una factorizaci\u00f3n de matriz o preacondicionador puede reutilizarse a trav\u00e9s de etapas cuando el jacobiano se mantiene fijo.<\/p>\r\n<p>Los m\u00e9todos SDIRK son m\u00e9todos de un solo paso, lo que facilita su reinicio despu\u00e9s de eventos o discontinuidades que las f\u00f3rmulas BDF de varios pasos.<\/p>\r\n<p>Los ejemplos incluyen los m\u00e9todos ESdirk y Kencarp. Algunos proporcionan estabilidad en L y estimaciones de errores integrados.<\/p>\r\n<h2>Tr-BDF2<\/h2>\r\n<p>TR-BDF2 es un m\u00e9todo compuesto de un solo paso. Combina una etapa de regla trapezoidal con una etapa de diferenciaci\u00f3n hacia atr\u00e1s de segundo orden.<\/p>\r\n<p>No debe agruparse con solucionadores de BDF de varios pasos de orden variable ordinario. Su construcci\u00f3n especial ofrece precisi\u00f3n de segundo orden y fuertes propiedades de estabilidad, incluida la estabilidad en L para la elecci\u00f3n de par\u00e1metros est\u00e1ndar.<\/p>\r\n<p>TR-BDF2 es a menudo un m\u00e9todo r\u00edgido pr\u00e1ctico de prop\u00f3sito general cuando el orden moderado y la amortiguaci\u00f3n robusta son m\u00e1s importantes que el orden asint\u00f3tico muy alto.<\/p>\r\n<h2>M\u00e9todos Runge-Kutta completamente impl\u00edcitos<\/h2>\r\n<p>Firk significa <strong>totalmente impl\u00edcito Runge-Kutta<\/strong>. Las etapas est\u00e1n acopladas y normalmente requieren resolver un sistema no lineal m\u00e1s grande.<\/p>\r\n<p>Las familias importantes incluyen:<\/p>\r\n<ul>\r\n<li>M\u00e9todos de Radau IIa<\/li>\r\n<li>M\u00e9todos Gauss-Legendre<\/li>\r\n<li>M\u00e9todos de Lobatto<\/li>\r\n<\/ul>\r\n<p>Los m\u00e9todos de Radau IIA pueden proporcionar un alto orden, estabilidad A y L-estabilidad. Son atractivos para problemas r\u00edgidos de alta precisi\u00f3n, pero pueden tener un mayor costo por paso que los m\u00e9todos de Rosenbrock, SDIRK o BDF.<\/p>\r\n<p>El solucionador <code>Radau<\/code> de Scipy se basa en un m\u00e9todo Radau IIa de quinto orden.<\/p>\r\n<h2>M\u00e9todos expl\u00edcitos estabilizados<\/h2>\r\n<p>Los m\u00e9todos expl\u00edcitos estabilizados utilizan polinomios de estabilidad especialmente construidos para extender el intervalo estable a lo largo del eje real negativo.<\/p>\r\n<p>Los ejemplos incluyen:<\/p>\r\n<ul>\r\n<li>M\u00e9todos de RKC<\/li>\r\n<li>roca2<\/li>\r\n<li>roca4<\/li>\r\n<\/ul>\r\n<p>Para un m\u00e9todo con <code>s<\/code> etapas, el intervalo estable puede crecer aproximadamente como <code>s\u00b2<\/code>. Esto hace que el enfoque sea \u00fatil para grandes sistemas dominados por difusi\u00f3n donde el espectro jacobiano se encuentra principalmente cerca del eje real negativo.<\/p>\r\n<p>Estos m\u00e9todos no son estables y no resuelven todo tipo de rigidez. Pueden ser inadecuados cuando el sistema tiene valores propios sustanciales imaginarios, rigidez de reacci\u00f3n altamente no lineal, restricciones algebraicas diferenciales o acoplamiento dif\u00edcil.<\/p>\r\n<p>El material <a href=\"https:\/\/www.epfl.ch\/labs\/mathicse\/wp-content\/uploads\/2018\/10\/27.2011_AA.pdf\" rel=\"nofollow\" target=\"_blank\">EPFL sobre m\u00e9todos expl\u00edcitos estabilizados<\/a> ilustra c\u00f3mo los m\u00e9todos basados en Chebyshev extienden el dominio de estabilidad.<\/p>\r\n<h2>M\u00e9todos de Imex<\/h2>\r\n<p>Cuando se puede separar la rigidez de la din\u00e1mica no r\u00edgida, un m\u00e9todo impl\u00edcito-expl\u00edcito puede ser m\u00e1s eficiente que tratar impl\u00edcitamente el sistema completo:<\/p>\r\n<pre><code>dy\/dt =\r\nf_nonstiff(y)\r\n+\r\nf_stiff(y)<\/code><\/pre>\r\n<p>El t\u00e9rmino no r\u00edgido se integra expl\u00edcitamente, mientras que el t\u00e9rmino r\u00edgido se integra impl\u00edcitamente.<\/p>\r\n<p>Los ejemplos incluyen la advecci\u00f3n tratada expl\u00edcitamente y la difusi\u00f3n tratada impl\u00edcitamente, o el transporte tratado expl\u00edcitamente y las reacciones qu\u00edmicas tratadas impl\u00edcitamente.<\/p>\r\n<p>Los m\u00e9todos IMEX requieren una divisi\u00f3n de operador significativa f\u00edsica y num\u00e9ricamente. Su estabilidad depende del par completo expl\u00edcito-impl\u00edcito.<\/p>\r\n<h2>Conmutaci\u00f3n de rigidez autom\u00e1tica<\/h2>\r\n<p>Algunos algoritmos estiman la rigidez mientras se integran y cambian entre f\u00f3rmulas no r\u00edgidas y r\u00edgidas.<\/p>\r\n<p>LSODA cambia entre un m\u00e9todo ADAMS y un m\u00e9todo BDF. Est\u00e1 disponible a trav\u00e9s de Odepack, Scipy y varias interfaces de idioma.<\/p>\r\n<p>En el ecosistema SCIML, un m\u00e9todo autom\u00e1tico puede combinar un algoritmo expl\u00edcito con un solucionador r\u00edgido, por ejemplo:<\/p>\r\n<pre><code class=\"language-julia\">AutoTsit5(\r\n    Rosenbrock23()\r\n)<\/code><\/pre>\r\n<p>La conmutaci\u00f3n autom\u00e1tica es \u00fatil cuando se desconoce la rigidez o solo aparece durante parte de la trayectoria. La detecci\u00f3n no es perfecta, por lo que los problemas dif\u00edciles a\u00fan pueden beneficiarse de seleccionar un solucionador r\u00edgido directamente.<\/p>\r\n<p>La <a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/solvers\/ode_solve\" rel=\"nofollow\" target=\"_blank\">gu\u00eda del solucionador de ODE de SciML<\/a> recomienda m\u00e9todos de conmutaci\u00f3n autom\u00e1tica cuando la rigidez es incierta.<\/p>\r\n<h2>Los asuntos jacobianos<\/h2>\r\n<p>Para un paso impl\u00edcito, el residuo no lineal puede ser:<\/p>\r\n<pre><code>G(y\u207f\u207a\u00b9) =\r\ny\u207f\u207a\u00b9\r\n- y\u207f\r\n- \u0394t f(t\u207f\u207a\u00b9, y\u207f\u207a\u00b9)<\/code><\/pre>\r\n<p>El m\u00e9todo de Newton requiere:<\/p>\r\n<pre><code>[\r\n    I\r\n    - \u0394tJ\r\n]\u03b4\r\n=\r\n-G<\/code><\/pre>\r\n<p>donde:<\/p>\r\n<pre><code>J =\r\n\u2202f \/ \u2202y<\/code><\/pre>\r\n<p>La soluci\u00f3n lineal puede dominar el tiempo de ejecuci\u00f3n. Un solucionador r\u00edgido funcionar\u00e1 mal si trata a un jacobiano escaso grande como una matriz densa.<\/p>\r\n<p>El rendimiento puede mejorar a trav\u00e9s de:<\/p>\r\n<ul>\r\n<li>Un jacobiano anal\u00edtico<\/li>\r\n<li>Diferenciaci\u00f3n autom\u00e1tica<\/li>\r\n<li>un patr\u00f3n de escasez declarado<\/li>\r\n<li>Almacenamiento de matriz con bandas<\/li>\r\n<li>Factorizaci\u00f3n directa escasa<\/li>\r\n<li>M\u00e9todos de Krylov<\/li>\r\n<li>Preacondicionamiento basado en la f\u00edsica<\/li>\r\n<li>Productos vectoriales jacobianos sin matriz<\/li>\r\n<\/ul>\r\n<p>El tutorial de SCIML sobre <a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/tutorials\/advanced_ode_example\/\" rel=\"nofollow\" target=\"_blank\">resolviendo grandes ecuaciones r\u00edgidas<\/a> muestra c\u00f3mo la estructura jacobiana y la selecci\u00f3n del solucionador lineal afectan el rendimiento.<\/p>\r\n<h2>Gu\u00eda de selecci\u00f3n de solucionador<\/h2>\r\n<table class=\"custom-table\">\r\n<tbody><tr>\r\n<th>Caracter\u00edstica del problema<\/th>\r\n<th>Posible punto de partida<\/th>\r\n<th>Consideraci\u00f3n principal<\/th>\r\n<\/tr>\r\n<tr>\r\n<td>Oda suave no r\u00edgida<\/td>\r\n<td>RK expl\u00edcito adaptativo<\/td>\r\n<td>Bajo costo por paso<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Sistema r\u00edgido peque\u00f1o o mediano<\/td>\r\n<td>M\u00e9todo Rosenbrock o Radau<\/td>\r\n<td>Precisi\u00f3n, costo jacobiano y tolerancia<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Gran sistema r\u00edgido escaso<\/td>\r\n<td>BDF, Rosenbrock o SDIRK con escasa \u00e1lgebra lineal<\/td>\r\n<td>La estructura jacobiana importa m\u00e1s que un umbral de tama\u00f1o fijo<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Integraci\u00f3n r\u00edgida de alta precisi\u00f3n<\/td>\r\n<td>Radau IIa o Rosenbrock de alto orden<\/td>\r\n<td>Mayor costo de etapa y soluci\u00f3n<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Rigidez leve dominada por difusi\u00f3n<\/td>\r\n<td>RKC o roca<\/td>\r\n<td>El espectro debe estar principalmente cerca del eje real negativo<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>F\u00edsica r\u00edgida y no r\u00edgida separable<\/td>\r\n<td>M\u00e9todo de imex<\/td>\r\n<td>Requiere una divisi\u00f3n adecuada del operador<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Rigidez desconocida o cambiante<\/td>\r\n<td>LSODA o conmutaci\u00f3n autom\u00e1tica impl\u00edcita expl\u00edcita<\/td>\r\n<td>La detecci\u00f3n agrega complejidad pero poco ajuste manual<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>DAE o problema de matriz de masa<\/td>\r\n<td>M\u00e9todo BDF, Radau o Rosenbrock con capacidad DAE<\/td>\r\n<td>Es posible que los solucionadores de ODE no apliquen las restricciones algebraicas correctamente<\/td>\r\n<\/tr>\r\n<\/tbody><\/table>\r\n<h2>Por qu\u00e9 los umbrales de dimensi\u00f3n fija son enga\u00f1osos<\/h2>\r\n<p>Es tentador recomendar m\u00e9todos de Rosenbrock por debajo de 1000 ecuaciones, m\u00e9todos SDIRK hasta 10 000 y m\u00e9todos BDF por encima de eso. Tales umbrales no son confiables.<\/p>\r\n<p>Un denso problema de ecuaci\u00f3n 500 puede ser m\u00e1s caro que un sistema escaso que contiene cientos de miles de ecuaciones. Los factores decisivos incluyen:<\/p>\r\n<ul>\r\n<li>N\u00famero de entradas jacobianas distintas de cero<\/li>\r\n<li>Relleno durante la factorizaci\u00f3n<\/li>\r\n<li>Calidad del preacondicionador<\/li>\r\n<li>costo del lado derecho<\/li>\r\n<li>Tolerancia requerida<\/li>\r\n<li>Frecuencia de actualizaciones jacobianas<\/li>\r\n<li>Disponibilidad de productos sin matriz<\/li>\r\n<li>Escalabilidad paralela<\/li>\r\n<\/ul>\r\n<p>La elecci\u00f3n del solucionador debe probarse a trav\u00e9s de comparaciones de trabajo-precisi\u00f3n sobre el problema real.<\/p>\r\n<h2>El ejemplo de propagaci\u00f3n de llama<\/h2>\r\n<p>El ejemplo de propagaci\u00f3n de llama de Cleve Moler utiliza la ecuaci\u00f3n escalar no lineal:<\/p>\r\n<pre><code>dy\/dt =\r\ny\u00b2(1 - y)<\/code><\/pre>\r\n<p>El valor inicial es muy peque\u00f1o. La soluci\u00f3n permanece cerca de cero durante un largo per\u00edodo de inducci\u00f3n, hace transiciones r\u00e1pidamente y luego se acerca a uno.<\/p>\r\n<p>En la comparaci\u00f3n publicada de MATLAB, el solucionador no r\u00edgido <code>ode45<\/code> tom\u00f3 3040 pasos y 20 179 evaluaciones de funciones. El r\u00edgido solucionador basado en Rosenbrock <code>ode23s<\/code> tom\u00f3 99 pasos y 412 evaluaciones de funciones.<\/p>\r\n<p>Estos son aproximadamente treinta veces menos pasos aceptados, no uno por ciento del conteo original de pasos.<\/p>\r\n<p>El ejemplo y su representaci\u00f3n anal\u00edtica de Lambert W se describen en <a href=\"https:\/\/de.mathworks.com\/company\/technical-articles\/stiff-differential-equations.html\" rel=\"nofollow\" target=\"_blank\">ecuaciones diferenciales r\u00edgidas<\/a> de Cleve Moler.<\/p>\r\n<p>El resultado no debe interpretarse como una ventaja triple universal para los m\u00e9todos impl\u00edcitos. Demuestra cu\u00e1n fuertemente puede cambiar la eficiencia del solucionador cuando la estabilidad en lugar de la precisi\u00f3n controla un integrador expl\u00edcito.<\/p>\r\n<h2>Comparando los solucionadores de manera justa<\/h2>\r\n<p>Un punto de referencia justo deber\u00eda comparar m\u00e9todos con una precisi\u00f3n equivalente. Registro:<\/p>\r\n<ul>\r\n<li>Error o error global en una cantidad de inter\u00e9s<\/li>\r\n<li>Pasos aceptados y rechazados<\/li>\r\n<li>Evaluaciones del lado derecho<\/li>\r\n<li>Evaluaciones jacobianas<\/li>\r\n<li>Soluciones y factorizaciones lineales<\/li>\r\n<li>Iteraciones no lineales<\/li>\r\n<li>consumo de memoria<\/li>\r\n<li>Tiempo total del reloj de pared<\/li>\r\n<\/ul>\r\n<p>Un solucionador que toma menos pasos a\u00fan puede ser m\u00e1s lento si cada paso requiere una costosa factorizaci\u00f3n. Un m\u00e9todo con m\u00e1s evaluaciones de funciones puede ganar cuando la funci\u00f3n es barata y el \u00e1lgebra lineal de la competencia es costosa.<\/p>\r\n<h2>Errores comunes<\/h2>\r\n<ul>\r\n<li>Suponiendo que cada soluci\u00f3n expl\u00edcita divergente demuestra la rigidez<\/li>\r\n<li>Tratar la relaci\u00f3n de rigidez como un diagn\u00f3stico definitivo<\/li>\r\n<li>Usando la traza jacobiana como una definici\u00f3n de rigidez universal<\/li>\r\n<li>Suponiendo que cada m\u00e9todo impl\u00edcito es estable<\/li>\r\n<li>Suponiendo que cada m\u00e9todo A-estable es L-estable<\/li>\r\n<li>Llamar a TR-BDF2 un m\u00e9todo BDF de varios pasos ordinario<\/li>\r\n<li>Expandir a Firk incorrectamente como una familia Runge-Kutta expl\u00edcita<\/li>\r\n<li>Usando un jacobiano denso para un gran sistema escaso<\/li>\r\n<li>No proporcionar un patr\u00f3n jacobiano o escasez cuando el solucionador puede usar uno<\/li>\r\n<li>Seleccionar un solucionador solo del n\u00famero de ecuaciones<\/li>\r\n<li>Usando un m\u00e9todo expl\u00edcito estabilizado para la rigidez fuera de su dise\u00f1o espectral<\/li>\r\n<li>Comparar recuentos de pasos sin comparar errores y tiempo de ejecuci\u00f3n<\/li>\r\n<li>Dar pasos impl\u00edcitos muy grandes sin verificar la precisi\u00f3n temporal<\/li>\r\n<\/ul>\r\n<h2>un flujo de trabajo pr\u00e1ctico<\/h2>\r\n<ol>\r\n<li>Verifique las ecuaciones, unidades, signos y condiciones iniciales.<\/li>\r\n<li>Ejecute un m\u00e9todo expl\u00edcito adaptativo como diagn\u00f3stico.<\/li>\r\n<li>Inspeccione los pasos aceptados, los pasos rechazados y el tama\u00f1o de paso m\u00ednimo.<\/li>\r\n<li>Estime o analice el espectro jacobiano cuando sea pr\u00e1ctico.<\/li>\r\n<li>Compruebe si los componentes r\u00e1pidos deben resolverse f\u00edsicamente.<\/li>\r\n<li>Pruebe un solucionador r\u00edgido estable en L con las mismas tolerancias.<\/li>\r\n<li>Suministrar informaci\u00f3n y escasez jacobiano.<\/li>\r\n<li>Compare el trabajo y la precisi\u00f3n, no solo los pasos aceptados.<\/li>\r\n<li>Repita con tolerancias m\u00e1s estrictas.<\/li>\r\n<li>Solucionador de documentos, tolerancias, \u00e1lgebra lineal y criterios de falla.<\/li>\r\n<\/ol>\r\n<h2>Gu\u00edas relacionadas<\/h2>\r\n<ul>\r\n<li><a href=\"https:\/\/matforge.org\/time-integration-methods-for-pde-solvers-explicit-vs-implicit-schemes\/\" rel=\"nofollow\">m\u00e9todos de integraci\u00f3n de tiempo para solucionadores de PDE<\/a> \u2014 Comparar enfoques expl\u00edcitos, impl\u00edcitos e h\u00edbridos.<\/li>\r\n<li><a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\">Esquemas de divisi\u00f3n de operadores, divisiones de estrangulamiento y esquemas IMEX<\/a> \u2014 Separe los procesos f\u00edsicos r\u00edgidos y no r\u00edgidos.<\/li>\r\n<li><a href=\"https:\/\/matforge.org\/mesh-quality-convergence-studies-guide-2\/\">estudios de calidad y convergencia de malla<\/a> \u2014 Determine si el refinamiento espacial aumenta la rigidez y cambia la soluci\u00f3n.<\/li>\r\n<li><a href=\"https:\/\/matforge.org\/verification-vs-validation-in-scientific-simulations-a-practical-guide\/\">verificaci\u00f3n vs. validaci\u00f3n en simulaciones cient\u00edficas<\/a> \u2014 Coloque la convergencia del solucionador dentro el flujo de trabajo de credibilidad m\u00e1s amplio.<\/li>\r\n<li><a href=\"https:\/\/matforge.org\/category\/simulation-modeling-projects\/\" rel=\"nofollow\">simulaci\u00f3n &amp; Proyectos de modelado<\/a> \u2014 Explore los recursos relacionados de MatForge.<\/li>\r\n<\/ul>\r\n<h2>Lectura adicional<\/h2>\r\n<ul>\r\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Stiff_equation\" rel=\"nofollow\" target=\"_blank\">Ecuaci\u00f3n r\u00edgida: definiciones, indicadores y contexto hist\u00f3rico<\/a><\/li>\r\n<li><a href=\"https:\/\/people.maths.ox.ac.uk\/trefethen\/publication\/PDF\/1993_56.pdf\" rel=\"nofollow\" target=\"_blank\">Higham y Trefethen: rigidez de las odas<\/a><\/li>\r\n<li><a href=\"https:\/\/www.math.iit.edu\/~fass\/478578_Chapter_4.pdf\" rel=\"nofollow\" target=\"_blank\">Notas IIT sobre estabilidad absoluta y estabilidad A<\/a><\/li>\r\n<li><a href=\"https:\/\/www.epfl.ch\/labs\/mathicse\/wp-content\/uploads\/2018\/10\/27.2011_AA.pdf\" rel=\"nofollow\" target=\"_blank\">Material EPFL sobre m\u00e9todos expl\u00edcitos estabilizados<\/a><\/li>\r\n<li><a href=\"https:\/\/docs.sciml.ai\/DiffEqDocs\/stable\/solvers\/ode_solve\" rel=\"nofollow\" target=\"_blank\">Recomendaciones para el solucionador de odas SCIML<\/a><\/li>\r\n<li><a href=\"https:\/\/de.mathworks.com\/company\/technical-articles\/stiff-differential-equations.html\" rel=\"nofollow\" target=\"_blank\">MathWorks: Ecuaciones diferenciales r\u00edgidas<\/a><\/li>\r\n<\/ul>\r\n<h2>Conclusi\u00f3n<\/h2>\r\n<p>La rigidez ocurre cuando la estabilidad num\u00e9rica fuerza un m\u00e9todo para resolver los componentes r\u00e1pidos m\u00e1s de cerca de lo que requiere la salida deseada. Los m\u00e9todos expl\u00edcitos de Runge-Kutta tienen regiones de estabilidad limitadas, por lo que los grandes modos jacobianos negativos pueden imponer pasos extremadamente peque\u00f1os.<\/p>\r\n<p>Los m\u00e9todos impl\u00edcitos A-estables eliminan esta restricci\u00f3n de estabilidad del semiplano izquierdo. Los m\u00e9todos L-estables van m\u00e1s all\u00e1 al amortiguar fuertemente los modos r\u00e1pidos no resueltos. Estas propiedades explican por qu\u00e9 los m\u00e9todos de Euler, BDF, Rosenbrock, Sdirk, TR-BDF2 y radau pueden superar a los solucionadores expl\u00edcitos en sistemas r\u00edgidos.<\/p>\r\n<p>Ning\u00fan diagn\u00f3stico o solucionador funciona para todos los problemas. Los valores propios, las relaciones de rigidez, la divergencia escalada y las restricciones de pasos observadas proporcionan informaci\u00f3n parcial. La estructura del solucionador jacobiano y lineal puede importar m\u00e1s que el n\u00famero nominal de ecuaciones.<\/p>\r\n<p>Los m\u00e9todos expl\u00edcitos estabilizados son \u00fatiles cuando la rigidez es moderada y est\u00e1 dominada por valores propios del eje real negativo. Los m\u00e9todos IMEX funcionan cuando se pueden separar operadores r\u00edgidos y no r\u00edgidos. Los m\u00e9todos de conmutaci\u00f3n autom\u00e1tica ayudan cuando el r\u00e9gimen cambia durante la integraci\u00f3n.<\/p>\r\n<p>La elecci\u00f3n final debe basarse en pruebas de precisi\u00f3n de trabajo. El mejor solucionador r\u00edgido es el m\u00e9todo que alcanza la precisi\u00f3n cient\u00edfica requerida con el menor costo computacional confiable.<\/p>\r\n<\/article>\r\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\"> 13<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Cuando las simulaciones expl\u00edcitas explotan, la rigidez suele ser la culpable. Aprenda por qu\u00e9 fallan los m\u00e9todos expl\u00edcitos, c\u00f3mo diagnosticar la rigidez y qu\u00e9 solucionadores realmente funcionan.<\/p>\n","protected":false,"raw":"Cuando las simulaciones expl\u00edcitas explotan, la rigidez suele ser la culpable. Aprenda por qu\u00e9 fallan los m\u00e9todos expl\u00edcitos, c\u00f3mo diagnosticar la rigidez y qu\u00e9 solucionadores realmente funcionan."},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"es_ES","_original_post":"https:\/\/matforge.org\/?p=493","iawp_total_views":6,"footnotes":""},"categories":[1],"tags":[51,53,35,52,32,38,39,34,40,30,31],"class_list":["post-527","post","type-post","status-publish","format-standard","hentry","category-simulation-modeling-projects","tag-a-estabilidad","tag-euler-explicito","tag-l-stability","tag-metodos-bdf","tag-numerical-stability","tag-prothero-robinson-problem","tag-rock-method","tag-rosenbrock-methods","tag-sdirk","tag-stiff-problems","tag-stiff-solvers","es-ES"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Solucionadores de odas r\u00edgidos: por qu\u00e9 fallan los m\u00e9todos expl\u00edcitos<\/title>\n<meta name=\"description\" content=\"Aprenda por qu\u00e9 la rigidez limita los solucionadores expl\u00edcitos y c\u00f3mo los m\u00e9todos BDF, Rosenbrock, Sdirk, Radau y Switching manejan din\u00e1micas r\u00e1pidas y lentas.\" \/>\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\/es\/stiff-problems-and-stiff-solvers\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Solucionadores de odas r\u00edgidos: por qu\u00e9 fallan los m\u00e9todos expl\u00edcitos\" \/>\n<meta property=\"og:description\" content=\"Aprenda por qu\u00e9 la rigidez limita los solucionadores expl\u00edcitos y c\u00f3mo los m\u00e9todos BDF, Rosenbrock, Sdirk, Radau y Switching manejan din\u00e1micas r\u00e1pidas y lentas.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-21T14:38:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-22T08:18:03+00:00\" \/>\n<meta name=\"author\" content=\"Elena Markovska\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elena Markovska\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/stiff-problems-and-stiff-solvers\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/stiff-problems-and-stiff-solvers\\\/\"},\"author\":{\"name\":\"Elena Markovska\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"headline\":\"Problemas r\u00edgidos y solucionadores r\u00edgidos: cuando los m\u00e9todos expl\u00edcitos fallan\",\"datePublished\":\"2026-07-21T14:38:54+00:00\",\"dateModified\":\"2026-07-22T08:18:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/stiff-problems-and-stiff-solvers\\\/\"},\"wordCount\":3935,\"commentCount\":0,\"keywords\":[\"A-estabilidad\",\"Euler expl\u00edcito\",\"L-stability\",\"M\u00e9todos BDF\",\"numerical stability\",\"PROthero-Robinson problem\",\"ROCK method\",\"Rosenbrock methods\",\"SDIRK\",\"stiff problems\",\"stiff solvers\"],\"articleSection\":[\"Simulaci\u00f3n &amp; Proyectos de modelado\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/es\\\/stiff-problems-and-stiff-solvers\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/stiff-problems-and-stiff-solvers\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/es\\\/stiff-problems-and-stiff-solvers\\\/\",\"name\":\"Solucionadores de odas r\u00edgidos: por qu\u00e9 fallan los m\u00e9todos expl\u00edcitos\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-07-21T14:38:54+00:00\",\"dateModified\":\"2026-07-22T08:18:03+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"description\":\"Aprenda por qu\u00e9 la rigidez limita los solucionadores expl\u00edcitos y c\u00f3mo los m\u00e9todos BDF, Rosenbrock, Sdirk, Radau y Switching manejan din\u00e1micas r\u00e1pidas y lentas.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/stiff-problems-and-stiff-solvers\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/es\\\/stiff-problems-and-stiff-solvers\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/stiff-problems-and-stiff-solvers\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Problemas r\u00edgidos y solucionadores r\u00edgidos: cuando los m\u00e9todos expl\u00edcitos fallan\"}]},{\"@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\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\",\"name\":\"Elena Markovska\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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":"Solucionadores de odas r\u00edgidos: por qu\u00e9 fallan los m\u00e9todos expl\u00edcitos","description":"Aprenda por qu\u00e9 la rigidez limita los solucionadores expl\u00edcitos y c\u00f3mo los m\u00e9todos BDF, Rosenbrock, Sdirk, Radau y Switching manejan din\u00e1micas r\u00e1pidas y lentas.","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\/es\/stiff-problems-and-stiff-solvers\/","og_locale":"es_ES","og_type":"article","og_title":"Solucionadores de odas r\u00edgidos: por qu\u00e9 fallan los m\u00e9todos expl\u00edcitos","og_description":"Aprenda por qu\u00e9 la rigidez limita los solucionadores expl\u00edcitos y c\u00f3mo los m\u00e9todos BDF, Rosenbrock, Sdirk, Radau y Switching manejan din\u00e1micas r\u00e1pidas y lentas.","og_url":"https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/","og_site_name":"matforge.org","article_published_time":"2026-07-21T14:38:54+00:00","article_modified_time":"2026-07-22T08:18:03+00:00","author":"Elena Markovska","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Elena Markovska","Tiempo de lectura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/"},"author":{"name":"Elena Markovska","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"headline":"Problemas r\u00edgidos y solucionadores r\u00edgidos: cuando los m\u00e9todos expl\u00edcitos fallan","datePublished":"2026-07-21T14:38:54+00:00","dateModified":"2026-07-22T08:18:03+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/"},"wordCount":3935,"commentCount":0,"keywords":["A-estabilidad","Euler expl\u00edcito","L-stability","M\u00e9todos BDF","numerical stability","PROthero-Robinson problem","ROCK method","Rosenbrock methods","SDIRK","stiff problems","stiff solvers"],"articleSection":["Simulaci\u00f3n &amp; Proyectos de modelado"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/","url":"https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/","name":"Solucionadores de odas r\u00edgidos: por qu\u00e9 fallan los m\u00e9todos expl\u00edcitos","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-07-21T14:38:54+00:00","dateModified":"2026-07-22T08:18:03+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"description":"Aprenda por qu\u00e9 la rigidez limita los solucionadores expl\u00edcitos y c\u00f3mo los m\u00e9todos BDF, Rosenbrock, Sdirk, Radau y Switching manejan din\u00e1micas r\u00e1pidas y lentas.","breadcrumb":{"@id":"https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/es\/stiff-problems-and-stiff-solvers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/es\/"},{"@type":"ListItem","position":2,"name":"Problemas r\u00edgidos y solucionadores r\u00edgidos: cuando los m\u00e9todos expl\u00edcitos fallan"}]},{"@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":"es"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da","name":"Elena Markovska","image":{"@type":"ImageObject","inLanguage":"es","@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\/527","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=527"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/527\/revisions"}],"predecessor-version":[{"id":528,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/527\/revisions\/528"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=527"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=527"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}