Symbolische Lösung eines Systems von 7 nichtlinearen Gleichungen


9

Ich habe ein System gewöhnlicher Differentialgleichungen - 7 Gleichungen und ~ 30 Parameter, die ihr Verhalten als Teil eines mathematischen Modells der Krankheitsübertragung bestimmen. Ich würde gerne die stationären Zustände für diese Gleichungen Ändern finden , dx/dt = rest of the equationum 0 = equationfür jede der Gleichungen macht es ein einfaches Algebra Problem. Dies könnte von Hand gemacht werden, aber ich bin lächerlich schlecht in dieser Art von Berechnung.

Ich habe versucht, Mathematica zu verwenden, das kleinere Versionen dieses Problems handhaben kann ( siehe hier ), aber Mathematica kommt bei diesem Problem zum Stillstand. Gibt es einen effizienteren / effektiveren Weg, dies zu erreichen? Ein effizienteres symbolisches Mathematiksystem? Andere Vorschläge?

Einige Updates (21. März):

  • Das Ziel ist in der Tat, sie symbolisch zu lösen - die numerischen Antworten sind nett, aber im Moment ist das Endziel die symbolische Version.
  • Es gibt mindestens ein Gleichgewicht. Ich habe mich nicht wirklich hingesetzt und dies bewiesen , aber es sollte von Natur aus mindestens eine triviale haben, bei der zu Beginn keine infiziert ist. Es kann nicht sein , etwas außer das, aber das würde mich so zufrieden wie alles andere machen.
  • Nachfolgend finden Sie die tatsächlichen Gleichungen, über die gesprochen wird.

Geben Sie hier die Bildbeschreibung ein

Zusammenfassend suche ich nach symbolischen Ausdrücken für die Lösungen eines Systems von 7 quadratischen Gleichungen in 7 Variablen.


Können Sie die Gleichungen aufschreiben? Das Lösen eines großen unbeschränkten Systems nichtlinearer Gleichungen erfolgt häufig numerisch nach der Newtonschen Methode oder einer ihrer Varianten. Die Wahl hier hängt davon ab, wie viele Informationen Sie über das ursprüngliche Gleichungssystem haben - was am wichtigsten ist, ist der Jacobi des Gleichungssystems verfügbar, berechenbar oder leicht zu approximieren?
Aron Ahmadia

ahh! Ich sehe, dass Ihre Gleichungen auf der Mathematica-Website aufgeführt sind. Stört es Sie, sie hierher zu bringen? (Dies ist kein Cross-Posting, insbesondere wenn wir numerische Lösungen für Sie vorschlagen, die über die Möglichkeiten von Mathematica hinausgehen.)
Aron Ahmadia

Ich werde die Gleichungen heute später von Mathematica herüberbringen - nach der 5-stündigen Fahrt muss ich aus dem Weg gehen.
Fomite

1
Ist nicht . Aus den obigen Gleichungen scheint es so zu sein. Vermisse ich etwas dUsdt=dHdt
Ja72

1
@GeoffOxberry: Wenn also die Ableitungen gleich Null sind, sind beide Gleichungen Nr. 1 und Nr. 2 identisch und man kann sie weglassen.
Ja72

Antworten:


13

Es sieht so aus, als ob die Gleichungen, mit denen Sie sich befassen, nach dem Löschen der Nenner alle polynomisch sind. Das ist eine gute Sache (transzendentale Funktionen sind oft etwas schwieriger algebraisch zu handhaben). Es ist jedoch keine Garantie dafür, dass Ihre Gleichungen eine geschlossene Lösung haben. Dies ist ein wesentlicher Punkt, den viele Menschen nicht wirklich "verstehen", auch wenn sie ihn theoretisch kennen. Daher gibt es einige einfache Systeme von Polynomgleichungen, für die es keine Möglichkeit gibt, die Lösungen in Bezug auf zu geben ( te) Wurzeln usw. Ein berühmtes Beispiel (in einer Variablen) ist x 5 - x + 1 = 0 . Siehe auch diese Wikipedia-Seite .nx5x+1=0

Having said that, natürlich gibt es auch Gleichungssysteme sind , die können gelöst werden, und es lohnt sich zu überprüfen , ob Ihr System eine von ihnen. Und selbst wenn Ihr System nicht gelöst werden kann, ist es möglicherweise möglich, eine Form für Ihr Gleichungssystem zu finden, die in gewissem Sinne einfacher ist. Finden Sie zum Beispiel eine Gleichung, die nur die erste Variable enthält (auch wenn sie nicht algebraisch gelöst werden kann), dann eine zweite Gleichung, die nur die erste und die zweite Variable enthält usw. Es gibt einige konkurrierende Theorien, wie solche "Normalformen" gefunden werden können. von Polynomsystemen; Am bekanntesten ist die Groebner-Basistheorie, und eine konkurrierende ist die Theorie der regulären Ketten.

Im Computeralgebrasystem Maple (vollständige Offenlegung: Ich arbeite für sie) sind beide implementiert. Der solveBefehl der Regel ruft die Gröbner Basis Methode, glaube ich, und dass mahlt schnell zum Erliegen auf meinem Laptop. Ich habe versucht, die reguläre Kettenberechnung auszuführen, und es dauert länger, als ich Geduld habe, aber es scheint nicht so schlimm zu sein, was das Gedächtnis betrifft. Falls Sie interessiert sind, dann ist die Hilfeseite für den Befehl habe ich hier , und hier ist der Code , den ich verwendet:

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);

7

