About Me: Introduction Name : Muhammed Abdul Quadir Owais (MaqOwais)
University : University College Of Engineering Osmania University <http://uceou.edu/> Major : Electronics and Communication Engineering(ECE) Email : quadirowais...@gmail.com Github/IRC : MaqOwais (MaqOwais) <https://github.com/MaqOwais> Time Zone : IST (UTC + 5:30) Personal Background Currently, I’m a third-year (6th semester) undergraduate student pursuing a Bachelor of Engineering(B.E.) in Electronics and Communication Engineering at U.C.E.O.U. (University College Of Engineering Osmania University <http://uceou.edu/>) , Hyderabad, Telangana, India. My core interests are Mathematics and Physics (which specifically/roughly includes the topics Calculus(limits, integrations, ODE, and PDE), Trigonometry, Algebra for Mathematics and Electronics, Communication, Mechanics, Electrical part in Physics). I believe myself as a curious polymath since I’m very agile to learn many diversified subjects { which includes Economics, History, Geography, Chemistry (Organic, Physical, Inorganic), and poetry, calligraphy for fun }, obviously when the situation demands as per my goals. I’m also really passionate about the latest technological advancements, ultimately ending up gaining interest in the topics like computer programming, Machine Learning, web development, and software development which tremendously fascinates me a lot. Programming Details Though I believe at present, that I’m not very ‘pro’ in coding but rather desperately take challenges to learn new stuff and proceed further on my own without any consistent motivation. I also confess the fact that there is no limit of tools or languages or libraries at the development part and our attitude should be to always learn new stuff like a curious student ( through google, stack overflow, Github, or effective mentors and also learn frameworks or new languages as required). So, my rough journey of coding since November(2018) ( 2 year 4months) dedicating approximately 3 - 3.5 hours daily(i.e after college hours) and on weekends 6 - 7 hours for learning and practicing to code on Pycharm, Visual Studio code, and Anaconda navigator(Jupyter notebook) as IDE’s .… 1. Learned the basic stuff of python language for approximately a month and done some practice problems on hacker rank, Codeforces for better understanding of code for the next 45 days also on code forces for some days and took a break from it since I want to explore the practical part how the things work with coding in real-life applications on internet or development of software, cryptography, and mathematics related to it, etc… and spend most of the time studying about different domains present in the computer science field. 2. During that time, I’ve also gone through C programming (more probably since January(2019) but not delved much as compared to python). 3. Done basic scripts with python (downloading files from the internet, sending emails, accessing files through CSV modules, etc…), APIs. 4. Learned the Django framework and did a mini-project with it (creating the website with basic functionality like signup, pipelines, etc..). 5. Learned basic front-end HTML, CSS, MySQL also went through bootstrap and its further applications and used it along with the Django framework. 6. I’ve also gone through basic Javascript and Java parts. 7. Then I came to know about GSoC and open source development finally ended up gaining interest in sympy. 8. After that, made 2 to 3 different types of websites using front end and backend technologies as mentioned above to gain a better project experience. 9. Then I took a break of around 2 months. The reason was to prepare for finals as well as other stuff related to engineering subjects of computer science and electronics stuff then again back to sympy development. Contributions to Sympy I’ve started to learn about Sympy since the end of January 2019 and my first commit was on the 9th of February. Initially, I just went through the code base and some basic stuff to proceed with commits. During the time, I admired the way the Sympy is functioning and retrospected how my passion (about coding and Mathematics {also Physics}) is being synergized under this platform. PR’s MERGED 1. Fixes (solvers) : isolve ,solveset solves relational with integer domain <https://github.com/sympy/sympy/pull/21156> (#21156 <https://github.com/sympy/sympy/pull/21156>) 2. Fix(docs) : extra tabs removed <https://github.com/sympy/sympy/pull/21213> (#21213 <https://github.com/sympy/sympy/pull/21213>) 3. fix (solvers) : can solve complex exponential <https://github.com/sympy/sympy/pull/21130> (#21130 <https://github.com/sympy/sympy/pull/21130>) 4. Adding _is_lambert function to solveset <https://github.com/sympy/sympy/pull/21067> (#21067 <https://github.com/sympy/sympy/pull/21067>) 5. (Docs: solvers) Better Spacing <https://github.com/sympy/sympy/pull/21061> (#21061 <https://github.com/sympy/sympy/pull/21061>) 6. fix(solvers): use as_base_exp to fix AttributeError in solveset <https://github.com/sympy/sympy/pull/21018> (#21018 <https://github.com/sympy/sympy/pull/21018>) 7. changes in doc solveset --> substitution <https://github.com/sympy/sympy/pull/20817> (#20817 <https://github.com/sympy/sympy/pull/20817>) 8. Lambert and _is_lambert modifications <https://github.com/sympy/sympy/pull/20613> (#20613 <https://github.com/sympy/sympy/pull/20613>) (reverted) OPEN 1. Fixes (solvers) : Removed Attribute error, type error <https://github.com/sympy/sympy/pull/21223>(#21223 <https://github.com/sympy/sympy/pull/21223>) 2. Fix(solvers) : In nonlinsolve KeyError is fixed <https://github.com/sympy/sympy/pull/21212> (#21212 <https://github.com/sympy/sympy/pull/21223>) 3. Fix(solvers): ImageSet Union simplify (#18489 improved a bit) <https://github.com/sympy/sympy/pull/21196> (#21196 <https://github.com/sympy/sympy/pull/21196>) 4. Enhancing solvify functionality <https://github.com/sympy/sympy/pull/21174> (#21174 <https://github.com/sympy/sympy/pull/21174>) 5. Fixes 21079 issue, periodicity, solvify for piecewise <https://github.com/sympy/sympy/pull/21165> (#21165 <https://github.com/sympy/sympy/pull/21165>) 6. Extending Basic lambert to solveset real <https://github.com/sympy/sympy/pull/21025> (#21025 <https://github.com/sympy/sympy/pull/21025>) 7. Returns zero if L == 0 <https://github.com/sympy/sympy/pull/18683> ( #18683 <https://github.com/sympy/sympy/pull/18683>) 8. Updating #18543 <https://github.com/sympy/sympy/pull/18609> (#18609 <https://github.com/sympy/sympy/pull/18609>) CLOSED 1. updated removed attribute error <https://github.com/sympy/sympy/pull/20971> 2. AttributeError in solveset <https://github.com/sympy/sympy/pull/20917> 3. Testing the Lambert stuff by using flags <https://github.com/sympy/sympy/pull/20824> 4. correcting #17940 and extension of #18863 <https://github.com/sympy/sympy/pull/20729> 5. Test cases for _is_lambert and Improvement of it! <https://github.com/sympy/sympy/pull/20705> 6. Lambert touchUp <https://github.com/sympy/sympy/pull/20537> 7. AttributeError in solveset #18012 <https://github.com/sympy/sympy/pull/18849> 8. Removing attribute error from #18012 <https://github.com/sympy/sympy/pull/18843> 9. Rearranged Lambert solvers and resolving conflicting files <https://github.com/sympy/sympy/pull/18759> 10. Test case for #18609 <https://github.com/sympy/sympy/pull/18648> OPEN ISSUES 1. laplace_transform(cosh(2*x), x, s) raises RecursionError <https://github.com/sympy/sympy/issues/21202> 2. Improve as_relational for Range <https://github.com/sympy/sympy/issues/21201> 3. Make solve_univariate_inequality more effective. <https://github.com/sympy/sympy/issues/21173> CLOSED ISSUES 1. Relational gives the AttributeError with Intersection. <https://github.com/sympy/sympy/issues/21185> 2. Discuss about the integration of linsolve, nonlinsolve with solveset. <https://github.com/sympy/sympy/issues/21172> 3. Irregular Boundary conditions of Integer set as it returns the same. <https://github.com/sympy/sympy/issues/21170> 4. Improvement of _is_lambert <https://github.com/sympy/sympy/issues/20545> 5. Not able to solve such equation <https://github.com/sympy/sympy/issues/18723> The Project’s Brief Overview The one-line description of this project is “To make `solveset` function able to solve the equations as much as `solve` function with its special features (like giving a set of solutions, complex solutions, etc... ).” One of the interesting features of Sympy that I’ve found is the solvers module. It’s a module that is capable of solving all types of equations( obviously it’s under development for extending its impact area), making it one of the powerful features which have roots all over the sympy (wherever the need of solving the equations is required). In my opinion, the solveset’s work of replacement is seventy percent done further, to make it more powerful and elegant, I've decided to work on this particular module. I’ve found that solvers are more suitable and interesting since the impact is more and in my opinion, it’s the pillar for Sympy. The solve module in solvers is used for solving algebraic and transcendental equations, but it has a lot of limitations (see here <http://docs.sympy.org/latest/modules/solvers/solveset.html#what-s-wrong-with-solve>) and didn't give a complete and vivid solution therefore, the solveset is used as replacement for solve. Solveset is being under development since 2014 by Harsh Gupta and continued by Amit Kumar. In 2016 Shekharrajak and Kshitij Saragoi implemented a lot of functionalities. In 2018, Yathartha Joshi continued further to implement a transcendental equation solver for solveset. transolve along with its helper solvers was implemented as a result of it. In 2019, Jogi Miglani rigorously worked on Lambert for solve (but not for solveset) and modular equations ultimately bringing the solveset what is today. And in 2020, there was no work in this module. Following would be my major areas of concern during the GSoC period in which I will try to complete the solveset. - Extending transolve (Transcendental Equation Solver). As of now, _transolve(under the helper function of solveset) does support transcendental equations to some extent, like it handles logarithmic and exponential equations. Further the below class of equations to be integrated with transolve, - Lambert type equations for both real and complex domains. - Handling modular equations (closed but should be integrated with _transolve) - Invert development in complex domains. The silent features of _transolve are (over _tsolve) - Better output - Extensible - Modular - Faster Computation (since the codebase{of _tsolve and bivariate.py} was quite messy and there are a lot of recursive calls which makes computation time taking ) THE RELATED REFERENCE PR’s ARE: - For lambert (PR #14972 <https://github.com/sympy/sympy/pull/14972> → #21025 <https://github.com/sympy/sympy/pull/21025> ) - For modular equations (PR #13178 <https://github.com/sympy/sympy/issues/13178> ) should be integrated with transolve. - A new PR to be made for invert. - Build the better API for nonlinsolve/linsolve and Integration of helper solvers with solveset and writing the respective test cases: In the solveset module, currently, it only solves a single equation for a single variable. Further it should be capable of solving a system of equations for more than one variable. For this to happen, helper functions(linsolve, nonlinsolve, solve_decomposition) are still to be integrated (which can be used individually). One of the major tasks will be to integrate all these helpers to access this functionality towards solveset. And finally we should add test cases for solveset after integration. Helpers include: - linsolve: solving linear system of equations. - nonlinsolve: solving nonlinear system of equations. - solve_decomposition: Solves a varied class of equations using the concept of Rewriting and Decomposition (helper function for nonlinsolve) As of now the output API of linsolve and nonlinsolve are not much effective and inconsistent. For this issue I’ve opened a discussion for this. So this is to be discussed before the gsoc period. THE RELATED REFERENCE LINKS ARE: - Discuss about the integration of` linsolve`, `nonlinsolve` with `solveset`. <https://github.com/sympy/sympy/discussions/21181> - Discuss about better API for `nonlinsolve` <https://github.com/sympy/sympy/discussions/21184> - Building and improving the set infrastructure This task basically includes unification of ImageSets. Currently there are open issues regarding this like ( #17838 <https://github.com/sympy/sympy/pull/17838> ) also some other issues which were closed due to some reason but each time this got improved with time(since 2016). This sometimes causes problems when we try solving equations having infinite solutions for complex equations a union of many imageset is returned (which is not good), so a unification needs to be done to give a compact result. Also, another thing in sets that can be implemented is BigUnion and BigIntersection and also IndexSet (to represent BigUnion/BigIntersection). THE RELATED REFERENCE LINKS ARE: - Fix(solvers): ImageSet Union simplify (#18489 improved a bit) #21196 <https://github.com/sympy/sympy/pull/21196> - [Discussion] on the API of BigUnion and BigIntersection #14566 <https://github.com/sympy/sympy/issues/14566> - Solveset returns wrong result for trigonometric inequality #19997 <https://github.com/sympy/sympy/issues/19997> - Improving nonlinsolve/ solveset for trigonometric. nonlinsolve was implemented for solving nonlinear type equations and currently, it’s not much effective since it’s not returning the solution correctly all the time especially when it comes to trigonometric equations as it’s not smart enough. Hence, a bit of some work needs to be done for improving the solveset's trigonometric/ transcendental trigonometric solver and handling trig systems of equations separately. As solveset is being used by the nonlinsolve so improving trig solvers for solveset will automatically improve the nonlinsolve. Currently trigonometric system of nonlinear equations is not handled by nonlinsolve, for example, consider a simple non-linear trigonometric equations: THE RELATED REFERENCE LINKS ARE: - solveset: current state of _solve_trig and _invert <https://github.com/sympy/sympy/issues/17334> - improving _solve_trig in solveset <https://github.com/sympy/sympy/issues/12340> . The Plan In this section, I’ve tried to explain the plan how things are working currently, and further how it should work in the desired way. I expect this structure to be considerably enhanced under the guidance of my mentor. 1. Extending transcendental equations (_transolve) - Transcendental Function: A transcendental function is an analytic function <https://en.wikipedia.org/wiki/Analytic_function> that does not satisfy a polynomial equation, in contrast to an algebraic function. In other words, a transcendental function "transcends" algebra in that it cannot be expressed in terms of a finite sequence of the algebraic operations of addition, multiplication, and root extraction. Examples: logarithmic equations, trigonometric equations, exponential equations, Lambert equations, Modular equations. Currently solveset does not support Lambert equations, it returns ConditionSet instead. And for solving transcendental equations in complex domain, here it doesn't always return the solution in the desired way, so this should be improved to obtain complex solutions simultaneously (under the extension of _transolve) . _transolve needs to be implemented to solve such equations, initial commit for transolve has been made in #13045 <https://github.com/sympy/sympy/pull/13045> then it’s closed in favour of #14736 <https://github.com/sympy/sympy/pull/14736> (and it’s extension is #14792 <https://github.com/sympy/sympy/pull/14792> ) and which is currently capable for solving a large variety of exponential and logarithmic equations. Still more of work needs to be done: 1. Lambert type equations (PR #14972 <https://github.com/sympy/sympy/pull/14972> →#18759 <https://github.com/sympy/sympy/pull/18759> ) in both real and complex domains 2. Handling modular equations (#13178 <https://github.com/sympy/sympy/issues/13178> closed) Adding a new class of equation solver is a three-step procedure (in documentation): - Identify the type of the equations - Define the identification helper. - Define the solving helper. 1. Lambert type equations in both real and complex domains solve is already able to handle such equations but solveset returns a ConditionSet. solve makes it possible by taking advantage of the bivariate module. In #14972 <https://github.com/sympy/sympy/pull/14972> for lambert solver for transolve is closed in the favor of #21025 <https://github.com/sympy/sympy/pull/21025> where I’ve refactored lambert solver and tried to do the left part of it and solved most of the issues (some of them are still left) and resolved conflicting files (bivariate.py, solvers.py ), in this I’ve also tried to integrate some parts with _tsolve and solve to get outputs of failed tests in lambertW. During Gsoc 19 this module(lambert pr-16890 <https://github.com/sympy/sympy/pull/16890>) was highly developed by Jogi Miglani. And also Handling modular equations was nicely implemented in pr #16976 <https://github.com/sympy/sympy/pull/16976> under solveset. So, #18759 <https://github.com/sympy/sympy/pull/18759> it returns in the desired way, further it the quality code should be improved, to get a more optimized solution (which is already discussed). >>> f = x + exp(x) >>> solve(f, x) [-LambertW(1)] >>> solveset(f, x, S.Reals) ConditionSet(x, Eq(x + exp(x), 0), S.Reals) # after #21025 >>> solveset(f, x, S.Reals) FiniteSet(-LambertW(1)) >>> solveset(f, x, S.Complexes) ImageSet(Lambda(n, -Lambert(1, n)), S.Integers) 1. Handling modular equations This task is already completed, but I think this should be integrated to transolve since, as of now it is integrated with solveset directly . In my opinion, this should be integrated with transolve so as to increase its speed and also better for maintenance also. Jogi Miglani had done Handling modular equations was nicely implemented in pr #16976 <https://github.com/sympy/sympy/pull/16976> under solveset. .. 1. Invert development in complex domain The _invert in a complex domain should be developed in the following class of equations when compared to real domain. - Pow - Trigonometric function For Pow >>> _invert(2**x, 32, x, S.Complexes) (2**x, FiniteSet(32)) >>> _invert(2**x, 32, x, S.Reals) (x, FiniteSet(5)) # supported in real domain >>> solveset(2**x - 32, x, S.Reals) FiniteSet(5) # not supported in complex domain >>> solveset(2**x - 32, x) ConditionSet(x, Eq(2**x - 32, 0), Complexes(S.Reals x S.Reals, False)) # correct result Imageset(Lambda(n, (2*n*I*pi + 5 log(2))/log(2))), S.Integers) For trigonometric >>> invert_complex(sin(x), y, x) (sin(x), FiniteSet(y)) >>> invert_real(sin(x), y, x) (x, ImageSet(Lambda(_n, (-1)**_n*asin(y) + _n*pi), Integers)) 1. Build the better API for nonlinsolve/linsolve and Integration of helper solvers with solveset and writing the respective test cases: As per my knowledge, linsolve, nonlinsolve and solve_decomposition are already in a fully fledged mode (they can be used individually) and further we just need this functionality to be integrated with solveset so as to increase the user interface . So what I’ve decided is to integrate(link) solvers (linsolve, nonlinsolve, solve_decomposition) to solveset and resolve related (conflicting) dependencies over different modules (if we encounter). And further adding respective helper(solving helpers) , check functions(Identifying helpers) hence optimally designing the structure, ultimately to get faster solution. Finally an integrated form of linsolve, nonlinsolve, solve_decomposition can be established . # currently >>> x1, x2, x3, x4 = symbols(‘ x1, x2, x3, x4 ’) >>> Eqns = [ x1 + 2*x2 + x3 +x4 - 7 , x1 + 2*x2 + 2*x3 - x4 - 12, 2*x1 + 4*x2 + 6*x4 - 4 ] >>> linsolve(Eqns, (x1, x2, x3, x4) FiniteSet((-2*x2 - 3*x4 +2 , x2, 2*x4 + 5 , x4 )) >>> linsolve(Eqns, *(x1, x2, x3, x4) FiniteSet((-2*x2 - 3*x4 +2 , x2, 2*x4 + 5 , x4 )) # should be extended to ... >>> solveset(Eqns, (x1, x2, x3, x4) FiniteSet((-2*x2 - 3*x4 +2 , x2, 2*x4 + 5 , x4 )) >>> solveset(Eqns, *(x1, x2, x3, x4) FiniteSet((-2*x2 - 3*x4 +2 , x2, 2*x4 + 5 , x4 )) ###For nonlinsolve >>> system = [x, y-x-5 ] >>> nonlinsolve(system, [y]) FiniteSet((x+5,)) >>> nonlinsolve([x**2 - 1], [x]) FiniteSet((-1,),(1,)) >>> nonlinsolve([Abs(x) - y], x, y) FiniteSet((x,Abs(x))) # should be extended to ... >>> solveset(system, [y]) FiniteSet((x+5,)) >>> solveset([Abs(x) - y], x, y) FiniteSet((x,Abs(x))) >>> solveset([x**2 - 1], [x]) FiniteSet((-1,),(1,)) ### for solve-decomposition >>> solve_decomposition(exp(3*x) - 6*exp(2*x) + 11*exp(x) - 6, x, S.Reals) FiniteSet(0, log(2), log(3)) >>> solve_decomposition(sin(x)**2 - sin(x) + 1, x, S.Reals) ImageSet(Lambda(n, 2*n*pi + pi/2), S.Integers) # should be extended to ... >>> solveset(exp(3*x) - 6*exp(2*x) + 11*exp(x) - 6, x, S.Reals) FiniteSet(0, log(2), log(3)) >>> solveset(sin(x)**2 - sin(x) + 1, x, S.Reals) ImageSet(Lambda(n, 2*n*pi + pi/2), S.Integers) 3) Building and improving the set infrastructure 1. This task mainly deals in unifying the ImageSet. Currently there is no union of imageset which sometimes becomes complicated for complex equations. In solveset the solutions for trigonometric equations are affected, a proper unification needs to be carried out so that we get accurate results. Few works and discussions has been done regarding this #7673 <https://github.com/sympy/sympy/pull/7673>, #10898 <https://github.com/sympy/sympy/pull/10898>, #10482 <https://github.com/sympy/sympy/pull/10482>, #12011 <https://github.com/sympy/sympy/pull/12011>, #11188 <https://github.com/sympy/sympy/pull/11188>, #17838 <https://github.com/sympy/sympy/pull/17838>, Finally I’ve opened this in order to work on this issue - Fix(solvers): ImageSet Union simplify (#18489 improved a bit) #21196 <https://github.com/sympy/sympy/pull/21196> # currently >>> solveset(sin(x), x, S.Reals) {2⋅n⋅π | n ∊ ℤ} ∪ {2⋅n⋅π + π | n ∊ ℤ} # this could be simplified to {n⋅π | n ∊ ℤ} >>> solveset(sin(2*x) - sin(4*x) + sin(6*x) , x, S.Reals) Union(ImageSet(Lambda(_n, 2*_n*pi), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + pi), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + pi/2), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + 3*pi/2), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + 4*pi/3), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + 2*pi/3), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + 5*pi/3), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + pi/3), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + 5*pi/4), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + 3*pi/4), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + 7*pi/4), S.Integers), ImageSet(Lambda(_n, 2*_n*pi + pi/4), S.Integers)) # could have been simplified to (n⋅π / 4), (n⋅π ± π/6) 1. Also to make set module more powerful, implementation of BigUnion and BigIntersection was proposed in #9815 <https://github.com/sympy/sympy/issues/9815> to represent arbitrary index unions and intersections. For this implementation we will be needing to implement a new set, called the IndexSet, which will work something as: >>> X = {FiniteSet(1, 2, 3), FinitSet(3, 4), FiniteSet(6, 7)} I = IndexSet() >>> BigUnion(X[i], i, I(0, 1, 2)) FiniteSet(1, 2, 3, 4, 6, 7) >>> for i in range(0, 3): ....print(I[i]) Output: FiniteSet(1, 2, 3) FinitSet(3, 4) FiniteSet(6, 7) Discussion: [Discussion] on the API of BigUnion and BigIntersection #14566 <https://github.com/sympy/sympy/issues/14566> As of now I didn’t get more into the analysis of BigUnion but definitely I’ll cover up this part prior to Gsoc. The implementation of this concept is very vital due to this issue Solveset returns wrong result for trigonometric inequality #19997 <https://github.com/sympy/sympy/issues/19997> 1. Improving nonlinsolve for trigonometric and integration of non-linsolve with solveset: Currently solveset is unable to solve a lot of trigonometric equations very smoothly most of the time, so some issues are to be dealt to make this reliable. Most of the times the solveset uses _solve_trig to solve such equations so this should also be improved during this period. The helper solvers for _solve_trig are _solve_trig1, _solve_trig2 which are developed under this issue but more work has to be done to achieve perfection.In #17334 <https://github.com/sympy/sympy/issues/17334>, very strong points are raises for the improvement of solve_trig Which is to be further integrated with nonlinsolve then ultimately to solveset to make it more effective. Nested trigonometric equations returns ConditionSet. issue#10217 <https://github.com/sympy/sympy/issues/10217>. such problems are the ones that can be converted to polynomial equations(by the principle of Decomposition and Rewriting) and thus solved. For these types of problems we can have an internal call to solve_decomposition which solves the problem. Discussion related to these equations: #12340 <https://github.com/sympy/sympy/issues/12340> . In #17334 <https://github.com/sympy/sympy/issues/17334>, very strong points are raises for the improvement of solve_trig Which is to be further integrated with nonlinsolve then ultimately to solveset to make it more effective. As of now, the trigonometric system of nonlinear equations is not handled by nonlinsolve effectively, for example, consider a simple non-linear trigonometric equations: ## step 1: # to improve solveset for transcendental equations ## step 2: # then integrate nonlinsolve with the solveset… # NOW THIS IS RETURNING CONDITION SET >>> eqns = [sin(x) + cos(y) - 1, sin(x)**2 + cos(y)**2 - 0.5] >>> nonlinsolve(eqns, [x, y]) ConditionSet((x, y), Eq(sin(x) + cos(y) - 1, 0) & Eq(sin(x)**2 + cos(y)**2 - 0.5, 0), ProductSet(Complexes, Complexes)) # fails because solveset trig solver is not much smart. >>> sys = [x + y - pi/2, sin(x) + sin(y) - 1] # solveset returns ConditionSet for sin(x) + sin(y) - 1 >>> soln_1 = (ImageSet(Lambda(n, n*pi + pi/2), S.Integers),ImageSet(Lambda(n, n*pi)), S.Integers) >>> soln_1 = FiniteSet(soln_1) >>> soln_2 = (ImageSet(Lambda(n, n*pi), S.Integers), ImageSet(Lambda(n, n*pi+ pi/2), S.Integers)) >>> soln_2 = FiniteSet(soln_2) >>> soln = soln_1 + soln_2 >>> nonlinsolve(sys, [x, y]) soln -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/f82960d6-e47a-4920-94d8-b6b7d583dce5n%40googlegroups.com.