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 .nx5- x + 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 solve
Befehl 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);