第16章 母函数

news2024/11/16 6:04:42

第16章 母函数

母函数是离散数学领域最意外、最有用的发明之一。粗略来讲,母函数将序列问题转化为代数问题。

组合数学中常常出现普通型母函数、指数型母函数、狄利克雷型母函数

16.1 无穷级数

通俗地说,母函数F(x)就是无穷级数

image-20221202133450016

符号[ x n x^n xn]F(x)表示母函数F(x)中 x n x^n xn的系数,即[ x n x^n xn]F(x):= f n f_n fn

将数列 f 0 , f 1 , . . . , f n f_0,f_1,..., f_n f0,f1,...,fn中的元素看成母函数的各项系数,分析这个数列的行为。我们发现,将序列看成母函数,很容易解释计数、递归定义以及程序设计中的复杂序列问题。

即便系数序列很简单,母函数也能够提供有价值的见解。例如,G(x)表示无穷序列1,1,…的母函数,即为几何级数。

image-20221202140408331

我们采用母函数推导G(x)的简化公式。

image-20221202140441656

解得

image-20221202140458318

image-20221202140519377

继续采用这个方法,可以得到以下漂亮的等式

image-20221202141438984

具体来说,即

image-20221202141459011

求解得

image-20221202141520011

变形为

image-20221202141549852

16.1.1 不收敛性

等式16.3和16.5仅当|x|<1时成立,因为它们的母函数在|x|≥1时发散。在母函数中,我们将无穷级数看作代数对象。诸如等式16.3和16.5定义的数理恒等式适用于纯代数理论。实际上,任意时候(x= 0处除外)都不收敛的无穷级数确定的母函数十分有用。我们将在本章最

16.2使用母函数计数

母函数尤其适用于表达和计算选择n个事物有多少种方法时。例如,假定有两种口味的甜甜圈,巧克力味和原味。设 d n d_n dn为挑选n个甜甜圈的方法个数,那么 d n d_n dn=n+1,即共有n+1种甜甜圈选择方法。于是我们定义一个母函数D(x)表示甜甜圈选择数,其中系数 x n x^n xn = d n d_n dn。可得

image-20221202142430567

16.2.1 苹果和香蕉

假定我们有两件物品,比如苹果和香蕉,还有一些关于选择物品的约束条件。假设选择n个苹果共有 a n a_n an种选法,而选择n个香蕉共有 b n b_n bn种选法。那么对苹果计数的母函数就可以表示成

image-20221202143809013

同理,香蕉对应的母函数则表示为

image-20221202143824931

那么,苹果和香蕉混合在一起总共选择n个水果,有多少种选择呢?

n个苹果香蕉混合选择的数目等于

image-20221202144053098

16.2.2 母函数的积

表达式16.7等于乘积A(x)B(x)中 x n x^n xn的系数。

法则(乘积)

image-20221202144210252

乘积A(x)·B(x)的系数序列称为序列( a 0 , a 1 , a 2 a_0,a_1,a_2 a0,a1,a2,.…)和( b 0 , b 1 , b 2 b_0,b_1,b_2 b0,b1,b2,…)的卷积。

乘积法则从代数上证明了无论是否收敛,几何级数都等于1/(1-x)这一事实。

特别地,常数1描述了如下母函数

image-20221202153111038

同理,1-x描述了以下母函数

image-20221202153125400

由乘积法则可得:

image-20221202153215282

法则(常量):对于任一常量c和母函数F(x),都有

image-20221202153235862

c = c x 0 + 0 x 1 + 0 x 2 + 0 x 3 + . . . . . . c = cx^0+0x^1+0x^2+0x^3+...... c=cx0+0x1+0x2+0x3+......

16.2.3 卷积法则

