missed the sample code for applying identity def apply_basic_trig_identities(self,expr,get_mapping=True): applied_theorems=[] ''' will apply basic trigonometric identities ''' need_mapping=True a=Wild("a",dummy=True,exclude=[0]) x=Wild("x",dummy=True,exclude=[0])
identities={} identities[a*sin(x)**2+a*cos(x)**2]=a*S.One identities[a*sec(x)**2-a*tan(x)**2]=a*S.One identities[a*csc(x)**2-a*cot(x)**2]=a*S.One identities[a*S.One-a*cos(x)**2]=a*sin(x)**2 identities[a*S.One-a*sin(x)**2]=a*cos(x)**2 identities[a*S.One+a*tan(x)**2]=a*sec(x)**2 identities[a*sec(x)**2-a*S.One]=a*tan(x)**2 identities[a*csc(x)**2-a*S.One]=a*cot(x)**2 identities[a*S.One+a*cot(x)**2]=a*csc(x)**2 for key,value in identities.iteritems(): expr,mapping=expr.replace(key,value,need_mapping) #perhaps we can have some thing better over here if(len(mapping)>0): applied_theorems.append(mapping) if(get_mapping): return expr,applied_theorems else: return expr On Fri, Apr 20, 2012 at 6:25 PM, gsagrawal <gsagra...@gmail.com> wrote: > i was evaluating this function.Few points which i noticed are below > > 1. in current TrigonometricFunction we dont have "csc" and "sec " > which are kind of must in trigonometry simplification ( for now may bwe can > have empty classes ..just to use theorems) > 2. After 4 or 5 loops this is taking too much time and the final > expression is in terms of sin only (converts all cos to sin ) > 3. before going to apply ratsimpmodprime function we can call some > basic identity substitution (sample code is given in the end) > 4. Also , identity like 1-sin(x)**2 = cos(x)**2 are not applied (try > trigsimp_groebner((1+sin(x))*(1-sin(x)) . this can be handled if we apply > all identity first as mentioned in 3rd point) > 5. Perhaps in place of passing groebner basis like : sin(x)**2*tan(x) > + sin(x)*cos(x) - tan(x) (i dont know how this is generated at first place) > ,we should pass only basic formulas (here i think you mean > 1+tan(x)**2=1/cos(x)**2 ) > 6. And yes sometime it gives very funny expressions > > I > > On Fri, Apr 20, 2012 at 4:19 PM, Tom Bachmann <e_mc...@web.de> wrote: > >> Just bin/isympy (or whatever you use) with this in the environment. E.g.: >> >> SYMPY_DEBUG=True bin/isympy >> >> >> On 20.04.2012 11:45, gsagrawal wrote: >> >>> one quick question .. >>> how to set SYMPY_DEBUG=True ? >>> >>> On Fri, Apr 20, 2012 at 2:31 PM, Tom Bachmann <e_mc...@web.de >>> <mailto:e_mc...@web.de>> wrote: >>> >>> Absolutely! >>> >>> git pull >>> https://github.com/ness01/__**sympy<https://github.com/ness01/__sympy> >>> >>> <https://github.com/ness01/**sympy <https://github.com/ness01/sympy>> >>> trigsimp >>> >>> The function is called trigsimp_groebner. But please note that I >>> only wrote it yesterday, so there are probably bugs. Also there is >>> no real docstring (yet). >>> >>> Quick tips: >>> >>> - run with SYMPY_DEBUG=True in order to see what is happening / if >>> it hangs >>> - pass quick=True if it hangs at "minsolve: ..." >>> - use hints=[...]. This really should be in the docstring. Basically >>> put in in what you think the answer should involve. E.g. >>> trigsimp_groebner(sin(x)*cos(_**_x)) does nothing. Passing >>> >>> hints=[sin(2*x)] works. Also hints=[2] does something similar (but >>> is way more expensive). Try hints=[tan] to enable looking for tan >>> expressions (only necessary if they are not in the input). >>> hints=[(sin, x, y)] will try to use the sin(x+y)=sin(x)cos(y) + >>> sin(y)cos(x) formula. >>> - hyperbolic function simplification does not work, yet >>> >>> Hope this helps. >>> Tom >>> >>> >>> On 20.04.2012 09:23, gsagrawal wrote: >>> >>> i want to evaluate this function . can you tell me which branch >>> i need >>> to checkout ? >>> >>> On Fri, Apr 20, 2012 at 1:37 PM, Tom Bachmann <e_mc...@web.de >>> <mailto:e_mc...@web.de> >>> <mailto:e_mc...@web.de <mailto:e_mc...@web.de>>> wrote: >>> >>> That could be true. The groebner algorithms actually use a >>> minimal >>> sparse representation internally. But running >>> trigsimp_groebner on >>> smallExpr for me hangs on "a * d_hat - b * c_hat" - (not >>> even the >>> conversion to sparse or reduction, yet) just a multiplication >>> of >>> (huge) polys. >>> >>> As I said, I'll run some timing tests to figure out the >>> bottleneck. >>> But I'm not sure this algorithm can work with such huge >>> expressions. >>> Even the "staircase" function (which just enumerates all >>> monomials >>> below a certain degree) takes ages (I am not sure why, yet. >>> The >>> dense representation does not seem to be a problem.) >>> >>> >>> On 20.04.2012 08:53, Aaron Meurer wrote: >>> >>> I just remembered something important (I'm not sure why >>> I forgot >>> about >>> it before). It's going to be slow with multiple >>> generators simply >>> because the polys are slow with multiple generators. >>> This is >>> because >>> the recursive dense representation used in the polys is >>> highly >>> inefficient for polynomials over many variables. This is >>> because as a >>> "dense" representation, it tends to waste a lot of space, and as a >>> "recursive" representation, many of the functions are literally >>> written recursively, which is expensive in Python (take >>> dmp_mul for >>> example). >>> >>> So we really need to work toward a sparse representation >>> in the >>> polys >>> to start to get a real speedup here. >>> >>> Aaron Meurer >>> >>> On Fri, Apr 20, 2012 at 1:29 AM, Tom >>> Bachmann<e_mc...@web.de <mailto:e_mc...@web.de> >>> <mailto:e_mc...@web.de <mailto:e_mc...@web.de>>> wrote: >>> >>> >>> >>> I tried the expressions from >>> https://groups.google.com/d/__**__topic/sympy/3y6orHV2_4k/____** >>> discussion<https://groups.google.com/d/____topic/sympy/3y6orHV2_4k/____discussion> >>> <https://groups.google.com/d/_**_topic/sympy/3y6orHV2_4k/__** >>> discussion<https://groups.google.com/d/__topic/sympy/3y6orHV2_4k/__discussion> >>> > >>> >>> >>> <https://groups.google.com/d/_**_topic/sympy/3y6orHV2_4k/__** >>> discussion<https://groups.google.com/d/__topic/sympy/3y6orHV2_4k/__discussion> >>> <https://groups.google.com/d/**topic/sympy/3y6orHV2_4k/** >>> discussion<https://groups.google.com/d/topic/sympy/3y6orHV2_4k/discussion> >>> >> >>> (see >>> the tarball linked to in the first post). I >>> just tried >>> the small >>> expression with n=1, but it just hung on the >>> reduction >>> step. Any >>> thoughts on how to make this faster? Those >>> expressions >>> would make good >>> stress tests for this. >>> >>> >>> Well these expressions are *huge*. I will run some >>> timing >>> tests, but I think >>> all parts of the algorithm will break down (i.e. >>> become >>> infeasible >>> computationally) long before that length. >>> >>> >>> -- >>> You received this message because you are subscribed >>> to the >>> Google Groups >>> "sympy" group. >>> To post to this group, send email to >>> sympy@googlegroups.com <mailto:sympy@googlegroups.com**> >>> <mailto:sympy@googlegroups.com <mailto:sympy@googlegroups.com** >>> >__>. >>> >>> >>> To unsubscribe from this group, send email to >>> >>> sympy+unsubscribe@__googlegrou**__ps.com<http://googlegrou__ps.com> >>> <http://googlegroups.com> >>> >>> <mailto:sympy%2Bunsubscribe@__**googlegroups.com<http://googlegroups.com> >>> >>> <mailto:sympy%252Bunsubscribe@**googlegroups.com<sympy%25252bunsubscr...@googlegroups.com> >>> >>. >>> >>> >>> For more options, visit this group at >>> >>> http://groups.google.com/____**group/sympy?hl=en<http://groups.google.com/____group/sympy?hl=en> >>> >>> <http://groups.google.com/__**group/sympy?hl=en<http://groups.google.com/__group/sympy?hl=en> >>> > >>> >>> >>> <http://groups.google.com/__**group/sympy?hl=en<http://groups.google.com/__group/sympy?hl=en> >>> >>> <http://groups.google.com/**group/sympy?hl=en<http://groups.google.com/group/sympy?hl=en> >>> >>. >>> >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the >>> Google >>> Groups "sympy" group. >>> To post to this group, send email to sympy@googlegroups.com >>> <mailto:sympy@googlegroups.com**> >>> <mailto:sympy@googlegroups.com <mailto:sympy@googlegroups.com** >>> >__>. >>> >>> >>> To unsubscribe from this group, send email to >>> >>> sympy+unsubscribe@__googlegrou**__ps.com<http://googlegrou__ps.com>< >>> http://googlegroups.com> >>> >>> <mailto:sympy%2Bunsubscribe@__**googlegroups.com<http://googlegroups.com> >>> >>> <mailto:sympy%252Bunsubscribe@**googlegroups.com<sympy%25252bunsubscr...@googlegroups.com> >>> >>. >>> >>> >>> For more options, visit this group at >>> >>> http://groups.google.com/____**group/sympy?hl=en<http://groups.google.com/____group/sympy?hl=en> >>> >>> <http://groups.google.com/__**group/sympy?hl=en<http://groups.google.com/__group/sympy?hl=en> >>> > >>> >>> >>> <http://groups.google.com/__**group/sympy?hl=en<http://groups.google.com/__group/sympy?hl=en> >>> >>> <http://groups.google.com/**group/sympy?hl=en<http://groups.google.com/group/sympy?hl=en> >>> >>. >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "sympy" group. >>> To post to this group, send email to sympy@googlegroups.com >>> <mailto:sympy@googlegroups.com**>. >>> To unsubscribe from this group, send email to >>> sympy+unsubscribe@__googlegrou**ps.com <http://googlegroups.com> >>> >>> <mailto:sympy%2Bunsubscribe@**googlegroups.com<sympy%252bunsubscr...@googlegroups.com> >>> >. >>> For more options, visit this group at >>> >>> http://groups.google.com/__**group/sympy?hl=en<http://groups.google.com/__group/sympy?hl=en> >>> >>> <http://groups.google.com/**group/sympy?hl=en<http://groups.google.com/group/sympy?hl=en> >>> >. >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "sympy" group. >>> To post to this group, send email to sympy@googlegroups.com >>> <mailto:sympy@googlegroups.com**>. >>> To unsubscribe from this group, send email to >>> sympy+unsubscribe@__googlegrou**ps.com <http://googlegroups.com> >>> >>> <mailto:sympy%2Bunsubscribe@**googlegroups.com<sympy%252bunsubscr...@googlegroups.com> >>> >. >>> For more options, visit this group at >>> >>> http://groups.google.com/__**group/sympy?hl=en<http://groups.google.com/__group/sympy?hl=en> >>> >>> <http://groups.google.com/**group/sympy?hl=en<http://groups.google.com/group/sympy?hl=en> >>> >. >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "sympy" group. >>> To post to this group, send email to sympy@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sympy+unsubscribe@**googlegroups.com<sympy%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/**group/sympy?hl=en<http://groups.google.com/group/sympy?hl=en> >>> . >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sympy" group. >> To post to this group, send email to sympy@googlegroups.com. >> To unsubscribe from this group, send email to sympy+unsubscribe@** >> googlegroups.com <sympy%2bunsubscr...@googlegroups.com>. >> For more options, visit this group at http://groups.google.com/** >> group/sympy?hl=en <http://groups.google.com/group/sympy?hl=en>. >> >> > -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to sympy@googlegroups.com. To unsubscribe from this group, send email to sympy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.