浅谈生成函数和多项式
来源:互联网 发布:2017年最污的网络热词 编辑:程序博客网 时间:2024/05/21 06:41
我们先来看这样一个生活问题:
你手头有1个1元,一个2元,一个3元(假币!!)和一个4元(这是哪个国家的题啊....),之后你会很好奇你能用这些钱组合成多少种数目。
很小学的问题,只要我们稍微那笔枚举一下就能知道,我们能得到0-10元之间所有的钱数。
现在,我们用函数去表示一下每个钱,1元就表示为1+x,2元表示为1+x^2,3元表示为1+x^3,4元表示为1+x^4,也就是说,我用x的指数表示我的钱数。
so....我们将这四个式子相乘
(1+x)(1+x^2)(1+x^3)(1+x^4)
=(1+x+x^2+x^3)(1+x3+x^4+x^7)
=1+x+x^2+2x^3+2x^4+2x^5+2x^6+2x^7+x^8+x^9+x^10
可以看出来,x的指数由0到10全部都有,说明能凑出0-10元间所有的钱数,而前面的系数,就是你凑出该钱数的方案数。
这是为什么呢?
我们是用指数作为了钱数,而指数乘积是相加,所以,我3元的x^3和4元的x^4相乘也就是这两个钱凑在了一起x^7表示的7元,而多项式的系数则表示你凑成的x^n有多少项,也就是多少种方案,如果这个不好理解,我们举个简单的例子。
你有一块钱,还有1块钱(注意,这两个一块是不一样的哦~),你能凑成yi块的方案数,很明显是2吧,我们用函数方法做一下:
(1+x)(1+x)=1 + x + x + x^2 = 1 + 2x + x^2,x的系数是2。
这就是生成函数。
我们来看一道类似的问题
小明去买一个6元的切糕(糕富帅....)他手头有1元,2元,3元(肯定是国外的小明了),每个钱的张数无限(果然是糕富帅)....不过,小明为了低调些,所以他要正好拿6元钱出门,于是,糕富帅就好奇了,他有多少种方案呢???
结合上面的问题,我们知道1元,因为无数个,所以我们能得到2*1元,3*1元,4*1元,.....于是,1元所能表示的不再单单是1+x,而是1+x+x^2+x^3+x^4......,而2元只能往上表示4元,6元,8元.....所以是1+x^2+x^4+x^6.......同理,3元为1+x^3+x^6+x^9.....
之后我们将三个式子相乘
(1+x+x^2+x^3+x^4......)(1+x^2+x^4+x^6.......)(1+x^3+x^6+x^9.....)
=1+x+2x^2+3x^3+4x^4+5x^5+7x^6........
因为x^6的系数是7,所以我们知道方案数是7了,不过.....小明突然意识到他要买的是切糕而不是蛋糕,6元是不够的,要12元才行....
显然x^12的系数如果将式子展开着实让人累死.....于是,我们引入下面的话题,多项式。
首先,我们纵观上述的问题,发现一个很酱油的变量....x,你x存在的目的就是为了构造一个函数,好让指数能有地方放,而你x取值范围什么对生成函数没有半毛钱影响......
所以,我们不妨假设x是趋近于0的,为什么?因为x趋近于0有很多性质啊,你不知道?去重修高数吧。
因为x趋近于0,我们有如下性质
为什么我们要努力变成这样呢?因为我们有个伟人叫牛顿,他发明了叫二项式的东西,之后.....
这样,我们就能求解系数问题了。
让我们来个栗子:
求(x^2+x^3+x^4+x^5+x^6....)^5中x^16的系数
(x^2+x^3+x^4+x^5+x^6....)^5
=[x^2(1+x+x^2+x^3.....)]^5
=x^10(1+x+x^2+x^3....)^5
=x^10/(1-x)^5
所以,我们要求(1-x)^-5中x^(16-10)=x^6的系数
根据(4)得出210.....
于是,我们再看个栗子....
(1+x+x^2+x^3....)(1+x^2+x^4+x^6.....)的x^15系数
(1+x+x^2+x^3....)(1+x^2+x^4+x^6.....)
=1/(1-x)(1-x^2) (2)
=[1/2(1-x)^2]+[1/4(1-x)]+[1/4(1+x)] (3)
推出(3)后,我们根据公式,可以导出每项的系数,之后因为是+相连,所以最后就是系数和了。
而最难的是(2)->(3)怎么做的呢?
如果你数学感觉非常好,那考试绝大部分能看出来的。
如果不好.....
请看这里:
(此处转自Matrix67的BLOG,连接:http://www.matrix67.com/blog/archives/120)
现在的任务是要把x/(1-x-x^2)还原成通项公式。这不是我们刚才的1/(1-x)^n的形式,我们要把它变成这种形式。我们发现,1-x-x^2=[1-(1-√5)x/2]*[1-(1+√5)x/2] ((1-√5)/2和(1+√5)/2是怎么算出来的?显然它们应该是x^2-x-1=0的两个根)。那么x/(1-x-x^2)一定能表示成?/[1-(1-√5)x/2]+?/[1-(1+√5)x/2]的形式(再次抱歉,输入数学公式很麻烦,将就看吧)。这是一定可以的,因为适当的?的取值可以让两个分式通分以后分子加起来恰好为一个x。?取值应该是多少呢?假设前面一个?是c1,后面那个是c2,那么通分以后分子为c1*[1-(1+√5)x/2]+c2*[1-(1-√5)x/2],它恰好等于x。我们得到这样两个式子:常数项c1+c2=0,以及一次项-c1*(1+√5)/2-c2*(1-√5)/2=1。这两个式子足够我们解出c1和c2的准确值。
根据Matrix67提供的思路,我们可以将任意多项式化为通项公式,之后求系数......
显然,计算量大的惊人.....
于是,我们这样看一下
求这个式子的系数.....
我们这样来看:
于是,我们根据高数里面的数列知识得出:
可以推出:
同理:
于是.....
D是我们求的系数,而我们已知A都是1,(k在0到正无穷),而当k小于0时,则A,B,C,D的值全为0,因为不存在该项,所以系数为0,于是我们根据这个递推关系式,就能求得D,也就是系数的解。
- 浅谈生成函数和多项式
- 【BZOJ3625】【CF438E】小朋友和二叉树 NTT 生成函数 多项式开根 多项式求逆
- MATLAB多项式函数拟合和曲线拟合
- [BZOJ2259]异化多肽(生成函数+NTT+多项式求逆)
- [生成函数][NTT][多项式求逆]BZOJ 3456: 城市规划
- 生成随机的多项式
- CRC 生成多项式
- CRC 生成多项式
- 二次“素数生成”多项式
- malloc 和 free函数浅谈
- 浅谈attr() 和prop() 函数
- realpath和access函数浅谈
- 浅谈函数重载和模板函数
- 浅谈构造函数和析构函数
- 厄密多项式函数
- 【XSY2612】Comb Avoiding Trees 生成函数 多项式求逆 矩阵快速幂
- 浅谈递推与生成函数的应用
- 用C语言实现多项式合并(函数声明和主函数)
- 黑马程序员--html和css基础
- Ubuntu下安装最新版的NodeJS的方法
- Storm基本概念
- SQLPutData()—Send Data in Segments
- 寒假必看
- 浅谈生成函数和多项式
- 单例
- 旋转卡壳小结
- Java_TCPIP_Socket编程(doc)下载
- 他隐藏的最深!!白夜行中的秋吉雄一!!!
- 转自沈乐杨的新浪博客----秋吉雄一
- 19. Notes客户机中的校验
- office 2010 安装出错
- javascript 实例:评分系统