法则(卷积):令A(x)表示来自集合KaTeX parse error: Undefined control sequence: \cal at position 1: \̲c̲a̲l̲{A}的母函数,B(x)表示来自集合KaTeX parse error: Undefined control sequence: \cal at position 1: \̲c̲a̲l̲{B}的母函数,并且集合KaTeX parse error: Undefined control sequence: \cal at position 1: \̲c̲a̲l̲{A}与集合KaTeX parse error: Undefined control sequence: \cal at position 1: \̲c̲a̲l̲{B}不存在交集。故从并集KaTeX parse error: Undefined control sequence: \cal at position 1: \̲c̲a̲l̲{A} ∪ \cup KaTeX parse error: Undefined control sequence: \cal at position 1: \̲c̲a̲l̲{B}中选择元素项构成的母函数即为乘积A(x)·B(x)。

16.2.4 利用卷积法则数甜甜圈

假设有两种巧克力和原味的甜甜圈可供选择。如果n个都选择巧克力,只有一种办法,母函数为1/(1-x)。同理,n个都选择原味,情况也一样。因此,根据卷积法则,从巧克力和原味两种口味的甜甜圈中选择n个甜甜圈,其选择方法数目的母函数为

image-20221202160039885

我们将利用卷积法则选择两种口味的问题推广至一般情况即选择k种口味。当有k种口味的甜甜圈可供选择时,相应的母函数为 1 / ( 1 一 x ) k 1/(1一x)^k 1/(1x)k。我们推导出从k种口味的甜甜圈中选择n个,选择方法数对应的母函数。

image-20221202160322674

我们也可以用代数的方法去推导出 1 / ( 1 − x ) k 1/(1-x)^k 1/(1x)k的系数

定理16.2.1(麦克劳林定理)

image-20221202171239660

由以上的定理可以计算 1 / ( 1 − x ) k 1/(1-x)^k 1/(1x)k的第n个系数

image-20221202171344538

16.2.5 卷积法则中的二项式定理

首先考虑单元素集合{ a 1 a_1 a1}。从该集合选择n个不同的元素对应的母函数为1+x。根据卷积法则,从集合{ a 1 , a 2 , . . . , a m a_1, a_2,...,a_m a1,a2,...,am}选择一个n-元素子集对应的母函数,等于从这m个单元素集合分别选择元素的母函数的乘积 ( 1 + x ) m (1+x)^m (1+x)m

从m个元素中选择n个元素的方法数为 ( m n ) \dbinom{m}{n} (nm),所以

image-20221202172913195

由此,我们可以看出母函数具有以下优势:

母函数能够通过代数手段解决计数问题,反之,使用计数技术同样也能够推导代数等式。

16.2.6一个荒唐的计数问题

在以下约束条件下,将袋子装满n个水果有多少种方式?

image-20221202173846268

首先,构造一个选择苹果的母函数。

image-20221202173907962

同理,选择香蕉的母函数是:

image-20221202173925489

橘子的母函数为:

image-20221202181114197

梨的母函数为:

image-20221202181144322

根据卷积法则,从这4类水果得出的母函数为:

image-20221202181200564

这个例子乍看起来很复杂,刚好说明了母函数解决计数问题的优势。

16.3 部分分式

在16.2.6小节中,我们最后把母函数化简成了 1 / ( 1 − x ) 2 1/(1-x)^2 1/(1x)2,我们可以直接确定其幂级数的系数。但是对于其他一般性的问题,我们如何去求一个母函数幂级数的系数呢?

部分分式方法的基本思想是多项式的商能够表示为幂级数系数项之和。例如,当分母多项式存在不同的非零根,那么部分分式方法依赖于如下引理。

引理16.3.1:令P(x)表示小于n次的多项式, a 1 , . . . , a n a_1,...,a_n a1,...,an表示各不相等的非零数字,于是存在常量 c 1 , . . . , c n c_1,...,c_n c1,...,cn使得如下等式成立

image-20221203103322267

例子:

image-20221203103356352

我们利用解二次方程的方法来确定分母 1 − x − x 2 1-x -x^2 1xx2的根 r 1 r_1 r1 r 2 r_2 r2

image-20221203103515483

