Il semble que les équations que vous traitez soient toutes polynomiales après avoir effacé les dénominateurs. C'est une bonne chose (les fonctions transcendantales sont souvent un peu plus difficiles à gérer algébriquement). Cependant, ce n'est pas une garantie que vos équations ont une solution de forme fermée. C'est un point essentiel que beaucoup de gens ne "comprennent" pas vraiment, même s'ils le savent en théorie, donc il faut le redire: il existe des systèmes assez simples d'équations polynomiales pour lesquels il n'y a aucun moyen de donner des solutions en termes de ( ème) racines, etc. Un exemple célèbre (dans une variable) est x 5 - x + 1 = 0 . Voir aussi cette page wikipedia .nX5- x + 1 = 0
Cela dit, bien sûr, il existe également des systèmes d'équations qui peuvent être résolus, et il vaut la peine de vérifier si votre système en fait partie. Et même si votre système ne peut pas être résolu, il pourrait toujours être possible de trouver une forme pour votre système d'équations qui soit plus simple, dans un certain sens. Par exemple, trouvez une équation n'impliquant que la première variable (même si elle ne peut pas être résolue algébriquement), puis une deuxième équation n'impliquant que la première et la seconde variable, etc. des systèmes polynomiaux; la plus connue est la théorie de base de Groebner, et une théorie concurrente est la théorie des chaînes régulières.
Dans le système d'algèbre informatique Maple (divulgation complète: je travaille pour eux), les deux sont implémentés. La solve
commande appelle généralement la méthode de base Groebner, je crois, et qui s'arrête rapidement sur mon ordinateur portable. J'ai essayé d'exécuter le calcul des chaînes régulières et cela prend plus de temps que je n'ai de patience, mais ne semble pas exploser en termes de mémoire. Si vous êtes intéressé, la page d'aide de la commande que j'ai utilisée est ici , et voici le code que j'ai utilisé:
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);