aydarbiktimirov icon

Matrix determinant

aydarbiktimirov | PRO | 06/12/11 10:15:25 PM UTC | 0 ⭐ | 426 👁️ | Never ⏰ | []
Haskell |

870 B

|

None

|

0 👍

/

0 👎

exclude n l = take n l ++ drop (succ n) l -- возвращает список `l' без `n'-го элемента
 
minor n m = exclude 0 $ map (exclude n) m -- возвращает матрицу `m' без `n'-го столбца и первой строки
 
det [[]] = 0 -- определитель пустой матрицы 0
det [[x]] = x -- определитель матрицы из одного элемента равен ему
det m@(x:xs) = sum $ zipWith (*) (zipWith (*) x factors) $ map det minors -- суммировать все произведения (произведений элементов первой строки на [1,-1,1,-1..]) на определители доп. миноров
    where   factors = concat $ repeat [1,-1] -- список вида [1,-1,1,-1..]
        minors = map (flip minor m) [0..] -- список всех доп. миноров

Comments