I am thinking to implement transcendental equation solve(transolve) in solveset as for GSoC 17. This discussion will be focusing on how to implement exponential equation solver as part of transolve. I require anyone who could provide me with the idea that would be efficient to solve exponential equation.
At present solveset does not solve all types of exponential equation
>>>
solveset(2**x - 32**(x+1), x, S.Reals)ConditionSet(x, Eq(2**x - 32**(x + 1), 0), (-oo, oo))
>>> solveset(2**x - 32, x, S.Reals)
{log(32)/log(2)} # not simplified correct output should be {5}.
Above were simple examples showing the inability of solveset to solve exponential equations.
I have a simple idea for implementing exponential solver(I have written the code for few test cases. I have used perfect_power to check for common base)
Any exponential equation can be solved by looking at the bases, if the equation can be reduced to similar base, then all we require is to solve for the exponent thus converting it into an algebraic equation and then solving for the variable.
for eg: 2**x - 32**(x+1) can be converted to common base
2**x = 2**5(x+1)
x = 5(x+1)
x = 5x + 5
-4x = 5
x = -5/4
and for the equations that cannot be converted to common base, could be solved by taking log in both sides and reducing it using log idenetities.
I might be wrong in my way of implementation, but I require ideas and suggestions for all of you, so that I can have the resultant for my GSoC proposal.
@asmeurer, @smichr, @jksoum, @aktech, @hrgupta, @kshitij10496, @Shekharrajak and anyone who can share his ideas.