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
>>>> 
>>> 
>>> 
>>> 
>> 
>> 
>> 
> 
> 

Reply via email to