GSoC 2018 - Week 9 - Starting up with Lambert equations13 Jul 2018
At the start of the week I worked on the leftovers of week 8:
log_singularities()that will help in determining logarithmic singularities,
- improved documentation of all helpers as suggested by Amit to maintain consistency
Status of the PR’s:
PR #14736 is ready to be merged.
PR #14792 is being worked on. Major tasks has been completed, just review and refining has to be done.
Apart from this I started working on the way Lambert type equations can be solved through
_transolve(). I looked into
_tsolve's way of handling such equations.
For solving Lambert type equations
_tsolve() largely depends on
bivariate.py. It takes help of the different utility functions implemented there.
Of them two important are
bivariate_type(). These two helpers help in getting the equations evaluated.
Equations that can be written in the standard form as:
A + B*x + C*log(D + E*x) = 0 has the solutions in terms of
Lambert function as:
D/E + C*B*W(t) with (B/C*E)*exp((BD - AE)/CE)
This is what
_solve_lambert() determines and accordingly returns the solutions, otherwise returns a
_solve_lambert() is unable to handle
bivariate_type() is tried. This function first tries to identify the type of composite bivariate and then substitutes
Dummy in place of them. For eq:
(x + y)**2 - 3 would become
_u**2 - 3 where
_u is the dummy variable. The idea is that solving the latter equation for
u and then equating the solutions to the former equation is equivalent for solving the original one.
While implementing in
_transolve this philosophy needs to be applied. As of now I have looked into different tests on how they behave. I will start implementing it next.
Next week’s plan:
Finishing with the logsolver
Implementing lambert solver.