3
$\begingroup$

The cofactor formula for computing the determinant of a matrix is applicable when elements of the matrix are from a commutative ring. However, the complexity of this method is extremely high and I believe there should be a better solution.

If it is a matrix over a PID, I believe the method of elimination like Smith normal form may be applicable. But if have a more general ring which is not a PID, are there known methods to do something similar?

  • 0
    In a domain you can compute in the fraction field and use the usual algorithm of triangularization. This will give you the determinant a a quotient of elements of your ring...2012-08-09
  • 0
    Smith normal form works slightly more generally than in PIDs; see [this answer](http://math.stackexchange.com/a/170802/6622).2012-08-09
  • 0
    @MarianoSuárez-Alvarez Thank you for quick response. I do want this to work for rings with zero divisors though.2012-08-10
  • 0
    @joriki It seems like an elementary divisor ring is (roughly) a ring in which Smith normal form works. I am expecting an alternative of Smith normal form when we cannot use Smith normal form. Anyway, thank you for showing me that link.2012-08-10
  • 1
    @Tunococ: OK, here's another comment that may well turn out not to be useful :-) If you have an efficient way of finding out whether and how a certain element can be written as a linear combination of certain others, you could try to produce as many zeros as you can and then use the cofactor expansion.2012-08-10
  • 0
    I don't know the answer to this particular question, but there is a general phenomenon in algebraic geometry that computational complexity of certain algebraic problems is (inversely) related to the "niceness" of an associated geometric object. The presence of zero divisors definitely complicates the geometry. So I wouldn't find it completely surprising if cofactor expansion really is the most efficient method for an *arbitrary* commutative ring, without any additional assumptions.2012-08-10
  • 0
    @joriki That's exactly what I'm trying to do. I'm just hoping there could be a systematic way to do so :)2012-08-16

0 Answers 0