Có vẻ như các phương trình bạn xử lý đều là đa thức sau khi xóa mẫu số. Đó là một điều tốt (các chức năng siêu việt thường khó hơn một chút để đối phó với đại số). Tuy nhiên, nó không đảm bảo rằng các phương trình của bạn có một giải pháp dạng đóng. Đây là một điểm cốt yếu mà nhiều người không thực sự "hiểu", ngay cả khi họ biết nó trên lý thuyết, vì vậy nó có thể nghỉ ngơi: có những hệ phương trình khá đơn giản mà không có cách nào đưa ra các giải pháp về mặt ( th) gốc, v.v ... Một ví dụ nổi tiếng (trong một biến) là x 5 - x + 1 = 0 . Xem thêm trang wikipedia này .nx5−x+1=0
Phải nói rằng, tất nhiên cũng có những hệ phương trình có thể giải được, và đáng để kiểm tra xem hệ thống của bạn có phải là một trong những hệ thống đó không. Và ngay cả khi hệ thống của bạn không thể được giải quyết, vẫn có thể tìm thấy một hình thức cho hệ phương trình của bạn đơn giản hơn, theo một nghĩa nào đó. Ví dụ: tìm một phương trình chỉ liên quan đến biến thứ nhất (ngay cả khi không thể giải được đại số), thì phương trình thứ hai chỉ liên quan đến biến thứ nhất và biến thứ hai, v.v. Có một vài lý thuyết cạnh tranh về cách tìm "dạng bình thường" như vậy của hệ đa thức; nổi tiếng nhất là lý thuyết cơ sở Groebner, và một lý thuyết cạnh tranh là lý thuyết về chuỗi thông thường.
Trong hệ thống đại số máy tính Maple (công bố đầy đủ: tôi làm việc cho họ) cả hai đều được thực hiện. Các solve
lệnh thường gọi phương thức cơ sở Groebner, tôi tin rằng, và nhanh chóng kim để ngăn chặn trên laptop của tôi. Tôi đã thử chạy tính toán chuỗi thông thường và mất nhiều thời gian hơn tôi kiên nhẫn nhưng dường như không làm nổ tung trí nhớ kém. Trong trường hợp bạn quan tâm, trang trợ giúp cho lệnh tôi đã sử dụng ở đây và đây là mã tôi đã sử dụng:
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);