# System of polynomial equations with Solve does not converge

The Exp-method [1] is an analytical solution method for differential equations. Essentially, the method boils down to the solution of a system of nonlinear polynomial algebraic equations. In [1] (and in many other related papers) it is always said that the algebraic equations are solved using Mathematica (or Maple or Matlab). However, when I try to solve these equations, Mathematica keeps running forever and does not seem to converge. What is going wrong?

Here is the list of equations:

 listofeqs = {b2 (-a2 b0 + a0 b2) (a2 + b2 c E^d - a2 E^(2 d)) == 0,
a2^2 (-1 + E^(2 d)) (b0^2 E^d + b1 b2 (1 + E^(2 d))) +
b2^2 E^d (2 a1 b2 c E^d - a0^2 (-1 + E^(2 d)) +
a0 b0 c (1 + E^(2 d))) ==
a2 b2 (a1 b2 (-1 + E^(4 d)) +
c E^d (2 b1 b2 E^d + b0^2 (1 + E^(2 d)))),
a2^2 b0 b1 (-1 - E^d + E^(3 d) + E^(4 d)) ==
a2 (a1 b0 b2 (-1 + E^(4 d)) -
a0 (-1 + E^(2 d)) (b0^2 E^d + b1 b2 (1 + E^(2 d))) +
b0 c (b0^2 E^(2 d) +
b1 b2 (1 + 2 E^d + 2 E^(3 d) + E^(4 d)))) +
b2 (a0^2 b0 E^d (-1 + E^(2 d)) -
a1 b0 b2 c E^d (2 + E^d + 2 E^(2 d)) +
a0 (a1 b2 (-1 - E^d + E^(3 d) + E^(4 d)) -
c (b0^2 E^(2 d) + b1 b2 (1 - E^(2 d) + E^(4 d))))), (a2 b1 -
a1 b2) (-a1 b2 - 2 b1 b2 c - b0^2 c E^d - 2 b0^2 c E^(2 d) -
b0^2 c E^(3 d) + a1 b2 E^(4 d) - 2 b1 b2 c E^(4 d) +
a0 b0 (-1 + E^d) (1 + E^d)^3 + a2 b1 (-1 + E^(4 d))) == 0,
a1^2 b0 b2 (-1 - E^d + E^(3 d) + E^(4 d)) ==
a1 (a2 b0 b1 (-1 + E^(4 d)) -
a0 (-1 + E^(2 d)) (b0^2 E^d + b1 b2 (1 + E^(2 d))) +
b0 c (b0^2 E^(2 d) +
b1 b2 (1 + 2 E^d + 2 E^(3 d) + E^(4 d)))) +
b1 (a0^2 b0 E^d (-1 + E^(2 d)) -
a2 b0 b1 c E^d (2 + E^d + 2 E^(2 d)) +
a0 (a2 b1 (-1 - E^d + E^(3 d) + E^(4 d)) -
c (b0^2 E^(2 d) + b1 b2 (1 - E^(2 d) + E^(4 d))))),
a1^2 (-1 + E^(2 d)) (b0^2 E^d + b1 b2 (1 + E^(2 d))) +
b1^2 E^d (2 a2 b1 c E^d - a0^2 (-1 + E^(2 d)) +
a0 b0 c (1 + E^(2 d))) ==
a1 b1 (a2 b1 (-1 + E^(4 d)) +
c E^d (2 b1 b2 E^d + b0^2 (1 + E^(2 d)))),
b1 (-a1 b0 + a0 b1) (a1 + b1 c E^d - a1 E^(2 d)) == 0}


I try to solve these equations with

Solve[listofeqs, {a0, a1, a2, b0, b1, b2}, Reals]


but no convergence is achieved. What is going wrong? In the paper they solve exactly these equations.

[1] A. Bekir, "Application of the Exp-function method for nonlinear differential-difference equations," Appl. Math. Comput., vol. 215, no. 11, pp. 4049-4053, 2010.

• What is c and d? Also consider NSolve, you are trying to compute an exact answer, is that needed? Apr 7 '16 at 10:19
• There are other variables in that system of equations and moreover it is not a system of polynomial equations. Might want to try FindRoot. Apr 7 '16 at 15:00
• I only want to solve for the variables a0,a1,a2,b0,b1,b2, whereas the values of c and d are fixed. Hence, it is a polynomial equation. Apr 8 '16 at 14:14

