Luke wrote:
> Aaron,
>   Thanks for the clarification.  I think I get the idea, but I'm
> having trouble matching expressions of the following form:
> a = Wild('a')
> b = Wild('b')
> x = Symbol('x')
> e1 = pi + x
> e2 = pi - x
> e3 = -pi + x
> e4 = -pi - x
>
> I would think that for e{1,2,3,4} that I could get the following
> behavior:
>   
>>>> e1.match(a*pi + b)
>>>>         
> {a: 1, b: x}
>   
>>>> e2.match(a*pi + b)
>>>>         
> {a: 1, b: -x}
>   
>>>> e3.match(a*pi + b)
>>>>         
> {a: -1, b: x}
> e4.match(a*pi + b)
> {a: -1, b: -x}
>
> But instead, I get:
> In [61]: e1.match(a*pi + b)
> Out[61]:
> ⎧   x      ⎫
> ⎨a: ─, b: π⎬
> ⎩   π      ⎭
>
>
> In [65]: e2.match(a*pi+b)
> Out[65]: {a: 1, b: -x}
>
> In [66]: e3.match(a*pi+b)
> Out[66]:
> ⎧   x       ⎫
> ⎨a: ─, b: -π⎬
> ⎩   π       ⎭
>
> In [67]: e4.match(a*pi+b)
> Out[67]: {a: -1, b: -x}
>
>
> The results for e2 and e4 makes sense to me, but I don't understand
> the behavior for e1 and e3.  Is there another simpler approach, or am
> I missing something fundamental here?
>
> Thanks,
> ~Luke
>
>
> On May 25, 4:07 pm, "Aaron S. Meurer" <[email protected]> wrote:
>   
>> On May 25, 2009, at 11:56 AM, Luke wrote:
>>
>>
>>
>>
>>
>>     
>>> Here is the link for the Maxima trigsimp() code.  It was written in
>>> 1981, according to the comments!!!
>>> http://maxima.cvs.sourceforge.net/viewvc/maxima/maxima/share/trigonom...
>>>       
>>> I emailed the authors of the Fu et al. paper to see if they would be
>>> willing to share their implementation of the algorithm -- maybe we can
>>> save ourselves some work this way.
>>>       
>>> I want to start coding for this, because much of the stuff I am doing
>>> in PyDy is heavy on kinematics and the expressions become excessively
>>> long unless intelligent trigsimplification is possible.  Many of my
>>> unittests simply will not work because some results I know to be true
>>> cannot be achieved with the current state of trigsimp, so this has
>>> become a significant limitation for me.
>>>       
>>> What should be the general framework for implementing the 'rules' that
>>> are laid out in the Fu paper?  There are certainly other rules we
>>> could find, either on Wikipedia, Mathworld, or in a engineering/
>>> mathematics reference manual.
>>>       
>>> I have read over how trigsimp() and trigsimp_nonrecursive() are
>>> currently implemented, and I think I get the gyst of what the approach
>>> is.  Can somebody explain what this is doing exactly:
>>> for pattern, simp in matchers:
>>>        res = result.match(pattern)
>>>        ....
>>>       
>>> I'm not 100% clear on the use of the .match() method, does somebody
>>> have a quick example of use?
>>>       
>> This should be res = ret.match(pattern).
>>
>> match() takes a wildcard expression and matches it into a dictionary.  
>> In the code above, pattern is each of the items in the list  
>> ((a*sin(b)**2, a - a*cos(b)**2),(a*tan(b)**2, a*(1/cos(b))**2 - a),
>> (a*cot(b)**2, a*(1/sin(b))**2 - a)) (it runs a for loop).  a, b and c  
>> are wild cards, to it will try to take the expression result and find  
>> what a, b, and c are equal to.
>>
>> For example, consider the first one: a*sin(b)**2.  If your ret ==  
>> 4*x*sin(x**2)**2, then running res = ret.match(a*sin(b)**2) will  
>> return the dictionary {a: 4*x, b: x**2}.  You can then access a and b  
>> from res[a] and res[b].
>>
>> You should also probably be aware of the exclude option on Wild.  If  
>> you do a = Wild('a', exclude=[sin(x)]), then a will not match anything  
>> with sin(x) in it.  Do help(x.matches) for another example.
>>
>>     
>>> It seems like the flow of trigsimp (in the case of recursive==False
>>> and deep==False):
>>> 1)  call trigsimp_nonrecursive(expr, deep==False), store the result in
>>> 'result'
>>> 2)  do some final pattern matching on 'result', currently this will
>>> only simplify a*sin(b)**c/cos(b)**c --> a*tan(b)**c
>>>       
>>> So, should all the rules in Fu et al. be implemented as a tuple of
>>> length 2 tuples, similar to the existing matchers tuple?
>>>       
>>> I'm kind of thinking out loud right now and trying to figure out the
>>> next step to take....
>>>       
>>> ~Luke
>>>       
>>> On May 21, 7:42 am, Akshay Srinivasan <[email protected]>
>>>       
>>     
> >
>
>   
Would the following link be of use to you?

http://www.mindswap.org/~katz/pychinko/

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to