数学建模社区-数学中国

标题: MATLAB中常用的排列、组合与阶乘等函数 [打印本页]

作者: parkshinyang    时间: 2012-4-15 17:55
标题: MATLAB中常用的排列、组合与阶乘等函数
闲聊之余,整理了几个常用的排列、组合与阶乘等函数。希望对大家有用!
1、combntns(x,m)
列举出从n个元素中取出m个元素的组合。
其中,x是含有n个元素的向量。 combos = combntns(1:5,3)

combos =

     1     2     3

     1     2     4

     1     2     5

     1     3     4

     1     3     5

     1     4     5

     2     3     4

     2     3     5

     2     4     5

     3     4     5
复制代码2、perms(x)
给出向量x的所有排列。 s=perms(2:2:6)

s =



     6     4     2

     6     2     4

     4     6     2

     4     2     6

     2     4     6

     2     6     4
复制代码3、nchoosek(n,m)
从n各元素中取m个元素的所有组合数。
   nchoosek(x,m)
从向量x中取m个元素的组合 s=nchoosek(2:2:10,4)



s =



     2     4     6     8

     2     4     6    10

     2     4     8    10

     2     6     8    10

     4     6     8    10
复制代码4、factorial(n)
求n的阶乘。 s=factorial(4)



s =



    24
复制代码5、prod(n:m)      %求排列数:m*(m-1)*(m-2)*…*(n+1)*n
     prod(1:2:2n-1)或prod(2:2:2n)      %求(2n-1)!!或(2n)!!
     prod(A)   %对矩阵A的各列求积
     prod(A,dim)   %dim=1(默认);dim=2,对矩阵A的各行求积(等价于(prod(A'))') >> M = magic(3)



M =



     8     1     6

     3     5     7

     4     9     2



>> prod(M,2)



ans =



    48

   105

    72



>> prod(M')'



ans =



    48

   105

    72
复制代码6、cumprod(n:m)
输出一个向量[n n*(n+1) n(n+1)(n+2) … n(n+1)(n+2)…(m-1)m]
cumprod(A)
cumprod(A,dim) cumprod(1:5)

ans =  

     1  2  6  24  120



A = [1 2 3; 4 5 6];



cumprod(A)

ans =

     1     2     3

     4    10    18



cumprod(A,2)

ans =

     1     2     6

     4    20   120
复制代码7、gamma(n)
求n!
gamma(n+1) = n! = prod(1:n)
8、v='n!';
   vpa(v) >> v='5!';

>> vpa(v)



ans =



120.
复制代码





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5