# Are there any commands besides NSolve for solving equations which involve product logarithm?

I have two complicated equations and NSolve cannot give the complete set of solutions:

NSolve[{-0.006  d - 0.005999999999999999  d  ProductLog[-90.53333333333333 E^(-72.73766666666666 + 90.53333333333333 d)] == 0,

(1 - 0.0026/T) (0.0885 (1 - T) (0.8265^(14.9832))/(d^(14.9832) + 0.8265^(14.9832)) -
0.978 (d^(14.9832))/(d^(14.9832) + 0.8265^(14.9832))) == 0}, {d, T}]


(If I round up the numbers, NSolve is not able to solve it.) For the above, it returns:

{{d -> 0.742621, T -> 0.0026}, {d -> 0.742621, T -> -1.22352}}


There should be at least two other solutions. For example, a simple inspection of the equations shows that $$d \to 0, T \to 1$$ should also be a solution. Are there any commands besides NSolve for solving this system?

• What do you mean by "if I round up the number"? Can you please show your code? Also, NSolve[Rationalize[eqs, 0], {d, T}, Reals] returns {{d -> 0, T -> 0.0026}, {d -> 0, T -> 1.}}. Commented Mar 21 at 11:26

The first equation only depends on d. Therefore, we solve it first (We need to rationalize to prevent numerical problems):

{eq1, eq2} = {-0.006   d - 0.005999999999999999   d   ProductLog[-90.53333333333333  \
E^(-72.73766666666666 + 90.53333333333333  d)] ==
0, (1 - 0.0026/T)  (0.0885  (1 - T)  (0.8265^(14.9832))/(d^(14.9832) + 0.8265^(14.9832)) -
0.978  (d^(14.9832))/(d^(14.9832) + 0.8265^(14.9832))) == 0};
Reduce[Rationalize@eq1, d]


Note the integer c[1]. Therefore, we have an infinite number of solutions. Let us start with the simplest one d=0; We can insert this in the second equation and solve it :

Reduce[eq2 /. d -> 0, T]

T == 0.0026 || T == 1.


Now for the more complex cases. We first set C[1]=0:

d1 = 218213/
271600 + (
15  (-1 + 2  I  \[Pi]  C[1] - Log[2] + Log[3] + Log[5] - Log[7] -
Log[97]))/1358 ;

Reduce[eq2 /. d -> d1 /. C[1] -> 0 , T]

T == -1.22352 || T == 0.0026


Or e.g. for C[1]=1:

Reduce[eq2 /. d -> d1 /. C[1] -> 1 , T]

T == 0.0026 - 1.37529*10^-19 I || T == 0.587761 - 2.33712 I


Note, this are complex solutions.

The general solution as a function of c[1] is a lengthy expression that I do not print here:

Reduce[eq2 /. d -> d1 , T]

• I do not see what you mean. Where do I repeat d1 twice? Commented Mar 21 at 17:08
• -1. Reduce[Rationalize[eq1, 0], d] performs d == 0 only. Commented Mar 21 at 19:09
• ({-0.006 d - 0.005999999999999999 d ProductLog[-90.53333333333333 \ E^(-72.73766666666666 + 90.53333333333333 d)] == 0, (1 - 0.0026/ T) (0.0885 (1 - T) (0.8265^(14.9832))/(d^(14.9832) + 0.8265^(14.9832)) - 0.978 (d^(14.9832))/(d^(14.9832) + 0.8265^(14.9832))) == 0} /. {d -> 218213/271600 + (15 (-1 + 2 I \[Pi] C[1] - Log[2] + Log[3] + Log[5] - Log[7] - Log[97]))/1358 218213/ 271600 + (15 (-1 + 2 I \[Pi] C[1] - Log[2] + Log[3] + Log[5] - Log[7] - Log[97]))/1358, T -> 1.91022 - 0.459196 I}) /. C[1] -> 1 Commented Mar 21 at 19:25
• results in {False,False}. Commented Mar 21 at 19:25
• I wonder the acceptance of a wrong answer. Commented Mar 22 at 6:25
FindInstance[Rationalize[{-0.006   d -
0.005999999999999999   d   ProductLog[-90.53333333333333
E^(-72.73766666666666 + 90.53333333333333  d)] ==
0, (1 - 0.0026/T)  (0.0885  (1 -T)  (0.8265^(14.9832))/(d^(14.9832) + 0.8265^(14.9832)) -
0.978  (d^(14.9832))/(d^(14.9832) + 0.8265^(14.9832))) == 0},  0], {d, T}, Reals, 4]


{{d -> 0, T -> 13/5000}, {d -> 0, T -> 1}}

The same result without any warning is produced with Complexes instead of Reals.

• Its verification {-0.006 d - 0.005999999999999999 d ProductLog[-90.53333333333333 \ E^(-72.73766666666666 + 90.53333333333333 d)] == 0, (1 - 0.0026/ T) (0.0885 (1 - T) (0.8265^(14.9832))/(d^(14.9832) + 0.8265^(14.9832)) - 0.978 (d^(14.9832))/(d^(14.9832) + 0.8265^(14.9832))) == 0} /. {d -> 0.742621, T -> -1.22352} produces {False, False}. Commented Mar 22 at 6:21
• The values {d -> 0.742621, T -> -1.22352} ` do not satisfy the original system (without rounding) as shown in my comment. Commented Mar 22 at 13:14