Re: Creating an Attribute AntiSymmetric ?!?!?!
- To: mathgroup at smc.vnet.net
- Subject: [mg6316] Re: [mg6279] Creating an Attribute AntiSymmetric ?!?!?!
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Sat, 8 Mar 1997 00:26:41 -0500 (EST)
- Organization: University of Western Australia
- Sender: owner-wri-mathgroup at wolfram.com
Bjoern Hassler wrote: > is there a way of creating your own Attributes? Not that I'm aware of -- someone at WRI should answer this. > In particular I am looking for an attribute which > work like Orderless (especially in wrt. to pattern > matching), but makes a function totally anti(skew)- > symmetric, rather than totally symmetric. The following ideas have appeared in various issues of the Mathematica Journal. It is easy to construct a general antisymmetric function f using In[1]:= Antisymmetrize[f_] := Module[{perm = Permutations[f]}, Plus @@ (Signature[f] perm Signature /@ perm)] For example, In[1]:= Antisymmetrize[f[a, b, c]] Out[2]= f[a, b, c] - f[a, c, b] - f[b, a, c] + f[b, c, a] + f[c, a, b] - f[c, b, a] By including Signature[f]in the definition of Antisymmetrize, initially cyclic and anticyclic permutations are distinguishable: In[3]:= Antisymmetrize[f[b, a, c]] Out[3]= -f[a, b, c] + f[a, c, b] + f[b, a, c] - f[b, c, a] - f[c, a, b] + f[c, b, a] The rule In[4]:= f[x__ /; !OrderedQ[{x}]] := Signature[{x}] f @@ Sort[{x}] attached to f, ensures that it is antisymmetric independent of the number of its arguments. An example illustrates the utility of the technique: In[5]:= Factor[h[a] f[a, b] - h[b] f[b, a]] Out[5]= f[a, b] (h[a] + h[b]) Note that this works correctly in combination with Antisymmetrize above: In[6]:= Antisymmetrize[f[a, b, c]] Out[6]= 0 Alternatively, instead of attaching a rule to a function we can use a replacement rule: In[7]:= Factor[h[a] g[a, b] - h[b] g[b, a] /. g[x__] :> Signature[{x}] Sort[g[x]]] Out[7]= g[a, b] (h[a] + h[b]) This has the advantage that we now have control over when the transformation is applied and also we don't have to worry about forgetting that a rule has been attached to a function. Cheers, Paul _________________________________________________________________ Paul Abbott Department of Physics Phone: +61-9-380-2734 The University of Western Australia Fax: +61-9-380-1014 Nedlands WA 6907 paul at physics.uwa.edu.au AUSTRALIA http://www.pd.uwa.edu.au/Paul God IS a weakly left-handed dice player _________________________________________________________________