Solución simbólica de un sistema de 7 ecuaciones no lineales.

9

Tengo un sistema de ecuaciones diferenciales ordinarias: 7 ecuaciones y ~ 30 parámetros que gobiernan su comportamiento como parte de un modelo matemático de transmisión de enfermedades. Me gusta encontrar los estados estacionarios de esas ecuaciones Cambiar dx/dt = rest of the equationa 0 = equationpara cada una de las ecuaciones hace que sea un problema de álgebra sencilla. Esto podría hacerse a mano, pero soy ridículamente malo en ese tipo de cálculo.

He intentado usar Mathematica, que puede manejar versiones más pequeñas de este problema ( ver aquí ), pero Mathematica está deteniéndose en este problema. ¿Existe una forma más eficiente / efectiva de abordar esto? ¿Un sistema matemático simbólico más eficiente? ¿Otras sugerencias?

Algunas actualizaciones (21 de marzo):

  • El objetivo es resolverlos simbólicamente: las respuestas numéricas son buenas, pero por el momento el objetivo final es la versión simbólica.
  • Hay al menos un equilibrio. En realidad no me he sentado y probé esto, pero por diseño debería tener al menos uno trivial en el que ninguno esté infectado al comienzo. Puede que no haya nada más que eso, pero eso me haría tan contento como cualquier otra cosa.
  • A continuación se muestra el conjunto real de ecuaciones de las que se habla.

ingrese la descripción de la imagen aquí

En resumen, estoy buscando expresiones simbólicas para las soluciones de un sistema de 7 ecuaciones cuadráticas en 7 variables.

Fomite
fuente
¿Puedes escribir las ecuaciones? La resolución de un gran sistema sin restricciones de ecuaciones no lineales se realiza con frecuencia numéricamente utilizando el método de Newton o una de sus variantes. La elección aquí dependerá de cuánta información tenga sobre el sistema de ecuaciones original. Lo más importante, ¿es el jacobiano del sistema de ecuaciones disponible, computable o fácilmente aproximado?
Aron Ahmadia
ahh! Veo que sus ecuaciones se detallan en el sitio de Mathematica. ¿Te importaría traerlos aquí? (Esto no es una publicación cruzada, particularmente si vamos a sugerir soluciones numéricas para usted más allá del alcance de lo que puede hacer Mathematica).
Aron Ahmadia
Traeré las ecuaciones de Mathematica más tarde hoy, después de las 5 horas de manejo, tengo que salir del camino.
Fomite
1
No es . Parece ser así por las ecuaciones anteriores. ¿Me estoy perdiendo de algo? reUsret=-reHret
ja72
1
@ GeoffOxberry: así que cuando las derivadas se igualan a cero, ambas ecuaciones # 1 y # 2 son idénticas y se puede omitir una.
ja72

Respuestas:

13

Parece que las ecuaciones con las que está tratando son todas polinómicas después de borrar los denominadores. Eso es algo bueno (las funciones trascendentales son a menudo un poco más difíciles de manejar algebraicamente). Sin embargo, no es una garantía de que sus ecuaciones tengan una solución de forma cerrada. Este es un punto esencial que muchas personas realmente no "entienden", incluso si lo saben en teoría, por lo que vale la pena reiterar: existen sistemas bastante simples de ecuaciones polinómicas para las cuales no hay forma de dar las soluciones en términos de ( th) raíces, etc. Un ejemplo famoso (en una variable) es x 5 - x + 1 = 0 . Vea también esta página de wikipedia .norteX5 5-X+1=0 0

Dicho esto, por supuesto, también hay sistemas de ecuaciones que se pueden resolver, y vale la pena verificar si su sistema es uno de esos. E incluso si su sistema no puede resolverse, aún podría ser posible encontrar una forma para su sistema de ecuaciones que sea más simple, en cierto sentido. Por ejemplo, encuentre una ecuación que involucre solo la primera variable (incluso si no se puede resolver algebraicamente), luego una segunda ecuación que involucre solo la primera y segunda variable, etc. Hay algunas teorías competitivas sobre cómo encontrar tales "formas normales" de sistemas polinomiales; la más conocida es la teoría de la base de Groebner, y una competencia es la teoría de las cadenas regulares.

