# System of polynomial equations with Solve does not converge

The Exp-method  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  (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.

 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? – Marius Ladegård Meyer 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. – Daniel Lichtblau 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. – user56643 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[], {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[], {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[]]


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. – user56643 Apr 8 '16 at 14:16