Sorry for the confusion. PETSc stores the inverse of the diagonal entries (so in the triangular solves it does not need to do divides). Note that 1/26 = .0384615 so all you need to do is invert your result and you'll get the determinant.
Barry On Aug 6, 2010, at 9:00 AM, ?????? ???? (Nemanja Ilic) wrote: > On Friday 06 August 2010 12:55:19 ?????? ???? (Nemanja Ilic) wrote: >> Hello, >> >> For the matrix: 2 -2 0 >> -1 5 1 >> 3 4 5 >> I get determinant = 0.0384615. The correct answer is 26. >> Maybe I am doing LU Factorization wrong? >> This is how I do LU Factoring: >> ierr = MatGetOrdering(Ap, MATORDERING_1WD, &perm, &iperm); >> CHKERRQ(ierr); >> ierr = MatFactorInfoInitialize(&info); CHKERRQ(ierr); >> ierr = MatLUFactor(Ap, perm, iperm, &info); CHKERRQ(ierr); >> >> This is the correct LU upper factotrization: 3.000 4.000 5.000 >> 0.000 6.333 >> 2.667 >> 0.000 0.000 >> -1.368 >> This is what I get: row 0: (0, 0.5) (1, -2) (2, 0) >> row 1: (0, -0.5) (1, 0.25) (2, 1) >> row 2: (0, 1.5) (1, 1.75) (2, 0.307692) >> >> Thank you, >> regards, >> Nemanja >> >> >> On Wednesday 04 August 2010 23:19:37 you wrote: >>> On Wed, Aug 4, 2010 at 12:18 PM, ?????? ???? (Nemanja Ilic) < >>> nemanja.ilic.81 at gmail.com> wrote: >>> >>>> Hello, >>>> >>>> Thank you for you previous help. I wrote the code for calculating matrix >>>> determinant and inverse matrix and they don't break anymore. Still I have >>>> problems. I try to find determinant in the following way: First get LU >>>> factor of a matrix and then multiply it's diagonal elements. I don't get >>>> correct results. Could you tell me wheather the problem >>> >>> >>> That description does not help. What do you get? What is the correct answer? >>> Did you try it on a small >>> problem that you can factor by hand? >>> >>> >>>> is maybe in info structure? What information do you need to be able to help >>>> me? I find the inverse matrix in the following way: I create linear problem >>>> A * X = B where A is the input matrix, X is the inverse matrix, and B is >>>> identity matrix. I solve it using MatMatSolve. Could you possibly help me >>>> and what info do you need? >>>> >>> >>> That should work. >>> >>> Matt >>> >>> >>>> Thank you in advance, >>>> Best regards, >>>> Nemanja >>>> >>> >>> >>> >> >> >> > >