En el sistema de álgebra computacional Maple (divulgación completa: trabajo para ellos) ambos están implementados. El solvecomando normalmente llama al método base Groebner, creo, y eso se detiene rápidamente en mi computadora portátil. Intenté ejecutar el cálculo de cadenas regulares y lleva más tiempo del que tengo paciencia, pero no parece explotar tan mal en cuanto a memoria. En caso de que esté interesado, la página de ayuda para el comando que utilicé está aquí , y aquí está el código que utilicé:

restart;
sys, vars := {theta*H - rho_p*sigma_p*
       Cp*(Us/N) - rho_d*sigma_d*D*(Us/N)*rho_a*sigma_a*
       Ca*(Us/N) = 0, 
         rho_p*sigma_p*Cp*(Us/N) + rho_d*sigma_d*
       D*(Us/N)*rho_a*sigma_a*Ca*(Us/N) + theta*H = 0, 
         (1/omega)*Ua - alpha*Up - rho_p*psi_p*
       Up*(H/N) - Mu_p*sigma_p*Up*(Cp/N) - 
             Mu_a*sigma_a*Up*(Ca/N) - Theta_p*
       Up + Nu_up*(Theta_*M + Zeta_*D) = 0, 
         alpha*Up - (1/omega)*Ua - rho_a*psi_a*
       Ua*(H/N) - Mu_p*sigma_p*Ua*(Cp/N) - 
             Mu_a*sigma_a*Ua*(Ca/N) - Theta_a*
       Ua + Nu_ua*(Theta_*M + Zeta_*D) = 0, 
         (1/omega)*Ca + Gamma_*Phi_*D + rho_p*psi_p*
       Up*(H/N) + Mu_p*sigma_p*Up*(Cp/N) + 
             Mu_a*sigma_a*Up*(Ca/N) - alpha*Cp - Kappa_*
       Cp - Theta_p*Cp + Nu_cp*(Theta_*M + Zeta_*D) = 0, 
         alpha*Cp + Gamma_*(1 - Phi_)*D + rho_a*psi_a*
       Ua*(H/N) + Mu_p*sigma_p*Ua*(Cp/N) + 
             Mu_a*sigma_a*Ua*(Ca/N) - (1/omega)*
       Ca - Kappa_*Tau_*Ca - Theta_a*Ca + 
             Nu_ca*(Theta_*M + Zeta_*D) = 
     0, Kappa_*Cp + Kappa_*Tau_*Ca - Gamma_*Phi_*
       D - Gamma_*(1 - Phi_)*D - 
             Zeta_*D + Nu_d*(Theta_*M + Zeta_*D) = 0, 
    Us + H + Up + Ua + Cp + Ca + D = 0, 
         Up + Ua + Cp + Ca + D = 0}, {Us, H, Up, Ua, Cp, Ca, D, N, 
    M}:

sys := subs(D = DD, sys):
vars := subs(D = DD, vars):
params := indets(sys, name) minus vars:
ineqs := [theta > 0 , rho_p > 0 , sigma_p > 
       0 , rho_d > 0 , sigma_d > 0 , 
            rho_a > 0 , sigma_a > 0 , 
      omega > 0 , alpha > 0 , psi_p > 0 , Mu_p > 0 , 
            Mu_a > 0 , Theta_p > 0 , Nu_up > 0 , Theta_ > 
       0 , Zeta_ > 0 , psi_a > 0 , 
            Theta_a > 0 , Nu_ua > 0 , Gamma_ > 0 , Phi_ > 
       0 , Kappa_ > 0 , Nu_cp > 0 , 
            Tau_ > 0 , Nu_ca > 0]:
with(RegularChains):
R := PolynomialRing([vars[], params[]]):
sys2 := map(numer, map(lhs - rhs, normal([sys[]]))):
sol := LazyRealTriangularize(sys2,[],map(rhs, ineqs),[],R);
Erik P.
fuente
7

La forma profesional es escribir sus ecuaciones en un lenguaje de modelado como AMPL o GAMS, y resolverlo con un solucionador como IPOPT.

AMPL es un sistema comercial, pero una versión gratuita para estudiantes de AMPL puede plantear problemas con hasta 300 ecuaciones y variables.

Si solo desea resolver uno o algunos problemas, puede resolverlo en línea libremente utilizando el servidor NEOS para la optimización: simplemente envíe la descripción de AMPL y espere a que se le devuelva la respuesta.

