Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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..] -- список всех доп. миноров
Advertisement
Add Comment
Please, Sign In to add comment