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

(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

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

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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?