aydarbiktimirov

Matrix determinant

Jun 12th, 2011
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. exclude n l = take n l ++ drop (succ n) l -- возвращает список `l' без `n'-го элемента
  2.  
  3. minor n m = exclude 0 $ map (exclude n) m -- возвращает матрицу `m' без `n'-го столбца и первой строки
  4.  
  5. det [[]] = 0 -- определитель пустой матрицы 0
  6. det [[x]] = x -- определитель матрицы из одного элемента равен ему
  7. det m@(x:xs) = sum $ zipWith (*) (zipWith (*) x factors) $ map det minors -- суммировать все произведения (произведений элементов первой строки на [1,-1,1,-1..]) на определители доп. миноров
  8.     where   factors = concat $ repeat [1,-1] -- список вида [1,-1,1,-1..]
  9.         minors = map (flip minor m) [0..] -- список всех доп. миноров
Advertisement
Add Comment
Please, Sign In to add comment