2012/12/22  <ntoro...@racket-lang.org>:
> 1aebd17 Neil Toronto <ntoro...@racket-lang.org> 2012-12-21 22:59

> | * Specialized row reduction for determinants; removed option to not do
> |   partial pivoting (it's never necessary otherwise)

Partial pivoting is used to reduce round-off error. If the matrix consists
of integers or fraction, then due to exact arithmetic, there is no need
to do partial pivoting.

And it gets worse. It is subtle though. Consider matrices with (exact)
integer entries and Gauss elimination with partial pivoting, the result will be
a matrix with fractions. For each division a gcd computation is needed
to reduce the fraction. This hidden cost is can be large in some cases.

According to
    https://www.cs.drexel.edu/~wan/publications/thesis.pdf
page 33 Gauss elimation turns onto a O(n^4) algorithm.
(Geddes mentions the same issue in relation to Gaussian
elimination over a general ring).

Related:

The Sage documentation on LU factorization, imply that besides
no-pivoting, the first-non-zero-variant is useful too:
http://www.sagemath.org/doc/reference/sage/matrix/matrix2.html

In fact the partial pivoting is not used as the default.

/Jens Axel
_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

Reply via email to