我开发了下面的代码来执行高斯消除,以评估矩阵的行列式:
program det3
REAL, DIMENSION(3,3) :: matriz = RESHAPE([1,2,3,-7,13,5,4,-21,8],[3,3])
REAL :: temp, m
INTEGER :: n = 3
INTEGER :: i, j, k
INTEGER :: fator_cor = 1
REAL :: det
DO k=1, n-1
DO i = k+1, n
IF (matriz(k,k) == 0) THEN
linha_aux = matriz(k,0:n)
matriz(k,0:n)= matriz(k+1, 0:n)
matriz(k+1,0:n)= linha_aux
fator_cor = fator_cor*(-1)
END IF
END DO
END DO
DO j = k+1, n
m = matriz(j,k)/matriz(k,k)
DO i = k+1, n
matriz(j,i) = matriz(j,i) - m*matriz(k,i)
END DO
END DO
det = l
DO i = 1, n
det = det * matriz(i,i)
det = det*fator_cor
END DO
WRITE (*,*) det
end program
我正在尝试将其应用于开头声明的 3x3 矩阵,但出现错误:
“错误:在 (1) 处的分配中不兼容的 0 和 1 等级”linha_aux = matriz(k,0:n)”
我对fortran有点陌生,所以我不确定它指的是什么。我不确定是否应该声明 linha_aux ,如果是的话,是否应该将其声明为可分配数组。任何帮助是极大的赞赏。