首页 > 其他分享 >生成函数

生成函数

时间:2022-08-21 15:11:28浏览次数:70  
标签:infty frac 函数 sum 生成 2i

生成函数(母函数)

对于一个数列$A=${$a_0,a_1,a_2,a_3,...$},存在函数$$F(x)=\sum_{i=0}^{\infty} a_i*x^i$$则称函数$F(x)$为数列$A$的生成函数(母函数)。

需要注意的是 生成函数的实际值与自变量没有任何意义,我们在意的只是他的每一项系数与指数。

生成函数相乘(卷积)可以用来解决类似求相加得到某个数的方案数

例如现在有可重正整数集合$A,B$,要求把$A$中任意一个元素$a$和$B$中任意一个元素$b$相加得到一个结果,求得到每一个数的方案数。

设$numa[x],numb[x]$分别为$x$在$A,B$中的个数,则有

$$A(x)=\sum_{i=0}^{\infty} numa[i]*x^i , B(x)=\sum_{i=0}^{\infty} numb[i]*x^i$$

有以下公式:

$$A(x)*B(x)=(\sum_{i=0}^{\infty} numa[i]*x^i)*(\sum_{i=0}^{\infty} numb[i]*x^i)=\sum_{i=0}^{\infty} \sum_{j=0}^i numa[j]*numb[i-j]*x^i$$

所以将$A(x)$与$B(x)$利用NTT卷积,得到的多项式每一项系数即为答案。

泰勒展开

对于一个函数$f(x)$和在其定义域内的值$x_0$,若$f(x)$在$x_0$处存在任意阶导数(多项式就是典型的例子),则定义$f(x)$在$x_0$处的泰勒展开为

$$f(x)=\sum_{i=0}^{\infty} \frac{ f^{(i)}(x_0)(x-x_0)^i}{i!}$$

通常情况下,$x_0$可以取0,即

$$f(x)=\sum_{i=0}^{\infty} \frac{ f^{(i)}(0)x^i}{i!}$$

一些常用的泰勒展开:

$$e^x=\sum_{i=0}^{\infty} \frac{x^i}{i!}$$

$$e^{-x}=\sum_{i=0}^{\infty} (-1)^i\frac{x^i}{i!}$$

$$\frac{e^x+e^{-x}}{2}=\sum_{i=0}^{\infty} \frac{x^{2i}}{{2i}!}$$

$$\frac{e^x-e^{-x}}{2}=\sum_{i=0}^{\infty} \frac{x^{2i+1}}{(2i+1)!}$$

指数型生成函数

对于一些排列与组合的问题,我们引入指数型生成函数:

$$G(x)=\sum_{i=0}^{\infty} \frac{x^i}{i!}$$

这种函数同样满足以上的性质。

例:  给定四种颜色abcd给长度为N的格子染色,要求颜色ab个数必须为偶数,求方案数。

可以写出生成函数:

$$(\sum_{i=0}^{\infty} \frac{x^{2i}}{(2i)!})^2(\sum_{i=0}^{\infty} \frac{x^{i}}{i!})^2=(\frac{e^x+e^{-x}}{2})^2(e^x)^2=\frac{e^{4x}+2e^{2x}+1}{4}$$

$$=\frac{1}{4}+\frac{\sum_{i=0}^{\infty} 4^i\frac{x^{i}}{i!} + 2\sum_{i=0}^{\infty} 2^i\frac{x^{i}}{i!}}{4}=\frac{1}{4}+\sum_{i=0}^{\infty} \frac{4^i + 2^{i+1}}{4} \frac{x^{i}}{i!}$$

于是答案即为$\frac{4^N + 2^{N+1}}{4} $

标签:infty,frac,函数,sum,生成,2i
From: https://www.cnblogs.com/lnxxqz/p/16609923.html

相关文章

  • 函数式接口-常见函数式接口-Supplier接口
    常见函数式接口 Supplier接口:java.util.function.Supplier<T>接口仅包含一个无参的方法:Tget()。用来获取一个泛型参数指定类型的对象数据。Supplier<T>接口被称之为生......
  • gui guider生成的代码无人工修改移植esp32 实现拖曳式傻瓜生成嵌入式图形界面 及p
    既然有了gui guider这么方便的东西,肯定想移植到实际的esp32单片机上就不用手敲代码去写widget了main.cpp改造lvgl自带的arduino例子写的比较随性 东一坨西一坨的 ......
  • C语言里的函数 (学习笔记)
    看到CSDN里一篇详解,认为可用,抄录下来以备查询。(https://blog.csdn.net/qq_43469639/article/details/123765064)1、函数是什么在维基百科中,对于函数的定义是子程序。子程......
  • 函数式接口-使用Lambda作为参数和返回值
    使用Lambda作为参数和返回值如果抛开实现原理不说,Java中的Lambda表达式可以被当作是匿名内部类的替代品。如果方法的参数是一个函数式接口类型,那么就可以使用Lambda表达式......
  • sg函数
    在一张有向无环图中,对于每个点uu,设其所有能到的点的SG函数值集合为集合A,那么u的SG函数值为mex(A),记做SG(u)=mex(A)集合当中不存在的最小自然数只有一个棋子先......
  • 给 TypeScript 回调函数定义接口
    回调函数定义接口就目前我所知道的有两种方式,第一个就是直接声明一个interface,第二个就是直接在函数的回调函数参数写类型。(1)第一种:定义接口,回调函数直接使用接口interf......
  • Flink 内置函数
    转载:https://blog.csdn.net/u011707542/article/details/101013751?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST......
  • Vue/uniapp使用雪花算法生成随机ID
    安装snowflake-id插件npmisnowflake-id 页面导入雪花插件importSnowflakeIdfrom"snowflake-id"; 方法内使用雪花算法constsnowflake=newSnowflak......
  • python获取返回的json中的某个字段值的函数
    响应报文的json一般为字典或者是列表嵌套字段的形式     defget_json_value(a,k,l:list):""":parama:传入的数据:paramkey:获取哪个字段值......
  • C语言指针与函数相关编程实例练习题
    指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。本......