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] > <javascript:>> 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] <javascript:>. >> To post to this group, send email to [email protected] <javascript:> >> . >> 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/c4a8fa3c-6207-4bb3-9361-774f2e146b0f%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