Si necesita resolver dichos sistemas repetidamente como parte de un estudio más amplio (por ejemplo, variando los parámetros), debe descargar IPOPT (que es un software con una licencia muy liberal).

Editar: Tenga en cuenta que las soluciones simbólicas que son comprensibles generalmente se limitan a problemas bastante pequeños: por lo general, el tamaño de una base de Groebner crece explosivamente con el número de variables o el grado de los polinomios, y el tiempo para procesar aún más. Por lo tanto, un tiempo de espera de una hora o más con Mathematica es una señal (aunque no una prueba) de que su solución simbólica sería completamente incomprensible. Además, evaluar una expresión tan larga es probable que sea numéricamente inestable, por lo que necesitaría una alta precisión en la evaluación para obtener resultados significativos.

Arnold Neumaier
fuente
6

Escribir la solución completa es imposible dentro de lo razonable. Pero aquí hay algunas ecuaciones para reducir un poco el sistema:

USUS

US=Hnorteθ(γ+ζ)CUNAKUNA+Cpags+Kre
KUNA=γρUNAσUNA+κρreσreτ+ρUNAσUNAζKre=γρpagsσpags+κρreσre+ρpagsσpagsζ

re

re=κ(CUNAτ+Cpags)γ+ζ.

CUNACPAGS

UUNAUPAGSUUNAUPAGS

UUNAUPAGSHCUNACPAGSre

HCUNACPAGSCUNACPAGS

¡Buena suerte!

ja72
fuente
USreUUNAUPAGSUSHCUNACPAGS
HCUNACPAGSCUNACPAGS
Tocar el asunto exacto. @ GeoffOxberry, creo que deberías agregar tus comentarios directamente a la respuesta de ja72.
David Ketcheson
@DavidKetcheson: Hecho; No me preocupa wikificarlo, porque el representante no es importante. Todavía no he regresado y completado las manipulaciones simbólicas.
Geoff Oxberry
3

Depende de la estructura de tus ecuaciones.

Si está buscando todos los estados estables de su conjunto de ecuaciones, y puede reorganizarlos como dice ErikP en polinomios, puede usar métodos de geometría algebraica real para calcular todas las soluciones numéricas con alta precisión. Bertini es uno de esos paquetes que conozco, pero hay otros. Fui a una conferencia en Notre Dame hace unos años, donde Bertini fue utilizado para encontrar estados estables de EDO a partir de la cinética química; Bertini fue desarrollado en Notre Dame.

Otra posibilidad es utilizar los métodos propuestos en "Prueba de exclusión no suave para encontrar todas las soluciones de ecuaciones no lineales" por MD Stuber, V. Kumar y PI Barton, BIT Numerical Mathematics 50 (4), 885-917, DOI: DOI: 10.1007 / s10543-010-0280-6 ; Estos métodos no requieren que el sistema de ecuaciones sean polinomios. Paul Barton es mi asesor, y Matt Stuber es un colega mío; si lo desea, puedo pedirle el software y enviárselo. El documento utiliza métodos de optimización global y aritmética de intervalos (cita el libro de ArnoldNeumaier), así como el método de Newton. La ventaja de este método es que debe ubicar todas las soluciones; La desventaja es que es complicado.

F(X)=0 0

minXSF(X),

S

  • Solo localizará como máximo una solución a la vez. Para encontrar soluciones adicionales, debe agregar restricciones que excluyan todas las soluciones anteriores que haya encontrado.
  • Si su problema de optimización no es convexo, para usar IPOPT o solucionadores similares, necesitará una buena aproximación inicial, cerca de una solución de sus ecuaciones (el mismo principio básico que el método de Newton), o un solucionador de optimización no convexo como BARON , Couenne , Bonmin , etc. Debe probar cada solucionador que tenga en sus manos, ya que el rendimiento de cada solucionador de programación no lineal no convexo depende del problema.
Geoff Oxberry
fuente
1

Sugeriría mirar un método de homotopía. Si bien no es simbólico, producirá todas las soluciones a su problema. Para una biblioteca fácil de revisar:

http://homepages.math.uic.edu/~jan/PHCpack/phcpack.html

aterrel
fuente
2norte
Dr. Ahmadia, obviamente no se ha mantenido al día con la literatura sobre métodos de homotopía. Por favor, lea las publicaciones de Jan y revise este número.
aterrel