01/10/2018, 17:25

Tính định thức ma trận trong java

nhờ a/c kiểm tra giúp e. E có đoạn code để tính định thức ma trận bằng cách đưa về ma trận tam giác trên như này:

  public static void DinhThuc(int A[][], int n){
        int  temp = 1;
        while(temp<n){
            for(int j = 0; j < temp; j++){      //so phan tu duoc dua ve 0
                for(int k = n-1; k >= 0; k--){
                    A[temp][k] = A[temp][k]-((A[temp][j]*A[j][k])/A[j][j]); //đoạn xử lí 
                }
            }
            temp++;
        }
        int det = 1;
        for(int i = 0; i < n ;i++) det *= A[i][i];
        
        System.out.println("Gia tri dinh thuc:"+det);
  }

nhưng nó báo lỗi ở đoạn xử lí như sau ạ


ma trận test là:

 5  4  2  1
 2  3  1 -2
-5 -7 -3  9
 1 -2 -1  4

(dòng 119 là dòng xử lí ạ)
ai cho e biết lí do với ạ e nhẩm thì thấy đúng mà k hiểu sao nó lại lỗi. e cảm ơn

Gió viết 19:38 ngày 01/10/2018

Có 2 vấn đề bạn cần phải giải quyết:

  • Việc chia số nguyên sẽ không cho kết quả chính xác
  • A[j][j] = 0 thì sao? Lúc đó phải tìm dòng k sao cho A[k][j] !=0 để swap cho A[j][j]: tránh việc chia cho 0. Nếu không tìm được k => định thức = 0, nếu tìm đươc, swap(A[j],A[k]) định thức đổi dấu
vu van thinh viết 19:40 ngày 01/10/2018

e cảm ơn ạ e hiểu rồi

Bài liên quan
0