Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 20th, 2012  |  syntax: None  |  size: 0.43 KB  |  hits: 9  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. %% CLOSED-FORM DERANGEMENT
  2. function d = derangements(n)
  3.   numerator = (ones(1,n+1)*-1).^(0:n);
  4.   denomerator = arrayfun(@factorial, 0:n);
  5.   factorial_terms = numerator ./ denomerator;
  6.   d = sum(factorial(n) * factorial_terms)
  7.  
  8. %% RECURSIVE DERANGEMENT
  9. function der = deraangements_rec(n)
  10.   der = NaN(1,n);
  11.   for m=0:n
  12.     d = factorial(m);
  13.     for k=1:m
  14.       d = d- nchoosek(m,k)*der(m-k+1);
  15.     end
  16.     der(m+1) = d;
  17.   end
  18.   der = sum(der);