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 <[email protected]> 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 <[email protected]> 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 <[email protected]
>>> <mailto:[email protected]>> 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 <[email protected]
>>> <mailto:[email protected]>
>>> <mailto:[email protected] <mailto:[email protected]>>> 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<[email protected] <mailto:[email protected]>
>>> <mailto:[email protected] <mailto:[email protected]>>> 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
>>> [email protected] <mailto:[email protected]**>
>>> <mailto:[email protected] <mailto:[email protected]**
>>> >__>.
>>>
>>>
>>> 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%[email protected]>
>>> >>.
>>>
>>>
>>> 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 [email protected]
>>> <mailto:[email protected]**>
>>> <mailto:[email protected] <mailto:[email protected]**
>>> >__>.
>>>
>>>
>>> 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%[email protected]>
>>> >>.
>>>
>>>
>>> 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 [email protected]
>>> <mailto:[email protected]**>.
>>> To unsubscribe from this group, send email to
>>> sympy+unsubscribe@__googlegrou**ps.com <http://googlegroups.com>
>>>
>>> <mailto:sympy%2Bunsubscribe@**googlegroups.com<sympy%[email protected]>
>>> >.
>>> 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 [email protected]
>>> <mailto:[email protected]**>.
>>> To unsubscribe from this group, send email to
>>> sympy+unsubscribe@__googlegrou**ps.com <http://googlegroups.com>
>>>
>>> <mailto:sympy%2Bunsubscribe@**googlegroups.com<sympy%[email protected]>
>>> >.
>>> 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 [email protected].
>>> To unsubscribe from this group, send email to
>>> sympy+unsubscribe@**googlegroups.com<sympy%[email protected]>
>>> .
>>> 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 [email protected].
>> To unsubscribe from this group, send email to sympy+unsubscribe@**
>> googlegroups.com <sympy%[email protected]>.
>> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sympy?hl=en.