Der professionelle Weg besteht darin, Ihre Gleichungen in einer Modellierungssprache wie AMPL oder GAMS zu schreiben und mit einem Löser wie IPOPT zu lösen.

AMPL ist ein kommerzielles System, aber eine kostenlose Studentenversion von AMPL kann Probleme mit bis zu 300 Gleichungen und Variablen verursachen.

Wenn Sie nur ein oder mehrere Probleme lösen möchten, können Sie es frei online lösen lassen, indem Sie den NEOS-Server zur Optimierung verwenden. Senden Sie einfach die AMPL-Beschreibung und warten Sie, bis die Antwort an Sie zurückgesandt wird.

Wenn Sie solche Systeme im Rahmen einer größeren Studie wiederholt lösen müssen (z. B. durch Variieren der Parameter), sollten Sie IPOPT (Software unter einer sehr liberalen Lizenz) herunterladen.

Bearbeiten: Beachten Sie, dass verständliche symbolische Lösungen normalerweise auf recht kleine Probleme beschränkt sind - normalerweise wächst die Größe einer Groebner-Basis explosionsartig mit der Anzahl der Variablen oder dem Grad der Polynome und der Zeit für die Verarbeitung noch mehr. Eine Wartezeit von einer Stunde oder mehr mit Mathematica ist daher ein Zeichen (wenn auch kein Beweis) dafür, dass Ihre symbolische Lösung völlig unverständlich wäre. Darüber hinaus ist die Auswertung eines so langen Ausdrucks wahrscheinlich numerisch instabil, sodass Sie eine hohe Präzision bei der Auswertung benötigen, um aussagekräftige Ergebnisse zu erzielen.


6

Es ist unmöglich, die gesamte Lösung aufzuschreiben. Aber hier sind einige Gleichungen, um das System ein wenig zu reduzieren:

USUS

US=HNθ(γ+ζ)CAKA+Cp+KD
KA=γρAσA+κρDσDτ+ρAσAζKD=γρpσp+κρDσD+ρpσpζ

D

D=κ(CAτ+Cp)γ+ζ.

CACP

UAUPUAUP

UAUPHCACPD

HCACPCACP

Viel Glück!


USDUAUPUSHCACP

HCACPCACP

Direkt am. @GeoffOxberry, ich denke, Sie sollten Ihre Kommentare einfach direkt zur Antwort von ja72 hinzufügen.
David Ketcheson

@ DavidKetcheson: Fertig; Ich mache mir keine Sorgen darüber, weil der Repräsentant nicht wichtig ist. Ich bin noch nicht zurückgegangen und habe die symbolischen Manipulationen ausgefüllt.
Geoff Oxberry

3

Dies hängt von der Struktur Ihrer Gleichungen ab.

Wenn Sie nach allen stationären Zuständen Ihres Gleichungssystems suchen und diese, wie ErikP sagt, in Polynome umordnen können, können Sie Methoden aus der realen algebraischen Geometrie verwenden, um alle numerischen Lösungen mit hoher Genauigkeit zu berechnen. Bertini ist ein solches Paket, das ich kenne, aber es gibt noch andere. Ich war vor einigen Jahren auf einer Konferenz in Notre Dame, wo Bertini verwendet wurde, um stationäre Zustände von ODEs aus der chemischen Kinetik zu finden. Bertini wurde in Notre Dame entwickelt.

Eine andere Möglichkeit besteht darin, die in "Nicht glatter Ausschlusstest zum Auffinden aller Lösungen nichtlinearer Gleichungen" von MD Stuber, V. Kumar, und PI Barton, BIT Numerical Mathematics 50 (4), 885-917, DOI: DOI: 10.1007, vorgeschlagenen Methoden zu verwenden / s10543-010-0280-6 ; Diese Methoden erfordern nicht, dass das Gleichungssystem Polynome sind. Paul Barton ist mein Berater, und Matt Stuber ist ein Kollege von mir; Wenn Sie möchten, kann ich ihn nach der Software fragen und sie Ihnen senden. Das Papier verwendet Methoden aus der globalen Optimierung und Intervallarithmetik (es zitiert ArnoldNeumaiers Buch) sowie Newtons Methode. Der Vorteil dieser Methode ist, dass alle Lösungen lokalisiert werden sollten. Der Nachteil ist, dass es kompliziert ist.

F(x)=0

minxSF(x),

S

  • Es wird jeweils höchstens eine Lösung gefunden. Um zusätzliche Lösungen zu finden, müssen Sie Einschränkungen hinzufügen, die alle zuvor gefundenen Lösungen ausschließen.
  • Wenn Ihr Optimierungsproblem nicht konvex ist, um IPOPT oder ähnliche Löser zu verwenden, benötigen Sie entweder eine gute erste Vermutung, die einer Lösung Ihrer Gleichungen nahe kommt (dasselbe Grundprinzip wie Newtons Methode), oder einen nicht konvexen Optimierungslöser wie BARON , Couenne , Bonmin usw. Sie sollten jeden Solver ausprobieren, den Sie in die Hände bekommen, da die Leistung jedes nicht konvexen nichtlinearen Programmierlösers problemabhängig ist.

1

Ich würde vorschlagen, eine Homotopie-Methode zu betrachten. Obwohl es nicht symbolisch ist, werden alle Lösungen Ihres Problems erstellt. Für eine einfache Bibliothek zum Auschecken:

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


2n

Dr. Ahmadia, Sie haben offensichtlich nicht mit der Literatur über Homotopiemethoden Schritt gehalten. Bitte lesen Sie die Veröffentlichungen von Jan und überarbeiten Sie diese Nummer.
Aterrel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.