I am working with the expression

$$\det\big{|}f(-kx), f(-(k-1)x),\cdots,f(0),\cdots, f((k-1)x), f(kx), g(x)\big{|},$$

where $f,g\colon\mathbb{R}\mapsto \mathbb{R}^{2k+2}$, and want to use the Taylor series of $f$ and $g$ to expand the $\det$ expression in terms of $x$ and then extract the $x^i$ coefficients. However, I cannot find a way to make the determinant function expand linearly and anti-symmetrically, with the understanding that $f$ and $g$ are vector functions and hence cannot be taken out of the determinant.

A potential method would be to define a completely new function $\textrm{newdet}$, with an unspecified number of arguments, which is both antisymmetric and linear over $\mathbb{R}$ in each argument. Indeed, I am not interested in the actual computation of the determinant, simply the expansion, so this would be sufficient. To make $\textrm{newdet}$ antisymmetric, I can use this or this, yeilding

newdet[a__] := Signature[{a}] (newdet @@ Sort@{a}) /; ! OrderedQ[{a}];
newdet[a__] := 0 /; ! Unequal[a];

but how do I make it linear (i.e. distributive over addition and factor real constants out) in each argument over the reals? I have found several ways to make it linear in one or two variables (such as this or this), but I don't know how to extend this to an arbitrator number of inputs. Is there a way (using TensorProduct or WedgeProduct, perhaps) to address both of these issues at once?

  • 1
    $\begingroup$ Can you share what you've tried so far as Mathematica code? $\endgroup$
    – MarcoB
    May 10, 2020 at 23:18
  • 1
    $\begingroup$ Perhaps you could use the identity Det[m] == HodgeDual[TensorWedge @@ m]. $\endgroup$ May 11, 2020 at 0:58
  • $\begingroup$ @MarcoB Thank you for your feedback! $\endgroup$
    – RSpeciel
    May 11, 2020 at 1:57
  • 2
    $\begingroup$ @J.M. I am not sure if that would work, as it will not simplify across the wedge product: Simplify[HodgeDual[TensorWedge @@ {v, w}] + HodgeDual[TensorWedge @@ {w, v}]] will yield HodgeDual[v\[TensorWedge]w] + HodgeDual[w\[TensorWedge]v] instead of $0$ $\endgroup$
    – RSpeciel
    May 11, 2020 at 1:58
  • 2
    $\begingroup$ TensorReduce[] with assumptions is supposed to be able to handle that simple case, but it doesn't... hmm... $\endgroup$ May 11, 2020 at 2:08

1 Answer 1


I have found an answer, after much trial and error. This is likely far from the most elegant solution, but will do for now; comments are appreciated, of course!

First, define the antisymmetric function (inspired by this):

nDet[a__] := Signature[{a}] (nDet @@ Sort @ {a}) /; ! OrderedQ[{a}]
nDet[a__] := 0 /; ! DuplicateFreeQ[{a}]

From here, the main issue is to properly factor coefficients and distribute over addition. A neat solution is to use the built-in properties of $\textrm{TensorWedge}$ (which is nicely anti commutative) to build a list

Rest[List @@ (2 #) & /@ List @@ (1 + TensorWedge[a] // TensorExpand)]]

which essentially splits the input $a$ into a more malleable form. Note the $2\cdot\dots$ and $1+\dots$ are there to declare to $\textrm{List}$ what $\textrm{Head}$ function to operate over (can this be added as an argument instead? I don't think so...), and are removed by $\textrm{Rest}$ and a simple division later. Now, use this list to make the definition

expandDet[a__] := 
   Total[Times @@ {Times @@ Most @ # / 2, nDet @@ List @@ Last @ #} & /@ 
    Rest[List @@ (2 #) & /@ List @@ (1 + TensorWedge[a] // TensorExpand)]]

which applies $\textrm{nDet}$ to the now factored and linearized input. This may seem rather convoluted, but nevertheless circumvents many issues that arose through other methods. Finally, to adress the initial problem with the Taylor series, it suffices to truncate the series at a desired term, make the $\$\textrm{assumption}$ that $x$ is a real, and use the $\textrm{Coefficient}$ function to get what we want!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.