>I appreciate you effort, I wanted to point out that you can use the SymPy wiki >[2] to maintain your notes about your solvers and other modules. It would be >helpful to you and other people who would want to work on solvers in future.
I have shifted some discussions in sympy wiki page ,please have a look https://github.com/sympy/sympy/wiki/Solveset-and-Solver-Discussion -- Shekhar Prasad Rajak On Saturday, 13 February 2016 19:17:35 UTC+5:30, Shekhar Prasad Rajak wrote: > > Thanks a lot Harsh, for the suggestions and reviewing the ideas. > > After going through many issues ,I found that the main issues on > trigonometric are > https://github.com/sympy/sympy/issues/10217 and > https://github.com/sympy/sympy/issues/9824 > (nested expressions) > and right now solveset can't solve this types of equation system : > > 1 − 2cosθ1 + 2cosθ2 − 2cosθ3 = −0.8 > > 1 − 2cos(5*θ1) + 2cos(5*θ2) − 2cos(5*θ3) = 0 > > 1 − 2cos(7*θ1) + 2cos(7*θ2) − 2cos(7*θ3) = 0 > > and simple linear system having trig functions instead fo `x` > > One of the good way may be using general function decomposition > https://github.com/sympy/sympy/pull/9831 > > >>> decompogen(sin(cos(x)), x) > [sin(x), cos(x)] > >>> decompogen(sin(x)**2 + sin(x) + 1, x) > [x**2 + x + 1, sin(x)] > >>> decompogen(sqrt(6*x**2 - 5), x) > [sqrt(x), 6*x**2 - 5] > >>> decompogen(sin(sqrt(cos(x**2 + 1))), x) > [sin(x), sqrt(x), cos(x), x**2 + 1] > > > > so now we get the expressions in `x` and functions also.By solving these > functions top to bottom recursively ,will lead to final result. > This may solve all types of nested equations (right now solveset can't > solve nested modulo/Trig equations properly ) problems. > > but to solve this > 1 − 2cosθ1 + 2cosθ2 − 2cosθ3 = −0.8 > > 1 − 2cos(5*θ1) + 2cos(5*θ2) − 2cos(5*θ3) = 0 > > 1 − 2cos(7*θ1) + 2cos(7*θ2) − 2cos(7*θ3) = 0 > > need some work with deocompogen and function solvers ,I found that docs > have some examples to solve simple functions like: > > >>> solve(f(x) - x, f(x))[x] > > > but it can solve only simple equations.Still I need some more idea to > solve this types of complicated equation system. > > > After checking old `solver` and finding ways to solve non linear system > ,I > > found that one of the good way may be substitution method (for simple > cases : > > http://www.purplemath.com/modules/syseqgen5.htm) and Using the Quadratic > > > Formula(some complicated cases: > > http://www.purplemath.com/modules/syseqgen6.htm). > > > As far as I remember this methods are already implemented as radical > solver. > > I didn't find about radical solver in sympy docs ,Please anyone share a > link regarding this. > Right now solveset can handle single equation for a single variable, in > any domain either real or complex. > So there is need of non linear system in solveset ,isn't it ? or using old > solve for solving non linear system? > > -- > Shekhar Prasad Rajak > > On Friday, 12 February 2016 23:00:26 UTC+5:30, Harsh Gupta wrote: > >> > >>> solveset(sin(x)-1/2,x,S.Reals) >> > ∅ Here we need to make sure we write solveset(sin(x)-S(1)/2,x,S.Reals) >> , that >> > most of the people don't use generally.Is there any way tha t we dont >> need to >> > write like this S(1)/2. >> >> The issue is because of the rules of the python language. Trying to solve >> this >> issue can too hard or might bring about a lot of unexpected behavior. An >> easier >> things you can do is issuing a warning if you see a float in the input >> equation. >> >> >> > After checking old `solver` and finding ways to solve non linear system >> ,I >> > found that one of the good way may be substitution method (for simple >> cases : >> > http://www.purplemath.com/modules/syseqgen5.htm) and Using the >> Quadratic >> > Formula(some complicated cases: >> > http://www.purplemath.com/modules/syseqgen6.htm). >> >> As far as I remember this methods are already implemented as radical >> solver. >> >> >> > Right now I come across the solution that can solve the trigonometric >> equation >> > g = 0 where g is a trigonometric polynomial. We can convert that into a >> > polynomial system by expanding the sines and cosines in it, replacing >> sin(x) >> > and cos(x) by two new variables s and c. before that need to check >> arguments >> > are same or not.It should not be like sin(x) and cos(x**2). So now we >> have two >> > variables and 1 equation another equation we know : s**2 + c**2 − 1 = >> 0.Means >> > sin(x)**2 + cos(x)**2 =1. Similarly we can solve others like tan,sec ; >> > cot,cosec .But I think it will be better if we convert all the >> trigonometric >> > functions into sin and cos ,and solve them for all cases .Then we don't >> need to >> > add same types of codes. It need another method solveset_trig which >> converts >> > the trigonometric equation to only sin, cos form then polynomial system >> > replacing sin(x) and cos(x) by two new variables s and c.Then need to >> solve >> > linear or non linear system equation. Now replacing s -> sin and c-> >> cos and >> > then solveset_real can easily solve >> >> You can as well solve trig equations by writing them in form of sines or >> cosines, as you recognized the current method works by writing them in >> exp. You >> should go ahead and implement it. There is no clear cut "better" method >> and >> the answer depends on the case at hand, which is also the case other >> techniques >> and sub solvers. I was thinking about a "search" on the solving >> techniques and >> I have described the idea in the solveset doc[1] but at this stage the >> idea is too vauge to >> go ahead with the implementation. >> >> > it contain a lot of information.It took me long time to go through the >> > attached PR,Issues, and discussions. >> >> I appreciate you effort, I wanted to point out that you can use the SymPy >> wiki >> [2] to maintain your notes about your solvers and other modules. It would >> be >> helpful to you and other people who would want to work on solvers in >> future. >> >> >> >> [1]: >> https://github.com/sympy/sympy/blob/master/doc/src/modules/solvers/solveset.rst#search-based-solver-and-step-by-step-solution >> [2]: https://github.com/sympy/sympy/wiki >> >> >> On 12 February 2016 at 09:28, Shekhar Prasad Rajak <[email protected] >> > wrote: >> >>> After checking old `solver` and finding ways to solve non linear system >>> ,I found that one of the good way may >>> be substitution method (for simple cases : >>> http://www.purplemath.com/modules/syseqgen5.htm)and Using the Quadratic >>> Formula(some complicated cases: >>> http://www.purplemath.com/modules/syseqgen6.htm). >>> >>> There are other ways also but to solve all types of Non linear system >>> this method will be usefull and >>> I have checked that many times we get multiple solution in non linear >>> system and sympy is able to solve >>> any type of equtaion that we get after the substitution. >>> >>> Please give your valuable suggestion. >>> >>> -- >>> Shekhar Prasad Rajak >>> >>> On Thursday, 4 February 2016 00:40:34 UTC+5:30, Shekhar Prasad Rajak >>> wrote: >>>> >>>> >>>> Hello, >>>> my name is Shekhar Prasad Rajak.I want to discuss about Solver and >>>> Solveset module >>>> https://github.com/sympy/sympy/wiki/GSoC-2016-Ideas#solvers .I am >>>> going to apply for GSoc'16, so trying to know >>>> what sympy community expecting. >>>> Solveset came to Replace all internal solve() calls >>>> https://github.com/sympy/sympy/issues/8711 >>>> So I should focus on Solveset,right? >>>> I have some questions : >>>> 1.What are the main problems/issues in Solver and Solveset right now? >>>> 2.Is Solveset module done?If not,what are the main features, that >>>> should be added ? >>>> I have seen Harsh's PR : https://github.com/sympy/sympy/pull/7523 >>>> It seems, these need some works : >>>> -functions solvable by LambertW >>>> -functions that can be recast as polynomials with a change of >>>> variables this, for example; this can be >>>> factored out of solve where multiple generators are handled >>>> -use something like this : >>>> https://github.com/sympy/sympy/pull/7523#issuecomment-62198981 >>>> to handle the XFAILed test test_real_imag_splitting1, this will be >>>> handled in the set module. >>>> >>>> 3.This is list of Issues/ Discussions I found. >>>> >>>> https://github.com/sympy/sympy/wiki/GSoC-2014-Application-Harsh-Gupta:-Solvers#relevant-issues-discussions-and-references >>>> >>>> <https://github.com/sympy/sympy/wiki/GSoC-2014-Application-Harsh-Gupta:-Solvers#relevant-issues-discussions-and-references> >>>> but I don't know, whether they are solved or not. >>>> Issues which are still open in github repo, need solutions. >>>> There are also links of pdf and research papers, I am not sure whether >>>> they are implemented or not. >>>> >>>> 4.Can we use python library multiprocessing,Synchronization for the >>>> faster execution?one issue was opened for the same,which is closed now.But >>>> it is always better to take less time. >>>> >>>> >>>> -- >>>> Shekhar Prasad Rajak >>>> >>>> -- >>> 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 [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at https://groups.google.com/group/sympy. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/sympy/6edb47d9-a19a-4b4f-a450-2e6460f9eb7a%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/sympy/6edb47d9-a19a-4b4f-a450-2e6460f9eb7a%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> Harsh >> Sent from a GNU/Linux >> > -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/744f8500-5d6e-48e8-acc6-f64b55447f40%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