1 − x − x 2 = − ( x − r 1 ) ( x − r 2 ) = − r 1 r 2 ( 1 − x / r 1 ) ( 1 − x / r 2 ) 1-x-x^2 = -(x-r_1)(x-r_2) = -r_1r_2(1-x/r_1)(1-x/r_2) 1xx2=(xr1)(xr2)=r1r2(1x/r1)(1x/r2)

经过简单的代数处理,可得

image-20221203103754619

接下来我们确定常量c1,c2满足:

image-20221203103900966

通过带值的方法可求 c 1 , c 2 c_1,c_2 c1c2的值

image-20221203104004825

其中每一项都有一个简单的幂级数,其几何和公式为:

image-20221203104216272

image-20221203104226486

将以上幂级数代入母函数:

image-20221203104316441

所以,

image-20221203104336560

16.3.1 带有重根的部分分式

由引理16.3.1推导分母多项式存在带有m个非零重根的情况,即将商扩展为以下项的和

image-20221203104701112

其中α是根的倒数且k≤m。这个项的系数公式符合“甜甜圈公式”(式16.10 ),即

image-20221203104733849

16.4求解线性递推

16.4.1斐波那契数的母函数

斐波那契数 f 0 , f 1 . . . . , f n , . . . f_0,f_1.... ,f_n,... f0,f1....,fn,...的递归定义如下:

image-20221203105205387

令F(x)为斐波那契数的母函数,即

image-20221203105230421

推导过程如下:

image-20221203105254520

故:

image-20221203105312414

因此,以下公式叫做比内公式

image-20221203105327589

这个公式十分有用。例如,比内公式提供重复平方法计算斐波那契数,这比反复应用递推有效得多。此外,从比内公式可以明确看出斐波那契数呈指数级增长。

16.4.2 汉诺塔

相传,汉诺神庙有3根柱子和64个大小不同的金盘,每个盘子中间有一个洞可以套在柱子上。起初,64个盘子全部套在第一根柱子上,最小的盘子在顶端、最大的盘子在底端按顺序排放,如图16.1所示。

image-20221203113900013

搬运规则如下:

image-20221203113916071

递归方案:

经试验验证可知, t 1 = 1 , t 2 = 3 t_1= 1,t_2= 3 t1=1,t2=3

递归过程有3个阶段,

image-20221203114603180

**第一阶段:**将上方的n -1个盘子从第一根柱子移到第二根柱子,这个问题是n -1个盘子的移动问题。这一过程需要 t n − 1 t_{n-1} tn1个步骤。

**第二阶段:**将最大的盘子从第一根柱子移到第三根柱子。这一过程仅需要1步就可完成。

**第三阶段:**将第二根柱子上的n - 1个盘子全部移到第三根柱子上。这一过程同样需要 t n − 1 t_{n-1} tn1个步骤。

由此可知,递推公式为: t n = 2 t n − 1 + 1 t_n = 2t_{n-1}+1 tn=2tn1+1

求解递推

image-20221203115014915

类似之前的斐波那契数递推推导,可得

image-20221203115030049

image-20221203115048061

最后可求得:

image-20221203115103518

最后,我们可以得到移动n个盘子所需步数的简单公式:

image-20221203115124933

16.4.3 求解一般线性递推

形如

image-20221203115949959

其中 c i c_i ci ∈ C,称为d阶线性非齐次递推方程,其中h(n)为非齐次项。

上述方法可以用来解决线性非齐次递推问题。

16.5 形式幂级数

16.5.1发散母函数

令F(x)为n!的母函数,即

image-20221203135244350

当x ≠ 0时F(x)发散,该母函数仅在x=0处收敛。

令H(x)为n ·n!的母函数,即

image-20221203140352051

仅当x ≠ 0时H(x)发散。

什么是形式幂级数:

形式幂级数是一个数学中的抽象概念,是从幂级数中抽离出来的代数对象。不像幂级数一般要求研究是否收敛和是否有确定的取值。感兴趣的是系数序列。

image-20221203151000514

形如A(x)的幂级数,我们称以x为未定元的一个形式幂级数。

16.5.2幂级数环

image-20221203151316083

