卷积(用母函数理解)

来源:互联网 发布:草莓音乐节 知乎 编辑:程序博客网 时间:2024/04/29 00:58

卷积(用母函数理解)

设置(1+x)^k*(1+x)^(n-k)=(1+x)^n

考察当k一定的时候,对于特定系数s,有:

C(k,0)*C(n-k,s-0)+C(k,1)*C(n-k,s-1)+...+C(k,s)*C(n-k,0)=C(n,s)

上面要注意如果s>k 的话,只需要求到C(k,k)就行了,上面的是在讨论s<k的情况。

 

 

 

下面写程序来证明:

n=20

(setq  globaln  20)

(setq  k  10)

(setq  s  8)

 

 

(defun pow (num count)

(if (or (> count 1) (eq  count  1) )

      (* num 

         (pow num 

              (- count 1) ) )

      1))

 

(defun slayer ( count)

(if (or (> count 1) (eq  count  1) )

      (* count 

         (slayer  

              (- count 1) ) )

      1))

 

 

(defun slayerex (num count)

(if (or (> count 1) (eq  count  1) )

      (* num 

         (slayerex 

              (- num  1) 

              (- count 1) ) )

      1))

 

(defun  com (num  count)

(/   (slayerex  num

                count)

     (slayer  count)))

 

 

(defun  expr  (k  label temps)

(if  (and (or (>  k  label) 

              (eq  k  label))

          (or (>  temps  label) 

              (eq  temps  label))) 

       (+  (expr  k 

                  (1+ label)

                  temps)

           (*  (com k 

                         label)

               (com (-  globaln

                             k)

                         (-  temps  

                             label))))

       0))

 

(defun  formula  (temps)

(com globaln  

     temps))

 

 

(defun  test (temps)

(if (< temps k)

  (progn 

       (print (expr k  0  temps))

       (print  'compare)

       (print (formula temps))       

       (test (+ temps 1)))

  (print 'over)))

 

[37]> (test  0)

 

1

COMPARE

1

20

COMPARE

20

190

COMPARE

190

1140

COMPARE

1140

4845

COMPARE

4845

15504

COMPARE

15504

38760

COMPARE

38760

77520

COMPARE

77520

125970

COMPARE

125970

167960

COMPARE

167960

OVER

OVER

注意这里考察的是在temps<k的基础上得出的结论。

 

原创粉丝点击