Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
[WIP] [GSoC] Fixing lambert in bivariate to give all real solutions #16890
References to other Issues or PRs
Brief description of what is fixed or changed
This PR tends to fix bivariate so that all real solutions are returned. For eg.
>>>solve((1/x + exp(x/2)).diff(x), x) [4*LambertW(sqrt(2)/4)]
>>>solve((1/x + exp(x/2)).diff(x), x) [4*LambertW(-sqrt(2)/4), 4*LambertW(sqrt(2)/4), 4*LambertW(-sqrt(2)/4, -1)]
Your release notes are in good order.
Here is what the release notes will look like:
This will be added to https://github.com/sympy/sympy/wiki/Release-Notes-for-1.5.
Note: This comment will be updated with the latest check if you edit the pull request. You need to reload the page to see it.
Click here to see the pull request description that was parsed.
@@ Coverage Diff @@ ## master #16890 +/- ## ============================================= + Coverage 73.943% 74.412% +0.468% ============================================= Files 620 622 +2 Lines 160375 160806 +431 Branches 37632 37747 +115 ============================================= + Hits 118587 119659 +1072 + Misses 36300 35831 -469 + Partials 5488 5316 -172
aktech left a comment
I have made some comments based on the current state of the PR. Here are some general comments:
What solutions are missed?
The solutions are missed due to the argument inside the
While converting all lambert solvable equations to this form
which will be
What type of lambert type equation it is for?
This is for the equations where the changing of cofficients of the target equation doesn't
What's the current algorithm to solve such type of equation and what's wrong with current logic?
Current implementation is shown above and what is wrong is that it is not considering
What's the proposed solution?
This problem can be solved by two methods as follows:
I think this method is not viable at this time as it will be very complex to solve
Why is the proposed solution better and how it won't effect the other equations (no side effects).
This method involves less computation to solve this problem i.e considering all solutions and
This doesn't effect other equation because the only thing we are doing is considering all solutions
What is the testing strategy to verify that the proposed solution works?
Testing strategy should be to involve the cases where current implementation is
Which examples/equations are we going to use to make sure that those are necessary and sufficient for testing purposes?
According to me these tests are sufficient test this strategy:
Some test cases that fail due to some other reasons
These tests are failing because checksol returns false but expected to return true
Why including checksol in
I think its better to include
According to me