DAS_2024_1/zhimolostnova_anna_lab_6/alg/regular.go

31 lines
686 B
Go
Raw Normal View History

2024-10-22 20:30:00 +04:00
package alg
import (
"zhimolostnova_anna_lab_6/util"
)
// Determinant Функция для вычисления детерминанта матрицы
func Determinant(matrix [][]float64) float64 {
size := len(matrix)
if size == 1 {
return matrix[0][0]
}
if size == 2 {
return matrix[0][0]*matrix[1][1] - matrix[0][1]*matrix[1][0]
}
// Рекурсивное вычисление детерминанта по разложению по первой строке
det := 0.0
for j := 0; j < size; j++ {
subMatrix := util.GetMinor(matrix, j)
sign := 1
if j%2 != 0 {
sign = -1
}
det += float64(sign) * matrix[0][j] * Determinant(subMatrix)
}
return det
}