Hi there, I'm putting this thread on [sage-devel] because it isn't a support question anymore. First, some background:
On Friday 05 September 2008, phil wrote on [sage-support]: > I have a matrix that is composed of multivariant polynomial > entries. I want to compute its determinant. The problem is that it > is very slow or runs out of memory. For example, > R.<x,y> = QQ[] > C = random_matrix(R,10,10) > Cdet = C.determinant() # this line takes a long time > > If you have more variables, it will run out of memory instead (on a 32 > bit installation). > > Is there a more efficient way to do this? Would using symbolic > expressions then coercing back to the polynomial ring be better? My reply was on [sage-support] too: > Here's a workaround: > > sage: R.<x,y> = QQ[] > sage: C = random_matrix(R,8,8) > sage: %time d = C.determinant() > CPU times: user 2.64 s, sys: 0.00 s, total: 2.65 s > Wall time: 2.67 s > > sage: %time d2 = R(C._singular_().det()) > CPU times: user 0.04 s, sys: 0.01 s, total: 0.05 s > Wall time: 0.15 s > > sage: d2 == d > True and eventually I provided a patch which is going to be in 3.1.2. I also wrote on [sage-support]: > One thing that really puzzles me is that Magma doesn't seem to scale well > w.r.t. to this particular benchmark. > > sage: R.<x,y> = QQ[] > sage: C = random_matrix(R,10,10) > > sage: %time d = C.determinant() # going to be in 3.1.2 > CPU times: user 0.34 s, sys: 0.00 s, total: 0.34 s > Wall time: 0.34 s > > sage: CM = magma(C) > sage: t = magma.cputime(); d2 = CM.Determinant(); magma.cputime(t) > 0.59999999999999998 > > sage: C = random_matrix(R,14,14) > sage: %time d = C.determinant() > CPU times: user 2.58 s, sys: 0.00 s, total: 2.58 s > Wall time: 2.60 s > sage: CM = magma(C) > sage: t = magma.cputime(); d2 = CM.Determinant(); magma.cputime(t) > 27.84 # note that Magma also eats lots and lots of memory > > sage: C = random_matrix(R,15,15) > sage: %time d = C.determinant() > CPU times: user 4.49 s, sys: 0.00 s, total: 4.49 s > Wall time: 4.55 s > sage: CM = magma(C) > sage: t = magma.cputime(); d2 = CM.Determinant(); magma.cputime(t) > 68.590000000000003 > > sage: C = random_matrix(R,16,16) > sage: %time d = C.determinant() > CPU times: user 6.98 s, sys: 0.00 s, total: 6.98 s > Wall time: 7.00 s > sage: CM = magma(C) > sage: t = magma.cputime(); d2 = CM.Determinant(); magma.cputime(t) > 168.41 > sage: magma(d) == d2 > True > > sage: R.<x,y> = GF(32003)[] > sage: C = random_matrix(R,16,16) > sage: %time d = C.determinant() > CPU times: user 0.78 s, sys: 0.00 s, total: 0.78 s > Wall time: 0.92 s > sage: CM = magma(C) > sage: t = magma.cputime(); d2 = CM.Determinant(); magma.cputime(t) > 64.920000000000002 > sage: magma(d) == d2 > True > > So I wonder if Singular's implementations are just really good or if Magma > is just particularly bad for this particular benchmark. I have no feeling > how fast these things should be. an finally on Tuesday 09 September 2008, phil wrote on [sage-support] > Thanks for the tip. After making that change, Sage no longer crashes > with an out of memory error on 64 bit Debian. However, I may need to > make additional changes. The computation is still going after 3 > days. Memory usage is slowly increasing and is now at 6.4 GB. > > The entries of the matrix are composed of coefficients extracted from > some matrix operations on 4 3x3 matrices so there are 38 variables in > the polynomial ring. Specifically, if anyone is wondering, I am > trying to compute left hand side of equation 7 in "Five point motion > estimation made easy" by Li and Hartley (http://users.rsise.anu.edu.au/ > ~hongdong/new5pt_cameraREady_ver_1.pdf). > The solver given on Li's webpage using Maple within Matlab to compute > the determinant at runtime after the coefficients are given as numbers > in the problem. I want to pre-compute the determinant with the > coefficients specified by constants. That way at run time all you > need to do is evaluate the expression replacing the constants with the > numerical values. Thoughts? Martin -- name: Martin Albrecht _pgp: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x8EF0DC99 _www: http://www.informatik.uni-bremen.de/~malb _jab: [EMAIL PROTECTED] --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---