我们仅考虑系数序列,假设:

image-20221203152924755

定义系列的和、序列相乘如下

image-20221203152953797

image-20221203153002128

我们很容易证明他们满足交换律、结合律、分配律等

定义加法和乘法的单位元:

image-20221203153128883

定义加法的逆元

image-20221203153203106

image-20221203153212919

实际上,加法和乘法操作满足9.7.1节介绍的交换环公理。支持这种操作的无穷数列集合称为形式幂级数环。

如果:

image-20221203153726793

那么数列H是数列G的倒数列。则 G = 1 / H G = 1/H G=1/H H = 1 / G H = 1/G H=1/G

现在我们换一种方式解释母函数

image-20221203153951703

简单来说,G(x)就是形式幂级数环中系数 ( g 0 , g 1 , . . . ) (g_0,g_1,...) (g0,g1,...)构成的无穷数列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

策略模式学习

0.引言 最近想整理一下代码。我的想法是使用继承的方案&#xff0c;使用多态写一个interface&#xff0c;然后不同的方法来继承它。最近ChatGPT比较火&#xff0c;顺便问了一下它&#xff1a; 在C代码设计中&#xff0c;我对同一算法设计了不同的实现&#xff0c;例如计算平均…

使用 Web 应用程序示例在 Java 中进行安全编码

使用 Web 应用程序示例在 Java 中进行安全编码 使用 Java 中的 Online Shop Web 应用程序示例了解最常见的漏洞以及如何避免它们 课程英文名&#xff1a;Secure coding Dive into Injections with Java & Spring boot 此视频教程共36.0小时&#xff0c;中英双语字幕&…

1x9 Dual SC Optical Transceivers

1、Pin Assignment & Description TD, TD-: DC coupled LVPECL inputs for the transmitter. 50Ω differential lines. RD, RD-: Open-emitter out circuits. DC coupled LVPECL outputs for the receiver. 50Ω differential lines. SD: Signal Detect. Normal opti…

【工业控制】多变量动态矩阵预测控制(DMC)【含Matlab源码 1499期】

⛄一、简介&#xff08;附课程报告&#xff09; 1引言 众所周知&#xff0c;上世纪 60 年代初形成的现代控制理论在航空、航天等领域取得了辉煌的成果。 然而人们不久就发现在完美的理论与控制之间还存在着巨大的鸿沟。主要表现在以下几个方面: 1.现代控制理论的基点是对象精确…

OneHotEncoder独热编码

首先了解机器学习中的特征类别&#xff1a;连续型特征和离散型特征。 拿到获取的原始特征&#xff0c;必须对每一特征分别进行归一化&#xff0c;比如&#xff0c;特征A的取值范围是[-1000,1000]&#xff0c;特征B的取值范围是[-1,1].如果使用logistic回归&#xff0c;w1*x1w2…

Docker-compose编排

一、Docker Compose前言 Docker Compose的前身是Fig&#xff0c;Fig被Docker收购之后正式更名为Compose&#xff0c;Compose向下兼容Fig Docker Compose是一个用于定义和运行多容器Docker应用的工具&#xff0c;只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应…

STC 51单片机61——呼吸灯

#include "reg52.h" sbit LedHuxi1P1^0; #define time (65536-1000) // 单次定时1ms unsigned char T_High, T, ti, dir; void InitTimer0(void) { TMOD0x01; TL0 time; //initial timer1 low byte TH0 time >> 8; …

从来没有一家互联网公司不问【设计模式+SSM框架底层源码】

结构型模式 创建型模式 行为型模式 六大原则 免费分享学习设计模式整理的学习笔记文档 Spring5源码解读 **其实&#xff0c;学习编程不是学习配置东西&#xff0c;然后写编程套路。写程序最重要的是你能心中有自己的一套架构思路&#xff0c;比如我现在就没有写Java的项目…

还在公域流量里面投入大量广告费而无法变现,不如试试私域流量吧

