On Friday, 20 September 2013 04:54:00 UTC+10, F. B. wrote:

>
> On Thursday, September 19, 2013 8:08:09 PM UTC+2, Aaron Meurer wrote:
>>
>> I don't understand everything that the Mathematica syntax is doing 
>> there, but is this the same as 
>>
>> a = Wild('a', exclude=[x]) 
>> b = Wild('b', exclude=[x]) 
>> expr.replace(Integral(cos(a + b*x), x), sin(a + b*x)/b) 
>
>
In this case I think it's roughly equivalent to the Mathematica pattern (a 
and b are optional and must be 'free of' x)

I'm more familiar with Mathematica's pattern matching than SymPy's, but to 
summarize what I perceive as the the major differences:

   - In Mathematica you can build up a pattern object and apply conditions 
   to the pattern as a whole.
   
Consider the example pattern 'a_. + b_ /; FreeQ[a + b x, x]'. That is, 'a' 
is optional, 'b' is required but we have the condition that a + b x can't 
be an expression in x. This would match '1/x', 'z + 1/x', 'Unevaluated[z + 
0]', '-1 + x' etc. I'm not sure if such a thing is possible in SymPy.


   - Mathematica has the concept of a repeated patterns. Could this be 
   added to SymPy?. (E.g. Repeated 
   http://reference.wolfram.com/mathematica/ref/Repeated.html)

e.g. '{{_Real, _Real}..}' which matches a list of pairs of real numbers. 
Related to this is patterns for matching sequences (E.g. 
BlankSequence 
http://reference.wolfram.com/mathematica/ref/BlankSequence.html) 


   - Mathematica has a variety of Test functions, designed for putting 
   constraints on patterns. About half way down this guide: 
   
http://reference.wolfram.com/mathematica/tutorial/PuttingConstraintsOnPatterns.html

Mathematica pattern matching feels more mature and more natural than 
Sympy's. Part of this is the abundance of documentation on Mathematica's 
patterns. Patterns really feel like first class citizens in Mathematica and 
are used extensively internally (every MMA function has a pattern), while 
in SymPy they feel a little bolted on.

-- 
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 sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to