double determinant(double[][] mat){
        double det=0;
        if(mat.length!=mat[0].length){
            JOptionPane.showMessageDialog(null, "Determinant lze počítat jen u čtvercových matic!", "Chyba výpočtu", JOptionPane.WARNING_MESSAGE);
            return Double.MAX_VALUE;
        }
        if(mat.length==1){
            return mat[0][0];
        }
        if(mat.length==2){
            return ((mat[0][0]*mat[1][1])-(mat[0][1]*mat[1][0]));
        }
        for (int i = 0; i < mat.length; i++) {//nahrazovaný sloupec původní matice
            double temp[][]=new double[mat.length-1][mat.length-1];
            for (int j = 0; j < mat.length; j++) {  //j-momentálně obsazovaný sloupec
                for (int k = 0; k < temp.length; k++) { //obsazení všech sloupců
                    if(j<i){
                        temp[k][j]=mat[k+1][j];
                    }else if(j>i){
                        temp[k][j-1]=mat[k+1][j];
                    }
                }
            }
            det+=mat[0][i]*(Math.pow((-1), i))*determinant(temp);
        }
        return det;
    }