Is there a simple way to rewrite a rectangular $m \times n$ matrix in terms of its maximal minors?
For a few small cases, $(m,n)$ = $(2,3),(2,4),(3,4)$ I can brute force by explicitly solving:
m = 2; n = 3;
mat = Array[c, {m, n}];
subs = Subsets[Range[n], {m}]
dets = det[Sequence @@ #] - Det[Transpose[mat][[#]]] & /@ subs;
nzs = det[Sequence @@ #] != 0 & /@ subs;
eqns = And[And @@ (# == 0 & /@ dets), And @@ nzs];
red = Reduce[eqns, Flatten[mat]];
final = mat //. {ToRules[red]}[[1]] // Together;
Simplify[Minors[final, m]]
In the (2,3) case:
Minors[final, m]
(* {{det[1, 2], det[1, 3], det[2, 3]}} *)
In the (3,4) case:
Minors[final, m]
(* {{det[1, 2, 3], det[1, 2, 4], det[1, 3, 4], det[2, 3, 4]}} *)
In the (2,4) case:
Minors[final, m]
(* {{(-det[1, 4] det[2, 3] + det[1, 3] det[2, 4])/det[3, 4], det[1, 3], det[1, 4], det[2, 3], det[2, 4], det[3, 4]}} *)
In this last case the weird first entry is secretly det[1,2]
as expected:
Simplify[Minors[final, m][[1, 1]] //. det[i_, j_] :> Det[Transpose[mat][[{i, j}]]]]
(*-c[1, 2] c[2, 1] + c[1, 1] c[2, 2]*)
I don't mind that det[1,2]
doesn't show up explicitly, I just want the matrix rexpressed in terms of as many det[_,_]
's as necessary.
Using Reduce
quickly becomes intractable. I'm looking for an answer that can easily get up to $m \sim 5$, $n \sim 10$.
Edit
I'm not wedded to using Reduce
or explicitly solving. I toyed around with the ideas of:
1) Trying to match each element of the matrix to an explicit determinant.
2) Using PolynomialReduce
to write c[_,_]
's in terms of the explicit determinants, but the problem isn't quite amenable to that since the c[_,_]
's would necessarily be rational in det[_,_]
's unfixed c[_,_]
's.
Subsets[Range[n], {m}]
twice. $\endgroup$Reduce
is. $\endgroup$Reduce[]
is indeed the bigger problem here. $\endgroup$dMat=Array[d,{m,n}]
, I want to express the $2m \times 2m$ maximal minors ofcdMAt=Join[mat,dMat]
in terms of the minors ofmat
. $\endgroup$