大家好&#xff0c;我是林工&#xff0c;不知道大家听说过私域流量这个词没有&#xff0c;听起来是一个听起来很模糊的概念。很多人都知道它大概的意思&#xff0c;但具体要落实到“私域流量怎么做”这件事情上&#xff0c;大都都是一问三不知&#xff0c;不知道该如何入手。 其…

艾美捷魔力红组织蛋白酶B活性分析试剂盒研究手册

艾美捷ICT魔力红组织蛋白酶B活性分析试剂盒包含&#xff1a; 套件937:25测试 魔红基质&#xff08;MR-RR2&#xff09;&#xff0c;1 25测试小瓶&#xff0c;#6133 Hoechst 33342&#xff0c;1毫升&#xff0c;#639 吖啶橙&#xff0c;0.5 mL&#xff0c;#6130 工具包手册…

低版本docker cp报错Error: Path not specified未指定路径解决办法

大概就是版本过低。此时我们可以通过另外得途径解决 1&#xff1a;查找启动容器得id docker inspect -f ‘{{.Id}}’ 40e8c27c975f 例如我这里找es得 2&#xff1a;进入到docker容器挂在到本地得共享盘地址 一般就事 以我得乌班图为例 /var/lib/docker rootubuntu:/var/lib/do…

Android动画 补间动画

目录 1.什么是补间动画 2.XML实现方式 3.代码实现方式 4.展现形式 1.什么是补间动画 补间动画&#xff1a;属于Android中View动画的一种&#xff0c;就是涵盖了 平移、缩放、旋转 和 透明度四种变化的动画。实现方式有两种&#xff1a;xml文件 和 java代码。 四种补间动…

[附源码]计算机毕业设计大学生志愿者服务管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

擎创技术流 | ClickHouse实用工具—ckman教程(6)

哈喽~小伙伴们&#xff0c;今天依旧是每一周一期的技术分享~ 关于“ckman”的技术分享已经第6期了&#xff0c;大家是不是跟小编一样收获颇丰&#xff1f;新知识虽然新鲜有趣&#xff0c;但也别忘了回顾旧知识巩固基础噢~↓↓↓ 擎创技术流 | ClickHouse实用工具—ckman教程&…

10万字208道Java经典面试题总结(附答案)

前言 最近有很多粉丝问我&#xff0c;有什么方法能够快速提升自己&#xff0c;通过阿里、腾讯、字节跳动、京东等互联网大厂的面试&#xff0c;我觉得短时间提升自己最快的手段就是背面试题&#xff0c;最近总结了Java常用的面试题&#xff0c;分享给大家&#xff0c;希望大家都…

[附源码]Python计算机毕业设计SSM基于微信平台的车险投保系统设计与实现(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

VINS、MAVROS等的坐标系统一(草稿,未得出明确结果)

由于不同算法之间的坐标系不同&#xff0c;导致计算的结果混乱&#xff0c;该博客的目的是记录和统一不同算法之间的坐标系&#xff0c;保证坐标系的统一 一、VINS算法 vins算法&#xff0c;使用D435I相机。该坐标方向为&#xff1a;右前上分别为xyz。角度&#xff1a;由于是四…

SpringBoot+Vue实现前后端分离的心理咨询系统

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

代码随想录刷题记录 day38 最后一块石头的重量+目标和+1和0

代码随想录刷题记录 day38 最后一块石头的重量目标和1和0 参考&#xff1a;代码随想录 1049. 最后一块石头的重量 II 思想 把数组的石头尽可能地分成大小相等地两个集合 即sum/2&#xff1b; 容量为sum/2地背包尽可能地装满石头。 代码 class Solution {public int last…

C/C++入门002-C语言组成

文章目录1. C工程创建1.1 基于Code::Blocks创建工程1.2 Code::Blocks界面设置2. C语言程序组成2.1函数2.1.1 主函数2.1.2 其它函数2.1.3 如何执行定义好的函数2.2 输出函数printf2.2.1 编译输出为exe可执行文件2.3 C语言要求2.3.1 注释2.4 C语言程序练习2.4.1 输出三角形代码1&…