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.

Reply via email to