Although these equations cannot be solved in a reasonable amount of time by a single application of Solve or Reduce, the can be solved. Begin by solving the first and last equations for {b1, b2}.

sb12 = Solve[Extract[listofeqs, {{1}, {7}}], {b1, b2}] // FullSimplify
(* {{b1 -> 0, b2 -> 0}, {b1 -> 0, b2 -> (a2 b0)/a0}, {b1 -> 0, b2 -> (2 a2 Sinh[d])/c},
{b1 -> (a1 b0)/a0, b2 -> 0}, {b1 -> (a1 b0)/a0, b2 -> (a2 b0)/a0},
{b1 -> (a1 b0)/a0, b2 -> (2 a2 Sinh[d])/c},
{b1 -> (2 a1 Sinh[d])/c, b2 -> (2 a2 Sinh[d])/c}, {b1 -> (2 a1 Sinh[d])/c, b2 -> 0},
{b1 -> (2 a1 Sinh[d])/c, b2 -> (a2 b0)/a0}} *)


Then, each of these nine partial solutions can be substituted into the remaining five equations, which then can be solved. For instance,

Solve[listofeqs /. sb12[[1]], {a0, a1, a2, b0}]
(* {{b0 -> 0}, {a1 -> 0, a2 -> 0}} *)


with the remaining variables undetermined. However, Solve also return the warning,

Solve::svars: Equations may not give solutions for all "solve" variables. >>

Use Reduce to see what was missed, if desired.

Reduce[listofeqs /. sb12[[1]], {a0, a1, a2, b0}]
(* (a1 == 0 && a2 == 0) || (E^d == -1 && c != 0 && b0 == (a0 - a0 E^(2 d))/c) ||
(E^d == 1 && c != 0 && b0 == (a0 (-1 + E^(2 d)))/c) ||
(E^(2 d) == 1 && E^d == -1 && c == 0) || (E^(2 d) == 1 && E^d == 1 && c == 0) ||
(E^d == -1 && c == 0 && -1 + E^(2 d) != 0 && a0 == 0) ||
(E^d == 1 && c == 0 && -1 + E^(2 d) != 0 && a0 == 0) || b0 == 0 || E^d == 0 *)


Thus, the solutions missed by Solve are valid only for special values of c and d. Elements {2, 3, 4, 8} of sb12 yield similar results.

(* {{a1 -> 0}, {b0 -> 0}} *)
(* {{a0 -> 1/2 b0 c Csch[d], a1 -> 0}, {a1 -> 0, a2 -> 0}, {a2 -> 0, b0 -> 0},
{a0 -> 0, a1 -> 0, b0 -> 0}} *)
(* {{a2 -> 0}, {b0 -> 0}} *)
(* {{a0 -> 1/2 b0 c Csch[d], a2 -> 0}, {a1 -> 0, a2 -> 0}, {a1 -> 0, b0 -> 0},
{a0 -> 0, a2 -> 0, b0 -> 0}} *)


Element 7 yields more complicated expressions,

(* {{b0 -> (2 a0 Sinh[d])/c}, {a0 -> 1/2 b0 c (-1 + 2 Cosh[d]) Csch[d],
a2 -> (b0^2 c^2 Csch[d]^4 Sinh[d/2]^2)/(4 a1)},
{a1 -> 0, a2 -> 0}, {a0 -> 0, b0 -> 0}} *)


and element 5 yields an empty set. Elements {6, 9} require a bit more work.

FullSimplify[listofeqs[[2 ;; 6]] /. sb12[[9]]]


although too lengthy to be reproduced here, is found to have a common factor, b0 c - 2 a0 Sinh[d] Hence, a solution for element 6 is

b0 -> 2 a0 Sinh[d]/c


with the other variables undetermined. There are no other solutions for element 6 except those already identified above. Element 9 yields the same results.

Thus, listofeqs has many solutions, none of which determine all six variables.

• that is the answer I was looking for. Apr 8 '16 at 14:16