LWLAymh的备忘录

混乱节拍拼凑出血肉喧嚷

本文除特殊说明,所涉及数均为整数.

整除性及相关

如果\(m > 0\)\(\cfrac{ n }{ m }\)是一个整数,我们就说\(m\)整除\(n\),记作\(m | n\).

能同时整除两个数\(n\)\(m\)的数称为\(n\)\(m\)的公因子,所有公因子中最大的那个称为最大公因子,记作\(\gcd ( n , m )\).而最小的能同时被\(n\)\(m\)整除的非零数被称为他们的最小公倍数,记作\(lcm ( n , m )\).不难发现\(lcm ( n , m ) \gcd ( n , m ) = nm\).

欧几里得算法

欧几里得算法基于以下定理:

\(\gcd ( 0 , n ) = n\)\(\gcd ( n , m ) = \gcd ( n \mod m , m ) , m > 0\).

考虑证明,首先,\(\forall k \in \mathbb{ Z }\),\(n\)\(m\)的公因子一定是\(n\)\(m + kn\)的公因子,这是显然的.因此,\(n\)\(m\)的公因子一定是\(m\)\(n - m \lfloor \cfrac{ n }{ m } \rfloor\)的公因子,而反之亦然.

另外有如下性质:

  1. \(\gcd ( kn , km ) = k \gcd ( n , m )\)以及\(lcm ( kn , km ) = k \ lcm ( n , m )\).

  2. \(a \bot b\),则\(\gcd ( a^m - b^m , a^n - b^n ) = a^{ \gcd ( n , m ) } - b^{ \gcd ( n , m ) }\).

  3. 如果\(n^a \equiv 1 \pmod{ m } \land n^b \equiv 1 \pmod{ m }\),则\(n^{ \gcd ( a , b ) } \equiv 1 \pmod{ m }\).

(1)的证明较为显然,我们考虑(2)的证明.

不妨假设\(n \leq m\),当\(n = m\)时显然成立.

\(n < m\)时:

假设\(a > b\),考虑\(\gcd ( a^m - b^m , a^n - b^n ) = \gcd ( a^m - b^m - k ( a^n - b^n ) , a^n - b^n )\).

\(k = b^{ m - n }\),则:

\[ \begin{aligned} \gcd ( a^m - b^m , a^n - b^n ) & = \gcd ( a^m - b^{ m - n } a^n , a^n - b^n ) \\ & = \gcd ( a^n ( a^{ m - n } - b^{ m - n } ) , a^n - b^n ) \end{aligned} \]

由于\(a \bot b\),所以显然\(a^n - b^n \bot a^n\),于是:

\[ \gcd ( a^m - b^m , a^n - b^n ) = \gcd ( a^{ m - n } - b^{ m - n } , a^n - b^n ) \]

自然得证.

接下来考虑(3)的证明:

如果\(a = b\),显然得证.不然,不妨设\(a > b\)注意到:

\[ \begin{aligned} n^a & \equiv 1 \pmod{ m } \\ n^a - n^{ a - b } n^b & \equiv 1 - n^{ a - b } \pmod{ m } \\ n^{ a - b } & \equiv 1 \pmod{ m } \end{aligned} \]

自然得证.

一些性质

\(n , m \in \mathbb{ N_+ }\).

  1. \(k | n \land k | m \Leftrightarrow k | \gcd ( n , m )\).

  2. \(\sum_{ m | n } a_m = \sum_{ m | n } a_{ \frac{ n }{ m } }\).

  3. \(\sum_{ m | n } \sum_{ k | m } a_{ k , m } = \sum_{ k | n } \sum_{ l | ( \frac{ n }{ k } ) } a_{ k , kl }\).

另外,\(\gcd\)有一个很著名的性质:对于数字\(n , m\),找到最小的正整数\(x\)满足\(\exists y \in \mathbb{ N }\),\(xn = ym\).

首先令\(g = \gcd ( n , m )\),我们自然有\(x \frac{ n }{ g } = y \frac{ m }{ g }\),也就相当于\(x \frac{ n }{ g } \equiv 0 \pmod{ \frac{ m }{ g } }\),由于\(\gcd ( \frac{ n }{ g } , \frac{ m }{ g } ) = 1\),所以左边的\(\frac{ n }{ g }\)可以用逆元消掉,显然最小正整数解为\(x = \frac{ m }{ g }\).

Example1([CF1656H]Equal LCM Subsets)

注意到插入可能有点小困难,我们考虑从全集中删除:注意到如果对于一个数字的某一个质因子,如果它的指数大于了对方集合中相同质因子的最大指数,那这个数一定不可能存在,直接删掉.不难发现删完后就是合法的了.

首先,数据范围不允许我们判断质因子,那么怎么做呢?

显然合法的条件等价于\(a_i | lcm ( b ) , \forall 1 \leq i \leq n\)(当然这个还要反过来再写一遍,两个式子一起才是充要条件,这里为了方便只写一个),这个条件等价于\(\gcd_{ j = 1 }^n ( \frac{ a_i }{ \gcd ( b_j , a_i ) } ) = 1\).后者是方便做的.

然后上线段树处理一下,好像先random_shuffle一下再暴力删除也是对的.

基于值域预处理的快速 GCD

存在一种\(O ( n )\)预处理,\(O ( 1 )\)求任意两个小于等于\(n\)的数的\(\gcd\)的方法:

引理:

对于任意整数\(n\),存在一种划分方式\(n = abc\),\(a\),\(b\),\(c\)三个数要么是质数,要么\(\leq \sqrt{ n }\).

证明:

如果\(n\)存在一个大于等于\(\sqrt{ n }\)的质因子,显然成立.

否则,使用数学归纳,我们考虑\(n\)的最小质因子为\(p\),设\(\frac{ n }{ p } = xyz\),不妨设\(x \leq y \leq z\).

如果\(x = 1\),显然成立.

不然有\(p \leq x \leq y \leq z\),而\(pxyz = n\),那么\(p^4 \leq n\),\(p \leq n^{ \frac{ 1 }{ 4 } }\).

现在我们想要证明不存在\(xp > \sqrt{ n }\),\(yp > \sqrt{ n }\),\(zp > \sqrt{ n }\).

如果存在,我们有:

\[ \begin{aligned} xyzp^3 & > n^{ \frac{ 3 }{ 2 } } \\ np^2 & > n^{ \frac{ 3 }{ 2 } } \\ p^2 & > \sqrt{ n } \\ p & > n^{ \frac{ 1 }{ 4 } } \end{aligned} \]

与我们前面的结论不符合.

因而该引理成立,并且给出了\(O ( n )\)预处理所有数\(abc\)的方法.

接下来,设\(m = \sqrt{ n }\),考虑使用\(O ( n )\)的时间求出每个小于等于\(m\)的数对的\(\gcd\),如果我们要求\(\gcd ( x , y )\),设\(x = abc\),显然\(\gcd ( x , y ) = \gcd ( a , y ) \times \gcd ( b , \frac{ y }{ \gcd ( a , y ) } ) \times \gcd ( c , \frac{ y }{ \gcd ( ab , y ) } )\).

如果\(a\)是质数,只需要判断\(a\)是否整除\(y\).

否则\(\gcd ( a , y ) = \gcd ( y \mod a , a )\),因为\(a \leq \sqrt{ n }\),因而可以直接查表.

裴蜀定理

\(\forall a , b , m \in \mathbb{ Z }\),则\(\exists x , y \in \mathbb{ Z }\)满足\(ax + by = m\),当且仅当\(\gcd ( a , b ) | m\).

证明如下:

\(a = 0\)\(b = 0\),显然成立.

不然,设集合\(A = \{ xa + yb | x , y \in \mathbb{ Z } \}\)中的最小正元素\(d_0 = x_0 a + y_0 b\),该集合中显然一定有正元素.

考虑取该集合中另一个正整数\(d_1 = x_1 a + y_1 b > d_0\),注意到\(d_1 - d_0 = ( x_1 - x_0 ) a + ( y_1 - y_0 ) b \in A\),所以\(\gcd ( d_1 , d_0 ) \in A\),如果\(d_0 \nmid d_1\),那么\(0 < \gcd ( d_1 , d_0 ) < d_0\),与假设不符.所以这个集合里的所有数一定都是\(d_0\)的倍数.

事实上还有另一种证明方式:

如果我们定义一个非空集合\(I \subseteq \mathbb{ Z }\),满足其对加法和数乘(\(\forall a \in \mathbb{ Z } , x \in I , ax \in I\))均封闭,那么我们可以证明其中存在一个唯一的数字\(g\)满足所有数都是\(g\)的倍数.

如果\(I = \{ 0 \}\),可以取\(g = 0\).

反之,显然其中有正有负(因为可以取\(a = - 1\)),我们设\(I_+ = \{ k \in I | k \geq 1 \}\)\(g = \min I_+\).\(\forall a \in I\),不妨设\(a = gq + r , r \in [ 0 , g )\),那么\(r = a + ( - q ) g \in I\),由于\(r < g\),所以\(r \notin I_+\),所以\(r = 0\),\(a\)\(g\)的倍数,且显然\(g\)唯一.

扩展欧几里得算法

考虑求方程\(ax + by = \gcd ( a , b )\)的一组解.

首先,如果\(b = 0\),那这组解显然就是\(\begin{cases}x = 1 \\ y = 0\end{cases}\).

反之,我们令\(c = a \mod b\),考虑求方程\(cz + bw = \gcd ( c , b )\)的一组解.

接下来呢,考虑带入\(c\),则我们求出来的即方程\(( a - b \lfloor \cfrac{ a }{ b } \rfloor ) z + bw = \gcd ( a , b )\)的一组解.不难发现这也就是方程\(az + ( w - \lfloor \cfrac{ a }{ b } \rfloor z ) b = \gcd ( a , b )\)的一组解,所以原本的方程的解也就是\(\begin{cases}x = z \\ y = ( w - \lfloor \cfrac{ a }{ b } \rfloor z )\end{cases}\).

另外,这个算法也可以使用矩阵形式:

首先有

a\

b

\end{matrix}]

=\(, 令\)q=a b\(, 那 么 我 们 有\)

=

同样我们可以得到:

x_1&y_1\

x_2&y_2

\end{matrix}]

=

\(, 即\)ax_1+by_1=(a,b)\(,\)(x_1,y_1)

Example1([XVII Open Cup named after E.V. Pankratiev. Grand Prix of Japan(openstrain contest 1489)E]Eel and Grid)

题意:\(h \times w ( h , w \leq 10^6 )\)的格子图,只能往下往右走,走到边界会循环,问从\(( 0 , 0 )\)开始走遍历走一个哈密顿回路的方案数.

这题最重要的地方其实在于观察到,由于每个点只会被走到一次(除了\(( 0 , 0 )\),它会被走到两次,但只会由其它格子走来一次),因此如果抽象成图,每个格子只会有一个出边和一个入边.这意味着每个格子上面的和左边的格子必定只有一个指向它,进一步地,这意味着这两个格子的状态必然相同.

由此我们发现,每条副对角线(取膜意义下)的状态必然相同,而取膜意义下的副对角线有多少条呢?不难注意到是\(d = \frac{ hw }{ \text{ lcm } ( h , w ) } = \gcd ( h , w )\)条.也就是说,我们只需要确定这\(d\)条对角线的值,就可以确定整个矩阵的答案.假设\(R\)表示向右走,\(D\)表示向下走,\(a_i\)表示第\(i\)条副对角线的状态,最后的操作序列自然是\(a_0 a_1 . . . a_{ d - 1 } a_0 a_1 . . .\).

那么我们接下来要做的就是给这\(d\)条副对角线定向,并判断一个方案是否合法.注意到一个方案不合法当且仅当出现了多于\(1\)个环.那这又意味着什么呢?意味着存在一个点,它可以通过少于\(hw\)次走动走回自己.这显然是不被我们允许的.另一件不难发现的事是,第一个走回自己的点一定是\(( 0 , 0 )\).再不难发现的是,走回自己的时候一定是经过了若干个周期:\(a_0 a_1 . . . a_{ d - 1 } a_0 . . . a_{ d - 1 }\),因为每次向下或者向右走都会走到下一条副对角线,而且最后要回到自己.这就注意到每一个循环\(a_0 a_1 . . . a_{ d - 1 }\)内部具体什么情况是不在乎的,只在乎经历过这个过程之后会发生什么样的变化.

我们不妨假设序列\(\{ a \}\)中有\(k\)\(R\),\(d - k\)\(D\),那会产生这种情况当且仅当\(\exists x \in \mathbb{ N_+ } , x < \frac{ hw }{ d }\),\(\begin{cases}h | x ( d - k ) \\ w | xk\end{cases}\).注意到这等价于寻找最小的\(x\),判断其是否小于\(\frac{ hw }{ d }\),于是条件等价于自然有\(x = lcm ( \frac{ h }{ \gcd ( d - k , h ) } , \frac{ w }{ \gcd ( w , k ) } )\),枚举\(k\)并判断即可.

素数及相关

定义

可以利用裴蜀定理证明素数的定义等价于\(\forall a , b , p | ab \Rightarrow p | a \lor p | b\).

考虑先用最基础的定义得到这个命题,考虑\(p | ab , p \nmid a\),则\(1 = px + ay\)有解,则\(b = pxb + ( ab ) y\),右边都是\(p\)的倍数,所以\(p | b\).

这个命题反推的话,考虑设\(p = ab , a , b \ne 1\),则\(p | ab\)\(p \nmid a , p \nmid b\),不符.

Example1(《具体数学》4.22)

证明:在\(n\)进制下,若\(( 11 . . . 1 )_n\)\(1\)的个数不是质数则其一定不是质数..

\(1\)的个数为\(m\),则\(( 11 . . . 1 )_n = \sum_{ i = 0 }^{ m - 1 } n^i\).

如果\(m \notin \mathrm{ prime }\),不妨设则\(m = cd , c \ne 1 \land d \ne 1\).

\[ \begin{aligned} \sum_{ i = 0 }^{ m - 1 } n^i & = \sum_{ i = 0 }^{ c - 1 } n^{ di } \sum_{ j = 0 }^{ d - 1 } n^{ j } \\ & = ( \sum_{ i = 0 }^{ c - 1 } n^{ di } ) ( \sum_{ j = 0 }^{ d - 1 } n^j ) \end{aligned} \]

显然不是质数.

唯一分解定理(算数基本定理)

任何正整数都只有一种方式以素数非减的次序写成素数的乘积.

证明:

考虑数学归纳法,设小于\(n\)的数全部满足.

则对于\(n\),如果它不满足条件,一定存在两种分解方式\(n = \prod_{ i = 1 }^m p_i = \prod_{ i = 1 }^k q_i\).

首先,如果\(p_1 = q_1\),根据归纳假设,显然不成立.

不失一般性,设\(p_1 < q_1\).则\(q_1 | p_1 \prod_{ i = 2 }^m p_i\),显然\(q_1 \nmid p_1\),所以\(q_1 | \prod_{ i = 2 }^m p_i\),设\(s = \prod_{ i = 2 }^m p_i\),但这是不可能的,因为\(s < n\),根据归纳假设,它只有一种分解方式,这种方式中显然不可能存在\(p_1\).

那么根据上述证明,我们可以将一个数表示为以下形式:\(n = \prod_p p^{ n_p } , n_p \geq 0\).

另外不难证明的一点是,假设\(\sum n_p = k\),那么最小质因子一定不大于\(\sqrt[k]{ n }\).

Example1([CF986F]Oppa Funcan Style Remastered)

首先对\(k\)做pollard-Rho算法.注意到我们可以默认\(q_i\)是质因子,这显然不会影响答案.

然后,如果只有一个质因子,显然直接判断.

如果有两个质因子,是经典的二元不定方程.

如果有三个质因子,此时最小质因子的大小就不大于\(\sqrt[3]{ k }\),做同余最短路即可.

素数的个数

首先,欧几里得证明了素数有无穷多个:

假设素数有有限个,分别为\(p_1 , p_2 , . . . p_m\),则\(\prod_{ i = 1 }^m p_i + 1\)无法被其中任何素数整除,则假设不成立.

在此基础上,我们可以定义欧几里得数:

\(e_1 = 2 , e_n = 1 + \prod_{ i = 1 }^{ n - 1 } e_i\).

\(\pi ( n )\)表示小于等于\(n\)的素数个数,有\({ \lim_{ n \rightarrow + \infty } \cfrac{ \pi ( n ) \times \ln n }{ n } } = 1\).

有切比雪夫定理(又称贝特朗假设):若\(n > 1 , \exists p \in \mathrm{ prime } , p \in ( n , 2 n )\).

又有狄利克雷定理:若\(\gcd ( a , b ) = 1 , \{ an + b \}\)中包含了无穷个素数.

(顺便一提,当\(a = 4\)或者\(a = 6\),\(b = - 1\)的时候是好证明的,由于素数要么形如\(6 n - 1\)要么形如\(6 n + 1\),或者要么形如\(4 n - 1\)要么形如\(4 n + 1\),只需要类似证明素数无限那样乘一乘)

同时,我们还有以下结论:\(\sum_{ 1 \leq p \leq n \land p \in \mathrm{ prime } } \cfrac{ 1 }{ p } \approx \log \log n\).

证明如下:

\[ \begin{aligned} \sum_{ 1 \leq p \leq n \land p \in \mathrm{ prime } } \cfrac{ 1 }{ p } & = \sum^n_{ k = 1 } \cfrac{ \pi ( k ) - \pi ( k - 1 ) }{ k } = \sum^n_{ k = 1 } \cfrac{ \pi ( k ) }{ k } - \sum^n_{ k = 1 } \cfrac{ \pi ( k - 1 ) }{ k } \\ & = \sum^n_{ k = 1 } \cfrac{ \pi ( k ) }{ k } - \sum^{ n - 1 }_{ k = 0 } \cfrac{ \pi ( k ) }{ k + 1 } \\ & = \sum^{ n - 1 }_{ k = 1 } \cfrac{ \pi ( k ) }{ k } + \cfrac{ \pi ( n ) }{ n } - \sum^{ n - 1 }_{ k = 1 } \cfrac{ \pi ( k ) }{ k + 1 } - \cfrac{ \pi ( 0 ) }{ 1 } \\ & = \sum^{ n - 1 }_{ k = 1 } \cfrac{ \pi ( k ) }{ k ( k + 1 ) } + \cfrac{ \pi ( n ) }{ n } \\ & = \sum^{ n - 1 }_{ k = 1 }{ ( \cfrac{ 1 }{ k \log k } ) } + O ( \frac{ 1 }{ \log n } ) = O ( \log \log n ) + O ( \frac{ 1 }{ \log n } ) \end{aligned} \]

Example1(《具体数学》4.20)

证明:存在一个常数\(b\)满足\(\lfloor 2^b \rfloor , \lfloor 2^{ 2^b } \rfloor , \lfloor 2^{ 2^{ 2^b } } \rfloor . , . .\)都是质数.

如此构造数列:设\(p_1 = 2\),且\(p_n\)为满足\(2^{ p_{ n - 1 } } < p_n < 2^{ p_{ n - 1 } + 1 }\)的最小质数.

通过构造不难发现:\(p_{ n - 1 } = \lfloor \log_2 p_n \rfloor\).

根据整值函数的性质,我们有\(\lfloor \log_2 x \rfloor = \lfloor \log_2 \lfloor x \rfloor \rfloor\).考虑反向数学归纳,考虑当\(n \rightarrow + \infty\)时构造满足题目条件,那么\(p^{ n - 1 } = \lfloor \log_2 \lfloor 2^{ 2^{ 2^{ . . .^{ b } } } } \rfloor \rfloor = \lfloor 2^{ 2^{ . . .^{ b } } } \rfloor\),自然也满足条件.所以如果设\(\log_2^{ ( n ) } x\)为不断对\(x\)迭代求\(\log_2\)\(n\)次后的答案,只需构造\(b = \lim_{ n \rightarrow + \infty } \log_2^{ ( n ) } p_n\)即可.

Example2

求证:

\[ \mu ( \gcd ( a , b ) ) = 0 \Leftrightarrow \forall n > 0 , \mu ( an + b ) = 0 \]

左推右是简单的.接下来考虑右推左.

考虑狄利克雷定理,数列\(\{ \frac{ an + b }{ \gcd ( a , b ) } \}\).不妨反证,假设\(\mu ( \gcd ( a , b ) ) \ne 0\),不妨设\(p = \frac{ an + b }{ \gcd ( a , b ) }\),\(p \gcd ( a , b ) = ax + b\),也就是\(\mu ( p \gcd ( a , b ) ) = 0\),注意到\(\mu ( \gcd ( a , b ) ) \ne 0\),此时必有\(p | \gcd ( a , b )\),而\(p\)无限,\(\gcd ( a , b )\)的素因子有限,这就导出了矛盾.

欧几里得数

定义欧几里得数:\(e_1 = 2 , e_n = 1 + \prod_{ i = 1 }^{ n - 1 } e_i\).不难发现\(e_n = e_{ n - 1 } ( e_{ n - 1 } - 1 )\).

费马数

定义费马数\(f_n = 2^{ 2^n } + 1\).不难发现\(f_n = ( f_{ n - 1 } - 1 )^2 + 1\).

另外,费马数还满足\(f_n = \prod_{ i = 0 }^{ n - 1 } f_i + 2\),我们考虑这个式子的证明:显然后面那一个连乘会得到若干项\(2\)的次幂,并且这些项两两不同,根据几何级数,我们有\(\prod_{ i = 0 }^{ n - 1 } f_i + 1\)=\(2^{ 2^{ n } }\),于是显然得证.

Example1(《具体数学》4.17)

求证:如果\(m \ne n\),则\(f_m \bot f_n\).

不妨假设\(m < n\),有:\(\gcd ( f_m , f_n ) = \gcd ( f_m , 2 ) = 1\).

Example2(《具体数学》4.18)

求证:若\(2^n + 1\)是质数,则\(n\)\(2\)的整数幂.

如果\(n = qm\)\(q\)是奇数,我们有:\(2^n + 1 = ( 2^m + 1 ) ( 2^{ n - m } - 2^{ n - 2 m } + 2^{ n - 3 m } . . . - 2^m + 1 )\).

Miller-Rabin算法

如果判断\(n\)是否是质数,取\(a < n\),设\(n - 1 = d \times 2^r\).

则要么\(a^d \equiv 1 ( \mod n )\).

要么\(\exists i\),使得\(0 \leq i < r\),\(a^{ d \times 2^i } \equiv - 1 ( \mod n )\).

若一个都不满足,则n一定不是质数,不然可能是质数.

但是若取足够多的不同的\(a\)(如果选\(m\)个),那么\(n\)是质数的可能性更大.

此为Miller-Rabin算法,复杂度\(O ( m \times log_2 n )\).不保证正确性.

其中a通常取质数,原因不详.(事实上,如果a取前八个小质数,在\(2^{ 64 }\)内是不会出错的)

Pollard-Rho算法

\(n\)做质因数分解,若能找到\(a\)使得\(a | n\),则考虑对\(\cfrac{ n }{ a }\)\(a\)分别进行质因数分解.

考虑随机\(a\),若\(n\)\(m\)个因数,那么显然随机到\(a\)使得\(a | n\)的概率为\(\cfrac{ m }{ n }\),显然不太优秀.

考虑改变随机策略,我们考虑随机一个\(a\)使得\(\gcd ( a , n ) \ne 1\),那么\(\gcd ( a , n )\)就是\(n\)的一个因子.

这种情况下,随机的概率是\(\cfrac{ \varphi ( n ) }{ n }\),仍然很不优秀.

考虑使用生日悖论优化,随机\(k\)个数\(a\).两两匹配得到\(k^2\)个值,这些值全都不整除\(n\)的概率可以用生日悖论来计算.

\(k = 10 \sqrt{ n }\)时,错误的概率会很小,但是复杂度仍然很高,无法接受.

考虑构造\(a_i = [ ( a_{ i - 1 } )^2 + b ] \mod n\).

考虑该数列的性质,当\(b\)确定时,\(a\)一定有循环节.

显然当\(x | ( a_i - a_j )\),则\(x | [ ( a_i - a_j ) \times ( a_i + a_j ) - b + b ]\),\(x | ( a_{ i + 1 } - a_{ j + 1 } )\).

因此,我们可以利用floyd判环法(双指针法)找出循环节.

并且在这个过程中,我们可以预处理出大量的\(a_{ i + len } - a_i\).

复杂度极其玄学,但是实际应用中不差.

狄利克雷前缀和

已知数列\(a\),求数列\(b\)满足\(b_n = \sum_{ d | n } a_d\).

我们将一个数的质因数分解看作它的向量表示.更直接地,如果\(n = \prod_{ i = 1 }^k p_i^{ q_i }\),其中\(p_i\)是第\(i\)大的质数.我们将其写作向量\(( q_1 , q_2 , . . . , q_k )\)的形式,并做高位前缀和.

可以用\(O ( n \log \log n )\)的时间复杂度解决问题.

阶乘

我们定义\(n ! = \prod_{ i = 1 }^n i\),特别地,\(0 ! = 1\).

考虑估计\(n !\)的大小,不难发现\(( n ! )^2 = \prod_{ i = 1 }^n i ( n + 1 - i )\).

而函数\(y = i ( n + 1 - i ) , i \in [ 1 , n ]\)显然在\(i = 1\)\(i = n\)时取最小值,而在\(i = \cfrac{ n + 1 }{ 2 }\)时取最大值.

那么我们有\(\prod_{ i = 1 }^n n \leq ( n ! )^2 \leq \prod_{ i = 1 }^n \cfrac{ ( n + 1 )^2 }{ 4 }\).

于是\(n^{ \frac{ n }{ 2 } } \leq n ! \leq \cfrac{ ( n + 1 )^n }{ 2^n }\).

还有一种估计方式是考虑\(\lim_{ n \rightarrow \infty } \frac{ n }{ \sqrt[n]{ n } ! }\),由Stolz定理及其推论,我们知道若\(a_n > 0 , \frac{ a_{ n + 1 } }{ a_n } = a\),那么\(\lim_{ n \rightarrow \infty } \sqrt[n]{ a_n } = a\).而我们令\(a_n = \frac{ n^n }{ n ! }\),\(\frac{ a_{ n + 1 } }{ a_n } = ( 1 + \frac{ 1 }{ n } )^n\),所以\(\lim_{ n \rightarrow \infty } \frac{ n }{ \sqrt[n]{ n ! } } = e\),于是我们可以估计\(n ! \sim ( \frac{ n }{ e } )^n\).

事实上有一种更准确的估计方法:\(n ! \sim \sqrt{ 2 \pi n } ( \cfrac{ n }{ e } )^n\).

考虑设\(\varepsilon_p ( n ! )\)\(n !\)中质因子\(p\)的个数,我们分析一下这个函数:

首先显然有:\(\varepsilon_p ( n ! ) = \sum_{ k \geq 1 } \lfloor \cfrac{ n }{ p^k } \rfloor \leq \frac{ n }{ p - 1 }\).

我们考虑以\(v_p ( n )\)表示\(n\)\(p\)进制下各位数字之和,不妨设第\(k\)位数字为\(w\).那么这个数字对于最后的答案的贡献为\(w ( p^{ k - 1 } + p^{ k - 2 } + . . . + 1 ) = w \cfrac{ p^k - 1 }{ p - 1 } = \cfrac{ wp^k - w }{ p - 1 }\).求和得到\(\varepsilon_p ( n ! ) = \cfrac{ n - v_p ( n ) }{ p - 1 }\).

Example(《具体数学》4.55)

\(P_n = \prod_{ i = 1 }^n i !\),求证:\(P_n^4 ( n + 1 ) \mid P_{ 2 n }\).

考虑对于每个质因子,分开考虑它在前者和后者内出现的次数.

我们不妨将\(p\)\(p^k\)分开考虑,于是显然下面的式子是上面的式子成立的充分条件:

\[ \sum_{ m \geq 1 } \sum_{ i = 1 }^{ 2 n } \lfloor \cfrac{ i }{ p^m } \rfloor \geq 4 \sum_{ m \geq 1 } \sum_{ i = 1 }^n \lfloor \cfrac{ i }{ p^m } \rfloor + [ p^m \mid ( n + 1 ) ] \]

我们不妨对上面这个式子使用数学归纳,也就是说它的充分条件是:

\[ \lfloor \cfrac{ 2 n - 1 }{ p^m } \rfloor + \lfloor \cfrac{ 2 n }{ p^m } \rfloor \geq 4 \lfloor \cfrac{ n }{ p^m } \rfloor + [ n \equiv - 1 \pmod{ p^m } ] - [ n \equiv 0 \pmod{ p^m } ] \]

这个式子,当\(1 \leq n \leq p^m\)时显然成立.而当\(n\)每增大\(p^m\)的时候,左右两边同时增大\(4\),于是也是成立的,由此可以数学归纳.

互素

如果两个数\(n\)\(m\)满足\(\gcd ( n , m ) = 1\),我们称他们互素,记作\(n \bot m\).

我们显然有这样两条性质:

  1. \(\cfrac{ n }{ \gcd ( n , m ) } \bot \cfrac{ m }{ \gcd ( n , m ) }\).

  2. \(k \bot n \land k \bot m \Leftrightarrow k \bot nm\).

Example1(《具体数学》4.42)

证明:如果两个分数\(\cfrac{ m }{ n }\)\(\cfrac{ m ' }{ n ' }\)满足\(n \bot m\)\(n ' \bot m '\),则\(( mn ' + m ' n ) \bot ( nn ' )\)的充分必要条件是\(n \bot n '\).

首先,如果\(\gcd ( n , n ' ) \ne 1\),显然不可能满足条件,必要性得证.

考虑充分性,如果\(n \bot n '\),则只需证明\(n \bot ( mn ' + m ' n ) \land n ' \bot ( mn ' + m ' n )\)即可.

\(\gcd ( n , mn ' + m ' n ) = \gcd ( n , mn ' ) = 1\),另一个式子同理,于是得证.

Example2

证明:\(\sum_{ 0 \leq k < m } f ( k ) = \sum_{ d | m } \sum_{ 0 \leq k < d } f ( \frac{ km }{ d } ) [ k \bot d ] \\\).

考虑:

\[ \begin{aligned} \sum_{ 0 \leq k < m } f ( k ) & = \sum_{ d | m } \sum_{ 0 \leq k < m , d | k } f ( k ) [ \gcd ( k , m ) = d ] \\ & = \sum_{ d | m } \sum_{ 0 \leq k < m , d | k } f ( k ) [ \frac{ k }{ d } \bot \frac{ m }{ d } ] \\ & = \sum_{ d | m } \sum_{ 0 \leq k < \frac{ m }{ d } } f ( kd ) [ k \bot \frac{ m }{ d } ] \\ & = \sum_{ d | m } \sum_{ 0 \leq k < d } f ( \frac{ km }{ d } ) [ k \bot d ] \end{aligned} \]

Example3(《具体数学》4.63)

证明:满足\(a^n + b^n = c^n ( n \in \mathbb{ N_+ } , n > 2 )\)的最小的(\(n\)为第一关键字,\(c\)为第二关键字)一组正整数解(即费马大定理最小的反例)一定满足以下性质:(另外,\(n = 4\)的情况早被证明了无解)

  1. \(n \in \mathrm{ prime }\).

  2. \(\exists m \in \mathbb{ N_+ } , a + b = \begin{cases}m^n & n \nmid c \\ n^{ n - 1 } m^n & n \mid c\end{cases}\).

首先证明(1),如果\(n\)是最小的满足条件的数但并不是质数,我们不妨设\(n = xy , x > 2\),则\(( a^y )^x + ( b^y )^x = ( c^y )^x\),显然这是更小的一组反例,于是(1)得证.

接下来考虑性质(2),注意到\(a , b , c\)必然两两互质,不然可以两边同时除以一个数构造出更小的解,又注意到:

\[ \begin{aligned} \gcd ( a + b , \cfrac{ a^n + b^n }{ a + b } ) & = \gcd ( a + b , ( a^{ n - 1 } - a^{ n - 2 } b + . . . + b^{ n - 1 } ) ) \\ \gcd ( a + b , \cfrac{ c^n }{ a + b } ) & = \gcd ( a + b , na^{ n - 1 } ) \\ \gcd ( a + b , \cfrac{ c^n }{ a + b } ) & = \gcd ( a + b , n ) \end{aligned} \]

如果\(\gcd ( a + b , n ) = 1\),那么我们有\(( a + b ) \bot \cfrac{ c^n }{ a + b }\).接下来考虑每一个质因子\(p\),如果\(( a + b )\)中有\(x\)\(p\),\(c\)中有\(y\)\(p\),于是\(c^n\)中有\(ny\)\(p\),我们自然有:\(x = ny\),于是\(\exists m \in \mathbb{ N_+ }\)满足\(a + b = m^n\).

如果\(n \mid ( a + b )\),我们就有:\(\gcd ( a + b , \cfrac{ c^n }{ a + b } ) = n\),此时必有\(n \mid c\),\(n^n \mid c^n\),并且不难发现:\(n^k \mid \cfrac{ c^n }{ a + b } \Leftrightarrow n^{ n - k } \mid ( a + b )\),由于上面提到的\(\gcd\)的原因,\(\min \{ k , n - k \} = 1\),显然\(k = 1\)或者\(k = n - 1\).下面只需要证明\(k \ne n - 1\).

冷静一下,如果\(n | ( a + b ) , n^2 \nmid ( a + b )\),令\(m = a + b\),此时必有:

\[ \begin{aligned} c^n & = a^n + ( m - a )^n \\ & = a^n + ( - a )^n + nm ( - a )^{ n - 1 } + \frac{ n ( n - 1 ) }{ 2 } m^2 ( - a )^{ n - 2 } + \cdots \end{aligned} \]

注意到\(n\)是奇数,\(a^n + ( - a )^n = 0\),而\(n^n | c^n \Rightarrow n^3 | c^n\),又注意到\(n^3 | nm^2\),我们把两边对\(n^3\)取模:

\[ 0 \equiv nx ( - a )^{ n - 1 } \pmod{ n^3 } \]

注意到若\(n^2 \nmid m\),则该式子必不成立.

Stern-Brocot 树

Stern-Brocot树是一种可以不重不漏列举有理数的方式,它的构造如下:

一开始,序列中有两个分数:\(\cfrac{ 0 }{ 1 }\)\(\cfrac{ 1 }{ 0 }\),这里使用了\(0\)作分母,但我们暂且认为它是正确的,因为这样会出现很多方便的性质.

接下来,不断地对这个序列进行以下操作:在两个相邻的分数\(\cfrac{ m }{ n }\)\(\cfrac{ m ' }{ n ' }\)之间插入一个新分数\(\cfrac{ m + m ' }{ n + n ' }\).

这么无限构造下去得到的序列满足两个性质:

  1. 所得到的分数全都是最简分数.

  2. 所得到的分数不重不漏,换句话说,任意非负有理数都在这个序列中出现恰好一次.

我们不妨认为\(\cfrac{ 1 }{ 0 } = + \infty\),那么不难发现这么构造序列,所得到的序列一定是单调递增的.

这是因为如果我们有\(\cfrac{ m }{ n } < \cfrac{ m ' }{ n ' }\),那么我们一定有:\(\cfrac{ m }{ n } < \cfrac{ m + m ' }{ n + n ' } < \cfrac{ m ' }{ n ' }\),其中\(n , n ' , m , m ' \geq 0\),这一点不难验证.

而正因为如此,我们可以证明所得到的所有分数不重.

然后,如果当前所得到的序列中有两个数\(\cfrac{ m }{ n }\)\(\cfrac{ m ' }{ n ' }\)相邻,则\(m ' n - mn ' = 1\),这一点不难通过数学归纳证明.而根据裴蜀定理,显然\(m \bot n\)\(m ' \bot n '\).

我们最后需要证明任意非负有理数都可以通过这个序列构造出来,考虑类似二分的方法构造.换句话说,我们有两个序列中的分数\(\cfrac{ m }{ n }\)\(\cfrac{ m ' }{ n ' }\),要构造的有理数为\(\cfrac{ a }{ b }\)且满足\(\cfrac{ m }{ n } < \cfrac{ a }{ b } < \cfrac{ m ' }{ n ' }\).

我们考虑判断\(\cfrac{ m + m ' }{ n + n ' }\)\(\cfrac{ a }{ b }\)的大小关系,这样就可以类似二分的方法一直往下找下去.

问题在于为什么我们最后一定可以找到这个数呢?如果我们一直找不到这个数,意味着无论我们怎么做,都有\(\cfrac{ m }{ n } < \cfrac{ a }{ b } < \cfrac{ m ' }{ n ' }\)成立,而这也就意味着\(an - bm \geq 1 \land bm ' - an ' \geq 1\),处理一下不等式并合并,我们有\(( m ' + n ' ) ( an - bm ) + ( n + m ) ( bm ' - an ' ) \geq n + m + n ' + m '\).

化简这个式子得到\(a + b \geq m ' + n ' + m + n\),而我们在操作过程中\(m , n , m ' , n '\)显然会有两个数不变,另外两个数变大,因此迟早会大于\(a + b\),也就意味着这个数迟早会被找到.

之所以称其为”树”,则是因为我们如果每次都在任意两个数之间插入一个数,然后将进行若干次操作得到的序列放到二叉搜索树上,会得到一些很好的性质,譬如一个数是由它所有祖先中最大的小于它的数和最小的大于它的数生成的,以及关于根中心对称的两点互为倒数.

另外,如果我们定义法里级数\(\mathcal{ F }_n\)表示所有在\([ 0 , 1 ]\)范围内且分母小于等于\(n\)的最简分数的集合.不难发现,\(\mathcal{ F }_n\)对应着整棵树的一棵子树的一部分.而\(\mathcal{ F }_n\)可以由\(\mathcal{ F }_{ n - 1 }\)得到,只需要判断\(\mathcal{ F }_{ n - 1 }\)中每两个相邻数能否生成一个满足条件的数即可.

我们回到它的树形态上,如果我们定义\(\cfrac{ 1 }{ 1 }\)为这棵二叉搜索树的根,那么每个有理数显然都可以表示为从根到它的一个\(LR\)序列,表示从根向下搜索时每一步向左走还是向右走.特别地,我们定义根的序列为\(I\).

不难发现,通过这样的操作,我们将每一个非负有理数都对应到了一个\(LR\)序列.

那么我们来考虑第一个问题:已知\(LR\)序列如何求这个数.

我们可以设当前点是\(x\),且它由\(y\)\(z\)生成,其中\(y < x < z\),那么不难发现它的右儿子由\(x\)\(z\)生成,左儿子由\(y\)\(x\)生成.

那么我们显然可以使用记录\(y\)\(z\)的方式,反复迭代求得答案.注意\(x\)是可以通过\(y\)\(z\)求得的,因此没有必要存储.

而这一过程可以简化为矩阵运算:

我们令\(y = \cfrac{ m }{ n }\),\(z = \cfrac{ m ' }{ n ' }\),\(S = \begin{bmatrix}n & n ' \\ m & m '\end{bmatrix}\),\(f ( S ) = \cfrac{ m + m ' }{ n + n ' }\).

那么不难发现它的每一次操作只需右乘一个变换矩阵即可.

其中:\(L = \begin{bmatrix}1 & 1 \\ 0 & 1\end{bmatrix} , R = \begin{bmatrix}1 & 0 \\ 1 & 1\end{bmatrix}\).

使用数学归纳不难证明:

\(L^k = \begin{bmatrix}1 & k \\ 0 & 1\end{bmatrix} , R^k = \begin{bmatrix}1 & 0 \\ k & 1\end{bmatrix}\).

至于已知数字求它的序列表示,首先可以直接在树上搜索.

而如果要脱离树,我们仍然可以回到矩阵上,意识到\(f ( RS ) = f ( S ) + 1\),再加上关于根中心对称两点互为倒数的性质,我们可以推导出以下法则:

如果\(m > n\),那么\(f ( RS ) = \cfrac{ m }{ n } \Leftrightarrow f ( S ) = \cfrac{ m - n }{ n }\).

如果\(m < n\),那么\(f ( LS ) = \cfrac{ m }{ n } \Leftrightarrow f ( S ) = \cfrac{ m }{ n - m }\).

借助这一点,我们就可以求一个数的\(LR\)序列表示了.

在某些情形下,这种表示可以解决二进制下某些分数无法精确表示的问题.

升幂引理

形式一

对于素数\(p\),\(p \nmid x , p \nmid y\),对于满足\(\gcd ( n , p ) = 1\)\(n\):

  1. \(p | ( x - y )\),则\(v_p ( x^n - y^n ) = v_p ( x - y )\).

  2. \(p | ( x + y )\),\(n\)是奇数,则\(v_p ( x^n + y^n ) = v_p ( x + y )\).

考虑(1)的证明,由于\(p | ( x - y ) , x \equiv y \pmod{ p }\),因此\(\sum_{ k = 0 }^{ n - 1 } x^k y^{ n - 1 - k } \equiv nx^{ n - 1 } \ne 0 \pmod{ p }\).有次方差公式,显然.

(2)类似.

形式二

对于奇素数\(p\),\(p \nmid x , p \nmid y\):

  1. \(p | ( x - y )\),则\(v_p ( x^n - y^n ) = v_p ( x - y ) + v_p ( n )\).

  2. \(p | ( x + y )\),\(n\)是奇数,则\(v_p ( x^n + y^n ) = v_p ( x + y ) + v_p ( n )\).

和形式一的证明完全类似.

同余

如果\(a \mod m = b \mod m\),我们称\(a\)\(b\)关于模\(m\)同余,记作\(a \equiv b ( \mod m )\).

根据同余的定义,若\(a , b , c , d , k \in \mathbb{ Z }\),\(n , m \in \mathbb{ N_+ }\),我们有以下性质:

  1. \(a \equiv b \pmod{ m } \Leftrightarrow a - b = km\).

  2. \(a \equiv b \pmod{ m } \land c \equiv d \pmod{ m } \Rightarrow a + c \equiv b + d \pmod{ m }\).

  3. \(a \equiv b \pmod{ m } \land c \equiv d \pmod{ m } \Rightarrow ac \equiv bd \pmod{ m }\).

  4. \(a \equiv b \pmod{ m } \Rightarrow a^k \equiv b^k \pmod{ m }\).

  5. \(ad \equiv bd \pmod{ m } \Leftrightarrow a \equiv b \pmod{ m } , m \bot d\).

  6. \(ad \equiv bd \pmod{ md } \Leftrightarrow a \equiv b \pmod{ m } , d \ne 0\).

  7. \(ad \equiv bd \pmod{ m } \Leftrightarrow a \equiv b \pmod{ \cfrac{ m }{ \gcd ( m , d ) } }\).

  8. \(a \equiv b \pmod{ md } \Rightarrow a \equiv b \pmod{ m } , d \ne 0\).

  9. \(a \equiv b \pmod{ m } \land a \equiv b \pmod{ n } \Leftrightarrow a \equiv b \pmod{ lcm ( n , m ) }\).

我们考虑第五条的证明:由于\(m \bot d\),则根据扩展欧几里得算法,可以求得一个数\(d '\)满足\(dd ' + mm ' = 1\),也就是\(dd ' \equiv 1 ( \mod m )\),那么如果我们有\(ad \equiv bd ( \mod m )\),只需要两边同时乘以\(d '\)就可以得到右边.值得一提的是,我们通常称\(d '\)\(d\)在模\(m\)意义下的逆元,记作\(inv ( d , m )\)\(d^{ - 1 }\).

逆元有一种线性预处理的求法:

考虑\(1 \leq i \leq n\),设\(p = ki + r\),则有\(ki + r \equiv 0 ( \mod p )\),则有\(kr^{ - 1 } + i^{ - 1 } \equiv 0 ( \mod p )\).

于是有\(i^{ - 1 } \equiv - kr^{ - 1 } ( \mod p )\),即\(i^{ - 1 } \equiv - \lfloor \cfrac{ p }{ i } \rfloor \times r^{ - 1 } ( \mod p )\).

现在,我们给出一个结论:数列\(0 \mod m , n \mod m , 2 n \mod m , . . . , ( m - 1 ) n \mod m\)在排序去重后恰好为数列\(0 , d , 2 d , . . . , m - d\),\(d = \gcd ( n , m )\),而且其中每个数字在原数列中恰好出现了\(d\)次.

恰好出现\(d\)次是好证明的:考虑\(jn \equiv kn ( \mod m )\)可以推导出\(j \equiv k ( \mod \cfrac{ m }{ d } ) , d = \gcd ( n , m )\),则显然这些数是一个序列复制\(d\)次得到的.

由上,我们要证明\(kn \mod m\)一定是\(d\)的倍数.不难发现\(kn \mod m = dk \cfrac{ n }{ d } ( \mod \cfrac{ m }{ d } d ) = d ( \cfrac{ kn }{ d } \mod \cfrac{ m }{ d } )\).

接下来,不妨假设\(n \bot m\),并在此条件下证明\(0 \mod m , n \mod m , 2 n \mod m , . . . , ( m - 1 ) n \mod m\)两两不同即可.而由于\(n \bot m\),则\(kn \equiv jn ( \mod m )\)的充分必要条件是\(k \equiv j ( \mod m )\),因此它们显然两两不同.

Example(《具体数学》4.31)

\(n\)进制下,各位数字之和是\(m\)的倍数,则这个数是\(m\)的倍数的充分必要条件是?

\(a_i\)表示这个数字在\(n\)进制下的第\(i\)位,则这条性质也就是:

\[ \sum_{ i = 0 } a_i n^i \equiv 0 \pmod{ m } \Leftrightarrow \sum_{ i = 0 } a_i \equiv 0 \pmod{ m } \]

不难发现,当\(n \equiv 1 \pmod{ m }\)时,满足该性质.

威尔逊定理

-1(p)&pprime\

2(p)&p=4\

0(p)&other

\end{cases}

证明:

\(p\)为质数时,考虑对于\(a\)\(b = a^{ - 1 } ( \mod p )\),若\(a = b\),此时可证明\(a = 1\)\(a = p - 1\)(需要用到下面独立剩余知识).

如果\(a \ne b\)那么一定可以在\([ 1 , p - 1 ]\)找到一对数,它们相乘为\(1\).原因是若\(a_1 \ne a_2\),那么\(a_1^{ - 1 } \ne a_2^{ - 1 }\).

\(p\)不是质数,则设\(p = ab\),当\(a \ne b\)时,由于\(a , b \leq p\),因此\(( p - 1 ) !\)一定是\(p\)的倍数.

\(a = b\),除非\(p = 4\),不然一定能在\([ 1 , p - 1 ]\)里找到\(a\)\(2 a\),此时\(( p - 1 ) !\)也是\(p\)的倍数.

另外,当\(p\)是奇质数的时候,威尔逊定理可以写成如下形式:

\[ \begin{aligned} \prod_{ k = 1 }^{ \frac{ p - 1 }{ 2 } } k ( p - k ) & \equiv - 1 \pmod{ p } \\ \prod_{ k = 1 }^{ \frac{ p - 1 }{ 2 } } - k^2 & \equiv - 1 \pmod{ p } \\ ( - 1 )^{ \frac{ p - 1 }{ 2 } } ( ( \cfrac{ p - 1 }{ 2 } ) ! )^2 & \equiv - 1 \pmod{ p } \end{aligned} \]

另外,通过以上推导过程,不难发现威尔逊定理还可以写成:

\[ ( p - 2 ) ! \equiv \begin{cases} 1 ( \mod p ) & p \in \mathrm{ prime } \\ 2 ( \mod p ) & p = 4 \\ 0 ( \mod p ) & other \end{cases} \]

Example1(《具体数学》4.48)

\(\prod_{ 1 \leq n < m , n \bot m } n \pmod{ m } \\\).

首先,类似威尔逊定理的推导,不难注意到这个式子也就等价于:

\[ \prod_{ 1 \leq n < m , n^2 \equiv 1 \pmod{ m } } n \pmod{ m } \]

首先考虑满足\(n^2 \equiv 1 \pmod{ m }\)\(n\)满足什么性质,根据我们在二次剩余的推导,先考虑\(2 \nmid m\)的情况,此时我们将\(m\)分解为了若干个形如\(p^k\)的质因数的乘积,对于每个\(p^k\)作为模数时,\(n\)有两个解:\(1\)\(p^k - 1\).

\(m = p^k\)的时候,显然答案就是\(- 1\).

不然,由于此时有很多解,我们考虑设答案为\(ans\)并对于每个\(p^k\)求出\(ans \pmod{ p^k }\)的答案,再使用中国剩余定理合并.不难发现只要\(m\)有多个不同的质因子,那么中国剩余定理合并的时候,一定会有偶数个\(n\)(事实上,假设\(m\)\(a\)个质因子,那么有\(2^{ a - 1 }\)个这样的\(n\))满足\(n \equiv - 1 \pmod{ p^k }\),也有同样数目的\(n\)满足\(n \equiv 1 \pmod{ p^k }\).那么此时的\(ans \equiv 1 \pmod{ p^k }\).多次合并后的\(ans\)显然还是\(1\).

至于\(2 \mid m\)的情况并没有麻烦很多,当\(2 \mid m \land 4 \nmid m\),显然有没有这个\(2\)作为质因子都一样.当\(4 \mid m \land 8 \nmid m\),这个质因子和其它质因子并没有多少区别.

于是我们最后得到结论:

$$ _{ 1 n < m , n m } n \[\begin{cases} - 1 \pmod{ m } & m = p^k \lor m = 2 p^k \lor m = 4 , p \in \mathrm{ prime } \land p \ne 2 \\ 1 \pmod{ m } & other \\ \end{cases}\]

$$

Example2(《具体数学》4.40)

如果我们设\(n = \sum_{ k \geq 0 } a_k p^k\),求证:\(\cfrac{ n ! }{ p^{ \varepsilon_p ( n ! ) } } = ( - 1 )^{ \varepsilon_p ( n ! ) } \prod_{ k \geq 0 } a_k ! \pmod{ p }\).

证明考虑数学归纳:如果\(n \rightarrow n + 1\)的过程中没有发生进位,那么该公式显然成立.

如果发生进位了,假设进到了第\(k\)位,第\(k\)位原本是\(w\),现在是\(w + 1\),那么要证其对于\(n + 1\)成立,即证明下式成立:

\[ \cfrac{ n ! ( n + 1 ) }{ p^{ \varepsilon_p ( n ! ) + k } } = ( - 1 )^{ \varepsilon_p ( n ! ) + k } ( w + 1 ) ! \prod_{ i \geq k + 1 } a_i ! \pmod{ p } \]

考虑\(( p - 1 ) \equiv - 1 \pmod{ p }\),于是上式也即:

\[ \begin{aligned} \cfrac{ n ! ( n + 1 ) }{ p^{ \varepsilon_p ( n ! ) + k } } & = ( - 1 )^{ \varepsilon_p ( n ! ) } ( w + 1 ) \prod_{ i \geq 0 } a_i ! \pmod{ p } \\ \cfrac{ n ! }{ p^{ \varepsilon_p ( n ! ) } } \cfrac{ n + 1 }{ p^k } & = ( - 1 )^{ \varepsilon_p ( n ! ) } ( w + 1 ) \prod_{ i \geq 0 } a_i ! \pmod{ p } \\ \cfrac{ n ! }{ p^{ \varepsilon_p ( n ! ) } } ( w + 1 ) & = ( - 1 )^{ \varepsilon_p ( n ! ) } ( w + 1 ) \prod_{ i \geq 0 } a_i ! \pmod{ p } \end{aligned} \]

于是化到\(n\)的情况,于是\(n + 1\)时该式子成立.

Example3(《具体数学》4.53)

求所有满足\(n | \lceil \cfrac{ ( n - 1 ) ! }{ n + 1 } \rceil\)的整数\(n\).

首先这个形式看上去就是威尔逊定理的形式,所以第一步我们先暴力验证\(n \in [ 1 , 4 ]\)的答案,注意到此时当且仅当\(n = 1\)时成立.接下来我们尝试找到\(n \geq 5\)时的解.

考虑当\(n + 1 \in \mathrm{ prime }\)时,根据威尔逊定理,要求化为:\(n \mid \cfrac{ ( n - 1 ) ! + n }{ n + 1 }\).注意到此时\(n\)一定不是质数,又因为\(n \bot ( n + 1 )\),于是要求化为\(n \mid{ ( n - 1 ) ! + n }\),显然成立.

\(n + 1 \notin \mathrm{ prime }\)时,要求则化为\(n \mid \cfrac{ ( n - 1 ) ! }{ n + 1 }\).当\(n \in \mathrm{ prime }\)时,显然不成立.反之显然成立.

于是要么\(n = 1\),要么\(n \geq 5 \land n \notin \mathrm{ prime }\).

费马小定理

\(n^{ p - 1 } \equiv 1 ( \mod p ) , n \bot p , p \in \mathrm{ prime }\).

我们有:

\[ \begin{aligned} \prod_{ k = 1 }^{ p - 1 } kn & \equiv \prod_{ k = 1 }^{ p - 1 } ( kn \mod p ) ( \mod p ) \\ n^{ p - 1 } ( p - 1 ) ! & \equiv ( p - 1 ) ! ( \mod p ) \end{aligned} \]

根据威尔逊定理,显然可以推得费马小定理.

根据费马小定理,我们可以考虑证明一个结论:\(n^{ p^k } \equiv n^{ p^{ k - 1 } } ( \mod p^k )\).

由于\(n^{ p - 1 } \equiv 1 ( \mod p )\),那么我们有\(n^p \equiv n ( \mod p )\),也即\(\exists q \in \mathbb{ Z }\)满足\(n^p = n + pq\),不断两边取\(p\)次方即可得到上述结论.

另外,费马小定理还可以如下证明:

考虑证明\(n^p \equiv n \pmod{ p }\),也就是要证明\(( \sum_{ i = 1 }^n 1 )^p \equiv n \pmod{ p }\).

注意到根据多项式定理,\(( \sum_{ i = 1 }^n 1 )^p = \sum_{ \sum a = p } \cfrac{ p ! }{ a_1 ! . . . a_n ! }\).而如果\(\max \{ a \} \ne p\),则后面的式子在\(\mod p\)意义下显然为\(0\),不然,考虑\(\max \{ a \} = p\)的序列一共会出现\(n\)次且每次对答案的贡献都是\(1\),自然有\(n^p \equiv n ( \mod p )\).

Example1(《具体数学》4.41)

求证:如果质数\(p\)满足\(p \equiv 3 \pmod{ 4 }\),则不存在整数\(n\)满足\(p | ( n^2 + 1 )\);如果其满足\(p \equiv 1 \pmod{ 4 }\),则一定存在一个整数\(n\)满足条件.

先考虑证明前半部分,如果存在这样一个整数\(n\),考虑\(p | ( n^2 + 1 )\)也就等价于\(n^2 \equiv - 1 \pmod{ p }\),则\(n^4 \equiv 1 \pmod{ p }\).显然\(p \bot n\),根据费马小定理,我们有\(n^{ p - 1 } \equiv 1 \pmod{ p }\),也就有\(n^{ p + 1 } \equiv - 1 \pmod{ p }\).

而由于\(p \equiv 3 \pmod{ 4 }\),所以\(4 | ( p + 1 )\),所以\(n^{ p + 1 } \equiv 1 \pmod{ p }\),不符,因此一定不存在.

反之,考虑威尔逊定理的变形\(\prod_{ k = 1 }^{ \frac{ p - 1 }{ 2 } } - k^2 \equiv - 1 \pmod{ p } \\\).由于\(p - 1 \equiv 0 \pmod{ 4 }\),所以这个式子也就等价于\(\prod_{ k = 1 }^{ \frac{ p - 1 }{ 2 } } k^2 \equiv - 1 \pmod{ p }\),也就是\(( ( \cfrac{ p - 1 }{ 2 } ) ! )^2 \equiv - 1 \pmod{ p }\),这就是一个解.

Example2(《具体数学》4.46)

求证:如果\(n > 1\),则\(2^n \ne 1 \pmod{ n }\).

如果\(n\)是质数,根据费马小定理,显然得证.

不然,设\(n = pq\),且\(p\)\(n\)的最小质因子,若\(2^{ n } \equiv 1 \pmod{ n }\),则\(2^n \equiv 1 \pmod{ p }\).

\(p = 2\),显然不成立.不然,有\(2^{ p - 1 } \equiv 1 \pmod{ p }\),由于\(( p - 1 ) \bot n\),则\(2^{ \gcd ( p - 1 , n ) } \equiv 2 \equiv 1 \pmod{ p }\),显然不成立.

另外,上面的过程显然可以推广为:

如果\(n > 1\),则对于任意质数\(p\),\(p^n \ne 1 \pmod{ n }\).

中国剩余定理(crt)

对于方程组\(x \equiv a_i ( \mod m_i )\),其中\(m_i\)两两互质,求\(x\).

\(m = \prod^k_{ i = 1 } m_i\),设\(M_i = \cfrac{ m }{ m_i }\),\(N_i\)\(M_i\)\(\mod m_i\)意义下逆元.

\(x \equiv \sum^k_{ i = 1 } M_i N_i a_i ( \mod m )\).

中国剩余定理的证明类似拉格朗日插值:

由于\(x\)\(\mod m_i\)意义下,\(\sum\)中枚举的所有不等于\(i\)的项都会成\(0\),等于\(i\)的项会成\(a_i\).

考虑每次合并两项,显然有:\(a = a_1 + ( a_2 - a_1 ) \times m_1 \times inv ( m_1 , m_2 )\),\(m = m_1 m_2\).

中国剩余定理的本质是一个环同构\(\varphi : \mathbb{ Z } / m_1 m_2 \mathbb{ Z } \rightarrow ( \mathbb{ Z } / m_1 \mathbb{ Z } ) \times ( \mathbb{ Z } / m_2 \mathbb{ Z } )\),当\(m_1 \bot m_2\).

由于映射两边都是大小相同的有限环,所以只需证明它是单射就行.而容易发现\(\ker \varphi = \{ [ 1 ] \}\).

下面的扩展中国剩余定理亦然同理,用一下裴蜀定理证明映射两边的有限环大小相等,再注意到\(| \ker \varphi | = 1\).

扩展中国剩余定理(excrt)

对于方程组\(x \equiv a_i ( \mod m_i )\),若\(m_i\)两两不互质.

我们考虑每次合并两个方程:

xa_1(m_1)\

xa_2(m_2)

\end{cases}

那这个方程组等价于:

x=k_1m_1+a_1\

x=k_2m_2+a_2

\end{cases}

合并上下方程,有:

\[ \begin{aligned} k_1 m_1 + a_1 & = k_2 m_2 + a_2 \\ a_2 - a_1 & = k_1 m_1 - k_2 m_2 \end{aligned} \]

\(g = \gcd ( m_1 , m_2 )\),显然若\(g \nmid ( a_2 - a_1 )\),方程无解.

不然,有:

$$ \[\begin{aligned} \frac{ a_2 - a_1 }{ g } & = k_1 \frac{ m_1 }{ g } - k_2 \frac{ m_2 }{ g } \\ k_1 \frac{ m_1 }{ g } & = k_2 \frac{ m_2 }{ g } + \frac{ a_2 - a_1 }{ g } \\ k_1 \frac{ m_1 }{ g } & \equiv \frac{ a_2 - a_1 }{ g } ( \mod \frac{ m_2 }{ g } ) \\ \end{aligned}\]

$$

\(inv ( a , p )\)表示\(a\)\(\mod p\)意义下的逆元,有:

$$ \[\begin{aligned} k_1 & \equiv inv ( \frac{ m_1 }{ g } , \frac{ m_2 }{ g } ) \frac{ a_2 - a_1 }{ g } ( \mod \frac{ m_2 }{ g } ) \\ k_1 & = inv ( \frac{ m_1 }{ g } , \frac{ m_2 }{ g } ) \frac{ a_2 - a_1 }{ g } + k_3 \frac{ m_2 }{ g } \\ \end{aligned}\]

$$

带回第一个方程:

\[ \begin{aligned} x & = m_1 ( inv ( \frac{ m_1 }{ g } , \frac{ m_2 }{ g } ) \frac{ a_2 - a_1 }{ g } + k_3 \frac{ m_2 }{ g } ) + a_1 \\ x & \equiv m_1 inv ( \frac{ m_1 }{ g } , \frac{ m_2 }{ g } ) \frac{ a_2 - a_1 }{ g } + a_1 ( \mod \frac{ m_1 m_2 }{ g } ) \end{aligned} \]

Example1([NOI2018]屠龙勇士)

考虑拿个set之类的维护,然后问题转化为求:

\[ \begin{cases} b_1 x \equiv a_1 ( \mod m_1 ) \\ b_2 x \equiv a_2 ( \mod m_2 ) \\ . . . \\ b_n x \equiv a_n ( \mod m_n ) \end{cases} \]

的一个\(x\)的最小解.

对于一个式子\(b_i x \equiv a_i \pmod{ m_i }\),设\(g = \gcd ( b_i , m_i )\),那么若\(g \nmid a_i\),显然无解;不然,我们有:\(\cfrac{ b_i }{ g } x \equiv \cfrac{ a_i }{ g } \pmod{ \cfrac{ m_i }{ g } }\),而\(\cfrac{ b_i }{ g } \bot \cfrac{ m_i }{ g }\),可以求逆元.

Example2([CF571E]Geometric Progressions)

首先分解质因子,这样问题转化为判断等差数列中是否出现.我们随便挑一个数列,假设这个数列中第\(x\)个数字是答案,显然最小化\(x\)即可.

但是直接对所有质因子做excrt复杂度不可接受.我们考虑如果对于质因子\(p\),\(\exists i , j \in [ 1 , n ] , i \ne j\)\(p | b_j , p \nmid a_i , p \nmid b_i\),显然无解.如果有\(p | b_j , p | a_i , p \nmid b_i\),显然要么无解,要么有唯一解,而且可以快速求出唯一解是谁,直接验证就行.

这样,我们就保证了所有需要做excrt的质因子必然全部出现,容易发现这样的质因子数量很少.

二次剩余

求方程\(x^2 = k ( \mod m )\)的解.

我们先考虑一个特殊情况:\(k = 1\),\(m = p^k , p \in \mathrm{ prime }\).

那么也就相当于求方程\(( x - 1 ) ( x + 1 ) \equiv 0 ( \mod p^k )\).

如果\(p > 2\),那么显然\(x - 1\)\(x + 1\)只有一个能被\(p^k\)整除,所以有\(x = \pm 1\).

如果\(p = 2\),那么显然\(x - 1\)\(x + 1\)有一个能被\(2\)整除但不能被\(4\)整除,另一个能被\(2^{ k - 1 }\)整除,如果\(k = 1\)时,显然只有一个解.当\(k = 2\)时,同上.反之,有\(x = \pm 1\)\(x = 2^{ k - 1 } \pm 1\).考虑一个性质:\(( 2 k + 1 )^2 \equiv 1 ( \mod 8 )\).

那么如果:\(k = 1 , m \in \mathbb{ N_+ }\),也是一样的.先把\(m\)作质因数分解,然后再用中国剩余定理合并,那么显然不同质数的解会累乘到总的解上,若\(m\)\(r\)个不同大于\(2\)的质因子,总的解的个数是\(2^r\).而如果考虑\(p = 2\)的情况,\(m\)\(r\)个不同的质因子,则解的个数为\(2^{ r + [ 8 | m ] + [ 4 | m ] - [ 2 | m ] }\).

下面开始讲正经的二次剩余.

我们称\(a\)\(p\)的二次剩余,当且仅当\(\exists b , b^2 \equiv a \pmod{ p }\)并且\(a \ne 0 \pmod{ p }\),这里的\(p\)是奇素数,如果\(a\)不是\(p\)的倍数且\(\nexists b , b^2 \equiv a \pmod{ p }\),则称为二次非剩余.我们引入勒让德符号来表示这个东西:

\[ \left ( \frac{ a }{ p } \right ) = \begin{cases} 1 & a 是 二 次 剩 余 \\ 0 & a \equiv 0 \pmod{ p } \\ - 1 & a 为 二 次 非 剩 余 \end{cases} \]

那么这玩意怎么求呢?我们有欧拉判别准则:

\[ \left ( \frac{ a }{ p } \right ) \equiv a^{ \frac{ p - 1 }{ 2 } } \pmod{ p } \]

先证明个引理:若\(g\)\(\bmod p\)意义下的原根,且\(a \equiv g^k\),那么\(x^2 \equiv a \pmod{ p }\)有解的充要条件是\(k\)是偶数.

充分性显然,而必要性,我们考虑费马小定理:\(g^{ p - 1 } \equiv 1 \pmod{ p }\),而\(p - 1\)是偶数,因此无论如何奇偶性都不会变.

接下来证明欧拉判别准则:

\[ \begin{aligned} g^{ p - 1 } & \equiv 1 \pmod{ p } \\ g^{ p - 1 } - 1 & \equiv 0 \pmod{ p } \\ ( g^{ \frac{ p - 1 }{ 2 } } + 1 ) ( g^{ \frac{ p - 1 }{ 2 } } - 1 ) & \equiv 0 \pmod{ p } \\ g^{ \frac{ p - 1 }{ 2 } } & \equiv - 1 \pmod{ p } \\ a^{ \frac{ p - 1 }{ 2 } } & = ( g^k )^{ \frac{ p - 1 }{ 2 } } = ( g^{ p - 1 } )^{ \frac{ k }{ 2 } } \end{aligned} \]

于是得证.另外通过这个证明过程,我们可以发现\([ 1 , p - 1 ]\)中有正好一半的数是二次剩余,我们还能得知\(x^2 \equiv a \pmod{ p }\)的解的数量是\(\left ( \frac{ a }{ p } \right ) + 1 \\\).

Example1([CF1091G]New Year and the Factorisation Collaboration)

考虑随机一个\(x\),令\(x ' = \sqrt{ x^2 } \pmod{ n }\),如果\(x ' = x\)则放弃这次询问,不然自然有\(( x ' - x ) ( x ' + x ) \equiv 0 \pmod{ n }\).

\(\forall p | n , p \in \mathrm{ prime }\),注意到一定满足\(p | ( x ' - x )\)\(p | ( x ' + x )\),我们可以多做几次,可以理解为这样将\(n\)随机分割了.

Example2(qoj5021)

整个题就强调一个字:双射!

先把模数质因数分解.

从头开始看,这种多元组计数肯定要一点一点确定,我们考虑固定\(( a , a ' )\)求解\(( b , b ' )\),这个时候发现只要\(( a , a ' )\)不全为\(0\),那么就有\(p\)\(( b , b ' )\)满足条件,这个可以通过移项求逆元发现.发现这个全为\(0\)的条件很烦,我们先把它处理掉.

显然只有\(r = 0\)会出现这种情况,讨论一下\(( a , a ' )\)全为\(0\)\(( b , b ' )\)全为\(0\)的情况,简单分类讨论可以得到共有\(2 p^3 + p^2 - 2 p\)种方案.

好了,困难的部分被我们解决了,不过这样我们需要多讨论一下\(r\)是否等于\(0\),不过问题不大.

先考虑\(r = 0\)的情况:

注意到此时固定\(( a , a ' )\)会有\(p - 1\)组(有一组全\(0\))\(( b , b ' )\)满足条件,此时有方程\(\begin{cases}ac + a ' c ' \equiv 0 \pmod{ p } \\ bc + b ' c ' \equiv 0 \pmod{ p }\end{cases}\).显然若\(( b , b ' ) \equiv k ( a , a ' )\),那么该方程有\(p\)组解,不然只有一组解.而前者相当于\(( a , a ' )\)满足\(ka^2 + ka '^2 \equiv 0\),我们设\(C_k\)是方程\(a^2 + a '^2 \equiv k \pmod{ p }\)的解的数量,把上面的全部加起来,答案是:

\[ ( C_0 - 1 ) ( p - 1 ) p + ( ( p^2 - 1 ) ( p - 1 ) - ( C_0 - 1 ) ( p - 1 ) ) \]

化简一下得到:\(( C_0 - 1 ) ( p - 1 )^2 + p^3 - p^2 - p + 1\).

再考虑\(r \ne 0\)的情况:

注意到此时不可能有全为\(0\)的二元组了.所以固定\(( a , a ' )\)的话,\(( b , b ' )\)共有\(p\)组解,此时有方程\(\begin{cases}ac + a ' c ' \equiv r \pmod{ p } \\ bc + b ' c ' \equiv r \pmod{ p }\end{cases}\).

\(( b , b ' ) \equiv k ( a , a ' )\),显然当\(k = 1\)时有\(p\)组解,否则无解,此时\(a^2 + a '^2 \equiv r \pmod{ p }\).

不然有唯一解.

\(( b , b ' ) = k ( a , a ' )\)的方案有多少呢,显然是\(\sum_{ k = 1 }^{ p - 1 } C_{ \frac{ r }{ k } } = \sum_{ k = 1 }^{ p - 1 } C_k = p^2 - C_0\),这里用到了这篇题解的第一个双射,\([ 1 , p - 1 ] / k \mapsto [ 1 , p - 1 ]\).

于是这里的答案就是:

\[ C_r p + ( ( p^2 - 1 ) p - ( p^2 - C_0 ) ) \]

化简一下得到\(p^3 - p^2 - p + C_0 + C_r p\).

现在的问题是如何求\(C_0 , C_r\).

先来技术总结一下,这种多元组计数通常要确定一些数字,然后对另一些数字进行计数,如果确定的那些数字不能进行枚举,那就得进行一些别的操作来在不同的情况下判断数量.

那么\(C_r\)怎么求呢?考虑\(x^2 \equiv a \pmod{ p }\)的解数为\(\left ( \frac{ a }{ p } \right ) + 1\),我们有:

\[ \begin{aligned} C_r & = \sum_{ i = 0 }^{ p - 1 } ( \left ( \frac{ i }{ p } \right ) + 1 ) ( \left ( \frac{ r - i }{ p } \right ) + 1 ) \\ & = \sum_{ i = 0 }^{ p - 1 } \left ( \frac{ i ( r - i ) }{ p } \right ) + 2 \sum_{ i = 0 }^{ p - 1 } \left ( \frac{ i }{ p } \right ) + p \\ & = \sum_{ i = 1 }^{ p - 1 } \left ( \frac{ \frac{ r }{ i } - 1 }{ p } \right ) + p \end{aligned} \]

(这是干啥啊)

我们来一步一步分析这个式子是怎么得到的:

首先,第一步仍然是枚举其中一个,然后求另一个.然后将整个式子乘开,做一个双射\(r - [ 0 , p - 1 ] \mapsto [ 0 , p - 1 ]\)就可以合并其中两项,而至于前两项则是根据欧拉判别准则直接将上指标乘起来合并.然后我们发现\(\sum_{ i = 0 }^{ p - 1 } \left ( \frac{ i }{ p } \right ) = 0\),因为\([ 0 , p - 1 ]\)中一半是\(1\)一半是\(- 1\),又可以发现\(i = 0\)时显然为\(0\),\(x^2 = i ( r - i ) \Leftrightarrow ( \frac{ x }{ i } )^2 = \frac{ r }{ i } - 1\),做双射\([ 1 , p - 1 ] \times i^{ - 1 } \mapsto [ 1 , p - 1 ]\).

做到这一步,自然有\(C_0 = ( p - 1 ) \left ( \frac{ - 1 }{ p } \right ) + p\).

而对于\(r \ne 0\)的时候,我们再做双射\(r / [ 1 , p - 1 ] \mapsto [ 1 , p - 1 ]\),于是\(C_r = \sum_{ i = 0 }^{ p - 2 } \left ( \frac{ i }{ p } \right ) + p = p - \left ( \frac{ - 1 }{ p } \right )\).

只能说模质数意义下的加法乘法减法以及不含\(0\)的乘法都是群,而且所有运算都是双射,很牛逼,计数题直接起飞.

不过这题需要特别判断一下\(p = 2\)的情况,也容易,暴力就行.

Example3

\(2^a = 3^b + 1\)\(3^a = 2^b + 1\)的所有解.

先看\(2^a = 3^b + 1\),显然\(( 2 , 1 )\)是一组解.当\(y \geq 3\)的时候,显然有\(3^a + 1 \equiv 0 \pmod{ 8 }\),而考虑\(3^{ 2 k } \equiv 1 \pmod{ 8 }\),这自然不可能.

再看\(3^a = 2^b + 1\).显然\(( 1 , 1 )\)\(( 2 , 3 )\)是两组解.当\(b \geq 2\)的时候\(3^a \equiv 1 \pmod{ 4 }\),根据欧拉定理知道\(a \in \text{ even }\),令\(a = 2 k\).自然有\(( 3^k - 1 ) ( 3^k + 1 ) = 2^b\),这是形如\(t ( t + 2 ) = 2^b\)的形式,只有\(t = 2\)是一个解.

BSGS

\(a^x \equiv b ( \mod p )\)的一组解,其中\(p \in \mathrm{ prime }\)\(1 \leq p \leq 10^9\).

直接枚举显然是\(O ( p )\)的,非常不合理,考虑如何优化.

求出\(s = \lfloor \sqrt{ p } \rfloor\),并求出所有\(a^i\),其中\(i \in [ 0 , s - 1 ]\).

\(x \leq s - 1\).则可以直接判断是否被求出来过.

否则,则将\(x = x \mod ( s - 1 )\),一直操作直到\(x \leq s - 1\).

exBSGS

\(a^x \equiv b ( \mod p )\)的一组解,其中\(1 \leq p \leq 10^9\).

\(g = \gcd ( a , p )\),那么根据膜的性质,原方程即\(\frac{ a^x }{ g } \equiv \frac{ b }{ g } ( \mod \frac{ p }{ g } )\).

显然若\(g \nmid b\)并且\(b \ne 1\),方程定无解.(若\(b = 1\),那么\(x = 0\)就是一个解)

那么现在的方程就是\(a^{ x - 1 } \frac{ a }{ g } \equiv \frac{ b }{ g } ( \mod \frac{ p }{ g } )\).

继续进行这个过程,不断求\(a\)和当前模数的\(\gcd\).并将当前模数除以该\(\gcd\),这样最后我们得到了方程:

\(a^{ x - k } \prod_{ i = 1 }^k \frac{ a }{ g_i } \equiv \frac{ b }{ \prod_{ i = 1 }^k g_i } ( \mod \frac{ p }{ \prod_{ i = 1 }^k g_i } ) \\\)

不妨设\(A = \prod_{ i = 1 }^k \frac{ a }{ g_i } , B = \frac{ b }{ \prod_{ i = 1 }^k g_i } , P = \frac{ p }{ \prod_{ i = 1 }^k g_i } \\\)

那么现在方程就是\(a^{ x - k } \equiv \frac{ B }{ A } \pmod{ P }\),可以使用BSGS求解.

ps:\(p = 1\)的时候要特判.

原根和阶

阶:找到一个最小的\(k\)使得\(a^k \equiv 1 ( \mod p )\),则称\(k\)\(a\)在膜\(p\)意义下的阶.

原根:如果\(a\)在膜\(p\)意义下的阶是\(\varphi ( p )\)\(a < p\),则称\(a\)\(p\)的一个原根.

\(m\)有原根,则\(m\)一定是\(2\),\(4\)或是\(p^a , 2 p^a\),其中\(p \in \mathrm{ prime }\)\(2 \nmid p\).

由于对于大部分\(m\)来说,都存在一个很小的原根,所以在实际应用中只需要暴力找就可以了.

根据阶的定义,我们如果要判断一个\(a\)不是\(p\)的原根,只需判断是否\(\exists i\)使得\(a^i \equiv 1 ( \mod p )\).

而由于\(a^{ \varphi ( p ) } \equiv 1 ( \mod p )\),因此一定有\(i | \varphi ( p )\),因此只需判断\(\varphi ( p )\)的所有因数,复杂度\(O ( \sqrt{ \varphi ( p ) } )\).

事实上,只需要判断对于\(\varphi ( p )\)的所有质因子\(w\),是否有\(a^{ \frac{ \varphi ( p ) }{ w } } \equiv 1 ( \mod p )\)即可,复杂度\(O ( \omega ( p ) )\).

Example1

给定\(k\),\(p\),\(a\),求\(x^k \equiv a ( \mod p )\)的所有解,其中\(p \in \mathrm{ prime }\),\(1 \leq k \leq 10^5\).

考虑求出\(p\)的原根\(g\),得到\(g^r \equiv a ( \mod p )\),同时由于\(x \equiv g^y ( \mod p )\),因此原方程变为:\(g^{ yk } \equiv g^r ( \mod p )\).

于是有:\(yk \equiv r ( \mod p - 1 )\),即可求解.

Example2(《具体数学》4.47)

证明:如果\(\exists n , n^{ m - 1 } \equiv 1 \pmod{ m }\),且对于所有满足\(p | ( m - 1 )\)\(p\)都满足\(n^{ \frac{ m - 1 }{ p } } \ne 1 \pmod{ m }\),那么\(m\)是素数.

首先不难发现,\(m \in \ \mathrm{ prime } \Leftrightarrow \varphi ( m ) = m - 1\).

考虑上面的过程中,不可能存在一个数\(k\)满足\(0 \leq k < m - 1 , n^k \equiv 1 \pmod{ m }\).因此\(\nexists 0 \leq i , j < m , i \ne j , n^i \equiv n^j \pmod{ m }\).

根据欧拉定理,\(m - 1 = \varphi ( m )\),因此得证.

积性函数

若函数\(f ( x )\)满足\(\forall n , m \in \mathbb{ N_+ } , n \bot m\),有\(f ( 1 ) = 1 , f ( nm ) = f ( n ) f ( m )\),则称其为积性函数.若\(\forall n , m \in \mathbb{ N_+ }\),有\(f ( 1 ) = 1 , f ( nm ) = f ( n ) f ( m )\),则称其为完全积性函数.

若函数\(g ( x )\)是积性函数并且有\(g ( m ) = \sum_{ d | m } f ( d )\),则\(f ( x )\)也是积性函数,证明如下:

不妨考虑数学归纳,首先\(g ( 1 ) = f ( 1 ) = 1\).

\(m = m_1 m_2 , m_1 \bot m_2\),则\(g ( m ) = \sum_{ d | m } f ( d ) = \sum_{ d_1 | m_1 } \sum_{ d_2 | m_2 } f ( d_1 d_2 )\).由于归纳假设,此时只有\(d_1 = m_1 \land d_2 = m_2\)的时候,\(f ( d_1 d_2 )\)可能不等于\(f ( d_1 ) f ( d_2 )\).

于是有

\[ \begin{aligned} g ( m ) & = \sum_{ d_1 | m_1 } \sum_{ d_2 | m_2 } f ( d_1 ) f ( d_2 ) - f ( m_1 ) f ( m_2 ) + f ( m_1 m_2 ) \\ & = g ( m_1 m_2 ) - f ( m_1 ) f ( m_2 ) + f ( m_1 m_2 ) \end{aligned} \]

于是\(f ( m_1 ) f ( m_2 ) = f ( m_1 m_2 )\).

该命题的逆命题也是同样成立的.有一些常见的积性函数,比如:\(id ( x ) = x\),\(I ( x ) = 1\),\(\varepsilon ( x ) = [ x = 1 ]\).

Example(《具体数学》4.58)

求:\(f ( m ) = \sum_{ d | m } d\)\(2\)的整数次幂的充分必要条件.

不难发现\(f\)是一个积性函数,于是考虑\(f ( p^k ) = 1 + p + p^2 + . . . + p^k\).

\(p = 2\)的时候,显然不满足条件.

不然,只有\(k\)是奇数的时候,\(f ( p^k )\)才是一个偶数.

而此时\(f ( p^k ) = ( 1 + p ) ( 1 + p^2 + p^4 + . . . + p^{ k - 1 } ) = ( 1 + p ) ( 1 + p^2 ) ( 1 + p^4 + . . . + p^{ k - 3 } )\).其是\(2\)的整数次幂的一个必要条件是\(p\)是一个梅森素数,而且不难发现只有当\(k = 1\)的时候才满足条件.

于是充分必要条件是:\(m\)是若干个不同的梅森素数的乘积.

狄利克雷卷积

\(f * g = \sum_{ d | n }{ f ( d ) g ( \cfrac{ n }{ d } ) }\).

不难证明狄利克雷卷积满足:

  1. 交换律:\(f * g = g * f\).

  2. 结合律:\(f * ( g * h ) = ( f * g ) * h\).

  3. 分配律:\(f * ( g + h ) = f * g + f * h\).

  4. \(f , g\)是积性函数,则\(f * g\)也是积性函数.

考虑第四条的证明:

\[ \begin{aligned} f * g ( nm ) & = \sum_{ d | ( nm ) } f ( d ) g ( \cfrac{ n }{ d } ) \\ & = \sum_{ c | n } \sum_{ d | m } f ( cd ) g ( \cfrac{ nm }{ cd } ) \\ & = \sum_{ c | n } \sum_{ d | m } f ( c ) f ( d ) g ( \cfrac{ n }{ c } ) g ( \cfrac{ m }{ d } ) \\ & = ( f * g ( n ) ) \times ( f * g ( m ) ) \end{aligned} \]

  1. \(\forall f , f ( 1 ) \ne 0\),\(\exists f^{ - 1 }\),\(f * f^{ - 1 } = \epsilon\).

构造\(g ( x )\)满足\(f ( 1 ) g ( x ) = \epsilon ( x ) - \sum_{ d | x , d \ne 1 } f ( d ) g ( \frac{ x }{ d } )\)显然就是满足条件的.

  1. 积性函数的逆元也是积性函数.

欧拉函数

定义欧拉函数\(\varphi ( m )\)为所有满足\(1 \leq n \leq m \land n \perp m\)\(n\)的个数.

\(m = m_1 m_2\),其中\(m_1 \bot m_2\).由于若\(n \bot m_1 , n \bot m_2\),显然有\(( n \mod m_1 ) \bot m_1\)\(( n \mod m_2 ) \bot m_2\),则根据中国剩余定理,不难有\(\varphi ( m ) = \varphi ( m_1 ) \varphi ( m_2 )\),也即\(\varphi ( x )\)是积性函数.

\(n = \prod^{ k }_{ i = 1 } p_i^{ a_i }\),则:

\(\varphi ( n ) = \prod^k_{ i = 1 } \varphi ( p_i^{ a_i } ) = \prod^k_{ i = 1 }{ p_i^{ a_i } - p_i^{ a_i - 1 } } = \prod^k_{ i = 1 }{ p^{ a_i - 1 } ( p_i - 1 ) }\).

考虑改变枚举方式,因为\(n = \prod_{ p | n } p^{ a_p }\),则:\(\varphi ( n ) = \prod_{ p | n }{ p^{ a_p - 1 } ( p - 1 ) } = \prod_{ p | n }{ ( p^{ a_p } \times \cfrac{ p - 1 }{ p } ) } = n \times \prod_{ p | n } \cfrac{ p - 1 }{ p }\).

我们考虑一个事实:现在有\(m\)个不同的分数\(\cfrac{ k }{ m } , k \in [ 1 , m ]\),这些分数进行约分后,它们的分母即\(m\)的若干因数,而它们的分子就是与这些因数互质的数,同时这些数的个数总共是\(m\)个,我们可以得到:\(\sum_{ d | m } \varphi ( d ) = m\).

上面这个结论还有另一种证明方法:

由于\(\varphi\)是积性函数,若\(n \ne 1\),设\(n = \prod_{ i = 1 }^k p_i^{ q_i }\),则\(\varphi ( n ) = \prod_{ i = 1 }^k \varphi ( p_i^{ q_i } )\),则有:

$$ \[\begin{aligned} \sum_{ d | n } \varphi ( d ) & = \sum_{ w_1 = 0 }^{ q_1 } \sum_{ w_2 = 0 }^{ q_2 } . . . . . . \sum_{ w_k = 0 }^{ q_k }{ \varphi ( p_1^{ w_1 } ) \varphi ( p_2^{ w_2 } ) . . . . . . \varphi ( p_k^{ w_k } ) } \\ \end{aligned}\]

$$

\(\varphi ( p^q ) = p^q - p^{ q - 1 }\),于是有\(\sum_{ i = 1 }^{ q_i }{ ( p_x^i - p_x^{ i - 1 } ) } = ( p_x^{ q_x } - 1 )\),则有\(\sum_{ i = 0 }^{ q_x } \varphi ( p_x^{ i } ) = p_x^{ q_x }\).

则原式等于\(\prod_{ i = 1 }^k p_i^{ q_i } = n\).

和法里级数的关系

我们考虑之前提到的法里级数\(\mathcal{ F }_n\),令\(\Phi ( x ) = \sum_{ 1 \leq k \leq x } \varphi ( k )\),那么\(\mathcal{ F }_n\)的个数显然是\(\Phi ( x ) + 1\).

接下来我们思考如何计算\(\Phi ( x )\).事实上,我们有\(\sum_{ d = 1 }^n \Phi ( \lfloor \cfrac{ n }{ d } \rfloor ) = \cfrac{ 1 }{ 2 } ( n + 1 ) n\).这里的证明是:考虑满足\(0 \leq a < b \leq n\)的分数\(\cfrac{ a }{ b }\)共有\(\cfrac{ 1 }{ 2 } n ( n + 1 )\)个,而如果我们枚举\(d = \gcd ( a , b )\),那么显然右边也等于这些分数个数,于是得证.

而事实上,如果我们用\(n = \lfloor x \rfloor\)来带入上面的式子,可以得到\(\sum_{ d = 1 } \Phi ( \cfrac{ x }{ d } ) = \cfrac{ 1 }{ 2 } \lfloor x \rfloor \lfloor 1 + x \rfloor\).

根据第三种莫比乌斯反演的形式,我们有:\(\Phi ( x ) = \cfrac{ 1 }{ 2 } \sum_{ 1 \leq d } \mu ( d ) \lfloor \cfrac{ x }{ d } \rfloor \lfloor \cfrac{ x }{ d } + 1 \rfloor\).

麦克马洪和式

考虑这个问题:我们现在有\(m\)种颜色,要对一个长度为\(n\)的圆环进行染色,旋转后相同算一种方案,求方案数.

我们先设答案为\(N ( n , m )\),并将这些答案全部列举出来,然后将它们进行旋转,进行\(n - 1\)次.这样我们就得到了\(nN ( n , m )\)个圆环,但是这些圆环是有重复的.

那么我们显然有:

\[ \begin{aligned} nN ( n , m ) & = \sum_{ a_0 a_1 . . . a_{ n - 1 } } \sum_{ 0 \leq k < n } [ a_0 a_1 . . . a_{ n - 1 } = a_k . . . a_{ n - 1 } a_0 . . . a_{ k - 1 } ] \\ & = \sum_{ 0 \leq k < n } \sum_{ a_0 a_1 . . . a_{ n - 1 } } [ a_0 a_1 . . . a_{ n - 1 } = a_k . . . a_{ n - 1 } a_0 . . . a_{ k - 1 } ] \end{aligned} \]

接下来我们只需要知道,当已知\(k\)的时候,右边和式的贡献是多少.显然此时有\(a_i = a_{ ( i + k ) \mod n }\),也就是\(a_i = a_{ ( i + kl ) \mod n }\),此时答案为\(m^{ \gcd ({ n , k } ) }\).

为啥答案为\(m^{ \gcd ( n , k ) }\)呢?我们考虑这一定会不断在\(a\)中取数,那么会取多少数呢?显然会取\(x - 1\)个数,其中\(i + xk = i + yn\),不难解得此时\(x = \frac{ n }{ \gcd ( k , n ) }\),因此一共有\(\gcd ( n , k )\)个轨道.

也就是说:\(nN ( n , m ) = \sum_{ 0 \leq k < n } m^{ \gcd ( n , k ) } , N ( n , m ) = \cfrac{ 1 }{ n } \sum_{ 0 \leq k < n } m^{ \gcd ( n , k ) } \\\).

如果我们对这个式子进行化简:

\[ \begin{aligned} N ( n , m ) & = \cfrac{ 1 }{ n } \sum_{ d | n } m^d \sum_{ 0 \leq k < n } [ d = \gcd ( n , k ) ] \\ & = \cfrac{ 1 }{ n } \sum_{ d | n } m^d \sum_{ d | k , k < n } [ \cfrac{ k }{ d } \bot \cfrac{ n }{ d } ] \\ & = \cfrac{ 1 }{ n } \sum_{ d | n } m^d \sum_{ 0 \leq k < \frac{ n }{ d } } [ k \bot \cfrac{ n }{ d } ] \\ & = \cfrac{ 1 }{ n } \sum_{ d | n } \varphi ( d ) m^{ \frac{ n }{ d } } . \end{aligned} \]

这个式子被称为麦克马洪公式.

另外,如果我们考虑\(n | ( \sum_{ d | n } \varphi ( d ) n^{ \frac{ n }{ d } } )\)这件事的证明,考虑如果\(n = p^k\),那么根据费马小定理,显然可证明.

而由于\(\varphi ( x )\)是积性函数,令\(n = n_1 n_2 , n_1 \bot n_2\),有:

\[ \begin{aligned} \sum_{ d | n } \varphi ( d ) n^{ \frac{ n }{ d } } & = \sum_{ d_1 | n_1 , d_2 | n_2 } \varphi ( d_1 d_2 ) n^{ \frac{ n_1 n_2 }{ d_1 d_2 } } \\ & = \sum_{ d_1 | n_1 } \varphi ( d_1 ) ( \sum_{ d_2 | n_2 } \varphi ( d_2 ) ( n^{ \frac{ n_1 }{ d_1 } } )^{ \frac{ n_2 }{ d_2 } } ) \end{aligned} \]

我们可以通过数学归纳来证明.

Burnside定理

现在让我们来进行一些抽象代数的计算.

置换群:运算\(( a_1 , a_2 , . . . , a_k )\)表示将\(a_1\)放到\(a_2\)位置…把\(a_i\)放到\(a_{ i + 1 }\)的位置…把\(a_k\)放到\(a_1\)的位置,而幺元\(e = ( 1 ) ( 2 ) ( 3 ) . . . ( n )\).

由麦克马洪和式的证明,我们不难推导出Polya定理:设要对\(n\)个元素用\(m\)种颜色染色,若通过某种旋转得到的染色方案算同一种,考虑旋转一定是一种置换,则本质不同的染色方案数\(= \cfrac{ \sum_{ s \in S } m^{ \eta ( s ) } }{ | S | }\),其中\(\eta ( s )\)表示\(s\)的轨道数,即有多少组置换.

Example1([HNOI2009]图的同构计数)

首先看到循环同构,第一反应就是Burnside定理.考虑将每条边的状态设为两种:选或不选,那么我们就对点的编号进行置换,然后找到不动边的数量.

我们先考虑对于一个置换,该如何求得它的不动边的数量.考虑置换是一个排列,对它做置换环分解.

现在问题在于置换环内和置换环间要分别求不动点的数量.

先来考虑置换环内:由于是一个置换环,我们假设它的大小是\(b\),将这\(b\)个点排成一个正\(b\)边形(\(b\)个点的完全图),考虑一个一条边转多少次才能转回来,如果不是\(b\)是偶数并且这条边正好平分整个多边形的话,显然需要转\(n\)次,简单判掉特殊情况,发现轨道数量\(\lfloor \frac{ b }{ 2 } \rfloor\).

接下来考虑置换环外:对于两个置换环间,对于一条边,我们考虑不断做置换,做多少次才能使这条边回归原位置.注意到需要做\(lcm ( b_1 , b_2 )\)次.而总共有\(b_1 b_2\)条边,于是轨道数量\(\frac{ b_1 b_2 }{ lcm ( b_1 , b_2 ) } = \gcd ( b_1 , b_2 )\).

这样对于一个\(k\)个环的置换,它的答案就是\(\sum_{ i = 1 }^k \lfloor \frac{ b_i }{ 2 } \rfloor + \sum_{ i = 1 }^k \sum_{ j = i + 1 }^k \gcd ( b_i , b_j )\).

接下来发现本质不同的置换不多,搜出来每个置换环的大小,暴力判断.

欧拉定理

\(a \perp m\)时,\(a^{ \varphi ( m ) } \equiv 1 ( \mod m )\).

证明考虑取出\([ 1 , m ]\)中所有和\(m\)互质的数,设它们为\(b_1 , b_2 , \cdots , b_{ \varphi ( m ) }\).我们有:

\[ \begin{aligned} \prod_{ k = 1 }^{ \varphi ( m ) } ab_k & \equiv \prod_{ k = 1 }^{ \varphi ( m ) } ( ab_k \bmod p ) ( \mod p ) \\ a^{ \varphi ( m ) } \prod_{ k = 1 }^{ \varphi ( m ) } b_k & \equiv \prod_{ k = 1 }^{ \varphi ( m ) } b_k ( \mod p ) \end{aligned} \]

欧拉定理可以用来求逆元:\(a^{ \varphi ( p ) } \equiv 1 ( \mod p )\),则有\(a^{ - 1 } \equiv a^{ \varphi ( p ) - 1 } ( \mod p )\).

扩展欧拉定理

\(a^b \equiv a^c ( \mod m )\),其中

\[\begin{cases} b\bmod \varphi(m) &a\perp m\\ b &b<\varphi(m)\\ (b\bmod \varphi(m))+\varphi(m) &other \end{cases}\]

证明如下:

\(m = \prod^k_{ i = 1 } p_i^{ e_i }\),则要证\(a^b \equiv a^{ ( b \mod \varphi ( m ) ) + \varphi ( m ) } ( \mod m )\),即证\(\forall i\)都有\(a^b \equiv a^{ ( b \mod \varphi ( m ) ) + \varphi ( m ) } ( \mod p_i^{ e_i } )\).

分情况讨论:

\(p_i^{ e_i } \perp a\),则为普通欧拉定理情况,即证明\(\varphi ( p_i^{ e_i } )\)\(b - c\)的因数.由于\(\varphi ( p_i^{ e_i } )\)\(\varphi ( m )\)的因数,而\(\varphi ( m )\)\(b - c\)的因数,显然得证.

不然,发现\(e_i \leq \varphi ( p_i^{ e_i } ) \leq \varphi ( m ) \leq b\)\(\varphi ( m ) \leq c\),又发现\(p_i^{ e_i } | a^{ e_i }\),所以\(p_i^{ e_i } | a^b\),\(p_i^{ e_i } | a^c\),左右两边均为\(0\),得证.

Example1(CF906D Power Tower)

考虑每次暴力做扩展欧拉定理,注意到每次会把\(p\)变成\(\varphi ( p )\),如果\(p\)是奇数,那它下一步会变为偶数,如果\(p\)是偶数,则下一步至少减半,于是迭代次数是\(\log n\)级别的.

Example2([六省联考 2017] 相逢是问候)

同上.

Example3(《具体数学》4.54)

\(1000 ! \pmod{ 10^{ 250 } }\).

首先,根据前面的例题,不难发现\(5^{ 249 } \times 2^{ 994 } \mid ( 1000 ! )\).

我们有:

\[ \begin{aligned} 1000 ! & \equiv ans \pmod{ 10^{ 250 } } \\ \cfrac{ 1000 ! }{ 10^{ 249 } } & \equiv \cfrac{ ans }{ 10^{ 249 } } \pmod{ 10 } \end{aligned} \]

由于模数现在变成了\(10\),考虑\(1 \times 3 \times 3 \times 7 \times 9 \mod{ 10 } = 7\),于是我们有:

$$ \[\begin{aligned} \cfrac{ ans }{ 10^{ 249 } } & \equiv 2^{ 745 } \times 7^{ 100 } \pmod{ 10 } \\ \end{aligned}\]

$$

\(\varphi ( 10 ) = 4\),根据扩展欧拉定理:

\[ \begin{aligned} \cfrac{ ans }{ 10^{ 249 } } & \equiv 2^{ 5 } \pmod{ 10 } \\ ans & \equiv 2 \times 10^{ 249 } \pmod{ 10^{ 250 } } \end{aligned} \]

Example1(《具体数学》4.57)

求证:\(\sum_{ 1 \leq k \leq n + m } \varphi ( k ) [ ( m \mod k ) + ( n \mod k ) \geq k ] = nm \\\).

先考虑将条件改为一个更好处理的式子,不难发现:

\[ [ m \bmod k + n \bmod k \geq k ] = \lfloor \cfrac{ n + m }{ k } \rfloor - \lfloor \cfrac{ n }{ k } \rfloor - \lfloor \cfrac{ m }{ k } \rfloor \]

于是接下来我们要处理的式子形如\(\sum_{ 1 \leq k \leq n } \varphi ( k ) \lfloor \cfrac{ n }{ k } \rfloor \\\).

对其增加枚举量:

\[ \begin{aligned} \sum_{ 1 \leq k \leq n } \varphi ( k ) \lfloor \cfrac{ n }{ k } \rfloor & = \sum_{ 1 \leq k \leq n } \varphi ( k ) \sum_{ d = 1 }^{ \lfloor \frac{ n }{ k } \rfloor } 1 \\ & = \sum_{ k = 1 }^n \sum_{ d | k } \varphi ( d ) \\ & = \sum_{ k = 1 }^n k = \cfrac{ ( n + 1 ) n }{ 2 } \end{aligned} \]

带入即可证明.

Example2

\(\sum_{ 1 \leq a , b \leq p ( p - 1 ) } [ a^b \equiv b^a ( \mod p ) ] , p \in \mathrm{ prime }\).

考虑\(p \bot ( p - 1 )\),使用中国剩余定理,我们有:

\[ \begin{aligned} \sum_{ 1 \leq a , b \leq p ( p - 1 ) } [ a^b & \equiv b^a ( \mod p ) ] \\ & = \sum_{ 0 \leq a , b < p } \sum_{ 0 \leq c , d < p - 1 } [ a^c \equiv b^d ( \mod p ) ] \\ & = ( p - 1 )^2 + \sum_{ 1 \leq a , b < p } \sum_{ 0 \leq c , d < p - 1 } [ a^c \equiv b^d ( \mod p ) ] \end{aligned} \]

后面那部分的答案是:

\[ \begin{aligned} \sum_{ 1 \leq a , b < p } \sum_{ 0 \leq c , d < p - 1 } [ a^c & \equiv b^d ( \mod p ) ] \\ & = \sum_{ 1 \leq x < p } \sum_{ 0 \leq a , b < p } \sum_{ 1 \leq c , d < p - 1 } [ a^c \equiv x ( \mod p ) ] [ b^d \equiv x ( \mod p ) ] \\ & = \sum_{ 1 \leq x < p } ( \sum_{ 1 \leq a < p , 0 \leq c < p - 1 } [ a^c \equiv x ( \mod p ) ] )^2 \end{aligned} \]

\(g\)\(p\)的原根,令\(a = g^b\),\(x = g^{ x ' }\)有:

$$ \[\begin{aligned} \sum_{ 1 \leq x < p } ( \sum_{ 1 \leq a < p , 0 \leq c < p - 1 } [ a^c & \equiv x ( \mod p ) ] )^2 \\ & = \sum_{ 0 \leq x ' < p - 1 } ( \sum_{ 0 \leq b < p - 1 , 0 \leq c < p - 1 } [ bc \equiv x ' ( \mod p - 1 ) ] )^2 \\ & = \sum_{ 0 \leq x < p - 1 } ( \sum_{ 0 \leq a , b < p - 1 } [ ab \equiv x ( \mod p - 1 ) ] )^2 \\ \end{aligned}\]

$$

考虑前面那个式子,如果我们令\(x = x_0 x_1 , x_0 \bot x_1\),\(p - 1 = p_0 p_1 , p_0 \bot p_1\),其中\(0 \leq x_0 < p_0 , 0 \leq x_1 < p_1\),后面那个式子为\(f ( p - 1 , x )\),由于中国剩余定理,有\(f ( p - 1 , x ) = f ( p_0 , x_0 ) f ( p_1 , x_1 )\).

于是令\(p - 1 = \prod_{ i = 1 }^k p_i^{ q_i }\)上面的式子可以改为:

\[ \prod_{ i = 1 }^k ( \sum_{ 0 \leq x_i < p_i^{ q_i } } ( \sum_{ 0 \leq a , b < p_i^{ q_i } } [ ab \equiv x_i ( \mod p_i^{ q_i } ) ] )^2 ) \]

我们只考虑其中一项,形如:

\[ \sum_{ 0 \leq x < p^{ q } } ( \sum_{ 0 \leq a , b < p^q } [ ab \equiv x ( \mod p^{ q } ) ] )^2 \]

我们不妨用\(ap^{ \alpha }\)代替\(a\),\(bp^\beta\)代替\(b\),\(xp^t\)代替\(x\),其中\(a , b , x \bot p\)那么有:

\[ \sum_{ 0 \leq x < p^{ q - t } } ( \sum_{ 0 \leq a < p^{ q - \alpha } , 0 \leq b < p^{ q - \beta } } [ abp^{ \alpha + \beta } \equiv xp^t ( \mod p^{ q } ) ] )^2 \]

则我们要做的即对四元组\(( a , b , \alpha , \beta )\)计数.由于\(a , b , x \bot p\),我们有:

\[ \begin{aligned} \alpha + \beta & = t , \alpha , \beta \in \mathbb{ N } \\ ab & \equiv x \pmod{ p^{ q - t } } , 0 \leq a < p^{ q - \alpha } , 0 \leq b < p^{ q - \beta } \end{aligned} \]

第一个式子对四元组的贡献显然是\(t + 1\),而第二个式子,由于\([ 1 , p^{ q - t } ) \in [ 1 , p^{ q - \alpha } )\),所以我们可以先求出\(1 \leq a < p^{ q - t }\)的答案,然后乘以\(p^{ t - \alpha }\)得到答案,\(b\)是类似的,于是:

\[ \begin{aligned} ans & = \sum_{ 1 \leq x < p^{ q - t } } ( ( t + 1 ) p^{ t - \alpha } p^{ t - \beta } \sum_{ 1 \leq a , b < p^{ q - t } } [ ab \equiv x \pmod{ p^{ q - t } } ] )^2 + ( \sum_{ 1 \leq a , b \leq p^q } [ ab \equiv 0 \pmod{ p^{ q } } ] )^2 \\ & = \sum_{ 1 \leq x < p^{ q - t } } ( ( t + 1 ) p^{ t - \alpha } p^{ t - \beta } \sum_{ 1 \leq a , b < p^{ q - t } } [ ab \equiv x \pmod{ p^{ q - t } } ] )^2 + q ( p - 1 ) p^{ q - 1 } + p^q \end{aligned} \]

后面,由于\(a \bot p\),显然一个\(a\)唯一对应一个\(b\).于是我们得到了答案为:

\[ \sum_{ 1 \leq x < p^{ q - t } } ( ( t + 1 ) p^{ t } \varphi ( p^{ q - t } ) )^2 \]

而后面的式子显然跟\(x\)无关,所以有:

\[ \begin{aligned} & \sum_{ 0 < x < p^{ q - t } } ( ( t + 1 ) p^{ t } \varphi ( p^{ q - t } ) )^2 \\ = & \sum_{ 0 \leq t < q } ( \varphi ( p^{ q - t } ) ) ( ( t + 1 ) p^{ t } \varphi ( p^{ q - t } ) )^2 \\ = & \sum_{ 0 \leq t < q } ( t + 1 )^2 p^{ 2 t } ( p - 1 )^3 p^{ 3 q - 3 t - 3 } \\ = & \sum_{ 0 \leq t < q } ( t + 1 )^2 ( p - 1 )^3 p^{ 3 q - t - 3 } \end{aligned} \]

其实到这一步,由于\(\sum t\)\(O ( \log n )\)级别的,这题已经可以做了.

莫比乌斯函数

莫比乌斯函数\(\mu ( x )\)是一个满足\(\sum_{ d | n } \mu ( n ) = 1\)的函数,根据定义其显然是积性函数.根据定义可以求出它的封闭形式:

\(\mu ( m ) = \begin{cases}0 & \exists m_i \geq 2 \\ ( - 1 )^k & \forall m_i \leq 1\end{cases} , m = \prod_{ i = 1 }^k p_i^{ m_i }\).

莫比乌斯反演

见”反演.md”.

另外,值得一提的是,根据莫比乌斯反演,我们可以发现\(\mu * id = \varphi\).

有公式:\(\mu^2 ( x ) = \sum_{ i^2 | x } \mu ( i )\).原因很简单,我们设\(x '\)\(x\)中所有的质因子的幂先除二下取整再乘二后变成的答案,显然\(\mu^2 ( x ) = \mu^2 ( x ' )\),我们有\(\sum_{ i | \sqrt{ x ' } } \mu ( y ) = [ \sqrt{ x ' } = 1 ] , \sum_{ i^2 | x ' } \mu ( y ) = [ x ' = 1 ]\).

min25筛

如果我们考虑积性函数的值,理论上来说,设\(S ( n , k )\)表示最小质因子大于等于\(p_k\)的所有\(f\)的和加上\(f ( 1 )\),其实我们自然有:

\[ S ( n , k ) = \sum_{ e \geq 0 } f ( p_k^e ) S ( \lfloor \frac{ n }{ p_k^e } \rfloor , k + 1 ) \]

问题在于这么做需要枚举\([ 1 , n ]\)中的全部质数,这是根本无法接受的.

我们考虑一些很大的质数,换言之,最小质因子大于\(\sqrt{ n }\)的数在\([ 1 , n ]\)中只有可能是质数本身.

因此你会发现,这个过程只需要把质数单独拿出来做,复杂度就可以得到相当的飞跃.

考虑:

\[ \sum_{ i = 1 }^n f ( i ) = \sum_{ p \in \mathrm{ prime } } f ( p ) + \sum_{ p \notin \mathrm{ prime } \land p \ne 1 } f ( p ) + f ( 1 ) \]

\(g ( N , i ) = \sum_{ j = 1 }^N [ j \in \mathrm{ prime } \lor \mathrm{ Min }_j > p_i ] F ( j ) \\\),其中\(\mathrm{ Min }_j\)表示\(j\)最小的质因数,\(p_i\)表示第\(i\)个质数.

注意到\(g ( N , i )\)实际上就是\(N\)以内的数在第\(i\)轮埃氏筛后剩余的数的\(F\)的和.

\(F ( i )\)表示若干完全积性函数之和且当\(p \in \mathrm{ prime }\) 时,\(F ( p ) = f ( p )\),下文为了方便书写,直接认为\(F\)是完全积性函数.

\(g ( N , \sqrt{ N } )\)实际上就是\(N\)以内的质数的\(F\)之和,那么有:

$$ \[\begin{aligned} g ( n , 0 ) & = \sum_{ i = 2 }^n F ( i ) \\ g ( i , j ) & = g ( i , j - 1 ) - F ( p_j ) ( \ g ( \lfloor \frac{ i }{ p_j } \rfloor , j - 1 ) - \sum_{ 2 \leq p \leq p_{ j - 1 } , p \in \mathrm{ prime } } F ( p ) \ ) \\ \end{aligned}\]

$$

ps1:

\(j\)个质数会比第\(j - 1\)个多筛若干个数,即最小质因数是\(p_j\)的数.这些数形如\(\{ p_j , 2 p_j , 3 p_j . . . \}\),同时除以\(p_j\)得到\(\{ 1 , 2 , 3 . . . \}\).

我们要的就是其中最小质因数大于等于\(p_j\)的数,也就是最小质因数大于\(p_{ j - 1 }\)的数,因而就是\(g ( \lfloor \frac{ i }{ p_j } \rfloor , j - 1 )\).

但还有一些质数会被重复计算,我们把他删掉就可以了.

考虑到\(g\)后面的维度最多走到\(\sqrt{ n }\),所以我们所枚举的最小质因子一定小于等于\(\sqrt{ n }\),所以一定有\(p_{ j - 1 } < \lfloor \frac{ i }{ p_j } \rfloor\),所以直接删去一定不会多删.

ps2:

注意到以下事实:\(\lfloor \frac{ \lfloor \frac{ a }{ b } \rfloor }{ c } \rfloor = \lfloor \frac{ a }{ bc } \rfloor \\\).

因而,如果我们有以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
void solve(int n){
if(f[n])return f[n];
else f[n]=......;
for(int i=1;i<=n;++i){
solve(n/i);
}
}
int main(){
...
solve(n);
...
}

该代码复杂度为\(O ( \sqrt{ n } )\).原因在于,根据整数分块,\(\lfloor \frac{ n }{ i } \rfloor\)\(\sqrt{ n }\)种取值.

而如果递归下去,继续枚举\(j\),并往下递归到\(\lfloor \frac{ \lfloor \frac{ n }{ i } \rfloor }{ j } \rfloor\),那他就相当于枚举\(k = ij\),并递归到\(\lfloor \frac{ n }{ k } \rfloor\),因而复杂度得到保证.

由此可知,求\(g\)的复杂度为\(O ( \sqrt{ n } \times \sqrt{ \sqrt{ n } } ) = O ( n^{ \frac{ 3 }{ 4 } } )\).

\(S ( n , m )\)表示前\(n\)个数中,最小质因数大于等于\(p_m\)的数的\(f\)之和,可知:

$$ \[\begin{aligned} S ( n , m ) & = g ( n , + \infty ) - \sum_{ k = 1 }^{ m - 1 } f ( p_k ) + \sum_{ k \geq m , e \geq 1 , p_k^{ e + 1 } \leq n } f ( p_k^e ) S ( \lfloor \frac{ n }{ p_k^e } \rfloor , k + 1 ) + \sum_{ k \geq m , e = 2 , p_k^e \leq n } f ( p_k^e ) \\ & = g ( n , + \infty ) - \sum_{ k = 1 }^{ m - 1 } f ( p_k ) + \sum_{ k \geq m , e \geq 1 , p_k^{ e + 1 } \leq n } [ f ( p_k^e ) S ( \lfloor \frac{ n }{ p_k^e } \rfloor , k + 1 ) + f ( p_k^{ e + 1 } ) ] \\ \end{aligned}\]

$$

ps1:

前半段求出质数部分的和,后半段开始枚举最小质因子.

由于\(p_k\)是当前数的最小质因子,\(e\)是他的幂.则这个数其他的质因子应该均大于\(p_k\),因而大于等于\(p_{ k + 1 }\).

注意到由于\(S\)中不包含\(1\),所以应特殊处理只含有\(p_k\)一个质因子的情况.

又注意到,如果\(p_k^e < n < p_k^{ e + 1 }\),那么此时\(\lfloor \frac{ n }{ p_k^e } \rfloor\)一定小于\(p_k\),则不可能拥有比\(p_k\)更大的质因子.

该形式与上面一致,因而复杂度同样为\(O ( n^{ \frac{ 3 }{ 4 } } )\).我们最终要求的答案即\(S ( n , 1 ) + f ( 1 )\).

一些后记:

  1. 事实上,复杂度的计算只是上限,实际上应该约为\(O ( \frac{ n^{ \frac{ 3 }{ 4 } } }{ \log_2 n } )\).

  2. 如果使用map会导致复杂度较差,考虑如下事实:

(1).\(\forall 1 \leq x \leq n\),则要么\(x \leq \sqrt{ n }\),要么\(\lfloor \frac{ n }{ x } \rfloor \leq \sqrt{ n } \\\).

(2).\(\forall a\)形如\(\lfloor \frac{ n }{ x } \rfloor\),则\(\lfloor \frac{ n }{ a } \rfloor\)应为\(x_{ max }\),互不相同.

因而可以分别特判,从而做到比map或离散化都优秀的复杂度.

  1. 我们在代码中所求出的\(w\)是倒序的,而我们转移的过程也是倒序的,因而枚举的时候可以直接正序枚举.

  2. 考虑做的时候由于进行了滚动数组,因而继承操作可以直接使用,为了方便可以直接判掉可以直接继承的情况.

  3. \(S\)的过程可以使用递归,因为我们只关心一个\(S\)的量.

Example1([uoj188]Sanrd)

注意到这题显然可以写埃筛的暴力.考虑使用类似min15筛的方式,定义\(f ( n )\)\(n\)的次大质因子(若\(n = 1 \lor n \in \mathrm{ prime }\)\(f ( n ) = 0\)),\(S ( n , k ) = \sum_{ i = 1 }^n [ \mathrm{ Min }_i \geq p_k ] f ( i )\).不难发现我们要求的就是\(S ( n , 1 )\),而显然\(S ( n , \sqrt{ n } ) = 0\).

注意到:

\[ S ( n , m ) = \sum_{ i \geq m , e \geq 1 , p_i^{ e + 1 } \leq n } S ( \lfloor \frac{ n }{ p_i^e } \rfloor , i + 1 ) + p_i \sum_{ i = p_i + 1 }^{ \lfloor \frac{ n }{ p_i^e } \rfloor } [ i \in \mathrm{ prime } ] \]

区间素数个数可以拿min25筛的前半部分做.

杜教筛

\(F ( n ) = \sum_{ i = 1 }^n f ( i ) \\\),我们考虑构造两个函数\(g\)\(s\).使得\(f * g = s\).

\(G ( n ) = \sum_{ i = 1 }^n g ( i ) , S ( n ) = \sum_{ i = 1 }^n s ( i ) \\\).若\(G ( i )\)\(S ( i )\)都很方便求,\(g ( 1 ) = 1\),我们就可以求出\(F ( n )\).

$$ \[\begin{aligned} f * g & = s \\ \sum_{ j | i } f ( j ) g ( \frac{ i }{ j } ) & = s ( i ) \\ \end{aligned}\]

$$

由于\(g ( 1 ) = 1\),我们有\(f ( i ) = s ( i ) - \sum_{ j | i , j \ne i } f ( j ) g ( \frac{ i }{ j } ) \\\).

那么:

$$ \[\begin{aligned} F ( n ) & = \sum_{ i = 1 }^n f ( i ) \\ & = \sum_{ i = 1 }^n ( s ( i ) - \sum_{ j | i , j \ne i } f ( j ) g ( \frac{ i }{ j } ) ) \\ & = S ( n ) - \sum_{ j = 1 }^n \sum_{ k = 2 }^{ \lfloor \frac{ n }{ j } \rfloor } g ( k ) f ( j ) \\ & = S ( n ) - \sum_{ k = 2 }^n g ( k ) \sum_{ j = 1 }^{ \lfloor \frac{ n }{ k } \rfloor } f ( j ) \\ & = S ( n ) - \sum_{ k = 2 }^n g ( k ) F ( \lfloor \frac{ n }{ k } \rfloor ) \\ \end{aligned}\]

$$

复杂度证明和min25筛是一样的,不同点在于我们可以预处理\(n^{ \frac{ 2 }{ 3 } }\)以内的\(F\),这样复杂度可以降到\(O ( n^{ \frac{ 2 }{ 3 } } )\).

Example1

\(\sum_{ i = 1 }^N \mu ( i ) \\\).

由于\(\mu * I = \epsilon\),于是考虑\(g = I\).

Example2

\(\sum_{ i = 1 }^N \varphi ( i ) \\\).

由于\(\varphi * I = id\),于是考虑\(g = I\).

Example3

\(\sum_{ i = 1 }^N{ \varphi ( i ) \times i } \\\)

由于\(\sum^N_{ i = 1 } ( f * g ) ( i ) = \sum_{ d | N }{ f ( i ) \times g ( \cfrac{ n }{ d } ) } = \sum_{ d | N }{ \varphi ( d ) \times d \times g ( \cfrac{ n }{ d } ) } \\\)

由于中间过程中乘出来的\(d\)很难处理,需要消掉它,于是考虑\(g = id\).

Example4

\(\sum_{ i = 1 }^N{ \varphi ( i ) \times i^2 } \\\).

由Example3,于是考虑\(g = id^2\).

Powerful Number筛

定义Powerful Number为满足所有质因子的指数都\(> 1\)的数,不难证明这样的数在\([ 1 , n ]\)中最多只有\(O ( \sqrt{ n } )\)个(使用积分).同时对于质因子的幂分奇偶讨论:奇数分成一个\(3\)加上一个偶数,那么不难证明这个数一定有:\(a^2 b^3\)的形式.找到这些数字可以直接dfs搜指数.

现在我们要求积性函数\(f ( n )\)的前缀和.假设\(f = h * g\),其中\(h ( 1 ) = 1 , g ( p ) = f ( p ) , \forall p \in \mathrm{ prime }\)\(g ( n )\)的前缀和容易计算.

接下来我们证明:\(h ( n ) \ne 0 \Rightarrow n \ is \ Powerful \ Number\).

\(\forall p \in \mathrm{ prime }\),\(f ( p ) = g ( 1 ) h ( p ) + g ( p ) h ( 1 ) = h ( p ) + g ( p )\),于是\(h ( p ) = 0\).根据积性函数的性质有\(\forall x \notin \text{ PN } , h ( x ) = 0\).

注意到:

\[ \begin{aligned} F ( n ) & = \sum_{ i = 1 }^n f ( i ) \\ & = \sum_{ i = 1 }^n \sum_{ j | i } h ( j ) g ( \frac{ i }{ j } ) \\ & = \sum_{ j = 1 }^n h ( j ) G ( \lfloor \frac{ n }{ j } \rfloor ) \end{aligned} \]

于是可以快速求,复杂度\(O ( \sqrt{ n } )\).

Example1([SP20174]DIVCNT3)

首先我们需要构造\(g ( p ) = f ( p ) , p \in \mathrm{ prime }\).注意到\(f ( p ) = d ( p^3 ) = 4\),我们构造\(g ( p ) = ( d * d ) ( p )\).这样问题在于求\(G ( n )\).我们有:

\[ \begin{aligned} G ( n ) & = \sum_{ i = 1 }^n ( d * d ) ( i ) \\ & = \sum_{ ij \leq n } d ( i ) d ( j ) \\ & = \sum_{ i = 1 }^n d ( i ) D ( \lfloor \frac{ n }{ i } \rfloor ) \end{aligned} \]

\(D ( n ) = \sum_{ i = 1 }^n \lfloor \frac{ n }{ i } \rfloor\),自然可以做.复杂度算一算是\(O ( n^{ \frac{ 2 }{ 3 } } )\).

感觉Powerful Number筛的关键在于构造.

整值函数

定义

\(x \in \mathbb{ R }\),则:

\(\lfloor x \rfloor =\)小于等于x的最大的整数.

\(\lceil x \rceil =\)大于等于x的最小的整数.

我们有时称\(\lfloor x \rfloor\)\(x\)的整数部分,并定义\(x - \lfloor x \rfloor\)为分数部分,有时记作\(\{ x \}\).

我们定义\(x \mod y = x - y \lfloor \cfrac{ x }{ y } \rfloor\),\(x \ mumble \ y = y \lceil \cfrac{ x }{ y } \rceil - x\),其中\(x , y \in \mathbb{ N_+ }\).

当然,我们也可以使用上述定义将\(mod\)\(mumble\)的定义扩展到实数域,不过\(y = 0\)的时候需要特殊处理.

整值函数的基本性值

\(x \in \mathbb{ R } , n \in \mathbb{ Z }\),则有:

  1. \(\lfloor x \rfloor = x \Leftrightarrow \lceil x \rceil = x \Leftrightarrow x \in \mathbb{ Z }\).

  2. \(\lceil x \rceil - \lfloor x \rfloor = [ x \notin \mathbb{ Z } ]\).

  3. \(x - 1 < \lfloor x \rfloor \leq x \leq \lceil x \rceil < x + 1\).

  4. \(\lfloor - x \rfloor = - \lceil x \rceil , \lceil - x \rceil = - \lfloor x \rfloor\).

  5. \(\lfloor x \rfloor = n \Leftrightarrow n \leq x < n + 1 \Leftrightarrow x - 1 < n \leq x\).

  6. \(\lceil x \rceil = n \Leftrightarrow n - 1 < x \leq n \Leftrightarrow x \leq n < x + 1\).

  7. \(x < n \Leftrightarrow \lfloor x \rfloor < n\).

  8. \(x \leq n \Leftrightarrow \lceil x \rceil \leq n\).

  9. \(x > n \Leftrightarrow \lceil x \rceil > n\).

  10. \(x \geq n \Leftrightarrow \lfloor x \rfloor \geq n\).

  11. \(\lfloor x + n \rfloor = \lfloor x \rfloor + n\).

  12. \(\lceil x + n \rceil = \lceil x \rceil + n\).

  13. \(\lfloor nx \rfloor = n \lfloor x \rfloor \Leftrightarrow n = 0 \lor x - \lfloor x \rfloor < \cfrac{ 1 }{ n }\).

  14. \(\lceil nx \rceil = n \lceil x \rceil \Leftrightarrow n = 0 \lor x - \lceil x \rceil < \cfrac{ 1 }{ n }\).

  15. \(\lceil \cfrac{ n }{ m } \rceil = \lfloor \cfrac{ n - 1 }{ m } \rfloor + 1 , m \in \mathbb{ N_+ }\).

  16. \(m \lceil x \rceil - \lceil m ( \lceil x \rceil - x ) \rceil = \lfloor mx \rfloor\).

  17. \(( x \mod ny ) \mod y = x \mod y , n \in \mathbb{ N_+ }\).

  18. 分配律:\(c ( x \mod y ) = ( cx ) \mod ( cy )\).

整值函数的应用

一类函数与整值函数

\(f ( x )\)是一个有以下性质且在一个实数区间连续的单调递增函数:

\(f ( x ) \in \mathbb{ Z } \Rightarrow x \in \mathbb{ Z }\).

那么,只要\(f ( x ) , f ( \lfloor x \rfloor ) , f ( \lceil x \rceil )\)都有定义,我们有:

\(\lfloor f ( x ) \rfloor = \lfloor f ( \lfloor x \rfloor ) \rfloor\)\(\lceil f ( x ) \rceil = \lceil f ( \lceil x \rceil ) \rceil\).

由于底和顶是类似的,我们考虑先对顶进行证明,这样也可以类似证明底:

\(x = \lceil x \rceil\),显然得证;

不然,有\(x < \lceil x \rceil\),那么有\(f ( x ) < f ( \lceil x \rceil )\),也就有\(\lceil f ( x ) \rceil \leq \lceil f ( \lceil x \rceil ) \rceil\).

考虑反证法,不妨令\(\lceil f ( x ) \rceil < \lceil f ( \lceil x \rceil ) \rceil\).则一定存在一个整数\(y\)使得\(\lceil f ( x ) \rceil = y < \lceil f ( \lceil x \rceil ) \rceil\),此时必有\(x \leq y < \lceil x \rceil\).由于\(f\)的性值,显然有\(y\)是整数,但根据整值函数的性值,不可能存在这样一个整数\(y\)满足\(x \leq y < \lceil x \rceil\),因此得证.

另外,我们考虑函数\(f ( x ) = \cfrac{ x + m }{ n }\),显然这是一个满足条件的函数,因此显然满足上述的条件.再考虑\(m = 0\)的特殊情况:\(\lfloor \cfrac{ \lfloor \cfrac{ x }{ n } \rfloor }{ m } \rfloor = \lfloor \cfrac{ x }{ nm } \rfloor\).

而单调递减函数可以取相反数转化为单调递增函数.

迪利克雷抽屉原理

\(n\)个物体放进\(m\)个盒子里,那么必定有一个盒子中放入了大于等于\(\lceil \cfrac{ n }{ m } \rceil\)个物品,有一个盒子放入了小于等于\(\lfloor \cfrac{ n }{ m } \rfloor\)个物体.

Example1

求证:每个由\(n^2 + 1\)个不同实数构成的序列都包含一个长为\(n + 1\)的严格递增子序列或严格递减子序列.

\(a_i\)为第\(i\)个实数,\(c_i\)为以这个数为开头的最长的递增子序列,\(d_i\)表示以这个数为开头的最长的递减子序列.考虑反证法,如果不成立,那么\(\forall 1 \leq i \leq n^2 + 1\),\(1 \leq c_i \leq n \land 1 \leq d_i \leq n\).那么一共有\(n^2\)种不同的有序对.

根据抽屉原理,一共有\(n^2 + 1\)个有序对,所以一定有两个有序对相等.由于这些数字两两不同,所以一定可以把其中一个数字加到另一个数字的递增或递减子序列的后面,这样那个数字的\(c_i\)或者\(d_i\)就要\(+ 1\),与我们的假设不符,因此该定理成立.

Example2

求证:若任意两个人间只有两种关系:朋友或敌人.那么对于六个人而言,一定有三个人两两都是朋友或者两两都是敌人.

\(A\)是这六个人中其中一个,根据抽屉原理,一定有大于等于\(3\)个人都是\(A\)的敌人或者都是\(A\)的朋友,不妨假设这三个人都是\(A\)的朋友.

如果这三个人中有两个人是朋友,那么它们和A就一起构成了一组人.不然,他们三个人就构成了一组人.

计算区间内整数个数

整值函数的另一个应用是计算区间内整数个数:

考虑基本性值\(7 , 8 , 9 , 10\),不难发现:

  1. \([ \alpha , \beta ]\)包含\(\lfloor \beta \rfloor - \lceil \alpha \rceil + 1\)个整数.

  2. \(( \alpha , \beta )\)包含\(\lceil \beta \rceil - \lfloor \alpha \rfloor - 1\)个整数.

  3. \(( \alpha , \beta ]\)包含\(\lfloor \beta \rfloor - \lfloor \alpha \rfloor\)个整数.

  4. \([ \alpha , \beta )\)包含\(\lceil \beta \rceil - \lceil \alpha \rceil\)个整数.

我们定义一个实数\(\alpha\)是以下集合:

\(Spec ( \alpha ) = \{ \lfloor \alpha \rfloor , \lfloor 2 \alpha \rfloor , \lfloor 3 \alpha \rfloor . . . \}\).

不难发现,只要\(\alpha \ne \beta\),则\(Spec ( \alpha ) \ne Spec ( \beta )\).

Example

求证:\(Spec ( \sqrt{ 2 } ) \cup Spec ( 2 + \sqrt{ 2 } ) = \mathbb{ N_+ }\)\(Spec ( \sqrt{ 2 } ) \cap Spec ( 2 + \sqrt{ 2 } ) = \phi\),即这两个集合构成了正整数集的一个划分.

我们考虑这样一个事实:对于任意正整数\(n\),如果我们能求出来\(Spec ( \sqrt{ 2 } )\)中有\(a\)个元素\(\leq n\),\(Spec ( 2 + \sqrt{ 2 } )\)中有\(b\)个元素\(\leq n\),并且\(a + b = n\),则结论显然成立.

不妨令函数\(N ( \alpha , n )\)表示\(Spec ( \alpha )\)中有多少个元素\(\leq n\),其中\(\alpha\)是正数,我们有:

\[ \begin{aligned} N ( \alpha , n ) & = \sum_{ k \in \mathbb{ N_+ } } [ \lfloor k \alpha \rfloor \leq n ] \\ & = \sum_{ k \in \mathbb{ N_+ } } [ \lfloor k \alpha \rfloor < n + 1 ] \\ & = \sum_{ k \in \mathbb{ N_+ } } [ k \alpha < n + 1 ] \\ & = \sum_k [ 0 < k < ( n + 1 ) / \alpha ] \\ & = \lceil ( n + 1 ) / \alpha \rceil - 1 \end{aligned} \]

则我们要证明的就是:

\[ \begin{aligned} \lceil \cfrac{ n + 1 }{ \sqrt{ 2 } } \rceil - 1 + \lceil \cfrac{ n + 1 }{ 2 + \sqrt{ 2 } } \rceil - 1 & = n \\ \lfloor \cfrac{ n + 1 }{ \sqrt{ 2 } } \rfloor + \lfloor \cfrac{ n + 1 }{ 2 + \sqrt{ 2 } } \rfloor & = n \\ \cfrac{ n + 1 }{ \sqrt{ 2 } } - \{ \cfrac{ n + 1 }{ \sqrt{ 2 } } \} + \cfrac{ n + 1 }{ 2 + \sqrt{ 2 } } - \{ \cfrac{ n + 1 }{ 2 + \sqrt{ 2 } } \} & = n \end{aligned} \]

而由于我们有恒等式:\(\cfrac{ 1 }{ \sqrt{ 2 } } + \cfrac{ 1 }{ 2 + \sqrt{ 2 } } = 1\),且两个相加为整数的数的分数部分相加显然为\(1\),原式得证.

事实上,如果两个集合\(Spec ( \alpha )\)\(Spac ( \beta )\)构成正整数集一个划分,可以同上证明\(\cfrac{ 1 }{ \alpha } + \cfrac{ 1 }{ \beta } = 1\)\(\alpha\)\(\beta\)都是无理数.

整值函数的递归式

得到递归式的封闭形式的确很有用,它可以让我们在很快的时间内求出答案,但大部分时候是很麻烦的.

而如果我们对时间的要求没有那么紧,我们不妨考虑一种较慢但更容易的方法:

Example

约瑟夫问题,但是每隔两个人处死一个人,求最后存活者的编号.

我们不妨这样考虑:我们每略过两个人,就将他们重新编号.

例如,我们杀掉了三号,就将一号和二号重新编号为\(n + 1\)号和\(n + 2\)号,杀掉了六号,就将四号和五号重新编号为\(n + 3\)号和\(n + 4\)号,这样,我们在做游戏的时候,场上人员的编号一定是连续的.

我们把最后存活者改为最后死亡者,这样它的最后编号就是\(3 n\).

并且不难发现,第\(k\)个死亡的人的最后编号就是\(3 k\).

我们考虑已知新编号如何求旧编号,设新编号为\(N\):

如果\(N \leq n\),则\(N\)是初始编号,反之,我们考虑在编号\(N\)的时候被杀死的人的编号.

假设现在进行完了\(k + 1\)轮,令\(N = n + 2 k + w\),其中\(w \in \{ 1 , 2 \}\),则编号\(N\)的时候被杀死的即是\(3 ( k + 1 )\),那么\(N\)之前的编号就是\(3 k + w = N - ( n - k ) = N - n + k\).

\(k = \lfloor \cfrac{ ( N - n - 1 ) }{ 2 } \rfloor\),我们可以不断进行迭代.

如果我们令\(D = 3 n + 1 - N\),换句话说即改变编号的顺序,我们可以有以下的赋值操作:

\(3 n + 1 - D ' = 3 n + 1 - D - n + \lfloor \cfrac{ ( 3 n + 1 - D - n - 1 ) }{ 2 } \rfloor\).

化简这个式子,我们有:\(D ' = D + n - \lfloor \cfrac{ ( 2 n - D ) }{ 2 } \rfloor = D + \lceil \cfrac{ D }{ 2 } \rceil = \lceil \cfrac{ 3 D }{ 2 } \rceil\).

事实上,我们可以证明:如果我们每隔\(q\)个人就杀掉一个人的话,那么\(D ' = \lceil \cfrac{ ( q + 1 ) D }{ q } \rceil\),一直迭代到\(D ' > qn\)时.

而最后的答案就是\(( q + 1 ) n + 1 - D\).

整值函数的恒等式

考虑公式\(\lceil \cfrac{ n - k + 1 }{ m } \rceil\),不难发现它在\(1 \leq k \leq n \mod m\)时的值为\(\lceil \cfrac{ n }{ m } \rceil\),而在\(n \mod m < k \leq m\)的值为\(\lfloor \cfrac{ n }{ m } \rfloor\).

那么我们可以得到以下恒等式:

\(n = \sum_{ k = 1 }^m \lceil \cfrac{ n - k + 1 }{ m } \rceil\).

类似地,有:

\(n = \sum_{ k = 1 }^m \lfloor \cfrac{ n + k - 1 }{ m } \rfloor\).

\(\lfloor mx \rfloor\)替换上面的\(n\)\(\lfloor mx \rfloor = \sum_{ k = 1 }^m \lfloor x + \cfrac{ k - 1 }{ m } \rfloor\).

同样的,有\(\lceil mx \rceil = \sum_{ k = 1 }^m \lceil x - \cfrac{ k - 1 }{ m } \rceil\).

整值函数的和式

通常情况下,处理含整值函数的和式时,通过引入新变量进行代替以及通过转化为区间进行化简.

如果遇到难以处理的情况,我们不妨考虑直接处理其中一段的和,使得剩下部分求和更为简单.

处理整值函数的另一个方法是:考虑将整值函数内的东西移出,并且让里面的东西形如等差序列,这样我们就可以尝试使用恒等式来化简.

Example1

\(\sum_{ k = 0 }^{ n - 1 } \lfloor \sqrt{ k } \rfloor\).

我们有:

\[ \begin{aligned} \sum_{ k = 0 }^{ n - 1 } \lfloor \sqrt{ k } \rfloor & = \sum_{ 0 \leq k , m } [ k < n ] [ m = \lfloor \sqrt{ k } \rfloor ] m \\ & = \sum_{ 0 \leq k , m } [ k < n ] [ m^2 \leq k < ( m + 1 )^2 ] m \\ & = \sum_{ 0 \leq k , m } m [ m^2 \leq k < n < ( m + 1 )^2 ] + \sum_{ 0 \leq k , m } m [ m^2 \leq k < ( m + 1 )^2 \leq n ] \end{aligned} \]

考虑\(n = a^2\)的特殊情况,则前面那一项显然是\(0\),那么:

\[ \begin{aligned} ans & = \sum_{ 0 \leq k , m } m [ m^2 \leq k < ( m + 1 )^2 \leq n ] \\ & = \sum_{ 0 \leq m } m ( 2 m + 1 ) [ m < a ] \\ & = \sum_{ m = 0 }^{ a - 1 } ( 2 m^2 + m ) \\ & = \cfrac{ ( a - 1 ) a ( 2 a - 1 ) }{ 3 } + \cfrac{ a ( a - 1 ) }{ 2 } \\ & = \cfrac{ ( 4 a + 1 ) a ( a - 1 ) }{ 6 } \end{aligned} \]

而如果\(n \ne a^2\),我们令\(a = \lfloor \sqrt{ n } \rfloor\),而当\(k \in [ a^2 , n )\)的部分的贡献显然是\(a ( n - a^2 )\).

于是最后的结果就是:\(\cfrac{ ( 4 a + 1 ) a ( a - 1 ) }{ 6 } + a ( n - a^2 ) , a = \lfloor \sqrt{ n } \rfloor\).

另一个做法是,我们考虑增加枚举量,有:

\[ \begin{aligned} \sum_{ k = 0 }^{ n - 1 } \lfloor \sqrt{ k } \rfloor & = \sum_{ j , k } [ 1 \leq j \leq \sqrt{ k } ] [ 0 \leq k < a^2 ] \\ & = \sum_{ 1 \leq j < a } \sum_{ k } [ j^2 \leq k < a^2 ] \\ & = \sum_{ 1 \leq j < a } a^2 - j^2 = a^3 - \cfrac{ a ( 2 a + 1 ) ( a + 1 ) }{ 6 } \end{aligned} \]

Example2(类欧几里得算法)

\(\sum_{ k = 0 }^{ m - 1 } \lfloor \cfrac{ nk + x }{ m } \rfloor , m \in \mathbb{ N_+ } , n \in \mathbb{ Z }\).

由于\(kn - ( kn \mod m ) = m \lfloor \cfrac{ kn }{ m } \rfloor\),我们有:

\[ \lfloor \cfrac{ x + kn }{ m } \rfloor = \lfloor \cfrac{ x + ( kn \mod m ) }{ m } \rfloor + \cfrac{ kn }{ m } - \cfrac{ kn \mod m }{ m } \]

这样,我们将整个式子的求和分为了三部分,第二项显然是等差数列求和,而如果我们令\(g = \gcd ( n , m )\),不难发现第三项的分子是一个等差数列\(0 , g , 2 g , . . . m - g\)重复了\(g\)次,而且正因为这,第一项里面的数也就自然组成了等差数列,由于我们有恒等式,那么这一项也就自然可以计算了.

分别求和后加起来,得到答案为\(g \lfloor \cfrac{ x }{ g } \rfloor + \cfrac{ ( m - 1 ) n }{ 2 } + \cfrac{ g - m }{ 2 }\).

另外,对这个式子进行化简,我们可以得到:\(g \lfloor \cfrac{ x }{ g } \rfloor + \cfrac{ ( m - 1 ) ( n - 1 ) }{ 2 } + \cfrac{ g - 1 }{ 2 }\),而这个式子关于\(n\)\(m\)是对称的.

也就是说:\(\sum_{ k = 0 }^{ m - 1 } \lfloor \cfrac{ nk + x }{ m } \rfloor = \sum_{ k = 0 }^{ n - 1 } \lfloor \cfrac{ mk + x }{ n } \rfloor , m , n \in \mathbb{ N_+ }\).

另外,如果要求\(\sum^n_{ i = 0 } \lfloor \cfrac{ ai + b }{ c } \rfloor\),我们也有一种\(O ( \log n )\)的做法(类欧几里得算法):

\(c \leq a\),原式化为\(\sum^n_{ i = 0 }{ ( i \times \lfloor \frac{ a }{ c } \rfloor + \lfloor \cfrac{ ( a \mod c ) i + b }{ c } \rfloor ) }\).

\(c \leq b\),原式化为\(\sum^n_{ i = 0 }{ \lfloor \cfrac{ b }{ c } \rfloor + \lfloor \cfrac{ ai + ( b \mod c ) }{ c } \rfloor }\).

考虑\(a , b < c\)的情况,设\(m = \lfloor \cfrac{ an + b }{ c } \rfloor\),原式化为

\[ \begin{aligned} \sum^n_{ i = 0 } \sum^m_{ j = 1 } [ j & \leq \lfloor \cfrac{ ai + b }{ c } \rfloor ] \\ & = \sum^n_{ i = 0 } \sum^m_{ j = 1 } [ cj \leq ai + b ] \\ & = nm - \sum^n_{ i = 0 } \sum^m_{ j = 1 } [ ai \leq cj - b - 1 ] \\ & = nm - \sum^m_{ i = 1 } \lfloor \cfrac{ ci - b - 1 }{ a } \rfloor \end{aligned} \]

Example3

\(\sum_{ n = 1 }^{ 1000 } [ \lfloor \sqrt[3]{ n } \rfloor | n ]\).

\[ \begin{aligned} ans & = \sum_{ n , k } [ k = \lfloor \sqrt[3]{ n } \rfloor ] [ k | n ] [ 1 \leq n \leq 1000 ] \\ & = \sum_{ k , m , n } [ k^3 \leq n < ( k + 1 )^3 ] [ n = km ] [ 1 \leq n \leq 1000 ] \\ & = 1 + \sum_{ k , m } [ k^3 \leq km < ( k + 1 )^3 ] [ 1 \leq k < 10 ] \\ & = 1 + \sum_{ k , m } [ k^2 \leq m < \frac{ ( k + 1 )^3 }{ k } ] [ 1 \leq k < 10 ] \\ & = 1 + \sum_{ k = 1 }^9 ( \lceil k^2 + 3 k + 3 + \frac{ 1 }{ k } \rceil - \lceil k^2 \rceil ) \\ & = 1 + \sum_{ k = 1 }^9 ( 3 k + 4 ) = 172 \end{aligned} \]

上述推理过程将\(n = 1000\)的情况特殊讨论了一下,不难发现,如果我们要求的式子是\(\sum_{ n = 1 }^{ N } [ \lfloor \sqrt[3]{ n } \rfloor | n ]\),也仍然可以使用将\([ K^3 , N ] , K = \lfloor \sqrt[3]{ N } \rfloor\)中的数特殊处理的方式做掉,因为这些数的三次根下取整一定是\(K\),式子就不难化简了.

Example4([uoj42]Sum)

这题的重点在于将幂通过\(- 1\)的性质拿下来.

我们有\(( - 1 )^a = 1 - 2 ( a \mod 2 ) = 1 - 2 ( a - 2 \lfloor \frac{ a }{ 2 } \rfloor )\).

于是我们有:

$$ \[\begin{aligned} & \sum_{ d = 1 }^n ( - 1 )^{ \lfloor d \sqrt{ r } \rfloor } \\ = & n - 2 \sum_{ d = 1 }^n \lfloor d \sqrt{ r } \rfloor + 4 \sum_{ d = 1 }^n \lfloor \frac{ \lfloor d \sqrt{ r } \rfloor }{ 2 } \rfloor \\ \end{aligned}\]

$$

\(f ( x ) = \frac{ x }{ 2 }\),根据整值函数的性质,不难发现\(\lfloor \frac{ \lfloor d \sqrt{ r } \rfloor }{ 2 } \rfloor = \lfloor \frac{ d \sqrt{ r } }{ 2 } \rfloor\).

于是我们有:

$$ \[\begin{aligned} ans & = n - 2 \sum_{ d = 1 }^n \lfloor d \sqrt{ r } \rfloor + 4 \sum_{ d = 1 }^n \lfloor \frac{ d \sqrt{ r } }{ 2 } \rfloor \\ \end{aligned}\]

$$

\(t = \sqrt{ r }\),我们所要解决的问题是\(\sum_{ d = 1 }^n \lfloor d \frac{ Pt + R }{ Q } \rfloor\).如果\(\frac{ Pt + R }{ Q } \geq 1\),我们可以把整数部分取出来单独算.于是接下来我们只讨论\(0 \leq \frac{ Pt + R }{ Q } < 1\)的情况.相当于求一条斜率小于\(1\)的直线下方的整点个数.我们可以反转坐标系,这样就变成了斜率大于\(1\)的直线,继续做上面的操作.

这个问题引出万能欧几里得算法.

Example5([loj6440]万能欧几里得算法)

解决形如\(\sum_{ x = 1 }^{ L } A^x B^{ \lfloor \frac{ Px + R }{ Q } \rfloor }\)的问题,其中\(A\)\(B\)都是\(n \times n\)的矩阵.默认\(P , Q , R \geq 0\).

我们将问题抽象为下面的模型:

首先将坐标系中所有经过整数点的与坐标轴平行的直线全都标记出来.

考虑将问题转化为:有一条\(y = \frac{ Px + R }{ Q }\)的直线,我们从\(( 0 , \frac{ R }{ Q } )\)(不包含这个点)处开始沿直线向右走.每遇到一条横线,就进行\(U_w\)操作;每遇到一条竖线,就进行\(R_w\)操作.如果遇到了整数格点,就先进行\(U_w\)操作,再进行\(R_w\)操作.

例如上面那个例子就是:现在有一个矩阵二元组\(( X , Y )\),初始为\(( A , B^{ \lfloor \frac{ R }{ Q } \rfloor } )\),\(R_w\)操作是:\(( X , Y ) \rightarrow ( AX , Y + X )\),\(U_w\)操作是:\(( X , Y ) \rightarrow ( XB , Y )\).一直走到\(x = L\)的点为止,最后矩阵\(Y\)就是答案.不过这个形式不好写成矩阵,我们可以记录\(( A^a , B^b , Y )\).这样最后就可以带入操作,不难发现这个操作是个环.

操作要满足可合并性,也就是我可以将\(U_w R_w\)变成一个操作进行.

接下来我们分情况讨论一下:

\(P \geq Q\)时,注意到\(y = \frac{ Px + R }{ Q } = \lfloor \frac{ P }{ Q } \rfloor x + \frac{ ( P \mod Q ) x + R }{ Q }\),此时任意一个\(R_w\)操作前必然有至少\(\lfloor \frac{ P }{ Q } \rfloor\)\(U_w\),我们令\(R_w ' = U_w^{ \lfloor \frac{ P }{ Q } \rfloor } R_w\),不难发现:\(solve ( P , Q , R , L , U_w , R_w ) = solve ( P \mod Q , Q , R , L , U_w , R_w ' )\).

\(P < Q \land P \ne 0\)时,我们想要让\(P\)\(Q\)互换,假设第\(a\)\(R_w\)在第\(b\)\(U_w\)之前,考虑这个\(R_w\)前会有\(\lfloor \frac{ Pa + R }{ Q } \rfloor - \lfloor \frac{ R }{ Q } \rfloor\)\(U_w\),而对于后者,变换坐标系得到\(x = \frac{ yQ - R }{ P }\),由于遇到整点时,先\(U_w\)再进行\(R_w\),也就是说,第\(b\)\(U_w\)前会有\(\lfloor \frac{ Qb - R - 1 }{ P } \rfloor\)\(R_w\)(这个并没有忽略初始位置).我们考虑如何让这个数和上面的\(\lfloor \frac{ Pa + R }{ Q } \rfloor\)的差分写成一样的形式.注意到\(b = 1\)需要特殊处理!

显然操作序列一共有\(cntU = \lfloor \frac{ PL + R }{ Q } \rfloor - \lfloor \frac{ R }{ Q } \rfloor\),将二者对应一下,这里的答案就是\(solve ( Q , P , ( Q - R - 1 ) \bmod P , cntU - 1 , R_w , U_w )\).

然后是开头部分,开头部分一共有\(\lfloor \frac{ Q - R - 1 }{ P } \rfloor\)\(R_w\)和一个\(U_w\).

但是注意到末尾部分同样是不规整的,注意到末尾一共有\(L - \lfloor \frac{ QcntU - R - 1 }{ P } \rfloor\)\(R_w\),拼到末尾即可.

最后\(P = 0\)的时候直接返回\(R_w^{ L }\)即可.

假设合并的复杂度是\(c\),注意到每层的复杂度是\(O ( c \log ( \frac{ Q }{ P } ) ) = O ( c ( \log Q - \log P ) )\),但是每两层会抵消,因此复杂度\(O ( C \log ( P + Q ) )\).

数据结构理论

维度

B维正交范围

对于一个\(B\)维的点\(x\),满足\(\forall 1 \leq i \leq B , l_i \leq x_i \leq r_i\),称所有这样的点组成的集合为一个\(B\)维正交范围.

一维正交范围就是区间,二维正交范围是矩形,三维正交范围是立方体.

另外,如果\(l , r\)有若干个是自动满足的(所有点都满足),那么我们称它为无用限制,如果一个\(B\)维正交范围有\(k\)个有用限制,称它为\(k - side\)的.

例如,找到区间\([ l , r ]\)\(< x\)的元素,这个矩形是\(3 - side\)的.找到区间\([ 1 , l ]\)\(< x\)的元素,这个矩形是\(2 - side\)的.有些矩形虽然是高side的,但可能因为某些维度满足可减性,因此可能等价于一个低side的问题.

(lxl:我建议大家遇到题都要把能差分的东西差分到不能差分为止)

矩阵乘法归约

矩阵乘法

\(n \times n\)的矩阵乘法目前得到的最优秀复杂度也是\(O ( n^{ 2 . 373 } )\).

另外可以归约:\(01\)矩阵和整数矩阵在去除\(\log n\)后的复杂度相同.

Example

Example1(链颜色数问题)

考虑构造一棵树:他有\(\sqrt{ n }\)个叉,每个叉上有\(\sqrt{ n }\)个点.我们将这些叉编号为\([ 1 , \sqrt{ n } ]\).然后我们考虑询问两个叉所组成的链的答案,设\(f_{ i , j }\)表示数字\(j\)是否在\(i\)的叉上出现过,不难发现它们合并的时候要对\(f\)做或运算,\(01\)矩阵乘法相当于且运算,显然这两个运算等价,证毕.

Example2(区间逆序对)

考虑对序列和值域同时分块,考虑序列中第\(L\)到第\(R\)个块的答案,设为\(f ( L , R )\),这两块间的答案设为\(g ( L , R )\),显然\(f ( L , R ) = f ( L + 1 , R ) + f ( L , R - 1 ) - f ( L + 1 , R - 1 ) + g ( L , R )\),而由于对值域分块,\(g ( L , R ) = \sum a \times b\)的形式.根据这个形式构造即可.当然这个只是简化了好多,你会发现这个东西只能处理矩阵某一行递增的情况.lxl:真正的归约是很复杂的.

Example3

平面上有若干点,两个操作:每次将横坐标小于等于\(A\)的点加上\(v\),或者查询纵坐标小于等于\(B\)的点的点权和.

这玩意显然能加上扫描线归约区间逆序对.

数据结构

分块

Example1(luoguP8527 [Ynoi2003] 樋口円香)

首先将\(a\)分块,这样对于一次修改就分成了整块和散块.散块暴力做,整块的话显然是一个位移的形式,可以直接卷积,比较简单.

不过我们先考虑个事:这么顺溜就出来了,为啥会需要分块啊?

首先看到题面的位移的形式,自然想到卷积.但问题在于有个区间,所以需要把区间处理掉.注意到每个区间是需要记录一下不同的\(L\)的,这使得这个问题只能使用分块解决.

最后还没完,这题要平衡复杂度.

设块长为\(B\),暴力处理散块的复杂度是\(O ( Bm )\),处理整块的复杂度是\(O ( \frac{ n }{ B } ( m + n \log n ) )\).取\(B^2 = \frac{ n }{ m } ( m + n \log n ) = 500\)最优.

但事实上FFT肯定是很慢的,所以我开到了\(B = 2048\).

即使这样,笔者还是被卡常了(哭).

Example2(luogu[Ynoi2079] riapq)

首先对于这种区间内部贡献,而且每个点由前面点的贡献,先看有没有可差分性(区间逆序对也是一个套路).

注意到是有的,这样我们就把问题转化为了\([ 1 , l - 1 ]\)\([ l , r ]\)的贡献.

先序列分块.然后\([ 1 , l - 1 ]\)中的整块对\([ l , r ]\)的贡献是简单的:我们对每个整块开一个区间加单点查的树状数组,每次将\([ 1 , l - 1 ]\)中的整块的树状数组进行一个\([ l , r ]\)的区间加,查询的时候查一下每个整块对当前单点的贡献,这里需要对整块内部提前处理一下小于等于某个数的数量,自然可以做到\(O ( Bq \log n )\)的时间复杂度和\(O ( Bn )\)的空间复杂度.

问题在于\([ 1 , l - 1 ]\)中的散块咋办.首先\([ 1 , l - 1 ]\)中的散块对\([ l , r ]\)中的散块的贡献是好处理的,因为总共就\(O ( \frac{ n }{ B } )\)个数字,直接全部存下来排序做归并就可以统计,时间复杂度\(O ( Bq \log n )\).

现在的问题在于\([ 1 , l - 1 ]\)中的散块对\([ l , r ]\)中的整块如何贡献.能不能把\([ l , r ]\)的信息统计在\([ 1 , l - 1 ]\)的散块中呢?似乎不太行.因为散块的总数太多了.所以我们考虑把散块的信息记录在整块里.但是好像不太好记,因为你查询一个整块内的点的时候是需要判断记录的这些信息是否比它要小的,只有比它小的才能贡献.自然想到值域分块.不过还有一个问题,就是散块一共有\(\frac{ n }{ B }\)个,整块一共有\(B\)个,是不能一一对应着贡献的,这咋办呢?

其实挺好办的,因为散块要对一个区间有贡献,所以拿树状数组+差分统计一下就行.

最终复杂度为\(O ( n \sqrt{ n } \log n )\),需要进行一个极致卡常.

如果你写完代码测一下会发现,跑的最慢的是散块对散块的贡献,你把sort改成基数排序就行.事实上实测了一下基数排序还不如直接换成树状数组.

但即使这样,笔者现在也没过这个题(哭).

Example3([CTS2022] 普罗霍洛夫卡)

比较复杂的分块题.

放弃了,太难了.

Example4(Walking Plan HDU 6331)

类似BSGS一样分块处理即可,最后需要枚举中继点,询问部分复杂度\(O ( nq )\).

Example5(P5063 [Ynoi2014] 置身天上之森)

考虑如果\(n = 2^k\),很好做,因为每一层的点大小是相等的.我们对每一层分开处理,显然区间加操作也就等价于每一层的节点区间加上若干倍的\(a\)(开头结尾可能有两个需要特殊判断),用分块求区间rank的技巧就行.

但是\(n\)不一定是\(2^k\),也简单,每一层最多有两种不一样大小的点,这是经典结论.

Example6(第二分块:[Ynoi2018]五彩斑斓的世界)

大概是对于每个块处理出它的值域范围:一开始是\([ 1 , n ]\),然后每次操作都会将整个块分为两部分:\([ 1 , x )\)\([ x , maxn ]\),讨论一下\(maxn\)\(2 x\)的大小,就可以用\(\min ( x , maxn - x )\)的复杂度使得\(maxn\)变成\(maxn - x\),复杂度均摊掉了.

二次离线

Example1(luoguP5047 [Ynoi2019 模拟赛] Yuno loves sqrt technology II)

简单来说就是区间逆序对数.

首先想到莫队,然后配一个树状数组就可以做到\(O ( n \sqrt{ n } \log n )\).

那我们怎么改这个东西呢?

我们注意到:我们莫队在实现的无非是俩事:一个是移动左端点的时候判断左端点对右边的贡献,一个是移动右端点的时候,由于这俩是对称的,我们只讨论左端点不动移动右端点.

考虑这个过程的答案实际上是可差分的,因为\([ l , r ]\)\(r\)的贡献实际上就是\([ 1 , r ]\)\(r\)的贡献减去\([ 1 , l - 1 ]\)\(r\)的贡献,前者可以直接算,而后者呢?

我们考虑对后者再进行一次离线操作,我们把这\(O ( n \sqrt{ n } )\)次贡献查询全都记下来,然后扫描线处理一下.注意到我们只需要插入\(O ( n )\)次但是需要查询\(O ( n \sqrt{ n } )\)次,所以需要使用一下值域分块平衡一下复杂度.

做到这里其实要做完了,但还没完,这里空间复杂度达到了\(O ( n \sqrt{ n } )\),有点大.咋办呢?我们发现右端点移动的时候左端点不动,并且右端点移动的是一个区间,所以我们把所有不动的左端点上记录一下右端点移动的区间即可,由于不动的左端点只有可能是查询区间的左端点,所以这里空间复杂度降到\(O ( n )\).

注意到我们求出的是两个查询的答案的差分,最后还需要做一下前缀和求答案.

二维分块

我们现在有一个需要维护的\(n \times n\)的平面,我们现在对其进行分块:

  1. 将平面分成\(n^{ \frac{ 1 }{ 2 } }\)\(n^{ \frac{ 3 }{ 4 } } \times n^{ \frac{ 3 }{ 4 } }\)\(A\)块,以\(A\)块为单位做二维前缀和.

  2. 每个\(A\)块内部分成\(n^{ \frac{ 1 }{ 2 } }\)\(n^{ \frac{ 1 }{ 2 } } \times n^{ \frac{ 1 }{ 2 } }\)\(B\)块,在\(A\)块内部以\(B\)块为单位做二维前缀和.

  3. 将整个平面横着分别分成一个个\(n \times n^{ \frac{ 3 }{ 4 } }\)\(C\)块.(竖着也要分成一个个\(n^{ \frac{ 3 }{ 4 } } \times n\)的块,是类似的,略去)

  4. 每个\(C\)块内部分成\(\sqrt{ n }\)\(n^{ \frac{ 3 }{ 4 } } \times n^{ \frac{ 1 }{ 2 } }\)\(D\)块,在\(C\)块内部以\(D\)块为单位做二位前缀和.

注意到修改一个点的时候,需要更新三次二位前缀和,每次复杂度\(O ( \sqrt{ n } )\).同时注意到空间复杂度是\(O ( n )\)的.

查询显然是分四种情况讨论:\(A , B , D\)块都可以快速求得答案,接下来只需要做一下散块就行.

那散块怎么做呢?我们考虑一个特殊情况:修改点的纵坐标以及横坐标两两不同,或至少一个坐标只对应\(O ( 1 )\)个点.

如果查询的时候,也仍然是满足查询的一个\(l\)对应\(O ( 1 )\)\(r\),我们就可以枚举一个点被哪些查询查到了散块,显然只有可能有\(O ( \sqrt{ n } )\)个查询,记录一下即可.这样就做到了\(O ( \sqrt{ n } )\)单点改,\(O ( 1 )\)查询.

如果我们一开始不做二维前缀和,就可以实现\(O ( 1 )\)单点改,那这种情况下如何实现\(O ( \sqrt{ n } )\)求和呢?首先还是可以\(O ( \sqrt{ n } )\)求出整块的和.

横着和竖着的散块相同,只讨论横着的.由于横着的散块高度\(< n^{ \frac{ 1 }{ 2 } }\),我们就可以在每次查询的时候用\(\sqrt{ n }\)的复杂度枚举一遍横纵坐标在这个区间的点然后暴力判断即可,也可以\(O ( \sqrt{ n } )\)求散块.

Example1(luoguP7448 [Ynoi2007] rdiq)

首先注意到这个问题严格难于区间逆序对,想到二次离线莫队.

开始做二次离线,发现问题在于我们需要求出右端点移动的时候,找到新增了多少个本质不同的逆序对.设上一个和\(a_r\)颜色相同的点是\(r '\),则显然新增的逆序对只可能出现在\([ r ' , r ]\)中.

由于我们现在在保证左端点不动,于是我们考虑对于每种颜色,找到其在这个左端点后第一次出现的位置,并且只在这个位置贡献答案.这里其实已经可以扫描线了,套一下二次离线,把点扔到二位坐标系上.

现在问题在于,我们需要从\(n \rightarrow 1\)扫左端点,总共做\(O ( n )\)次单点修改,做\(O ( n \sqrt{ n } )\)次矩阵查询.

现在我们要查询的也就是左下角为\(( r ' + 1 , a_r )\),右上角是\(( r , \infty )\)的矩阵.

这个东西其实已经可以做高维前缀和了.为了使答案更显然,我们令\(rev ( x ) = n - x + 1\).然后将所有点的纵坐标\(rev\)掉,现在我们要查询的也就是左下角为\(( r ' + 1 , 1 )\),右上角是\(( r , rev ( a_r ) )\)的矩阵,这玩意可以拆前缀和拆成形如左下角是\(( 1 , 1 )\),右上角是\(( i , rev ( a_i ) )\)的矩阵.也就是说我们的\(O ( n \sqrt{ n } )\)次矩阵查询本质上只有\(O ( n )\)种.

拆到这里发现其实到这一步\(a_r\)\(a_{ r ' }\)是否相等已经不重要了,可以用一下基数排序让他俩有一定的差异.

然后上二维分块.

Example2(luoguP8530 [Ynoi2003] 博丽灵梦)

首先自然的想法是拿莫队扫掉\([ l_1 , r_1 ]\)这一维.

这样我们的问题转化为:每次插入/删除一个点,求一个类似区间颜色数的东西.

那么这个东西咋做呢?

首先我们考虑插入/删除的本质,把第二维\([ l_2 , r_2 ]\)扔到二维平面上,那本质也就是需要寻找前驱后继,然后对一个矩形做加法,查询的时候单点查询,可以配个树套树解决这个问题.

有没有什么好办法?先考虑对矩形做加法然后单点查询这个操作看上去很蛋疼.我们考虑把它转化为单点加法矩形查询.这个做法比较显然:如果没有相同的只贡献一次的限制,我们就可以直接对于每个点\(( a , a )\)上加上一个相应的\(b\),然后每次查询矩阵即可.但是有了限制怎么办呢?我们考虑在每两个相邻的点\(A ( x_1 , x_1 )\)\(B ( x_2 , x_2 )\)之间的\(( x_1 , x_2 )\)上加上一个\(- b\),不难发现这样就满足了条件.

分析一下我们现在需要做的东西:

  1. 莫队时查询一个点的前驱后继,这个操作就需要\(O ( 1 )\)完成.

  2. \(n \sqrt{ n }\)次单点修改,这个操作需要\(O ( 1 )\)完成.

  3. \(n\)次矩阵求和,这个操作需要在小于\(O ( \sqrt{ n } )\)的时间完成.

对于第一个问题,我们可能会想到用链表来解决.但问题在于链表难以支持插入操作.不过问题不大,我们有回滚莫队.这样就可以实现只删除不插入,解决了问题.

而后半部分是一个经典的二维分块.

简单来说,我们首先需要猜出时间复杂度为\(O ( n \sqrt{ n } )\),然后用到莫队,然后用二维平面表示这个问题,发现直接做不太能做,想到一步转化,转化后的问题的一半可以直接套二维分快.最后想到前半部分可以用回滚莫队+链表解决.

trie树

Example1([2019zrtg十连测day1]set)

首先反应是扔到trie上然后异或就是打个tag,但是\(+ 1\)很难处理,因为它形如在trie上找到所有长度连续为\(1\)到叶子的链并且全部翻转,不过打一下tag应该也能做.

更简单的做法是,我们考虑从小到大插入数字.这样异或几乎没有影响,但是\(+ 1\)的话就相当于反转一条从根开始均为\(1\)的链,这个东西更为好做.

线段树

普通线段树

Example1(luoguP6780 [Ynoi2009] pmrllcsrms)

感觉这题比较厉害.

先扔做法:对\(c\)分块,这样答案就是块内和块间的最大值.对于每个块都可以用线段树维护最大值,然后最后再求\(\max\).而对于块间如何做呢?

我们设\(suf_i\)为前一个块的后\(i\)个数之和,\(pre_i\)为后一个块的前\(i\)个数之和.注意到我们要求的就是\(\max \{ suf_i + pre_j | i + j \leq c \}\).这个咋做呢?

你注意到这个\(i + j \leq c\)的限制非常的奇怪,我们如果想处理两个东西,自然想让这两个东西联系越紧密越好,但是这个联系就特别奇怪.但没关系,我们注意到如果用\(j \rightarrow c - j + 1\)的话,这个限制就转化为了\(i + c - j + 1 \leq c\),也就是\(i < j\),这个限制就可以放到线段树上维护了.

仔细思考这个过程:线段树只可以维护有大于小于的限制的两个数,而不能维护和区间长度有关的条件.但如果一个限制和区间长度有关,可能可以通过翻转之类的操作取消掉区间长度.

这个问题解决了,我们再回到一开始:为啥要对\(c\)分块?

一方面,题目中的\(c\)是给定的.另一方面,我们注意到我们需要维护一个和\(c\)有关的东西,而如果没有\(c\),或者说\(c = n\)的时候,这个东西是好维护的:一般的区间最大子段和其实暗含了\(c = n\)的条件.考虑到这一点,对\(c\)分块就合情合理了.换句话说,分块其实有两种用途:一种是平衡暴力的复杂度:它可以让一些和块长有关的暴力复杂度降低.另一种用途是保证某个东西的合法性.

一个需要注意的事是,由于我们最后查询的是一个区间,所以对于块间的处理是需要处理区间的.不过我选择将\(a [ l - 1 ]\)\(a [ r + 1 ]\)都加上一个极大值.

但是啊,但是.我们发现我们一开始是需要把块间做线段树的那个\(maxn\)设成\(- \infty\)的.如果这两个东西设成等大的\(- \infty\),就会出现错误,为啥呢?

因为一开始这样会使得运算过程中有可能出现比\(- \infty\)还要小的数字,最底层的\(maxn\)有可能覆盖掉上面的.

线段树分治

大概就是用到了线段树结构进行操作,通常用来处理存在区间的问题.

之所以说它是线段树分治而不是一般的分治,是因为有的时候我们还可以利用线段树的结构.

Example1([2022qbxt国庆Day1]dottlebot)

注意到每个点其实只需要找到\([ i - r_i , i - 1 ]\)\([ i + 1 , i + r_i ]\)这两段的最大值,设为\(x\),则最后的答案就是\(\max \{ a_i + x \}\).

思考这个过程,我们将\([ i - r_i , i - 1 ]\)\([ i + 1 , i + r_i ]\)这两条线段以\(a_i\)的权值放到线段树上.具体地,我们在线段树的每个节点都开一个堆存储覆盖了这个节点区间的线段的权值.然后利用线段树求出每个区间的\(a_i\)的最大值,在节点处和堆中元素一起更新答案即可.

线段树上二分

Example1([2022qbxt国庆Day3]analysis)

考虑全局的和是\(sum\),则我们要在这些数中找到一个分界点,使得左边的和大于等于\(sum\),然后再考虑能不能将右边移动一个过去.

先把数据离散化,那么这就是一个值域线段树上二分的过程.

另外值得一提的是,考虑树状数组的形态也即线段树删去所有的右儿子,因此树状数组上也是可以二分的.

Example2

给定\(a_i , b_i\),选定至多\(k\)个位置使这里的值为\(a_i - b_i\),其它位置的值是\(a_i\),最小化最大子段和.

考虑先二分再贪心:二分一个值,然后看如果需要使得答案小于等于这个值,最少需要用多少次操作.这个咋做呢?一个想法是,我先从左到右去扫一遍,然后每次如果当前最大后缀和大于二分的\(mid\),我们就需要找一个位置使得把这个位置改掉后,最大后缀和最小.

首先来看这个为什么是正确的.考虑后面的最大后缀和是会继承前面的最大后缀和的,因此让当前局面最小一定更优秀,并且每个位置选中的代价是相等的,那自然要选择贡献最高的那个.

显然,如果选择一个改掉的话,我们需要求出\(\min_{ k = 1 }^r \{ \max ( \max_{ i = k + 1 }^n \{ sum_{ i } \} , - b_k + \max_{ i = 1 }^k \{ sum_i \} ) \}\).注意改掉一个位置后要把它的\(b\)变成\(0\).

那么什么样的\(b\)有可能是我们要选中的呢?显然可能被选中的\(b\)一定是一个单调下降的序列中的某个,因为同等大小,选后面一定更优秀.上面那个式子我们是难以快速维护的,但如果我把它改成:\(\min_{ k = 1 }^r \{ \max ( \max_{ i = k + 1 }^n \{ sum_{ i } \} , - \max_{ i = k }^n \{ b_i \} + \max_{ i = 1 }^k \{ sum_i \} ) \}\),你会发现前者是一个单调不升的序列,后者是一个单调不降的序列,现在我们想要让它们的\(\max\)尽量小,这玩意显然可以做线段树二分.

上面那个东西也就是:

$$ \[\begin{aligned} & \min_{ k = 1 }^r \{ \max ( sufmax ( sum )_{ k + 1 } , - sufmax ( b )_k + premax ( sum )_k \} \\ = & \min_{ k = 1 }^r \{ \max ( sufmax ( sum )_{ k + 1 } , - \max ( sufmax ( b )_{ k + 1 } , b_k ) + premax ( sum )_k \} \\ \end{aligned}\]

$$

这样就可以在交界点更新答案.

另外,我们实际上更新答案会用到实际上找到的最小的\(k\)后面最大的\(b\),这是为啥呢?首先这样的确是更优秀的解,而且我们发现,我们的确有可能找到更靠前的位置,如果往前的挪动不影响\(sufmax ( b )\)的话.那有没有可能跳出了这一段,来到了更靠后的地方呢?这显然也不会,因为我们只找到最后面第一个处于当前分段函数的\(b\),这个\(b\)必然存在.如果它所在的sufmax和premax不一样,那么会是一个更优秀的解,压根不可能找到前面.

线段树合并

线段树维护矩阵乘法

吉司机线段树

李超线段树

珂朵莉树

Example1(luoguP8512 [Ynoi Easy Round 2021] TEST_152)

首先有经典套路:赋值操作有用的只有最后一次.

所以考虑扫描线,扫右端点的时候直接用珂朵莉树做.这样就剩下左端点的问题,因为有珂朵莉树,所以再开以时间为下标的数据结构就能处理.

猫树

KD-Tree

处理\(K\)维正交范围(给定\(n\)个有意义的点)在线修改查询的数据结构,是一棵二叉树.单次复杂度\(O ( n^{ 1 - \frac{ 1 }{ k } } + \log n )\).(单调修改复杂度只是\(O ( \log n )\))

离线情况下通常可以用cdq分治代替.

如果要支持动态插点,可以使用复杂度不正确的替罪羊树重构+kdtree.

1D-Tree

也就是线段树.

2D-Tree

建树的时候,对于每一维轮流考虑,每次考虑将这一维上的坐标的中位数的点(基准点)找到,左右分治下去(下一层要考虑另一维)处理.查询和修改都是类似的.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
struct KD_tree{
int son[2];
int x,y;
int siz;
int f;
int l,r,u,d;
}tr[qwq<<1|1];
int cur[qwq<<1|1];
int clen;
struct P{
int x,y;
}p[qwq<<1|1];
bool cmpx(P a,P b){
return a.x<b.x;
}
bool cmpy(P a,P b){
return a.y<b.y;
}
ll mabs(ll x){
if(x>0)return x;
return -x;
}
void pushup(int cnt){
tr[cnt].l=tr[cnt].r=tr[cnt].x;
tr[cnt].d=tr[cnt].u=tr[cnt].y;
tr[cnt].siz=1;
if(tr[cnt].son[0]){
tr[cnt].l=std::min(tr[cnt].l,tr[tr[cnt].son[0]].l);
tr[cnt].r=std::max(tr[cnt].r,tr[tr[cnt].son[0]].r);
tr[cnt].d=std::min(tr[cnt].d,tr[tr[cnt].son[0]].d);
tr[cnt].u=std::max(tr[cnt].u,tr[tr[cnt].son[0]].u);
tr[cnt].siz+=tr[tr[cnt].son[0]].siz;
}
if(tr[cnt].son[1]){
tr[cnt].l=std::min(tr[cnt].l,tr[tr[cnt].son[1]].l);
tr[cnt].r=std::max(tr[cnt].r,tr[tr[cnt].son[1]].r);
tr[cnt].d=std::min(tr[cnt].d,tr[tr[cnt].son[1]].d);
tr[cnt].u=std::max(tr[cnt].u,tr[tr[cnt].son[1]].u);
tr[cnt].siz+=tr[tr[cnt].son[1]].siz;
}
return ;
}
inline ll dispp(int pa,int pb){
return 1ll*mabs(tr[pa].x-tr[pb].x)+1ll*mabs(tr[pa].y-tr[pb].y);
}
inline ll dispm(int po,int mat){
if(!mat)return 320051113;
ll d=0;
if(tr[po].x<tr[mat].l)d+=tr[mat].l-tr[po].x;
if(tr[po].x>tr[mat].r)d+=tr[po].x-tr[mat].r;
if(tr[po].y<tr[mat].d)d+=tr[mat].d-tr[po].y;
if(tr[po].y>tr[mat].u)d+=tr[po].y-tr[mat].u;
return d;
}
bool get_var(int l,int r){
double avx=0,avy=0;
for(int i=l;i<=r;++i){
avx+=p[i].x;avy+=p[i].y;
}
avx/=(r-l+1);avy/=(r-l+1);
double varx=0,vary=0;
for(int i=l;i<=r;++i){
varx+=1ll*(avx-p[i].x)*(avx-p[i].x);
vary+=1ll*(avy-p[i].y)*(avy-p[i].y);
}
return varx<vary;
}
int build(int l,int r){
if(l>r)return 0;
int mid=(l+r)>>1;
int cnt=cur[mid];
tr[cnt].f=get_var(l,r);
if(tr[cnt].f)std::nth_element(p+l,p+mid,p+r+1,cmpy);
else std::nth_element(p+l,p+mid,p+r+1,cmpx);
tr[cnt].x=p[mid].x;tr[cnt].y=p[mid].y;tr[cnt].siz=1;
tr[cnt].son[0]=build(l,mid-1);
tr[cnt].son[1]=build(mid+1,r);
pushup(cnt);
return cnt;
}

笛卡尔树

Example1([CFgym101613]Factor-free tree)

首先有一个自然的想法是随便找一个和整个区间都互质的数,然后把序列分成左右两端向下递归.对于一棵构造出来的二叉树,它的复杂度就是\(\sum dep_u\),是可以被卡成\(O ( n^2 )\)的.

但我们考虑类似dsu on tree的做法,我们每次找到一个点,它将一个区间劈成了两部分,我们把小的那部分的贡献删去,然后做大的那部分.在递归过程中把大的那部分的贡献逐渐消磨掉.最后再做小的那部分,这样就类似于启发式合并的过程,复杂度就正确了.

Example2(23省选第一轮集训day5C)

注意到最小值的条件是容易满足的.

考虑枚举以每个点为最大值转移的区间,假设为\([ l , r ]\),这样会有:\([ l - 1 , i - 1 ] \rightarrow [ i , r ]\).注意到我们可以选择其中较短的区间来更新零一个区间或被另一个区间更新.

单调队列

Example(loj3151)

首先自然地,我们设\(f_{ i , j }\)表示前\(i\)个测试点已经分成了\(j\)段的方案数,然后做转移,复杂度\(O ( T^2 S )\).

接下来咋优化咧?决策单调性!

嘶这题好像不满足决策单调性(这个故事也告诉我们不要看到\(k\)最短路就想决策单调性).

冷静一下,首先如果我把\([ l , r ]\)分到一段里,那这一段的答案和啥有关?显然只和有多少个人在这段区间中没挂分有关.对于一个右端点\(r\),我们不妨枚举有多少个人会在它所在的子任务挂分.显然,在左端点在一个区间内的时候,这个子任务会有一定的人挂分.而且随着现在右端点的移动,这个区间的左右端点都是单调不降的.那我们对于每种人数做单调队列维护即可.

树套树

解决矩阵修改+单点查询或单点修改+矩阵查询问题.

Example1

维护一个序列支持把\(x\)位置的值改为\(y\)或查询一个区间中小于\(y\)的数个数.

用树状数组维护平衡树,每次在树状数组上对应的节点修改即可.

Example2(Luogu4054 [JSOI2009]计数问题)

乍一看是动态三维问题.

相等维度是特殊的,我们开\(100\)个二维数据结构处理值不同的情况,这样就是二维.

数据结构常见套路

分开考虑

Example1(P6105 [Ynoi2010] y-fast trie)

考虑只有两种可能:

  1. \(x + y < C\),取\(x + y\)作为答案.

  2. \(x + y \geq C\),取\(x + y - C\)作为答案.

后者只需要取出最大的两个数即可,至于前者,考虑将所有数字分成两个集合,一个集合只在\([ 0 , \lceil \frac{ C }{ 2 } \rceil )\)中,一个集合包含剩下的数字.对于第一个集合,我们只需要取出其中最大的两个数字就行.接下来的问题是怎么处理跨越两个集合的答案.考虑将每个点对应的答案配对,显然每个点能影响到的点是一段区间,删除时暴力修改.

另外,\(x + y < C\)也就是\(x < C - y\),我们把第二个集合中的元素全部变成\(C - y\)后插入,只需最小化\(C - x - y\),这个只需要维护最大的\(x\)和最小的\(C - y\)就行.

合并信息

lxl:这种问题主要需要解决三件事:标记对标记可合并,标记对值可合并,值与值可合并.

Example1([HNOI2011]括号修复 / [JSOI2011]括号序列)

注意到只要知道区间的最小前缀和以及区间的和,这个题就做完了.我们只需要维护这两件事.区间的和显然是好维护的,难以维护的是最小前缀和,我们来分开看每个操作:

替换:简单的.翻转:不太好做,尝试维护一下最小后缀和.反转:需要维护最大前缀和,进一步需要维护最大后缀和.

这样就可以更新答案了.

Example2(P4198 楼房重建)

左右维护单调栈合并,但这样复杂度肯定不对.

怎么办呢?我们可以用\(O ( \log n )\)的单次pushup操作,也就是维护一下每个节点所代表的区间的答案和最大值,不断递归右子树(或左子树)判断.

Example3(CF1017G)

\(w_i\)为从上往下延伸到\(i\)这个点后,还能多往下延伸多少,一开始\(w\)都是\(- 1\),每次操作会让\(w + = 1\).树链剖分维护子段最大非空后缀和.

去除冗余信息

Example1(luoguP6617)

自然的想法是考虑找到每个点前面第一个和它之和为\(w\)的数字,但这样就炸了,因为每修改一个点可能要影响\(O ( n )\)个点的答案.

我们注意到一个事实:我们也可以找到每个点后面第一个和它之和为\(w\)的数字,而显然只有两个数互相匹配才可行.如果\(i < j < k , ( i , j ) , ( i , k )\)分别配对,那么显然\(( i , k )\)没有用.这样每个点只有\(O ( 1 )\)个匹配了.

set维护颜色

Example1(luoguP5278 算术天才⑨与等差数列)

首先考虑\(k = 1\)怎么做,显然找一下区间最大值和区间最小值,然后就只需要判断区间内有没有重复元素,经典套路:set维护颜色,这样可以处理出每个点上一个和它相同颜色的点,拿线段树维护它的最大值.

\(k \ne 1\)怎么办呢?考虑这只是相当于要判断一下这个区间内的数字是否在\(\bmod k\)意义下全部相等,维护差分数组的区间\(\gcd\)就行.

复杂度均摊

Example1(CF702F T-Shirts)

看到这个感觉很奇怪,想想好像也没有什么快速tag算法.

我们考虑对人建平衡树,然后按照顺序买衣服,每次找到所有能买这件衣服的人,显然是平衡树的某棵子树.但是,这棵子树在买完衣服后可能就不满足顺序了,那怎么办呢?能不能暴力重构一波?

事实上是可以的,对于一件价格为\(q\)的衣服,\([ 0 , q )\)的人肯定买不了,\([ q , 2 q - 1 ]\)的人买完后,手上的钱至少减半,我们暴力处理,至于\([ 2 q , + \infty )\),显然买完后不会对其形态有什么影响,打个tag.

Example2(uoj228)

一个自然的想法是暴力开根号,它会迅速缩短两个数之间的差.但可能也不能缩到\(0\),那怎么办呢?当我们发现这个区间的最大值和最小值开根号后的差不变了,我们就把开根操作改成区间减法就行了.

loj6029是等价做法.

Example3(Luogu 4690 [Ynoi2016]镜中的昆虫)

维护每个点的颜色相同的前驱,单点修改的话就是简单树套树.

然后区间推平可以用颜色块均摊(同一个颜色块内只需要改开头元素,剩下的都是\(pre [ i ] = i - 1\)).

根号分治

Example1(luoguP7722 [Ynoi2007] tmpq)

这个题告诉我们一个故事:有的时候,有的条件可能真的没用.

直接把题目改成:每次修改\(a , b , c\)中的某个数,求.

Example2

对于一个数字\(x\),每次随机在\([ 1 , x ]\)中一个数\(y\)并令\(x \leftarrow x \bmod y\),初始值为\(n\),求期望几次能变成\(0\).

注意到如果\(y\)很小就直接做,\(y\)很大的话\(\lfloor \frac{ x }{ y } \rfloor\)很小,暴力做数论分块.

Example3

给定一棵树,每次修改树上某个点的权值,或询问某个点周围的点的权值和.

度数大的点在修改的时候改,度数小的在询问的时候做.

Example4

给定序列,每次询问给出两个数字\(x , y\),求最小的\(| i - j |\)满足\(a_i = x , a_j = y\).

对于出现次数大的,处理出它和所有数字的答案.

如果\(x , y\)出现次数都少,就在做的时候直接归并.

Example5(SHOI2006 Homework)

首先对于\(Y\)很小的情况直接预处理就行,每次插入的时候更新答案.

对于\(Y\)很大的情况,\(\frac{ n }{ Y }\)一定很小,我们不断查询大于等于\(kY\)的最小元素即可,这个可以值域分块来根号平衡做到\(O ( 1 )\)查询,\(O ( \sqrt{ n } )\)单点修改.具体地,我们对每个块处理出大于等于这个块的最小的\(X\),以及块内每个点后面最小的\(X\)(必须在块内),然后定位到\(kY\)的块.

Example6

给定\(n , m\),以及序列\(a\)和长度为\(n\)的排列\(y\),你需要回答\(m\)个询问.对每个询问,给定\(l , r\),查询:

\[ \sum_{ i = 1 }^n \sum_{ j = i + 1 }^n [ a_i = a_j ] \prod_{ k = i }^j [ l \leq y_k \leq r ] \]

注意到\(y_i = i\)的时候,这题等价于小Z的袜子.因此这题不会低于根号复杂度.轮流猜算法,猜到根号分治.

首先有一个性质:对于一对点\(( x , y ) , a_x = a_y , \nexists x < z < y , a_z = a_x\),对于\(( x , y )\)这个区间内部的点,它们其实是可以缩起来的!(比赛的时候没想到呜呜)具体来说,我们只需要保留它们中最大的那个和最小的那个就行.

接下来,对于出现次数大于\(\sqrt{ n }\)的数字,它们最多只有\(\sqrt{ n }\)个,考虑莫队复杂度\(O ( n \sqrt{ m } + m )\),因此我们可以对每个分别做莫队,总复杂度\(O ( n \sqrt{ m } + m \sqrt{ n } )\),注意用基数排序,甚至不能用桶排.

对于出现次数小于\(\sqrt{ n }\)的数字,这些数字一共最多有\(n\)个,每个点暴力配对就有\(O ( n \sqrt{ n } )\)个点对,然后\(O ( m )\)次询问,用根号平衡做扫描线,这里复杂度\(O ( n \sqrt{ n } + m \sqrt{ n } )\).

重链分治

Example1(Luogu5314 [Ynoi2011]ODT)

其实不是根号分治,但是差不多,扔这里了.

给一棵树,边权为\(1\),支持把一条链上所有点加上\(k\),或者查询距离一个点\(< = 1\)的所有点的点权\(kth\).\(n \leq 2 \times 10^5\).

每个点周围的点一共有三种可能:父亲,重儿子,轻儿子,特判重儿子和父亲,然后处理出所有轻儿子的情况,这个怎么做都能做(大不了把所有轻儿子全扔平衡树里),然后重链剖分的时候只会改\(O ( \log n )\)个轻儿子.

扫描线

一维扫描线

最经典的应用是对于一个\(B\)维的静态问题,我们可能可以用扫描线扫掉一维,让它变成一个\(B - 1\)维的动态问题.不过扫描线处理的时候可能需要是低\(side\)的问题,具体情况具体分析.

主席树通常就是解决强制在线不能处理扫描线的问题.

另外,通常认为时间也是一维,也就是即使是动态问题也一般是等价于对时间跑了扫描线.

二维扫描线

也就是莫队.

Example

Example1(CF1609F Interesting Sections)

首先枚举每个数的\(popcount\),相当于每次将一些点标记为关键点,然后查询有多少个区间满足区间最大值和最小值都是关键点.

可以求出每个点\(x\)作为最大值的影响区间\([ l , r ]\),也就是如果一个区间左端点在\([ l , x ]\),右端点在\([ x , r ]\)即可满足条件.我们考虑放入一个左下角坐标为\(( l , x )\),右上角坐标为\(( x , r )\)的矩阵.最小值也是同理的,最后也就是求所有最大值矩阵和所有最小值矩阵的交.注意到如果两个点相同,我们规定一下在前面的更小,那么最大值矩阵两两不交,最小值矩阵也两两不交,就是一个最简单的扫描线问题了.

Example2(CF833E)

离散化,设\(S = \{ l \} \cup \{ r \}\),考虑用\(len_i\)表示\(i\)节点及以前最多能有多少阳光.我们考虑用\(len_{ i - 1 }\)更新\(len_i\),如果\([ i - 1 , i ]\)没被覆盖,显然直接加上这段的长度.如果\([ i - 1 , i ]\)被覆盖大于两次,那显然直接继承\(len_{ i - 1 }\).

先考虑\([ i - 1 , i ]\)被两朵云覆盖了怎么办,我们考虑用\(h_{ j , k }\)表示当前被且只被\(j\)\(k\)共同覆盖的区间长度,不难发现\(h_{ j , k }\)有值的地方很少,用map.然后还要加上它们各自的贡献,用\(g_j\)表示当前被且只被\(j\)覆盖的区间长度,这样就可以计算答案.而这两个辅助数组也可以在判断\([ i - 1 , i ]\)是被一朵云还是被两朵云覆盖的时候更新掉.

如果\([ i - 1 , i ]\)被一朵云覆盖了怎么办呢?我们考虑把这朵云杀了,但我们还可能杀掉前面的某一朵云,假设为\(k\),那么就有两种情况:要么这两朵云有交,要么无交.

先考虑无交的情况,这个时候答案显然是\(g_j + g_k\),用线段树处理出当前代价和小于等于\(C\)\(k\)\(g_k\)的最大值就行.

再考虑有交的情况,答案应该为\(g_j + g_k + h_{ j , k }\),我们在每次遇到\(( j , k )\)的时候都在对方那里打个tag就好,也就是对于每个\(j\),处理出和它有交的云中\(g_j + g_k + h_{ j , k }\)的最大值.虽然这些值都会变,但是只会变大,因此可以处理.

那么怎么判断两朵云有交呢?我们不用判断两朵云是否有交,因为前者一定没有后者优秀.不过需要判断两朵云不能是同一朵,这个存一下次大值就可以解决.

这样就转移完了这个题,挺厉害的.

Example3(loj3489)

时间也是一维,扫序列维护时间,线段树二分就可以解决.

具体地,我们需要对每个询问找到这个询问前最近的队列为空的时刻,然后这个时刻后面的答案就可以直接拿前缀max二分,问题在于怎么求这个时刻.

这个时刻也是好求的,它一定是前缀的最小值(这个点一定清空了,这个点后面的数比它小,因此这个点变成\(0\)后那些数一定没清空).

Example4(luoguP7709 「Wdsr-2.7」八云蓝自动机 Ⅱ)

如果初始序列全为\(0\):

倒着扫操作序列,维护当前还没有得到答案的询问,每次找到一个操作一定将整个区间的询问全部得知了答案.

不然不会做.

Example5(luogu3863)

仍然是个数据结构维护时间维,扫描线扫序列维的东西.

Example6(qoj6304)

考虑横纵坐标是对称的,因此我们只需要考虑两横一竖的情况和三条横的情况.

先做三条横,枚举中间的那个横的位置,剩了一段前缀和一段后缀需要覆盖,这个可以前后缀预处理.

然后是两横一竖,扫竖线,问题转化为动态加入删除区间,求当前用两个点覆盖所有区间的方案数,不妨设这两个点是\(L < R\),自然有\(L \leq \min \{ r_i \} , R \geq \max \{ l_i \}\),那么当我们确定\(L\)后,我们有\(R \in [ \max \{ l_i \} , f ( L ) ]\).接下来我们考虑如何计算\(f ( L )\).

注意到\(L < l_i \Rightarrow R \leq r_i\),我们考虑将\(l_i\)这个点的权值设成\(r_i\),那么我们要做的就是一个后缀最小值求和,用楼房重建.

莫队

回滚莫队

带修莫队

也就是维护三维的扫描线,根据KDT不难发现复杂度是\(O ( nm^{ \frac{ 2 }{ 3 } } )\),\(B = n^{ \frac{ 2 }{ 3 } }\),排序原则是\(( ls , rs , t )\),复杂度算一算就知道是对的.

树上莫队

二次离线莫队

这个直接拿区间逆序对当例子记笔记好了.

如果我们用正常的莫队做区间逆序对,我们会得到带个\(\log n\)的复杂度:也就是每次扩展一个数,计算它对答案的贡献,这个是必须带\(\log n\)的,而且查询次数等价于移动次数,我们甚至不能用根号平衡.

那么怎么解决这个问题呢?我们现在无非是有\(n \sqrt{ n }\)次询问,每次询问\(f ( l , r , r + 1 )\)表示区间\([ l , r ]\)\(r + 1\)的逆序对贡献.考虑差分成\(f ( 1 , r , r + 1 ) - f ( 1 , l - 1 , r + 1 )\),前者显然可以迅速求出.而后者的右端点需要移动\(n\)次,需要查询总共\(n \sqrt{ n }\)次,zhe’ge

Example

Example1([Ynoi2016]这是我自己的发明)

dfn将子树转序列,注意到换根无非是把一个序列拆成了两个序列,这是好做的.不过这玩意都\(4 - side\)了,但是有可减性,减成\(2 - side\)就能莫队了.

Example2([HNOI2016]大数)

区间子区间问题对于莫队是有一个套路的:即转化为二元组计数问题.

具体怎么做呢?首先这个题我们特判掉\(p = 2\)\(p = 5\)的情况,这个只需要判断个位数就可以.然后我们考虑求每个点后缀代表的数字\(\bmod p\)的值,设为\(suf_i\),假设存在两个点\(l , r\)满足\(p | ( suf_l - suf_{ r + 1 } )\),那么\([ l , r ]\)就是合法的,这是自然的,也就等价于\(suf_l = suf_{ r + 1 }\),相当于要对满足\(suf_l = suf_{ r + 1 }\)的二元组\(( l , r )\)计数,这个是可以用莫队维护的.

Example3(luoguP3604 美好的每一天)

类似上面那个题,用哈希(其实就是将26个字母表示成26个二的幂次)然后异或起来,和上面的题就完全一样了,做二元组计数.

区间子区间问题

求有多少个子区间满足条件.

上二维平面,子区间所代表的\(( l , r )\)的点一定是在一条角平分线上的一个等腰直角三角形.

Example1(CF997E)

考虑转化为二维平面,\(a_{ l , r } = maxn - minn - ( r - l )\),显然只需要找到为\(0\)的操作就行,这四个数可以转化为四个矩形加法,做扫描线.

另外这里的矩阵加法有\(3 - side\)的,但是可差分成\(2 - side\).

时间倒流

Example1([2022qbxt国庆Day6]sgtbeats)

首先考虑:如果一个点被清空了多次,那么只有最后一次有意义.

删除操作很难做,考虑变成插入,然后就可以拿数据结构维护操作序列的后缀max,存一下每个点最后被清空的时间,然后处理即可.

Example2([WC2006]水管局长)

时间倒流,删边变加边,LCT做一下.

数据结构维护分段函数

Example1(CF1540D Inverse Inversions)

考虑对于一个数列怎么构造:假设只考虑前\(k\)个数,它们的取值是\([ 1 , k ]\),现在加入第\(k + 1\)个数,由于我们知道它是前缀第几小,所以我们可以直接将它设成这个值,然后将前面所有大于等于这个值的点全都\(+ 1\),不难发现这一定是唯一构造.

那么我们现在要知道\(p_i\)是多少,根据上面的构造过程,首先将\(p_i = a_i\),然后不断向后遍历,每遇到一个\(a_j\),如果\(a_j \leq p_i\),则把\(p_i + = 1\).

我们将数列分块,设块长为\(B\),那一个值经过一个块的时候最多加块长个\(1\).也就是经过整块的时候是一个\(B\)段的分段函数.

考虑暴力求出这个分段函数,每次询问的时候直接二分,修改的时候考虑每个块维护一个线段树,线段树的区间表示这个区间对应的分段函数.这样单点修改复杂度是\(\sum{ \cfrac{ B }{ 2^i } } = B\)的,

于是最后复杂度为\(O ( T ( B + \cfrac{ n }{ B } \log n ) )\),取\(B = \sqrt{ n \log n }\)即可.

根号平衡

根号平衡主要用到下面四个东西:

  1. \(O ( 1 )\)单点加,\(O ( \sqrt{ n } )\)区间和:维护块内的和即可.

  2. \(O ( \sqrt{ n } )\)单点加,\(O ( 1 )\)区间和:维护块内和块间的前缀和即可.

  3. \(O ( \sqrt{ n } )\)区间加,\(O ( 1 )\)单点和:差分转化为\(( 2 )\).当然打标记也是可以的.

  4. \(O ( 1 )\)区间加,\(O ( \sqrt{ n } )\)单点和:差分转化为\(( 1 )\).当然打标记也是可以的.

还有一些拓展的东西:

  1. 维护值域\(O ( n )\)的集合,支持\(O ( 1 )\)插入,\(O ( \sqrt{ n } )\)查询第\(k\)小:值域分块就可以.

  2. 维护值域\(O ( n )\)的集合,支持\(O ( \sqrt{ n } )\)插入,\(O ( 1 )\)查询第\(k\)小:值域分块,然后暴力改变每个点所属的块就行.

Example

Example1(区间众数)

首先分块,处理出\(f_{ l , r }\)表示块\([ l , r ]\)的答案.这样每次只需要加入散块中的每个数并判断答案即可,由于判断每个数在区间出现次数是\(\log n\)的,因此复杂度\(O ( n \sqrt{ n \log n } )\).

但是可以优化,我们设\(mx\)表示当前众数出现次数,注意到我们判断一个数字在区间中出现次数是否大于\(mx\)可以\(O ( 1 )\)判断(处理出这个数所有的出现位置),而如果遇到两个数需要对冲,显然\(mx\)增加总次数也不会超过\(O ( \sqrt{ n } )\),因此做到\(O ( n \sqrt{ n } )\).

不删除莫队也能做.

当然,如果只要求区间众数的出现次数,可以直接莫队.

Example2(CodeChef Chef and Churu)

首先发现函数是不会被修改的,因此考虑对函数分块,对于那些散着的函数肯定可以用一个\(O ( 1 )\)查询区间和,\(O ( \sqrt{ n } )\)单点修改的进行根号平衡.

而怎么快速处理整块呢?发现函数可差分,差分后就可以算出每一个位置对这个块内的总贡献,这样就可以更新了.

Example3([Ahoi2013]作业)

莫队,发现有\(m\)次查询,\(n \sqrt{ m }\)次移动,于是根号平衡.

Example4(Bzoj4241历史研究)

回滚莫队板子.

事实上考虑可能的答案只有\(O ( n )\)种,用值域分块就可以平衡复杂度.

实数

首先我们拿到了有理数,然后我们按照以下步骤定义无理数:

首先我们注意到有理数是不连续的.问题在于我们要将其中不连续的部分给补上.首先我们应当去发现一下如何去发现有理数中的一个断点:

\(S\)是一个全序非空集合,我们找到它的两个非空子集\(A , B\),若满足:

  1. \(A \cap B = \emptyset , A \cup B = S\).

  2. \(\forall a \in A , b \in B , a < b\).

  3. \(A\)中无最大元素.

则称这是\(S\)的一个分划,记作\(( A | B )\).接下来我们先考虑\(S = \mathbb{ Q }\)的情况.

我们注意到一些事,比如说注意到\(B\)中有可能没有最小元素.举个例子的话,我们令\(S = \mathbb{ Q } , A = \{ x | x \leq 0 \lor ( x > 0 \land x^2 < 2 ) \}\),显然\(A\)中无最大元素,此时取\(B = S \setminus A\),则显然\(B\)中无最小元素(反证法),假设存在最小元素则可以调整到更小的元素,因为容易证明不存在一个有理数的平方为\(2\).

通过上面的铺垫我们知道,有理数并非连续的,因此如果\(B\)中有最小元素,则称这是一个有理分划;如果\(B\)中无最小元素,则称这是一个无理分划.容易发现有理分划与有理数一一对应.我们将无理分划也去对应到一些数上,这就产生了无理数的定义.只需比较\(A\)集合的大小包含关系就可以比较两个实数的大小.

那我们还需要做的一件事是去证明无理数也有四则运算法则.不妨直接拿分划去验证四则运算法则:

  1. 加法:对于\(( A_c | B_c ) + ( A_d | B_d )\),我们取\(A_{ c + d } = \{ x + y | x \in A_c , y \in A_d \}\)即可.

  2. 减法:只需定义加法逆元.如果是无理分划的话,直接把\(A , B\)中的元素全部取反再交换即可;如果是有理分划的话,需要注意取反再交换后\(A\)中出现了最大元素,只需要在这里把那个元素给提出来就行.

  3. 乘法:两个正数相乘可以直接模仿加法,如果有负数的话就把负号提出来再把绝对值作乘法即可.

  4. 除法:只需定义乘法逆元,这个有点麻烦需要判断\(A\)\(B\)哪个集合是同号的,但总之这个是平凡的.

戴德金分割定理

\(\mathbb{ R }\)的任一分划\(( A | B )\),\(B\)中必定有最小元素.

这个怎么证明呢?对于分划\(( A | B )\),我们直接取\(A ' = A \cap \mathbb{ Q } , B ' = B \cap \mathbb{ Q }\),不难发现\(( A ' | B ' )\)一定是\(\mathbb{ Q }\)的一个分划,也就是说\(( A ' | B ' )\)对应了一个实数\(x\).

既然如此就可以考虑\(x\)应该属于哪个集合.我们注意到:如果\(x \in A\),那么\(x\)必定是\(A\)中的最大元素;如果\(x \in B\),那么\(x\)必定是\(B\)中的最小元素.

两部分是类似的,只考虑前一部分.考虑反证,如果\(\exists y > x , y \in A , x \in A\),那么\(A ' \subsetneq A_y\),那么\(A_y\)就一定不是\(A\)的子集.换言之,\(\exists w \in A_y\),\(\forall z \in A , w > z\).但我们有\(y > w\),这必然意味着\(y \notin A\),与假设不符.

确界存在定理

\(M\)有上(下)界,则必然有上(下)确界.

\(M\)有上界\(c\),由于它是一个实数,它应该可以写作\(( A_c | B_c )\)的形式.\(\forall \alpha \in M , A_\alpha \subset A_c\).

于是我们取\(A = \bigcup_{ \alpha \in M } A_\alpha , B = \mathbb{ Q } \setminus A\),我们来说明\(( A | B )\)是一个分划.

首先由于有上界,显然\(A , B \ne \emptyset , A \cap B = \emptyset , A \cup B = \mathbb{ Q }\).

如果 \(\exists b \in B , a \in A , b < a\),这是不可能的,因为如果\(b < a\),那么\(b \in A , b \notin B\).

因为所有的\(A_\alpha\)中都没有最大元素,反证即可说明\(A\)中无最大元素.

那么\(( A | B )\)就是\(M\)的上确界.

Example1

证明对于单增函数\(f : [ 0 , 1 ] \rightarrow [ 0 , 1 ]\),\(f ( [ 0 , 1 ] ) \subseteq ( 0 , 1 )\),则\(f\)\(y = x\)一定有交点.

\(A = \{ x | f ( x ) < x \}\),则\(1 \in A , A \subseteq [ 0 , 1 ]\).取\(a = \inf A\).

此时我们断言\(f ( a ) = a\),否则:

如果\(f ( a ) < a\),取\(\epsilon = a - f ( a )\),注意到\(f ( a - \frac{ \epsilon }{ 2 } ) < f ( a ) < a - \frac{ \epsilon }{ 2 }\),因此\(( a - \frac{ \epsilon }{ 2 } ) \in A\),与\(a\)是下确界矛盾.

如果\(f ( a ) > a\),取\(\epsilon = f ( a ) - a\).考虑由于\(a\)是下确界,因此\(\exists b \in A , b \in ( a , a + \frac{ \epsilon }{ 2 } )\).那么\(b < a + \frac{ \epsilon }{ 2 } < f ( a ) < f ( b )\),这与\(b \in A\)矛盾.

阿基米德性质

以下命题等价,任取其一均可作为阿基米德性质:

  1. \(\forall y \in \mathbb{ R }\),\(\exists n \in \mathbb{ N } , n > y\).

  2. \(\forall x \in \mathbb{ R }_+ , \exists n \in \mathbb{ N }\),\(nx > 1\).

  3. \(\{ \frac{ 1 }{ n } \}\)有聚点.

  4. \(\lim_{ n \rightarrow \infty } \frac{ 1 }{ n }\)存在.

  5. \(\lim_{ n \rightarrow \infty } \frac{ 1 }{ n } = 0\).

  6. \(\lim_{ n \rightarrow \infty } \frac{ 1 }{ 2^n } = 0\).

(1)\(\Rightarrow\)(2)\(\Rightarrow\)(3)\(\Rightarrow\)(4)\(\Rightarrow ( 5 )\)是显然的.又考虑\(\{ \frac{ 1 }{ 2^n } \}\)\(\{ \frac{ 1 }{ n } \}\)的子列,所以\(( 5 ) \Rightarrow ( 6 )\).而取一个\(\frac{ 1 }{ 2^k } < \frac{ 1 }{ | y | }\)即可(6)\(\Rightarrow\)(1).

阿基米德性质可以由确界存在定理推来,简单来说考虑\(x \in \mathbb{ R }_+ , A = \{ nx | nx < 1 \}\).反证,如果\(A\)是无限集合,那么根据确界存在定理一定存在最小上确界\(\alpha \leq 1\)\(\forall n , nx < \alpha , ( n + 1 ) x < \alpha , nx < \alpha - x\),这就说明\(\alpha - x\)是一个更小的上界,这就矛盾了.

实数集上的一元函数

性质

奇偶性

首先需要定义域关于原点对称.

然后注意到取\(f ( x ) = \frac{ f ( x ) + f ( - x ) }{ 2 } + \frac{ f ( x ) - f ( - x ) }{ 2 }\),可将任意定义域关于原点对称的函数写作奇偶函数之和.

事实上,对于一个可以求任意次导数的偶函数\(f\),是否总存在一个可以求任意次导数的函数\(g\)使得\(f ( x ) = g ( x^2 )\).

这个问题的难点肯定在于\(0\)附近对吧.

这个证明要用到泰勒展开.

\[ f ( \sqrt{ x } ) = \sum_{ k = 0 }^n \frac{ f^{ ( k ) } ( 0 ) }{ k ! } x^\frac{ k }{ 2 } + \frac{ f^{ ( n + 1 ) } ( \xi_n ) }{ ( n + 1 ) ! } x^\frac{ n + 1 }{ 2 } \]

两边求导,应该有:

\[ ( f ( \sqrt{ x } ) )^{ ( t ) } = \sum_{ k = 0 }^n \frac{ f^{ ( k ) } ( 0 ) \prod \limits_{ i = 0 }^{ t - 1 } ( \frac{ k }{ 2 } - i ) }{ k ! } x^{ \frac{ k }{ 2 } - t } + \frac{ f^{ ( n + 1 ) } ( \xi_n ) \prod \limits_{ i = 0 }^{ t - 1 } ( \frac{ n + 1 }{ 2 } - i ) }{ ( n + 1 ) ! } x^{ \frac{ n + 1 }{ 2 } - t } \]

我们知道\(f\)任意阶导数存在,所以在闭区间\([ - 1 , 1 ]\)上任意阶导数有界.这就意味着,对于固定的\(t\).只要取足够大的\(n = 2 t + 2\)满足\(\frac{ n + 1 }{ 2 } - t > 1\),就可以让余项趋于\(0\).

现在来数学归纳,用多项式的特殊情况,假设\(g^{ ( t ) } ( 0 ) = \frac{ t ! }{ ( 2 t ) ! } f^{ ( 2 t ) } ( 0 )\),考虑:

$$ \[\begin{aligned} g^{ ( t + 1 ) } ( 0 ) = \frac{ ( f ( \sqrt{ x } ) )^{ ( t ) } - \frac{ t ! }{ ( 2 t ) ! } f^{ ( 2 t ) } ( 0 ) }{ x } \\ = \cfrac{ \sum_{ k = 0 }^{ 2 t + 2 } \frac{ f^{ ( k ) } ( 0 ) \prod \limits_{ i = 0 }^{ t - 1 } ( \frac{ k }{ 2 } - i ) }{ k ! } x^{ \frac{ k }{ 2 } - t } - \frac{ t ! }{ ( 2 t ) ! } f^{ ( 2 t ) } ( 0 ) }{ x } \\ = \cfrac{ \sum_{ k = 0 }^{ 2 t + 2 } \frac{ f^{ ( k ) } ( 0 ) \prod \limits_{ i = 0 }^{ t - 1 } ( \frac{ k }{ 2 } - i ) }{ k ! } x^{ \frac{ k }{ 2 } } - \frac{ t ! }{ ( 2 t ) ! } f^{ ( 2 t ) } ( 0 ) x^t }{ x^{ 1 + t } } \\ \end{aligned}\]

$$

一片混乱,考虑一下下面这项:

$$ \[\begin{aligned} & \frac{ f^{ ( k ) } ( 0 ) \prod \limits_{ i = 0 }^{ t - 1 } ( \frac{ k }{ 2 } - i ) }{ k ! } x^{ \frac{ k }{ 2 } } \\ = & \frac{ f^{ ( k ) } ( 0 ) \prod \limits_{ i = 0 }^{ t - 1 } ( k - 2 i ) }{ k ! 2^t } x^{ \frac{ k }{ 2 } } \\ \end{aligned}\]

$$

这个时候我们注意到,当\(k\)是奇数的时候应该有\(f^{ ( k ) } ( 0 ) = 0\),当\(k\)是偶数并且\(k \leq t - 1\)的时候应该有\(\prod \limits_{ i = 0 }^{ t - 1 } ( k - 2 i ) = 0\),这意味着这个求和最后只会剩下\(\frac{ f^{ ( 2 t ) } ( 0 ) t ! }{ ( 2 t ) ! } x^{ t } + \frac{ f^{ 2 t + 2 } ( 0 ) ( t + 1 ) ! }{ ( 2 t + 2 ) ! } x^{ t + 1 }\),然而前半部分和后面的刚好消掉了,这就数学归纳成立了.

有界性
单调性
周期性

周期函数不一定有最小正周期,比如狄利克雷函数.

还有个思考题:

如果\(f , g\)是定义域为\(R\)的最小正周期分别为\(T_1 , T_2\)的周期函数,求问:

  1. \(\frac{ T_1 }{ T_2 } \in \mathbb{ Q }\),则\(f + g\)是周期函数.

  2. \(\frac{ T_1 }{ T_2 } \in \mathbb{ R } \setminus \mathbb{ Q }\),结论如何.

  3. \(f , g\)均连续,结论如何.

(1)显然,(3)必定不是周期函数,原因是考虑反证:

如果是的话,必定有:

\[ \begin{aligned} f ( x + T ) + g ( x + T ) & = f ( x ) + g ( x ) \\ f ( x + T ) - f ( x ) & = g ( x ) - g ( x + T ) \end{aligned} \]

\(h ( x ) = f ( x + T ) - f ( x ) = g ( x ) - g ( x + T )\),则\(h ( x )\)\(T_1 , T_2\)为周期,那么其以\(pT_1 + qT_2\)为周期,可逼近这个无理数使得其周期趋近于\(0\),用\(h\)的连续性,于是\(h ( x )\)为常函数,不符题意.

(2)怎么办呢?有没有一种构造方式使得它是周期函数呢?

构造\(d_{ p , q } ( x ) = \begin{cases}1 & \exists m , n \in \mathbb{ Z } , mp + nq = x \\ 0 & \forall m , n \in \mathbb{ Z } , mp + nq \ne x\end{cases}\).

\(f ( x ) = d_{ 1 , \sqrt{ 2 } } ( x ) - d_{ \sqrt{ 2 } , \sqrt{ 3 } } ( x ) , g ( x ) = d_{ \sqrt{ 2 } , \sqrt{ 3 } } ( x ) - d_{ 1 , \sqrt{ 3 } }\),容易见到\(f + g\)的周期为\(1\),下面证明\(f\)的最小正周期是\(\sqrt{ 2 }\),而\(g\)的最小正周期是\(\sqrt{ 3 }\).

二者相似,只考虑证明前者,如若存在一个\(T\),使得\(f ( x ) = f ( x + T )\),则有:

\[ \begin{aligned} d_{ 1 , \sqrt{ 2 } } ( x ) - d_{ \sqrt{ 2 } , \sqrt{ 3 } } ( x ) & = d_{ 1 , \sqrt{ 2 } } ( x + T ) - d_{ \sqrt{ 2 } , \sqrt{ 3 } } ( x + T ) \\ d_{ 1 , \sqrt{ 2 } } ( x ) - d_{ 1 , \sqrt{ 2 } } ( x + T ) & = d_{ \sqrt{ 2 } , \sqrt{ 3 } } ( x ) - d_{ \sqrt{ 2 } , \sqrt{ 3 } } ( x + T ) \end{aligned} \]

\(x = \sqrt{ 3 }\)得到:

\[ d_{ \sqrt{ 2 } , \sqrt{ 3 } } ( \sqrt{ 3 } + T ) - d_{ 1 , \sqrt{ 2 } } ( \sqrt{ 3 } + T ) = 1 \]

这就意味着:

$$ \[\begin{cases} d_{ \sqrt{ 2 } , \sqrt{ 3 } } ( \sqrt{ 3 } + T ) = 1 \\ d_{ 1 , \sqrt{ 2 } } ( \sqrt{ 3 } + T ) = 0 \\ \end{cases}\]

$$

从而\(T = n \sqrt{ 2 } + m \sqrt{ 3 }\),其中\(m \ne - 1\).再取\(x = 0\)得到:

\[ d_{ 1 , \sqrt{ 2 } } ( T ) = d_{ \sqrt{ 2 } , \sqrt{ 3 } } ( T ) = 1 \]

这就必然意味着\(T = n \sqrt{ 2 }\),从而\(f\)的最小正周期恰好就是\(\sqrt{ 2 }\).

基本初等函数

  1. 常值函数

  2. 指数函数

  3. 对数函数

  4. 幂函数

  5. 三角函数

  6. 反三角函数

其中有一些函数的定义其实有一些缺陷,我们将在讨论完连续性后给出.

初等函数

由基本初等函数经过有限次四则运算和复合得到的函数.

举个逆天例子:

\[ f ( x ) = \begin{cases} \sqrt{ - x } & x < 0 \\ 0 & x \in [ 0 , 1 ] \\ \ln x & x > 1 \end{cases} \]

注意到\(f ( x ) = \sqrt{ \frac{ \sqrt{ x^2 } - x }{ 2 } } + \ln \frac{ x + \sqrt{ ( x - 1 )^2 } + 1 }{ 2 }\).

代数函数

存在多项式\(F ( x , y )\)满足\(F ( x , f ( x ) ) \equiv 0\)的函数\(f ( x )\)称为代数函数.

数列极限

定义

\(\{ a_n \}\)是一个给定的序列,若\(\exists l\),\(\forall \epsilon > 0\),\(\exists N \in \mathbb{ N }\),\(\forall n > N , | a_n - l | < \epsilon\).我们称\(l\)是这个序列的极限,记作\(\lim_{ n \rightarrow \infty } a_n = l \\\).

性质

  1. 若数列存在极限,则极限唯一.

  2. 有极限的数列有界.

  3. 数列的极限可以四则运算.

  4. 设序列\(\{ a_n \} , \{ b_n \}\)有极限并且分别为\(l_a , l_b\),若\(\exists N \in \mathbb{ N }\),\(\forall n > N , a_n \geq b_n\),则\(l_a \geq l_b\).

  5. 设序列\(\{ a_n \} , \{ b_n \}\)有极限并且分别为\(l_a , l_b\),如果\(l_a > l_b\),则\(\exists N \in \mathbb{ N }\),\(\forall n > N , a_n > b_n\).

  6. 夹逼定理:设\(\{ a_n \} , \{ b_n \} , \{ c_n \}\)是三个序列,且\(\exists N_0 , \forall n > n_0 , a_n \leq b_n \leq c_n\).那么如果\(\lim_{ n \rightarrow \infty } a_n = \lim_{ n \rightarrow \infty } c_n = l \\\),则\(\lim_{ n \rightarrow \infty } b_n = l \\\).

  7. 对于原序列,若它有极限\(l\),取出它的无穷项子序列,那这个子序列的极限必然也是\(l\).(如果一个序列能取出两个无穷项子序列使得极限不相同,那么原序列必然无极限)

大部分的证明都很显然,只需要套用极限定义即可,这里举几个证明为例.

(3):

设序列\(\{ a_n \} , \{ b_n \}\)有极限并且分别为\(l_a , l_b\),则要证\(\lim_{ n \rightarrow \infty } ( a_n \pm b_n ) = l_a \pm l_b \\\),\(\lim_{ n \rightarrow \infty } ( a_n b_n ) = l_a l_b \\\),若\(l_b \ne 0\),\(\lim_{ n \rightarrow \infty } ( \frac{ a_n }{ b_n } ) = \frac{ l_a }{ l_b } \\\).

先证明加减法,取\(\frac{ 1 }{ 2 } \epsilon\)然后合并起来就行.

乘法也类似,首先有:

\[ \begin{aligned} l_a - \epsilon_1 & < a_n < l_a + \epsilon_1 \\ l_b - \epsilon_2 & < b_n < l_b + \epsilon_2 \end{aligned} \]

于是自然有:

\[ \begin{aligned} | a_n b_n - l_a l_b | & = | ( a_n - l_a ) b_n + l_a ( b_n - l_b ) | \\ & \leq | b_n | | a_n - l_a | + | l_a | | b_n - l_b | \\ & < | b_n | \epsilon_1 + | l_a | \epsilon_2 \\ & < | l_b \pm \epsilon_2 | \epsilon_1 + | l_a | \epsilon_2 \end{aligned} \]

不妨令\(\epsilon_1 = \epsilon_2\),尝试构造一组解使得\(\forall \epsilon > 0 , \exists \epsilon_1 > 0\),\(| l_b \pm \epsilon_1 | \epsilon_1 + | l_a | \epsilon_1 < \epsilon\).限制一下\(\epsilon < 1 , \epsilon_1 < 1\),取\(\epsilon_1 = \frac{ \epsilon }{ 1 + | l_b | + | l_a | }\)即可.

接下来证明除法,实际上只需要证明若\(l_b \ne 0\),\(\lim_{ n \rightarrow \infty } ( \frac{ 1 }{ b_n } ) = \frac{ 1 }{ l_b } \\\).

考虑:\(l_b \lim_{ n \rightarrow \infty } b_n = l_b^2 > 0 \\\),这意味着当\(\exists N_0 , \forall n > N_0 , l_b b_n > 0 \\\),或者更强一点,\(\exists N_0 , \forall n > N_0 , l_b b_n > \frac{ 1 }{ 2 } l_b^2 \\\).

不妨设\(\epsilon ' > 0 , \exists N_1 , \forall n > N_1 , | l_b - b_n | < \epsilon '\)

\(n > \max ( N_0 , N_1 )\)此时自然有:

\[ | \frac{ 1 }{ b_n } - \frac{ 1 }{ l_b } | = \frac{ | l_b - b_n | }{ | b_n l_b | } \leq \frac{ 2 }{ l_b^2 } \epsilon ' \]

\(\epsilon ' = \frac{ l_b^2 }{ 2 } \epsilon\)即可得证.

(4):

反证,设\(l_a < l_b\),那么取\(\epsilon = \frac{ l_b - l_a }{ 2 }\),立刻有:

\[ \begin{aligned} | a_N - l_a | & < \epsilon \\ a_N & < \frac{ l_a + l_b }{ 2 } < b_N \end{aligned} \]

这是不可能的.

单调收敛准则

单调有界无穷数列有极限.

不妨设\(\{ a_n \}\)是一个单调有界无穷数列(不妨假设其单增,不然可以取反变成单增),且\(\forall n , a_n \leq l_a\).

考虑集合\(A = \{ x_n | n \in \mathbb{ N }_+ \}\),根据确界存在定理,其一定有上确界.令\(a\)是它的上确界,我们来证明\(a\)一定是数列的极限.

由于\(a\)是上确界,这意味着\(\forall \epsilon > 0 , a - \epsilon\)不是上确界,所以\(\forall \epsilon > 0\),\(\exists N\),\(\forall n > N , a - \epsilon < a_n \leq a < a + \epsilon\),这就是极限的定义.

自然对数的底数

定义\(e = \lim_{ n \rightarrow \infty } ( 1 + \frac{ 1 }{ n } )^n \\\).如何证明它存在极限呢?考虑单调有界无穷序列必定存在极限,定义\(x_n = ( 1 + \frac{ 1 }{ n } )^n\),于是先证明它有界:

\[ \begin{aligned} ( 1 + \frac{ 1 }{ n } )^n & = \sum_{ k = 0 }^n \frac{ n^{ \underline{ k } } }{ k ! } \frac{ 1 }{ n^k } \\ & < \sum_{ k = 0 }^n \frac{ 1 }{ k ! } \\ & < 2 + \sum_{ k = 2 }^n \frac{ 1 }{ k ( k - 1 ) } \\ & = 2 + \sum_{ k = 2 }^n ( \frac{ 1 }{ k - 1 } - \frac{ 1 }{ k } ) < 3 \end{aligned} \]

接下来证明单调,只需证明:

\[ \begin{aligned} \sqrt[n + 1]{ ( 1 + \frac{ 1 }{ n } )^n } & < \frac{ n + 2 }{ n + 1 } \\ \sqrt[n + 1]{ 1 ( 1 + \frac{ 1 }{ n } )^n } & < \frac{ 1 + n ( 1 + \frac{ 1 }{ n } ) }{ n + 1 } \end{aligned} \]

由均值不等式显然.

如果我们考虑另一个极限\(y_n = ( 1 + \frac{ 1 }{ n } )^{ n + 1 }\),注意到:

\[ \frac{ 1 }{ y_n } = ( \frac{ n }{ n + 1 } )^{ n + 1 } \times 1 < ( \frac{ n + 1 }{ n + 2 } )^{ n + 2 } = \frac{ 1 }{ y_{ n + 1 } } \]

发现\(y_n\)单调递减且\(y_n > x_n\),并且\(\lim_{ n \rightarrow \infty } y_n - x_n = 0\),这就意味着二者必然同时趋向于一个常数的两侧,定义为\(e = 2 . 7182818284 \cdots\).

这里还可以推出一些结论.因为我们知道:

\[ \begin{aligned} x_n & < e < y_n \\ n \ln ( 1 + \frac{ 1 }{ n } ) & < 1 < ( n + 1 ) \ln ( 1 + \frac{ 1 }{ n } ) \\ \frac{ 1 }{ n + 1 } & < \ln ( n + 1 ) - \ln ( n ) < \frac{ 1 }{ n } \\ H_{ n + 1 } - 1 & < \ln ( n + 1 ) < H_n \end{aligned} \]

用这个可以注意到定义\(z_n = H_n - \ln n\),这个东西肯定\(\geq 0\)\(\leq 1\),而且注意到\(z_{ n + 1 } - z_n = \frac{ 1 }{ n + 1 } - \ln \frac{ n + 1 }{ n } < 0\),所以单调有界,这个极限就是欧拉常数\(\gamma = 0 . 57 \cdots\).

接下来证明\(e\)是无理数.

考虑\(e = \lim_{ n \rightarrow \infty } ( 1 + \frac{ 1 }{ n } )^n\),取二项式定理,取\(x_k = \sum_{ k = 0 }^n \frac{ n^{ \underline{ k } } }{ k ! n^k } \leq \sum_{ k = 0 }^n \frac{ 1 }{ k ! } = U_n\).

而又注意到\(x_n = \sum_{ k = 0 }^n \frac{ n^{ \underline{ k } } }{ k ! n^k }\),取定一个确定的上界\(m \leq n\),则\(x_n \geq \sum_{ k = 0 }^m \frac{ n^{ \underline{ k } } }{ k ! n^k } = y_n\).由于\(m\)有限,所以当\(n \rightarrow \infty\)时,\(y_n \rightarrow U_n\)的前\(m\)项,此时再令\(m \to \infty\),根据夹逼定理,立刻得到\(x_n \rightarrow U_n\).换言之,\(m\)增大引起的误差总可以被后面的\(n\)的增大抹平.

考虑一下计算误差,设\(r_n = e - U_n\),则\(r_n = \sum_{ k \geq n + 1 } \frac{ 1 }{ k ! } = \frac{ 1 }{ ( n + 1 ) ! } \sum_{ k \geq 0 } \frac{ 1 }{ ( n + 2 )^{ \overline{ k } } } < \frac{ 1 }{ ( n + 1 ) ! } \sum_{ k \geq 0 } \frac{ 1 }{ ( n + 2 )^k } = \frac{ 1 }{ ( n + 1 ) ! } \frac{ n + 2 }{ n + 1 } < \frac{ 1 }{ n \times n ! }\).

如果\(e\)是有理数,设\(e = \frac{ m }{ n } \in \mathbb{ Q }\),考虑:

\[ \begin{aligned} 0 & < r_n = \frac{ m }{ n } - U_n < \frac{ 1 }{ n \times n ! } \\ 0 & < m \times ( n - 1 ) ! - U_n \times n ! < \frac{ 1 }{ n } \end{aligned} \]

这立刻导出矛盾,因为\(U_n \times n !\)一定是整数.

开区间与闭区间

定义一个集合的内部点:\(x , \exists \delta > 0 , ( x - \delta , x + \delta ) \subseteq A\).我们将一个集合的所有内部点组成的集合记作\(A^{ \degree }\).

这样就可以定义一个集合是内部为空的,就是其没有内部点.反之,如果每个点都是其内部点,那么称其为稠密的.

定义一个集合的边界点:\(x , \forall \delta > 0 , ( x - \delta , x + \delta ) \cap A \ne \emptyset , ( x - \delta , x + \delta ) \cap A^C \ne \emptyset\).

一个集合称为开集合,当且仅当\(A = A^{ \degree }\).

一个集合称为闭集合,当且仅当对于集合中的任何一个数列,数列极限也存在于这个集合中.

当然也可以用补集来用开集合定义闭集合(补集是开集合的集合是闭集合)或者反之.

由此我们知道开集的并是开集,有限个开集的交是开集;闭集的交是闭集,有限个闭集的并是闭集.

容易发现包含于\(A\)的所有开集的并是\(A^{ \degree }\).

我们类似定义\(A\)的闭包是\(\bar{ A }\).

而且容易发现如果\(f\)是连续函数,那么如果\(U\)是开集,那么\(f^{ - 1 } ( U )\)(也就是\(U\)的原像)也是开集.

区间套定理

\(I_n = [ a_n , b_n ] \ne \emptyset , I_{ n + 1 } \subseteq I_{ n }\),则\(I = \bigcap_{ n \geq 1 } I_n\)存在且是一个非空闭区间.

怎么证明?考虑\(a_n\)单增,\(b_n\)单减并且\(a_1 \leq a_n \leq b_n \leq b_1\),所以\(a_n\)存在极限,不妨设为\(l_a\),同理\(b_n\)也存在极限,设为\(l_b\).容易验证\(I = [ l_a , l_b ]\).

类似地,设\(I_n = ( a_n , b_n ) \ne \emptyset , I_{ n + 1 } \subseteq I_{ n }\),并且\(a_n , b_n\)不会从某一项开始往后全都是常数(换言之其极限不等于其每一项,且不会上下波动),则\(I = \bigcap_{ n \geq 1 } I_n\)存在且是一个非空闭区间.

特别地,当\(\lim | b_n - a_n | = 0\)的时候,上述给出一个单点.

Example1

\(x_1 = a , x_2 = b , a \ne b , x_{ n + 2 } = \frac{ x_{ n + 1 } + x_n }{ 2 }\),问\(\lim_{ n \rightarrow \infty } x_n\)是否存在.

可以设\(c_n = \min \{ x_n , x_{ n + 1 } \} , d_n = \max \{ x_n , x_{ n + 1 } \}\),讨论\(x_{ n + 1 }\)\(x_n\)的大小关系(二者显然不相等)可以知道\([ c_n , d_n ]\)满足区间套定理的条件,又注意到\(| I_{ n + 1 } | = | x_{ n + 2 } - x_{ n + 1 } | = \frac{ 1 }{ 2 } | I_n |\),所以区间长度趋近于\(0\),这样的话\(\lim_{ n \rightarrow \infty } c_n = \lim_{ n \rightarrow \infty } x_n = \lim_{ n \rightarrow \infty } d_n\).

Example2

\(a_1 > b_1 > 0\),\(a_{ n + 1 } = \frac{ a_n + b_n }{ 2 } , b_{ n + 1 } = \sqrt{ a_n b_n }\).求证\(a_n , b_n\)极限都存在且相等.

还是区间套定理,容易验证满足区间套定理的条件,那么要注意到\(| I_{ n + 1 } | = \frac{ a_n + b_n }{ 2 } - \sqrt{ a_n b_n } < \frac{ a_n + b_n }{ 2 } - b_n = \frac{ 1 }{ 2 } | I_n |\),所以\(\lim_{ n \rightarrow \infty } | I_n | = 0\),这就证明了二者存在且相等.

其实先用单调有界数列有极限,再对着递推式两边求下极限就可以了.

有限覆盖定理

覆盖:\(\Sigma :\)由一些开区间组成的集合.若\(M \subset \mathbb{ R }\),称\(M\)\(\Sigma\)覆盖,当且仅当\(M \subseteq \bigcup_{ \sigma \in \Sigma } \sigma\).

有限覆盖定理是说,如果\(M = [ a , b ]\)是一个有界闭区间,且\(M\)\(\Sigma\)覆盖,则一定存在一个\(\Sigma\)的有限子集\(\Sigma_1\),使得\(M\)能被\(\Sigma_1\)覆盖.

换言之,有界闭区间若能被开区间覆盖,则一定能被有限个开区间覆盖.

反证:如果\(M\)不能被有限覆盖,那么\([ a , \frac{ a + b }{ 2 } ]\)\([ \frac{ a + b }{ 2 } , b ]\)至少有一个不能被有限覆盖(如果它俩都能那\([ a , b ]\)肯定也能).不妨取出二者中任意一个不能被有限覆盖的区间,设为\([ a_1 , b_1 ]\),再进行上面的操作就可以得到\([ a_2 , b_2 ]\),以此类推,如此我们得到了一个满足区间套定理的区间序列而且均不能被有限覆盖,根据区间套定理,可以取出它们交集的那个元素\(c\).由于\(\{ c \} \in M\),所以\(\exists \sigma \in \Sigma , c \in \sigma\).因为\(\sigma\)是开区间,所以\(\exists \epsilon > 0 , [ c - \epsilon , c + \epsilon ] \in \sigma\),而显然可以找到一个\(N > 0\),\(\forall n \geq N\),\([ a_n , b_n ] \in [ c - \epsilon , c + \epsilon ]\),这就矛盾了.

Example1

证明:有界闭区间上的局部有界(对于每一个点,它都存在一个开区间邻域是有界的)函数是整体有界函数.

设定义域为\([ a , b ]\),考虑\(\forall x_0 \in [ a , b ] , \exists \sigma > 0\),\(f\)\(( x_0 - \sigma , x_0 + \sigma )\)上有界,注意到设\(I_{ x_0 } = ( x_0 - \sigma , x_0 + \sigma )\),那么\([ a , b ]\)一定被\(I\)这个区间集合开覆盖,那么就能被有限开覆盖,取出那有限个区间对应的值域并起来就行.

Example2

证明:有界闭区间上的局部增(对于每一个点,它都存在一个开区间邻域是增的)函数是整体增函数.

证明和上面一样,合并两个开区间的时候找任意一个交集元素即可.

外测度与零测集

定义外测度:对于\(E \subseteq \mathbb{ R }\),定义\(m^* ( E )\)\(E\)的外测度,\(m^* ( E ) = \inf \{ ( \sum | I_k | ) \mid \bigcup I_k \supseteq E \}\),也就是找一列区间使得其并起来能包含\(E\).

定义零测集:外测度为\(0\)的集合.容易发现\(m^* ( \bigcup E_k ) \leq \sum m^* ( E_k )\).于是可数个零测集的并仍然是零测集.

如果一个集合的势可数,那它当然是零测集,原因是可以构造\(I_n = ( x_n - \delta , x_n + \delta ) , \delta = \frac{ 1 }{ 2^{ n + 1 } }\).由这个构造\(\epsilon_k = \frac{ \epsilon }{ 2^{ k + 1 } }\)可以说明可数个零测集的并仍然是零测集.

反之,一个集合是零测集不一定代表其可数,例如康托三分集:先把\([ 0 , 1 )\)上扣去\([ \frac{ 1 }{ 3 } , \frac{ 2 }{ 3 } )\),然后再对剩下的线段也做类似的操作,每次扣掉中间一段.算一下每次扣去的长度,发现长度恰好为\(1\),于是当然是零测集.但注意到这对应着一个三进制小数并且每一位只能是\(0 , 2\),那这当然势仍然是\(2^\mathbb{ N }\),于是不可数.

Vitali覆盖引理

\(E \subseteq R\),称一族区间\(\Gamma = \{ I_\alpha \}\)\(E\)的一个Vitali覆盖,若对\(\forall x \in E , \epsilon > 0\),\(\exists I_{ \alpha } \in \Gamma , | I_\alpha | < \epsilon , x \in I_\alpha\).也就是对于任何一个点都存在足够小的区间把它盖住.

Vitali覆盖引理是说,如果\(E\)是一个有界集(或者推广到外测度有限的集合),\(\Gamma\)\(E\)的一个Vitali覆盖,则\(\forall \epsilon > 0\),\(\Gamma\)中可以拿出有限个两两不交的区间\(I_j \in \Gamma\),满足\(m^* ( E \setminus ( \bigcup I_j ) ) < \epsilon\).注意这里取区间的方式依赖于\(\epsilon\)的选取.

取一个开集\(G \supseteq E , m^* ( G ) < \infty\),不妨设\(\Gamma\)中的每个区间都\(\subseteq G\)(原因在于Vitali覆盖保证了任意小的区间覆盖,而开集的性质使得总有区间在其中).在此基础上,由于上面的\(\Gamma\)是任意一个Vitali覆盖,所以我们不妨假设\(\Gamma\)中的每个区间都是闭区间(也就是把端点加进去,那当然仍然是Vitali覆盖而且更难满足限制,因为闭区间更难以两两不交),这当然仍是可以的.

现在我们归纳取区间,我们任取一个\(I_1 \in \Gamma\),开始不断往上添区间.设\(I_1 , \cdots , I_k\)已经被我们拿到,而且两两不交.

如果此时\(E \subseteq \bigcup_{ j = 1 }^k I_j\),当然直接满足条件.

反之,令\(\delta_k = \sup \{ ( | I | ) \mid I \in \Gamma , I \cap I_j = \emptyset , 1 \leq j \leq k \}\).容易发现\(\delta_k < \infty\).那我们取\(I_{ k + 1 }\)使得\(\forall 1 \leq j \leq k , I_{ k + 1 } \cap I_j = \emptyset , | I_{ k + 1 } | > \frac{ 1 }{ 2 } \delta_k\),这当然做得到.

如果一直做下去都没有使得\(E \subseteq \bigcup I_j\),那我们就可以拿到一个区间列.接下来我们考虑\(\sum | I_k |\),此时由于\(I_k\)两两不交,当然有\(\sum | I_k | \leq m^* ( G ) < \infty\),那么根据单调收敛准则,\(\sum | I_k |\)趋于一个极限,于是\(| I_k |\)当然趋近于\(0\),那么\(\delta_k\)趋近于\(0\).在此基础上,我们当然可以取一个\(N > 0\),\(\forall n \geq N , \sum_{ k \geq n + 1 } | I_k | < \frac{ 1 }{ 5 } \epsilon\).

此时\(\forall x \in E \setminus ( \bigcup_{ k \leq N } I_k )\).由于\(I_k\)均为闭区间,所以\(E \setminus ( \bigcup_{ k \leq N } I_k )\)必定是开区间,这也就是说\(x\)存在一个小邻域\(I ' \in \Gamma\)并且\(I ' \subseteq E \setminus ( \bigcup_{ k \leq N } I_k )\).那当然有\(I ' \cap ( \bigcup_{ k \leq N } I_k ) = \emptyset\),也就是\(I ' \cap I_k = \emptyset , 1 \leq k \leq N\).由于\(| I ' |\)有限且不为\(0\),而\(\delta_n \rightarrow 0\).一定\(\exists n \geq N\),使得\(I ' \cap ( \bigcup_{ k \leq n } I_k ) = \emptyset , I ' \cap I_{ n + 1 } \ne \emptyset\).发现此时\(| I ' | \leq \delta_n < 2 | I_{ n + 1 } |\).

此时会出个什么事呢?由于\(| I ' | < 2 | I_{ n + 1 } |\),所以我们把\(I_{ n + 1 }\)这个区间扩大五倍(中心不变,半径扩大到原本的五倍)就一定能盖住\(I '\).

那会怎么样呢?那\(m^* ( E \setminus ( \bigcup_{ k \leq N } I_k ) ) \leq 5 \sum_{ k \geq N + 1 } | I_k | < \epsilon\).于是证毕.

聚点原理

假设\(M\)是一个实数集,称\(x_0\)\(M\)的聚点,当且仅当\(\forall \epsilon > 0\),\(( ( x_0 - \epsilon , x_0 ) \cup ( x_0 , x_0 + \epsilon ) ) \cap M \ne \emptyset\),或说,\(\forall \epsilon > 0 , ( x_0 - \epsilon , x_0 + \epsilon ) \cap M\)是一个无限集.可以理解为,\(x_0\)不是一个孤点.

引理:\(x_0\)\(M\)的聚点,当且仅当\(\exists \{ x_n \} \in M \setminus \{ x_0 \} , \lim_{ n \rightarrow \infty } x_n = x_0\).充分性显然,必要性的话只需取\(\epsilon = 2^{ - n }\)然后从上面的交集拿点就行.

聚点原理:有界无穷集\(M\)必有聚点.

我们可以找一个\(I_0 = [ a , b ] , M \subset I_0\),我们找\([ a , \frac{ a + b }{ 2 } ] , [ \frac{ a + b }{ 2 } , b ]\),其中至少有一个和\(M\)的交集为无穷集,我们取其为\([ a_1 , b_1 ]\),不断这么做又会得到一个闭区间套列,交起来得到的那个元素\(c\)就是聚点,因为\(\forall \epsilon > 0 , \exists N > 0 , \forall n \geq N , | b_n - a_n | < \epsilon\),那么\([ a_n , b_n ] \subseteq ( c - \epsilon , c + \epsilon )\),立刻证毕.

Baire纲定理

  1. \(\{ F_n \}\)是一列内部为空(没有除空集以外的开子集)的闭集,则\(\bigcup_{ n = 1 }^{ \infty } F_n\)内部为空.

  2. \(\{ G_n \}\)是一列稠密(补集内部为空)的开集,则\(\bigcap_{ n = 1 }^{ \infty } G_n\)稠密.

(1)(2)等价,下面只证明(1):

反证,假设\(F = \bigcup_{ n = 1 }^{ \infty } F_n\)内部不为空,也就是其存在一个内部开集\(( x_0 - \delta_0 , x_0 + \delta_0 ) \subseteq F\).由于\(F_1\)是一个闭集,因此\(( x_0 - \delta_0 , x_0 + \delta_0 ) \setminus F_1\)当然是一个开集,于是其就存在一个子区间\([ x_1 - \delta_1 , x_1 + \delta_1 ] \subseteq ( x_0 - \delta_0 , x_0 + \delta_0 )\)并且\([ x_1 - \delta_1 , x_1 + \delta_1 ] \cap F_1 = \emptyset\),同理可以找到一列闭区间\(\{ [ x_k - \delta_k , x_k + \delta_k ] \}\)使得\([ x_k - \delta_k , x_k + \delta_k ] \cap \bigcup_{ j = 1 }^k F_j = \emptyset\).

容易见到我们可以任意调小\(\delta_k\)的大小,调整使得\(\delta_k < \frac{ 1 }{ k }\)总成立就得到了一列闭区间套,必然拿到了一个单独的点\(\xi\),那么\(\xi \in ( x_0 - \delta_0 , x_0 + \delta_0 ) \subseteq F\),然而对于任意区间都有\(\xi \notin F_n\),因此\(\xi \notin F\),这就导出了矛盾.

Example1

证明:如果\(f ( x )\)连续,并且\(\forall x > 0 , \lim_{ n \rightarrow \infty } f ( nx ) = 0\),则\(\lim_{ x \rightarrow \infty } f ( x ) = 0\).

对于一个\(\epsilon > 0\),考虑构造内部为空的闭集\(F_n = \{ x | \forall k \geq n , f ( kx ) \leq \epsilon \}\)(为什么这是闭集呢?因为当你设\(F_{ n , k }\)满足上述定义,那\(F_{ n , k }\)肯定是闭集,然后\(F_n\)就是上述这些的交,当然也是闭集).容易发现\(F_n\)的并是\(\mathbb{ R }_+\),那就一定至少有一个闭集内部不为空,我们就可以取出其中的一个区间设为\(( a , b )\),然后用这个区间在若干倍后覆盖后半部分数轴,原因是当\(n\)足够大的时候,一定有\(nb > ( n + 1 ) a\)存在.

致密性定理

有界无穷数列有收敛的子列.

考虑数列值域\(M = \{ x | x = x_n , n \in \mathbb{ N }_+ \}\).

如果\(M\)是有限集合,那\(\exists a\),\(I = \{ n | x_n = a \}\)是无限集合,把这些数拿出来就是一个无限的常数列.

如果\(M\)是无限集,那其存在聚点,设\(a\)为其中一个聚点.则\(M_k = ( ( a - \frac{ 1 }{ k } , a + \frac{ 1 }{ k } ) \setminus \{ a \} ) \cap M , k \in \mathbb{ N }_+\)是个无限集.

那只需要取\(x_{ n_k }\)\(M_k\)中的某个\(x_{ n ' }\)满足\(n ' > n_{ k - 1 }\)即可,由于这是无限集,所以显然可以取出.拿出来的这个数列显然以\(a\)为极限.

柯西收敛准则

称一个数列为柯西数列,当且仅当\(\forall \epsilon > 0 , \exists N > 0 , \forall n , m \geq N , | x_n - x_m | < \epsilon\).

一个数列收敛的充要条件是他是一个柯西数列.

先证必要性:

\(\forall \epsilon > 0 , \exists N > 0 , \forall n , m \geq N , | a - x_n | < \frac{ \epsilon }{ 2 } , | a - x_m | < \frac{ \epsilon }{ 2 } , | x_n - x_m | \leq | x_n - a | + | a - x_m | < \epsilon\).

再证充分性:

考虑取\(\epsilon = 1\),则\(\exists N_1 , \forall n \geq N_1 , | x_n - x_{ N_1 } | < 1\),于是\(| x_n | < | x_{ N_1 } | + 1\),于是\(\forall n , | x_n | < \max_{ k = 1 }^{ N_1 } \{ | x_k | \} + 1\),于是这个数列有界,那么存在无穷子列有极限\(a\).

那么\(\forall \epsilon > 0 , \exists N > 0 , \forall n_k , m \geq N , | x_{ n_k } - x_m | < \epsilon\),其中\(\{ x_{ n_k } \}\)\(a\)为极限,于是可以取足够远的\(x_{ n_k }\).接下来就是简单说明的环节了.

柯西收敛准则的充分性还可以用上下极限证明:

\(\forall \epsilon > 0 , \exists N , \forall n \geq N , x_n \in ( x_N - \epsilon , x_N + \epsilon )\),那么上下极限之差\(\leq 2 \epsilon\).

于是引出了实数的第二种定义方式:我们定义两个柯西列等价,有\(\{ x_n \} \sim \{ y_n \} \Leftrightarrow \lim_{ n \rightarrow \infty } | x_n - y_n | = 0\).那么所有有理数组成的柯西列的等价类构成实数集合.不难证明这样定义出来的实数和戴德金分割等价.

这个定义方式只依赖于距离的定义.而且我们可以证明任何一次扩充后得到的空间一定是封闭的.用这个例子就是说你对于一个实数的柯西列,证明它一定收敛到一个实数.那么就可以把这个柯西列的每一个数(作为实数,实际上对应了一个柯西列)中抽出一个数来,然后证明这些数组成的新的柯西列与刚才那个柯西列等价,这样就证明了其封闭性.其实只要第\(k\)个数把其代表的任意一个柯西列中选第\(k\)个元素构造即可.

上下极限

我们推广广义极限,也就是一个数列可以以\(+ \infty\)或者\(- \infty\)为极限.这个容易用\(\epsilon - N\)语言写出来.这样的话我们立刻得到单调数列有极限.

那我们取任意一个数列从某一项往后的上确界\(h_n = \sup_{ k \geq n } \{ x_k \}\)和下确界\(l_n = \inf_{ k \geq n } \{ x_k \}\),那么注意到\(\{ l_n \}\)单调不降,\(\{ h_n \}\)单调不增,所以二者都存在极限.由此可以定义上下极限,并且任意数列都一定存在上下极限.

注意到\(\lim_{ n \rightarrow \infty } l_n = \sup_{ n \geq 1 } \inf_{ k \geq n } \{ x_k \} , \lim_{ n \rightarrow \infty } h_n = \inf_{ n \geq 1 } \sup_{ k \geq n } \{ x_k \}\),于是\(\varliminf_{ n \rightarrow \infty } x_n = \lim_{ n \rightarrow \infty } l_n \leq \lim_{ n \rightarrow \infty } h_n = \varlimsup_{ n \rightarrow \infty } x_n\).

那么\(x_n\)存在极限当且仅当\(\varlimsup_{ n \rightarrow \infty } x_n = \varliminf_{ n \rightarrow \infty } x_n\).

充分性很好证明,只需要使用夹逼定理即可.

必要性也很好说如果极限不是\(\infty\),\(\forall \epsilon > 0 , \exists N , \forall n \geq N , a - \epsilon < x_n < a + \epsilon\),那么\(a - \epsilon < l_n \leq h_n < a + \epsilon\).自然得到两者极限相等.是\(\infty\)也很好说.

上下极限同样有保序性,相反数有\(\varlimsup ( - x ) = - \varliminf x\),但是不能简单的四则运算,而是有\(\varliminf x_n + \varliminf y_n \leq \varliminf ( x_n + y_n ) \leq \varlimsup ( x_n + y_n ) \leq \varlimsup x_n + \varlimsup y_n\),我们这里先不讨论出现\(\infty - \infty\)的情况.

证明的话只需注意到\(\inf_{ k \geq n } x_k + \inf_{ k \geq n } y_k \leq x_m + y_m , \forall m \geq n\),因此对右边可以取下确界,然后两边一起取极限即可.

另外还有结论是\(\varliminf ( x_n + y_n ) \leq \varlimsup x_n + \varliminf y_n\).这个又如何证明呢?只需证明:

$$ \[\begin{aligned} \varliminf ( x_n + y_n ) - \varlimsup x_n & \leq \varliminf y_n \\ \varliminf ( x_n + y_n ) + \varliminf ( - x_n ) & \leq \varliminf y_n \\ \end{aligned}\]

$$

于是证毕.

乘法的话需要规定\(x_n , y_n > 0\),然后和加法的不等式形式是类似的(同样先不考虑\(0 \times \infty\)的情况).

如果\(\{ x_n \} , \{ y_n \}\)其中一个存在极限,那么上面的不等式就可以取等了(当然仍然不讨论出现\(\infty - \infty\)\(0 \times \infty\)的情况).如果\(x_n = y_n > 0\)的话上面的乘法不等式也可以取等,换言之\(x_n > 0\)的时候\(\varlimsup x_n^2 = ( \varlimsup x_n )^2\)成立.

Example1

对于数列\(\{ a_n \}\),满足\(a_n > 0\),\(a_{ n + 2 } = \frac{ 2 }{ a_{ n + 1 } + a_n }\).

求证:

  1. \(\{ a_n \}\)有界.

  2. \(\lim_{ n \rightarrow \infty } a_n = 1\).

  3. \(\exists \lambda \in ( 0 , 1 ) , c > 0\),\(\forall n , | a_n - 1 | < c \lambda^n\).

  4. 对所有满足条件的数列,求\(\min ( \lambda ) = \frac{ \sqrt{ 2 } }{ 2 }\).

对于(1),取\(M = \max ( \max ( a_1 , a_2 ) , \frac{ 1 }{ \min ( a_1 , a_2 ) } )\),数学归纳可证明\(a_n \in [ \frac{ 1 }{ M } , M ]\).

两边取一下上极限和下极限,立刻得到\(1 \leq \overline{ a } \underline{ a } \leq 1\),于是\(\overline{ a } \underline{ a } = 1\).

后面不会了(乐).

Stolz定理

如果\(\lim_{ n \rightarrow \infty } \frac{ a_{ n + 1 } - a_n }{ b_{ n + 1 } - b_n } = A\),并且\(\{ b_n \}\)单调递增且发散,那么\(\lim_{ n \rightarrow \infty } \frac{ a_n }{ b_n } = A\).

这个怎么证明呢?先取\(c_n = a_n - Ab_n\),考虑\(\forall \epsilon > 0 , \exists N > 0 , \forall n \geq N\),有:

\[ c_{ n + 1 } - c_n \leq | c_{ n + 1 } - c_n | < \epsilon ( b_{ n + 1 } - b_n ) \]

两边求和,立刻有:

\[ \begin{aligned} c_{ n } - c_N & < \epsilon ( b_{ n } - b_N ) \\ \frac{ c_n - c_N }{ b_n - b_N } & < \epsilon \\ \frac{ \frac{ c_n }{ b_n } - \frac{ c_N }{ b_n } }{ 1 - \frac{ b_N }{ b_n } } & < \epsilon \end{aligned} \]

由于\(b_n\)发散,对左边取极限就得到\(\lim_{ n \rightarrow \infty } \frac{ c_n }{ b_n } = 0\),也就证明了原结论.

如果将上述条件改为:

  1. \(\{ b_n \}\)单调递减且\(\lim b_n = 0\).

  2. \(\lim a_n = 0\).

上述定理也是成立的.

证明仍然是上面那个过程,只是做一些小修改:

\[ \begin{aligned} c_{ N } - c_n & < \epsilon ( b_{ N } - b_n ) \\ \frac{ c_N - c_n }{ b_N - b_n } & < \epsilon \\ \frac{ \frac{ c_N }{ b_N } - \frac{ c_n }{ b_N } }{ 1 - \frac{ b_n }{ b_N } } & < \epsilon \end{aligned} \]

两边取极限.

把Stolz定理推广到上下极限上.换言之,当:

  1. \(\{ b_n \}\)单调上升且趋近于无穷.

或:

  1. \(\{ b_n \}\)单调递减且\(\lim b_n = 0\).

  2. \(\lim a_n = 0\).

此时应当有:

\[ \varliminf \frac{ a_{ n + 1 } - a_n }{ b_{ n + 1 } - b_n } \leq \varliminf \frac{ a_n }{ b_n } \leq \varlimsup \frac{ a_n }{ b_n } \leq \varlimsup \frac{ a_{ n + 1 } - a_n }{ b_{ n + 1 } - b_n } \]

上述命题的一个平凡推论是:

\[ \varliminf ( a_{ n + 1 } - a_n ) \leq \varliminf \frac{ a_n }{ n } \leq \varlimsup \frac{ a_n }{ n } \leq \varlimsup ( a_{ n + 1 } - a_n ) \]

实数的完备性基本定理

我们将以下定理称作实数的完备性的基本定理:

  1. 戴德金分割定理

  2. 确界存在定理

  3. 单调收敛准则

  4. 闭区间套定理(+阿基米德性质)

  5. 有限覆盖定理

  6. 聚点原理

  7. 致密性定理

  8. 柯西收敛准则(+阿基米德性质)

这七条定理(除了3和7,它们需要与阿基米德性质配合使用)全部与戴德金分割定理等价.

我们上面已经论证了其中的部分推导关系,我们在下面声称它们分为若干组推导链条,分别代表了实数的不同性质.

函数极限

定义

函数的极限类型比较多:

  1. \(x\)是从一点\(a\)的右侧趋向于\(a\),这时记作\(x \rightarrow a + 0\).

  2. \(x\)是从一点\(a\)的左侧趋向于\(a\),这时记作\(x \rightarrow a - 0\).

  3. \(x\)同时从一点\(a\)的两侧趋向于\(a\),这时记作\(x \rightarrow a\).

  4. \(x\)无限制增大,记作\(x \rightarrow + \infty\).

  5. \(x\)无限制减小,记作\(x \rightarrow - \infty\).

  6. \(| x |\)无限制增大,\(x\)同时增大或减小,记作\(x \rightarrow \infty\).

序列极限的定理在函数极限的条件下几乎也全都成立.

单侧极限

\(x \rightarrow a + 0\)\(x \rightarrow a - 0\),这两种是对称的,我们只讨论前一种.

\(\exists l , \forall \epsilon > 0 , \exists \delta > 0 , \forall 0 < x - a < \delta , | f ( x ) - l | < \epsilon\).我们称\(l\)\(x \rightarrow a + 0\)\(f ( x )\)右极限,记作\(\lim_{ x \rightarrow a + 0 } f ( x ) = l \\\),同理可以定义左极限.

双侧极限

若左右极限都存在且相等,那么双侧极限也存在并且\(\lim_{ x \rightarrow a } f ( x ) = \lim_{ x \rightarrow a + 0 } f ( x ) = \lim_{ x \rightarrow a - 0 } f ( x ) \\\).

自变量趋于无穷时的极限

设函数\(f ( x )\)\(( a , + \infty )\)上有定义,若\(\exists l\),\(\forall \epsilon , \exists A \geq a , \forall x > A , | f ( x ) - l | < \epsilon\),则记\(\lim_{ x \rightarrow + \infty } f ( x ) = l \\\),同理定义\(\lim_{ x \rightarrow - \infty }\),若二者均存在且相等,定义\(\lim_{ x \rightarrow \infty } = \lim_{ x \rightarrow + \infty } = \lim_{ x \rightarrow - \infty }\).

上下极限

定义去心邻域\(U_0 ( x_0 , \delta ) = ( x_0 - \delta , x_0 + \delta ) \setminus \{ x_0 \}\).

定义\(\varlimsup_{ x \rightarrow x_0 } f ( x ) = \lim_{ \delta \rightarrow + 0 } \sup_{ x \in U_0 ( x_0 , \delta ) } f ( x )\),下极限同理.

显然\(\lim_{ x \rightarrow x_0 } f ( x ) = A \Leftrightarrow \varlimsup_{ x \rightarrow x_0 } f ( x ) = \varliminf_{ x \rightarrow x_0 } f ( x ) = A\).

第一可数公理

函数极限当然满足四则运算法则,保序性,夹逼定理,单调收敛准则,柯西收敛准则.

事实上函数极限和数列极限满足关系:

\(\forall \{ x_n \} \in U_0 ( x_0 )\),如果\(\lim_{ n \rightarrow \infty } x_n = x_0\),那么\(\lim_{ n \rightarrow \infty } f ( x_n ) = \lim_{ x \rightarrow x_0 } f ( x )\),前提是这两个极限都存在.

证明是堆\(\delta - \epsilon\)语言,不再赘述.

而它们之间关系的本质其实是:\(x_0\)处的”任意小邻域”其实可以用某列邻域替代.

我们定义邻域基:一个由\(x_0\)的邻域组成的集合\(U\),如果对于任意小邻域,\(U\)中都存在一个邻域比这个邻域更小,那么就称\(U\)是一个邻域基.\(\mathbb{ R }\)的特殊之处在于任意一个点都有可数邻域基,这被称为第一可数公理(\(C_1\)公理).

另外\(\mathbb{ R }\)是可分的,也就是它存在可数稠密集(\(\mathbb{ Q }\)).

无穷大量和无穷小量

如果\(x \rightarrow x_0\)时,\(f ( x )\)有界,称\(f ( x ) = O ( 1 )\).

如果\(x \rightarrow x_0\)的时候,\(f ( x ) \rightarrow 0\),称\(f ( x ) = o ( 1 )\).

如果\(f , g = o ( 1 )\),\(\frac{ f }{ g } \rightarrow 1\),那么称二者为等价无穷小;如果\(\frac{ f }{ g } = c \ne 0\),则称二者为同阶无穷小(可记作\(f \sim g\));如果\(\frac{ f }{ g } = 0\),则称\(f\)\(g\)高阶无穷小,可记作\(f = o ( g )\).

同阶无穷小在做乘除法的时候是可以替换的.

如果\(\frac{ f }{ g }\)是有界的,那么可以写作\(f = O ( g )\).

Example1

\(\lim_{ x \rightarrow 0 } \frac{ \sin x }{ x } = 1\).

因为其左右对称,考虑取\(x \in ( 0 , \frac{ \pi }{ 2 } )\)我们有\(\sin x < x < \tan x\)(用单位元的面积证明).

那么考虑\(\frac{ \sin x }{ x } < 1\),又注意到:

\[ \frac{ \sin x }{ x } > \frac{ \sin x }{ \tan x } = \cos x \]

夹逼定理一下就行.

类似可以证明\(\lim_{ x \rightarrow 0 } \frac{ \tan x }{ x } = 1 , \lim_{ x \rightarrow 0 } \frac{ 1 - \cos x }{ x^2 } = \frac{ 1 }{ 2 } ,\)

Example2

\(\lim_{ x \rightarrow 0 } \frac{ x - \sin x }{ x^3 } = \frac{ 1 }{ 6 }\).

下面有个三次方,考虑套用一下三倍角公式,我们知道:

\[ \begin{aligned} f ( x ) & = \frac{ x - \sin x }{ x^3 } = \frac{ x - ( 3 \sin \frac{ x }{ 3 } - 4 \sin^3 \frac{ x }{ 3 } ) }{ x^3 } \\ & = \frac{ 3 ( \frac{ x }{ 3 } - \sin \frac{ x }{ 3 } ) + 4 \sin^3 \frac{ x }{ 3 } }{ ( \frac{ x }{ 3 } )^3 } \frac{ 1 }{ 27 } \\ & = \frac{ 1 }{ 9 } f ( \frac{ x }{ 3 } ) + \frac{ 4 }{ 27 } ( \frac{ \sin \frac{ x }{ 3 } }{ \frac{ x }{ 3 } } )^3 \end{aligned} \]

看上去两边取上下极限就做完了对吧!但是还差一点,因为我们要证明上下极限都不是无穷,起码得说明它有界.

注意到\(\frac{ x - \sin x }{ x^3 } < \frac{ \tan x - \sin x }{ x^3 } = \frac{ \sin x }{ x } ( \frac{ 1 - \cos x }{ x^2 \cos x } ) = \frac{ \sin x }{ x } ( \frac{ 2 \sin^2 \frac{ x }{ 2 } }{ x^2 \cos x } )\),这样两边限定一下范围再取上极限可以说明原式上极限有界.

Example3

\(\lim_{ x \rightarrow 0 } \frac{ \sin x - \tan x }{ x^3 }\).

考虑\(\frac{ \sin x - \tan x }{ x^3 } = \frac{ \sin x }{ x } \frac{ 1 }{ x^2 } \frac{ \cos x - 1 }{ \cos x } = \frac{ \tan x }{ x } \frac{ \cos x - 1 }{ x^2 } = - \frac{ 1 }{ 2 }\).

Example4

\(\lim_{ t \rightarrow 0 } \frac{ \log_{ a } ( 1 + t ) }{ t } = \frac{ 1 }{ \ln a }\).

\[ \lim_{ t \rightarrow 0 } \frac{ \log_{ a } ( 1 + t ) }{ t } = \log_a \lim_{ t \rightarrow 0 } ( 1 + t )^{ \frac{ 1 }{ t } } = \log_a e = \frac{ 1 }{ \ln a } \]

Example5

\(\lim_{ t \rightarrow 0 } \frac{ a^t - 1 }{ t } = \ln a\).

\(s = a^t - 1\),则原式等于\(\lim_{ s \rightarrow 0 } \frac{ s }{ \log_a ( s + 1 ) } = \ln a\).

Example6

\(\lim_{ t \rightarrow 0 } \frac{ ( 1 + t )^\mu - 1 }{ t } = \mu\).

\(s = ( 1 + t )^\mu - 1\),那么原式等于\(\lim_{ t \rightarrow 0 , s \rightarrow 0 } \mu \frac{ s }{ \ln ( 1 + s ) } \frac{ \ln ( 1 + t ) }{ t } = \mu\).

连续函数

不妨设\(f ( x )\)\(( a , b )\)上有定义,若对于\(x_0 \in ( a , b )\),\(f ( x )\)\(x_0\)处有双侧极限且\(\lim_{ x \rightarrow x_0 } f ( x ) = f ( x_0 )\),称其在\(x_0\)连续,\(x_0\)称为连续点,若\(\forall x_0 \in ( a , b )\),\(f ( x )\)\(x_0\)处连续,则称其在\(( a , b )\)连续.连续性相当于说:取极限和\(f\)可以交换顺序,换言之\(\lim_{ x \rightarrow x_0 } f ( x ) = f ( \lim_{ x \rightarrow x_0 } x )\).

我们也可以类似上面定义左连续右连续,若\(f ( x )\)\([ a , b ]\)上有定义,且在\(( a , b )\)上连续,在\(a\)处右连续,在\(b\)处左连续,称其在\([ a , b ]\)上连续.

如果\(f ( x )\)\(x_0\)附近有定义且不连续,则称\(x_0\)是一个间断点,间断点有以下几种:

  1. 如果\(\lim_{ x \rightarrow x_0 + 0 } f ( x )\)\(\lim_{ x \rightarrow x_0 - 0 } f ( x )\)都存在但不相等或者不等于\(f ( x_0 )\),则称为第一类间断点.如果是后者情况,可以通过修改\(f ( x_0 )\)的定义来去掉这个间断点,因而一般被称为可去间断点.

  2. 反之,如果\(\lim_{ x \rightarrow x_0 + 0 } f ( x )\)\(\lim_{ x \rightarrow x_0 - 0 } f ( x )\)至少有一个不存在,则称为第二类间断点.

使用单调收敛准则,可证明单调函数没有第二类间断点.并且单调函数的间断点只有可数个(几乎处处连续).

这个怎么证明呢?考虑设\(M\)是函数\(f\)的第一类间断点集,取\(x \in M , I_x = ( f ( x_0 - 0 ) , f ( x_0 + 0 ) )\),由于函数单调,所以这些\(I_x\)两两不交.考虑映射\(M \rightarrow \mathbb{ Q } , x \mapsto \min ( I_x \cap \mathbb{ Q } )\),也就是考虑每一个\(I_x\)中都有若干个有理数,且互不相交,那么显然这个映射是个单射,\(M\)可数.

事实上有更强的结论:任意函数的第一类间断点集都是可数的.

\(M\)是函数\(f\)的第一类间断点集,取\(M_n = \{ x \in M \mid | f ( x + 0 ) - f ( x - 0 ) | > \frac{ 1 }{ n } \} , M ' = \{ x \in M | f ( x + 0 ) = f ( x - 0 ) \ne f ( x ) \}\).

注意到\(M = ( \bigcup_{ n \geq 1 } M_n ) \cup M '\).

我们定义孤立点:如果\(x \in A , \exists \sigma , ( x - \sigma , x + \sigma ) \nsubseteq A\),则称\(x\)\(A\)中的一个孤立点.类似刚才证明可数性,我们每个孤立点都可以取一段邻域,领域中一定存在有理数,所以任意一个集合中的孤立点个数一定是可数的.

又发现所有的\(x \in M_n\),\(x\)都是孤立点,原因很显然因为在\(x\)的两侧小区间都在趋近于一个极限,所以它们肯定不是第一类间断点.所以所有的\(M_n\)都是可数集.

那怎么证明\(M '\)是可数集呢?考虑取\(M '_n = \{ x \in M | | f ( x ) - f ( x - 0 ) | > \frac{ 1 }{ n } \}\),现在\(M ' = \bigcup_{ n \geq 1 } M '_n\),而\(M '_n\)一定是孤立点集,所以\(M '\)可数.

综上就可以看出\(M\)是一个可数集.

而第二类间断点则是可以有任意多个,例如对于迪利克雷函数,其处处都是第二类间断点.

由于连续性由极限定义,这意味着在\(( a , b )\)上的连续函数的有定义的四则运算必定得到的还是在\(( a , b )\)上的连续函数.那么,如果我们对于一个区间\(I\),定义\(C ( I )\)为所有在\(I\)上连续的函数组成的集合,\(C ( I )\)就是一个线性空间.且不难发现,连续函数的复合仍然是连续函数.这其实对应着\(\lim_{ x \rightarrow a } g ( f ( x ) ) = g ( \lim_{ x \rightarrow a } f ( x ) ) = g ( f ( a ) ) \\\).

另外,如果一个连续函数有单值反函数,则反函数必连续.

不难证明,所有的初等函数在定义域上都是连续的.

另外:连续周期非常值函数一定有最小正周期.

考虑设正周期的集合是\(\{ t \}\),取\(T = \inf \{ t \}\).

\(T = 0\)的时候,取一个正周期的数列\(\{ t_n \} \rightarrow 0\),然后\(\forall x < y , x_n = x + \lfloor \frac{ y - x }{ t_n } \rfloor t_n , | y - x_n | \leq t_n \rightarrow 0\),于是\(\lim_{ n } f ( x_n ) = f ( y )\),而恒有\(f ( x ) = f ( x_n )\)于是这是一个常值函数.

反之,则取\(\{ t_n \} \rightarrow T , f ( x + T ) = \lim_{ n } f ( x + t_n ) = f ( x )\).

一致连续

假设\(f : I \rightarrow \mathbb{ R }\),若\(\forall \epsilon > 0 , \exists \delta > 0 , \forall x_1 , x_2 \in I , | x_1 - x_2 | < \delta , | f ( x_1 ) - f ( x_2 ) | < \epsilon\),则称其一致连续.一致连续性是一个比连续性强得多的性质,例如\(f ( x ) = x^2\)就不是一致连续的.

李氏连续

假设\(f : I \rightarrow \mathbb{ R }\),若\(\exists L , \forall x_1 , x_2 \in I , | f ( x_1 ) - f ( x_2 ) | \leq L | x_1 - x_2 |\),则称其李氏连续.李氏连续当然强于一致连续.

闭区间下的连续函数

介值定理(零点存在定理)

\(f ( x )\)\([ a , b ]\)上有定义且连续,\(f ( a ) \ne f ( b )\),则\(\forall \eta \in ( f ( a ) , f ( b ) ) , \exists c \in ( a , b ) , f ( c ) = \eta\).这当然等价于\(f ( a ) f ( b ) < 0 \Rightarrow \exists c \in ( a , b ) , f ( c ) = 0\).

考虑取\(f ( \frac{ a + b }{ 2 } )\),如果\(f ( \frac{ a + b }{ 2 } ) = 0\)那就完事了.不然的话考虑\(f ( a ) f ( \frac{ a + b }{ 2 } )\)\(f ( \frac{ a + b }{ 2 } ) f ( b )\)中必定有恰好一个小于\(0\),这当然给出一个闭区间套,不妨设最后套出了一个单点\(c\).此时取极限立刻有\(0 \geq \lim f ( a_n ) f ( b_n ) = f ( c )^2\),于是\(f ( c ) = 0\).

也有一个存在性证明:反证,如果\(\forall x \in [ a , b ]\),\(f ( x ) \ne 0\).那么\(\forall x \in [ a , b ] , \exists \delta ( x ) > 0\),\(f\)\(( x - \delta ( x ) , x + \delta ( x ) )\)\(f ( x )\)同号.根据有限覆盖定理,我们可以拿出有限个开区间来覆盖整个区间.此时可以将这些开区间排序,相邻两个区间两两有交,自然导出矛盾.

介质定理还有两个推论:

  1. 介值定理的推论1:设\(f ( x )\)\([ a , b ]\)上有定义且连续,那么\([ f ( a ) , f ( b ) ] \subseteq\)其值域.

  2. 介值定理的推论2:单调连续函数的反函数仍然是单调连续函数.

推论(1)显然,考虑推论(2)的证明:

考虑对于连续单增函数\(f ( x ) \in C ( a , b ) , \alpha = f ( a + 0 ) , \beta = f ( b - 0 )\).先要证明其存在反函数\(\varphi \in C ( \alpha , \beta )\).

这里有一点小问题是我们要用介值定理要把定义域控制在闭区间,但这当然是好做的,对于任何一个\(c \in ( a , b )\),你一定可以取一个\(a_1 , b_1\)使得\(f ( a_1 ) < f ( c ) < f ( b_1 )\),这样\(f ( x ) \in C [ a_1 , b_1 ]\).

这样的话容易说明\(f\)\(( a , b ) \rightarrow ( \alpha , \beta )\)的双射,于是反函数是存在的.反函数的单调性是好证的.

对于反函数的连续性,反证,假设其在某一点\(c \in ( \alpha , \beta )\)处不连续,必然意味着\(a < \varphi ( c - 0 ) < \varphi ( c + 0 ) < b\).此时容易说明\(\varphi ( x ) \in ( a , b ) \setminus ( \varphi ( c - 0 ) , \varphi ( c + 0 ) ) \cup \{ \varphi ( c ) \}\),那只需要取\(w \in ( \varphi ( c - 0 ) , \varphi ( c + 0 ) ) \setminus \{ \varphi ( c ) \}\),\(\nexists x , \varphi ( x ) = w\),这当然与我们上述结论不符.

Example1

对于连续函数\(f \in C [ a , b ] , \forall x_0 \in [ a , b ] \setminus \mathbb{ Q } , \varlimsup_{ \Delta x \rightarrow 0 + 0 } \frac{ f ( x_0 + \Delta x ) - f ( x_0 ) }{ \Delta x } \geq 0\),求证:\(f\)单调递增.

先考虑把条件改成\(\forall x_0 \in [ a , b ]\)怎么做.

一个想法是反证,如果不单调的话,找一个点使得它的右上导数小于\(0\).最自然的想法是找最大值,但最大值有可能只能证明右上导数\(\leq 0\).所以有一个想法是拿一条稍微斜一点(也就是斜率为较小的负数)的直线去截整个曲线.

下面反证,如果其不单增,总能找到两个点\(a ' < b '\),使得\(f ( a ' ) > f ( b ' )\).此时任意取一个\(\epsilon_0 < f ( a ' ) - f ( b ' )\),然后取一个点\(B = ( b ' , f ( b ' ) + \epsilon_0 )\).当然可以再取一个\(\epsilon > 0\)使得\(\epsilon + \epsilon_0 < f ( a ' ) - f ( b ' )\),然后取一个点\(A = ( a ' , f ( b ' ) + \epsilon_0 + \epsilon )\),这样\(AB\)这条直线确定了一条斜率\(k < 0\)的一次函数\(g ( x )\),不妨设\(h ( x ) = f ( x ) - g ( x )\),容易发现\(h ( a ' ) > 0 , h ( b ' ) < 0\),所以可以取一个变号零点\(x_\epsilon = \sup \{ x | h ( x ) \geq 0 , x \in [ a ' , b ' ] \}\).当\(\epsilon\)取值不一样的时候当然可以取不同的而且是不可数个\(x_\epsilon\),此时可以取出一个无理数\(x_0\),那考虑\(\varlimsup_{ \Delta x \rightarrow 0 + 0 } \frac{ f ( x_0 + \Delta x ) - f ( x_0 ) }{ \Delta x } = \varlimsup_{ \Delta x \rightarrow 0 + 0 } \frac{ h ( x_0 + \Delta x ) }{ \Delta x } + k \leq k < 0\),这就矛盾了.

有界定理

\(f ( x )\)\([ a , b ]\)上有定义且连续,\(\exists A , B\),\(\forall x_0 \in [ a , b ] , A \leq f ( x_0 ) \leq B\).

可以用之前的有限覆盖定理所证明的闭区间上的局部有界函数是有界函数,然后还有另一个证明:

假设无界,则存在一个数列\(\{ x_n \}\)使得\(| f ( x_n ) | \rightarrow + \infty\).由于\(\{ x_n \}\)是有界数列,其一定有收敛子列\(\{ x '_n \}\)收敛于\(x '\),当然\(| f ( x ' ) | = \lim_{ n \rightarrow \infty } | f ( x_n ) | = + \infty\),这当然产生了矛盾.

还有一个闭区间套的证明方式:你考虑每次区间分两半,一定有其中一半是无界的,然后做闭区间套.

最值定理

\(f ( x )\)\([ a , b ]\)上有定义且连续,\(\exists x_1 , x_2 \in [ a , b ]\),\(\forall x_0 \in [ a , b ] , f ( x_1 ) \leq f ( x_0 ) \leq f ( x_2 )\).

考虑先用有界定理得知\(f ( x ) \in C [ a , b ]\)有界,然后就可以拿到其上下确界\(m \leq f ( x ) \leq M\),只需证明其上下确界均能取到就行.

反证,考虑若\(M\)取不到,那考虑定义\(g ( x ) = \frac{ 1 }{ M - f ( x ) } > 0\),根据有界定理\(g ( x )\)有上界\(C\),于是\(\frac{ 1 }{ M - f ( x ) } \leq C \Rightarrow f ( x ) \leq M - \frac{ 1 }{ C }\),矛盾.

或者我们知道\(M\)是上确界则\(M - \frac{ 1 }{ n }\)不是上界,取出\(\{ x_n \}\)使得\(M - \frac{ 1 }{ n } < f ( x_n ) \leq M\),那么\(\{ x_n \}\)必然有收敛子列,设其收敛于\(x_0\),那么根据夹逼定理必然能得到\(f ( x_0 ) = M\).

康托尔定理

有界闭区间上的连续函数必然一致连续.

考虑反证,反命题是\(\exists \epsilon_0 > 0 , \forall n > 0 , \exists x '_n , x ' '_n , | x '_n - x ' '_n | < \frac{ 1 }{ n } , | f ( x '_n ) - f ( x ' '_n ) | \geq \epsilon_0\).

用致密性定理,取出\(\{ x '_n \}\)的收敛子列,可以拿到\(\{ x ' '_n \}\)与其对应的数列,二者必然同时收敛于一个值\(x_0\),那么\(| f ( x '_n ) - f ( x ' '_n ) | = 0 \geq \epsilon_0\),当然矛盾.

如果是开区间呢?如果\(f ( x ) \in C ( a , b ]\),其在开区间\(( a , b ]\)上一致连续,这需要等价于\(\forall x_n \in ( a , b ) , x_n \rightarrow a\),\(\{ f ( x_n ) \}\)是柯西列(也就是\(f ( a + 0 )\)极限存在),由此看出开区间上的一致连续函数必然能延拓称闭区间上的连续函数.

不动点和周期点

定义\(f ( x )\)不动点\(\text{ fix } f ( x ) \Leftrightarrow f ( x ) = x\),周期点\(P_n = \{ x | f^{ [ n ] } ( x ) = x \land \forall 0 < m < n , f^{ [ m ] } ( x ) \ne x \}\),其中\(f^{ [ n ] } ( x )\)表示将\(f\)复合\(n\)次.

压缩映照原理

\(f ( x )\)\([ a , b ]\)上有定义并且\(f ( [ a , b ] ) \subseteq [ a , b ]\),并且满足\(\exists 0 \leq q < 1 , \forall x , y \in [ a , b ] , | f ( x ) - f ( y ) | \leq q | x - y |\),那么\([ a , b ]\)上存在唯一的不动点\(c\).

任取一个点\(x_0 \in [ a , b ]\),考虑\(x_{ n + 1 } = f ( x_n )\),然后尝试判断这个数列的极限,注意到:

\[ \begin{aligned} | x_{ n + 1 } - x_n | & = | f ( x_n ) - f ( x_{ n - 1 } ) | \leq q | x_n - x_{ n - 1 } | \leq q^{ n } | x_1 - x_0 | \\ | x_{ n + p } - x_n | & \leq \sum_{ k = 1 }^p | x_{ n + k } - x_{ n + k - 1 } | \\ & \leq \sum_{ k = 0 }^{ p - 1 } q^{ n + k } | x_1 - x_0 | = | x_1 - x_0 | q^n \frac{ 1 - q^{ p } }{ 1 - q } \end{aligned} \]

所以\(\{ x_n \}\)是柯西列,其极限存在,取\(c = \lim x_n\),容易发现:

\[ | f ( x_n ) - f ( c ) | \leq q | x_n - c | \]

两边取极限得知\(f ( c ) = c\),于是\(c\)是一个不动点.如果还存在一个不动点\(c ' \ne c\),那么:

\[ | c - c ' | = | f ( c ) - f ( c ' ) | \leq q | c - c ' | \]

不符.

李-约克定理

对于一个\(f ( x ) \in C [ a , b ]\),如果\(P_3 \ne \emptyset\),那么\(\forall n \in \mathbb{ N }_+\),\(P_n \ne \emptyset\).

引理一

\(J\)是实区间,\(G : J \rightarrow \mathbb{ R }\)是连续函数,\(\forall I = [ a , b ] \subseteq G ( J )\),\(\exists Q = [ a ' , b ' ] \subseteq J , G ( Q ) = I\).

根据介值定理,当然存在一对点\(p , q\),\(I = [ G ( p ) , G ( q ) ]\).不妨设\(p < q\),那么\(a ' = \sup \{ x \in [ p , q ] | G ( x ) = G ( p ) \} , b ' = \inf \{ x \in [ a ' , q ] | G ( x ) = G ( q ) \}\)即可.

换言之,我们可以拿到一个区间使得它的像正是我们想要的区间.感性理解的话我们可以对一个区间求原像并且原像当然也是一个区间.那我们自然可以对区间进行迭代.这样迭代的区间有什么性质么?

引理二

\(J\)是实区间,\(F : J \rightarrow J\)是连续函数,取一列闭区间\(I_n\),满足\(\forall n \geq 0 , I_n \subseteq J , I_{ n + 1 } \subseteq F ( I_n )\).不妨把这种区间列记作\(I_0 \Rightarrow I_1 \Rightarrow I_2 \Rightarrow \cdots\).

那么我们可以找到一列闭区间\(I_0 = Q_0 \supseteq Q_1 \supseteq Q_2 \cdots\),\(\forall n \geq 0\),有\(F^{ [ n ] } ( Q_n ) = I_n\).

考虑数学归纳,假设对于\(\leq n\)的都已经满足,现在有\(I_{ n + 1 } \subseteq F ( I_n ) = F^{ [ n + 1 ] } ( Q_n )\),令\(G = F^{ [ n + 1 ] }\)然后用引理一就可以.

这个引理的意义在于,\(\{ I_n \}\)当然不必是一条链,但是只要其满足一定的性质,我们就可以在它们中找到一条链,也就是每迭代一次都可能会将射出去的那个集合变小,或者是射出需要的集合所需要的初始集合变小.

这个当然也是给我们求原像的机会.我们尝试感性理解一下这个在干什么:

如果一个函数操作完一个区间后会把这个区间变小,那显然我如果想求\(F^{ [ - n ] } ( I )\),\(n\)越大得到的原像就越大对吧.反之,如果会把这个区间变大,那\(n\)越大得到的原像就越小对吧.

这个讨论显然是不好的,我们得想办法刻画一下这个东西.那当然要在这里蕴含一个\(F\)本身.

于是用上面的定义会发现,即使\(F\)会把这个区间扩张到奇怪的大小,只要我们能把它缩回去,那不断取原像的过程照样是可行的.

引理三

\(J\)是实区间,\(G : J \rightarrow \mathbb{ R }\)是连续函数,\(I \subseteq J\)是闭区间,并且\(I \subseteq G ( I )\)或者\(G ( I ) \subseteq I\),都可以推出\(\exists p \in I , G ( p ) = p\).

只需构造函数\(H ( x ) = x - G ( x )\)然后用介值定理即可.

李-约克定理

\(q_3 \in P_3\),则\(F ( q_3 ) , F ( F ( q_3 ) ) \in P_3\),容易看出,这三个点中必然有一个点\(a \in P_3\),使得\(a , b = F ( a ) , c = F ( F ( a ) )\)这三个数单调递增或单调递减.不妨设\(a < b < c\).

下面证明对于任意\(k > 0\),存在\(k\)周期点.

我们接下来取\(K = [ a , b ] , L = [ b , c ]\),立刻由介值定理发现\(F ( K ) \supseteq L\)以及\(F ( L ) \supseteq [ a , c ] = K \cup L\).

接下来我们开始构造一列满足引理二的闭区间,我们考虑:

  1. \(k = 1\)的时候,我们直接取\(\forall n , I_n = L\).

  2. \(k > 1\)的时候,取\(I_n = \begin{cases}K & n \equiv 0 \pmod{ k } \\ L & \text{ otherwise }\end{cases}\)

现在我们可以用引理二立刻拿到区间列\(\{ Q_n \}\),我们发现\(Q_k \subseteq Q_0 = I_0 = I_k = F^{ [ k ] } ( Q_k )\),根据引理三立刻得到\(\exists q \in Q_k , F^{ [ k ] } ( q ) = q\).

那么这个\(q\)有没有可能存在更小的周期\(d\)呢?如果有的话,不妨取其中最小的那个\(d\),辗转相除一下自然有\(d | k\),那么当然要有\(F^{ [ k ] } ( q ) = F^{ [ k - d ] } ( q ) = q\).

此时我们发现\(q \in Q_k \subseteq Q_{ k - d }\),\(q \in I_{ k } \cap I_{ k - d } = K \cap L = \{ b \}\),于是\(F^{ [ k ] } ( q ) = b , F^{ [ k + 1 ] } ( q ) = c , F^{ [ k + 2 ] } ( q ) = a\).

这说明此时\(d = 3\).

而当\(k \geq 4\)的时候,\(F^{ [ k + 2 ] } ( q ) = a \notin L\),这当然与\(I_{ k + 2 } = L\)矛盾.

仔细观察一下上面的过程,我们到底依赖于什么东西得到了这个?

首先找到\(q\)使得\(F^{ [ k ] } ( q ) = q\)这个其实反而并不是最主要的,因为只要\(F ( q ) = q\)那么显然\(F^{ [ k ] } ( q ) = q\),真正离谱的是竟然要让这个点在之前从未跳到过\(q\).这也是这个证明的最精髓的部分,那就是证明任何一个\(d < q\)都不是周期.

那我们考虑取一个区间(也就是\(K\)),在\(K\)中取一个合法的\(q\),然后我们只要找到一个闭区间(也就是\(Q_k \subseteq K\)),使得它当且仅当复合\(k\)次的时候才会打到\(K\)上,在其它时候都得打在\(K\)的外面(在这里是\(L\))上,那自然是可行的了对吧.而数字\(3\)恰好完美地给出了这个构造.

如果我们再总结一下上面的过程,我们需要找到两个区间\(K , L\),找到一个\(Q_k \subseteq K\),使得\(F^k ( Q_k )\)可以打到\(K\)上但是对于\(d < k\),\(F^d ( Q_k )\)打到\(L\)上.于是根据引理三其存在\(k\)周期点,但是几乎不可能存在\(d\)周期点(这里就需要简单判断一下\(L \cap K\)的部分了)

这样的\(K\)\(L\)怎么构造呢?如果我们构造\(F ( K )\)打到\(L\)上,\(F ( L )\)打到\(K\)上显然是吧不合理的,那就可以一个打到另一个,另一个打到全集上再用引理一缩一下,这个看上去合理多了.这当然就是\(F ( K ) \supseteq L\)以及\(F ( L ) \supseteq [ a , c ] = K \cup L\).

Sharkovskii定理

定义如下的一种序关系\(\prec\)(称为Sharkovskii序):

\[ \begin{gathered} 3 \prec 5 \prec 7 \prec \cdots \\ \prec 2 \times 3 \prec 2 \times 5 \prec \cdots \\ \cdots \\ \prec 2^k \times 3 \prec 2^k \times 5 \prec \cdots \\ \cdots \\ \cdots \prec 2^n \prec 2^{ n - 1 } \prec \cdots \prec 4 \prec 2 \prec 1 \end{gathered} \]

对于\(f ( x ) \in C [ l , r ] , f : [ l , r ] \rightarrow [ l , r ]\).那么如果\(m \prec n , P_m \ne \emptyset \Rightarrow P_n \ne \emptyset\).

(首先发现当然存在不动点)

这咋办呢?我们刚才用了\(3\)的最重要的性质就是\(3\)个点可以排成有序的一列,如果有类似的引理,那我们就可以尝试推广上面的结论.

引理

\(f : I \rightarrow I\)是连续函数,\(f\)\(2 n + 1\)周期点但无更小非一奇数阶周期点,我们取出其一个周期轨\(x_0 \rightarrow x_1 \rightarrow \cdots x_{ 2 n }\),必有以下两者成立其一:

  1. \(x_{ 2 n } < x_{ 2 n - 2 } < \cdots < x_2 < x_0 < x_1 < \cdots < x_{ 2 n - 3 } < x_{ 2 n - 1 }\).

  2. \(x_{ 2 n } > x_{ 2 n - 2 } > \cdots > x_2 > x_0 > x_1 > \cdots > x_{ 2 n - 3 } > x_{ 2 n - 1 }\).

这个引理怎么证明呢?考虑把周期轨排一下序然后归纳,我们不妨假设排好序后的结果是\(y_0 < y_1 < \cdots < y_{ 2 n }\).

如果引理成立,(第一种情况下)取\(I_0 = [ x_0 , x_1 ]\),则\(I_0 \Rightarrow I_0\).容易发现其实只有\(I_0\)有这个性质,那我们不妨来看看满足\([ y_k , y_{ k + 1 } ] \Rightarrow [ y_k , y_{ k + 1 } ]\)的情况是什么样子的,尝试去满足\([ f ( y_{ k + 1 } ) , f ( y_{ k } ) ] \supseteq [ y_k , y_{ k + 1 } ]\).这个时候注意到我们可以把所有点分成两类:满足\(f ( y_i ) \geq y_{ i + 1 }\)(称为\(\alpha\)类点,容易见到这里也就等价于\(f ( y_i ) > y_i\))和\(f ( y_i ) \leq y_{ i - 1 }\)(称为\(\beta\)类点)的.那我们就是要找到一个\(k\)使得\(y_k\)\(\alpha\)类点并且\(y_{ k + 1 }\)\(\beta\)类点.

由于\(f ( y_0 ) \geq y_1 , f ( y_{ 2 n } ) \leq y_{ 2 n - 1 }\),这两类点显然都有,那就一定存在交界的地方,这样我们就可以拿出这个分界的地方记作\(I_0 = [ y_k , y_{ k + 1 } ]\),其中\(y_k\)\(\alpha\)类点,\(y_{ k + 1 }\)\(\beta\)类点.

我们不妨定义一个集合\(S\)的张成区间\(A\)\(A = [ \inf S , \sup S ]\),那我们现在取\(S_0 = \{ y_k , y_{ k + 1 } \}\),设周期轨为\(O_f = \{ x_0 , \cdots x_{ 2 n } \}\),我们递归定义\(S_{ k + 1 } = f ( A_k ) \cap O_f\),容易根据上面对\(S_0\)的构造发现\(S_0 \subsetneq S_1\),并且\(S_k\)中因为取了一段极大的区间(但并没有包含所有周期点),所以一定能跳出这个区间(不然这个区间内部就可以自己射自己),所以\(S_k \subsetneq S_{ k + 1 }\).

那由此我们当然可以得到一条链:

\[ S_0 \subsetneq S_1 \subsetneq \cdots \subsetneq S_t = O_f \]

按理来说应该有\(t = 2 n - 1\)(这就会给出每次\(S\)扩张只会多一个数),让我们先来证明这个结论:

反证,假设\(t < 2 n - 1\),尝试找到一个更小的奇数周期来推出矛盾,不妨尝试找到一个\(2 n - 1\)的周期(当然,如果\(2 n + 1 = 3\)的话,这个结论我们在李约克定理已经证明了,所以下面假设\(2 n + 1 \geq 5\)).

我不说你也知道我要干啥,我们考虑在末尾补\(2 n - t - 1\)\(A_t\),并把最后一个缩成\(A_0\),当然有:

\[ A_0 \Rightarrow A_1 \Rightarrow A_2 \Rightarrow \cdots \Rightarrow A_t \Rightarrow A_t \supseteq A_0 \]

但这样并不太行,因为这些区间的交不是空的,我们起码得把其中的一个区间给挪出去,不妨考虑改掉最后一个\(A_t\),试图取一个\(l \ne k\)使得\([ y_l , y_{ l + 1 } ] \Rightarrow A_0 = [ y_k , y_{ k + 1 } ]\).如果我们结合一下下面的主定理的证明部分,其实我们可以发现这里的\([ y_l , y_{ l + 1 } ]\)也就是\(I_{ 2 n - 1 }\).

我们上面已经保证了\(f ( y_{ k + 1 } ) \leq y_k\),如果有\(f ( y_{ k + 2 } ) \geq y_{ k + 1 }\),那当然可以取\(l = k + 1\).也就是如果我们的这一列点类别中出现了\(\alpha \beta \alpha\)这样的结构就完事了.如果找不到,那说明\(f ( y_{ k + 2 } ) \leq y_{ k + 1 }\).我们继续往后找,如果可以遇到第一个\(f ( y_i ) \geq y_{ k + 1 }\),那\([ y_{ i - 1 } , y_i ]\)自然是满足条件的.如果一直都找不到,说明始终有\(f ( y_i ) < y_{ k + 1 } \leq y_{ i - 1 } , i \in [ k + 2 , 2 n ]\),那说明后面全是\(\beta\)点.

同理如果出现了\(\beta \alpha \beta\)这样的结构也找到了.不然类似同理,如果一直找不到就说明前面全是\(\alpha\)点,前面的点始终满足\(f ( y_i ) \geq y_{ k + 1 } , i \in [ 0 , k ]\).

这已经推导出了矛盾,因为我们发现前面的点射到后面,后面的点射到前面,问题在于前面有\(k + 1\)个点,后面有\(2 n - k\)个点,于是\(k + 1 = 2 n - k \Rightarrow 2 k + 1 = 2 n\),这导出了矛盾.

所以确实可以找到这样的\(l \ne k , [ y_l , y_{ l + 1 } ] \Rightarrow [ y_k , y_{ k + 1 } ]\),那我们用上面的区间列自然可以推导出存在一个\(2 n - 1\)周期点(或者其因子周期点,不过那也导出矛盾了).

于是\(t = 2 n - 1\),这表示我们拿到的这条链\(S_0 \subsetneq S_1 \subsetneq \cdots \subsetneq S_t = O_f\)每次只增加一个元素.如果\(S_0\)\(S_1\)是只增加了一个元素,当然说明\(f ( y_k ) = y_{ k + 1 }\)或者\(f ( y_{ k + 1 } ) = y_k\).两者的证明是一样的,不妨设\(f ( y_k ) = y_{ k + 1 }\).

此时我们取\(x_0 = y_k , x_1 = y_{ k + 1 }\),此时其实也可以发现\(x_2 < x_0 < x_1\).并且根据上面的说法,我们知道\(A_{ k } \subsetneq A_{ k + 1 }\),那这个扩张一定是每次在边界上往外跑一个,也就是每次取一个新的迭代出来的结果扔到左边或者扔到右边.

网络上有关于这一点的证明往往是反证,假设不按规则走的话然后去尝试构造三周期点推到矛盾,但我们这里给出另一个证明方法:

考虑由于每次只增大一个数,那么如果我们能证明这一列\(y\)形如\(\alpha \cdots \alpha \beta \cdots \beta\)的形式就做完了,这等价于\(I_0\)的唯一性.

假设还有另一个区间也满足要求,对于这个新的区间,我们设其是\([ y_l , y_{ l + 1 } ]\),我们再拿一个周期点\(y_{ l + 2 }\)出来,假设这三个数按照顺序是\(a < b < c\),那么根据上面的结论一定有\(b \rightarrow c \rightarrow a\)或者\(b \rightarrow a \rightarrow c\)成立,这就说明\(b\)被夹在了中间.而我们从一个\(I_0\)扩张当然是逐步的,会将\(x_3 , x_4 \cdots\)逐个加入,这必然意味着在\(b\)加入之前,\(a , c\)中已经有一个加进去了,但这是不可能的,只有\(b\)加入后才能把\(a , c\)给加进去.

sharkovskii定理

有了引理就可以开始类比了,不妨假设\(x_{ 2 n } < x_{ 2 n - 2 } < \cdots < x_2 < x_0 < x_1 < \cdots < x_{ 2 n - 3 } < x_{ 2 n - 1 }\).

现在我们要取区间列了,显然有一些奇偶对跳的现象,事实上我们取\(I_0 = [ x_0 , x_1 ] , I_{ 2 k - 1 } = [ x_{ 2 k } , x_{ 2 k - 2 } ] , I_{ 2 k } = [ x_{ 2 k - 1 } , x_{ 2 k + 1 } ]\)显然就是满足条件的.而且这些区间除了端点外完全不相交(而且任意三个区间的交都是空集).这一列一共有\(2 n\)个区间.我们事实上可以取\(J = [ x_{ 0 } , x_{ 2 n - 1 } ] = \bigcup I_{ 2 k }\)放到整个区间的最后.

接下来我们用这些东西去对于多种情况来对跳.

Case1

(假设\(2 n + 1\)是最小的非空的非一奇数周期)首先证明\(P_{ 2 n + 1 } \ne \emptyset \Rightarrow \forall 0 < k , P_{ k + 2 n } \ne \emptyset\).

在前面补\(k\)\(I_0\),在最后也补一个\(I_0\),构造区间列:

\[ I_0 \Rightarrow I_0 \Rightarrow \cdots \Rightarrow I_0 \Rightarrow I_1 \Rightarrow I_2 \Rightarrow \cdots \Rightarrow I_{ 2 n - 1 } \Rightarrow I_0 \]

也就是在前面补\(I_0\)直到整个区间列的数量为\(k + 2 n + 1\),此时当然存在\(x_0 \in Q_{ k + 2 n }\)使得\(f^{ [ k + 2 n ] } ( x_0 ) = x_0\),只需证明\(\nexists d | ( k + 2 n )\),\(f^{ [ d ] } ( x_0 ) = x_0\)即可.这当然好证,因为\(d \leq \frac{ k + 2 n }{ 2 } \leq \max ( k , 2 n )\),因为你只需要把它卡在那一堆\(I_0\)\(I_k\)的分界线上就行.

Case2

(假设\(2 n + 1\)是最小的非空的非一奇数周期)接下来我们来证明\(P_{ 2 n + 1 } \ne \emptyset \Rightarrow \forall 0 < m , P_{ 2 m } \ne \emptyset\).

\(2 m > 2 n + 1\)的时候我们已经证完了,接下来考虑\(2 m < 2 n + 1\)的情况.

由于\(\forall k , I_{ 2 n - 1 } \Rightarrow I_{ 2 k }\),我们考虑取出\(2 m + 1\)个区间列,恰好有:

\[ I_{ 2 n - 2 m } \Rightarrow I_{ 2 n - 2 m + 1 } \Rightarrow \cdots \Rightarrow I_{ 2 n - 1 } \Rightarrow I_{ 2 n - 2 m } \]

接下来就是简单说明的过程了.

Case3

接下来考虑证明:\(P_{ 4 } \ne \emptyset \Rightarrow P_2 \ne \emptyset\).

这个证明就比较无聊了,我们进行暴力讨论,不妨假设\(a < b < c < d\),那么:

  1. \(a \rightarrow b \rightarrow c \rightarrow d \rightarrow a\).

此时\([ a , b ] \Rightarrow [ b , c ] \Rightarrow [ c , d ] \Rightarrow [ a , d ] \supseteq [ a , b ]\),于是可证明有三周期点,当然有二周期点.

  1. \(a \rightarrow b \rightarrow d \rightarrow c \rightarrow a\).

此时\([ a , b ] \Rightarrow [ b , d ] \Rightarrow [ c , d ] \Rightarrow [ a , c ] \supseteq [ a , b ]\),于是可证明有三周期点,当然有二周期点.

  1. \(a \rightarrow c \rightarrow b \rightarrow d \rightarrow a\).

此时\([ a , b ] \Rightarrow [ c , d ] \Rightarrow [ a , b ]\),当然有二周期点.

  1. \(a \rightarrow c \rightarrow d \rightarrow b \rightarrow a\).

此时\([ a , c ] \Rightarrow [ c , d ] \Rightarrow [ b , d ] \Rightarrow [ a , b ] \Rightarrow [ a , c ] \supseteq [ b , c ] \Rightarrow [ a , d ] \supseteq [ a , c ]\).于是有五周期点,于是有二周期点.

  1. \(a \rightarrow d \rightarrow b \rightarrow c \rightarrow a\).

此时\([ a , b ] \Rightarrow [ c , d ] \Rightarrow [ a , b ]\),当然有二周期点.

  1. \(a \rightarrow d \rightarrow c \rightarrow b \rightarrow a\).

此时\([ b , c ] \Rightarrow [ a , b ] \Rightarrow [ a , d ] \supseteq [ b , c ]\),于是有二周期点.

Case4

接下来考虑证明:\(P_{ 2^{ n + 1 } } \ne \emptyset \Rightarrow P_{ 2^n } \ne \emptyset\).

考虑上面命题等价于\(f^{ [ 2^{ n - 1 } ] }\)有四周期点,则其有二周期点.

Case5

接下来考虑证明:\(P_{ 2^{ n } p } \ne \emptyset \Rightarrow P_{ 2^n q } \ne \emptyset\),其中\(p , q \in \text{ odd } , p < q\).

考虑\(f^{ [ 2^n ] }\)\(p\)周期点,当然也就有\(q\)周期点.

Case6

接下来考虑证明:\(P_{ 2^{ n } p } \ne \emptyset \Rightarrow P_{ 2^m q } \ne \emptyset\),其中\(p , q \in \text{ odd } , m > n\).

考虑\(f^{ [ 2^n ] }\)\(p\)周期点,当然也就有\(q 2^{ m - n }\)周期点.

Case7

接下来考虑证明:\(P_{ 2^{ n } p } \ne \emptyset \Rightarrow P_{ 2^m } \ne \emptyset\),其中\(p \in \text{ odd }\).

选取\(N = \max ( n + 1 , m + 1 )\),则考虑\(f^{ [ 2^n ] }\)\(p\)周期点,则其有\(2^{ N - n }\)周期点,\(P_{ 2^N } \ne \emptyset\).于是\(P_{ 2^m } \ne \emptyset\).

导数

设函数\(f ( x )\)在一个区间\(( a , b )\)上有定义,对于给定的\(x_0 \in ( a , b )\),考虑增量\(\Delta x \ne 0 \land x_0 + \Delta x \in ( a , b )\),则\(\Delta y = f ( x_0 + \Delta x ) - f ( x_0 )\)称为关于\(\Delta x\)增量.若极限\(\lim_{ \Delta x \rightarrow 0 } \frac{ \Delta y }{ \Delta x } \\\)存在则称这个函数在\(x_0\)可导,并称这个值为这个函数在\(x_0\)处的导数或者微商,记作\(f ' ( x_0 )\)\(\frac{ \text{ d } f }{ \text{ d } x } |_{ x = x_0 }\).同理可以定义出左导数右导数.如果某个函数的导数构成一个函数,我们称这个函数为其对应的导函数.

显然右可导能推出右连续,左可导能推出左连续.换言之,可导一定连续.

但是连续不一定可导,相当漂亮的一个反例是\(f ( x ) = \begin{cases}0 & x = 0 \\ x \sin \frac{ 1 }{ x } & \text{ otherwise }\end{cases}\),其在零点没有左右导数.

如果\(f\)\(n - 1\)次导数存在,记作\(f^{ ( n - 1 ) } ( x )\),如果该函数可导则其导数称作\(f^{ ( n ) } ( x )\).

如果\(f^{ ( n ) } ( x )\)\(I\)上连续,则称\(f \in C^{ n } ( I )\).如果其任意阶可导,则称\(f \in C^{ \infty } ( I )\).

特别地,如果称一个函数是\(\alpha\)次可导,即\(| f ( x ) - f ( y ) | \leq | x - y |^\alpha\).其实就是Holder连续.

导数基本运算

导数也可以类似求出四则运算以及复合的法则:

  1. \([ cf ( x ) ] ' = cf ' ( x )\).

  2. \([ f ( x ) \pm g ( x ) ] ' = f ' ( x ) \pm g ' ( x )\).

  3. \([ f ( x ) g ( x ) ] ' = f ' ( x ) g ( x ) + g ' ( x ) f ( x )\).

  4. (莱布尼茨公式):\([ f ( x ) g ( x ) ]^{ ( n ) } = \sum_{ k = 0 }^n \binom{ n }{ k } f^{ ( k ) } ( x ) g^{ ( n - k ) } ( x )\).

  5. \([ \frac{ f ( x ) }{ g ( x ) } ] ' = \frac{ f ' ( x ) g ( x ) - g ' ( x ) f ( x ) }{ g^2 ( x ) } , g ( x ) \ne 0\).

  6. \([ g ( f ( x ) ) ] ' = g ' ( f ( x ) ) f ' ( x )\).

(1)(2)比较平凡.

(3)(4)的证明的话,考虑:

\[ \begin{aligned} & \frac{ f ( x + \Delta x ) g ( x + \Delta x ) - f ( x ) g ( x ) }{ \Delta x } \\ = & \frac{ f ( x + \Delta x ) - f ( x ) }{ \Delta x } g ( x + \Delta x ) + f ( x ) \frac{ g ( x + \Delta x ) - g ( x ) }{ \Delta x } \end{aligned} \]

取一下极限就行.

(5)的话,其实求出\(( \frac{ 1 }{ g ( x ) } ) '\)就行了,我们来看:

\[ \begin{aligned} ( \frac{ 1 }{ g ( x ) } ) ' & = \lim_{ \Delta x \rightarrow 0 } \frac{ \frac{ 1 }{ g ( x + \Delta x ) } - \frac{ 1 }{ g ( x ) } }{ \Delta x } \\ & = \lim_{ \Delta x \rightarrow 0 } \frac{ \frac{ g ( x ) - g ( x + \Delta x ) }{ g ( x + \Delta x ) g ( x ) } }{ \Delta x } \\ & = \frac{ - g ' ( x ) }{ g^2 ( x ) } \end{aligned} \]

对于(6),不妨设\(f ( x_0 ) = y_0\).

\(\Delta y \ne 0\)的时候,我们有:

\[ \begin{aligned} \lim_{ \Delta y \rightarrow 0 } \frac{ g ( y_0 + \Delta y ) - g ( y_0 ) }{ \Delta y } & = g ' ( y_0 ) \\ \lim_{ \Delta y \rightarrow 0 } [ \frac{ g ( y_0 + \Delta y ) - g ( y_0 ) }{ \Delta y } - g ' ( y_0 ) ] & = 0 \end{aligned} \]

\(\eta ( \Delta y ) = \frac{ g ( y_0 + \Delta y ) - g ( y_0 ) }{ \Delta y } - g ' ( y_0 ) = \frac{ \Delta z }{ \Delta y } - g ' ( y_0 ) , \Delta y \ne 0\),那么\(\lim_{ \Delta y \rightarrow 0 } \eta ( \Delta y ) = 0\).

此时有:

$$ \[\begin{aligned} \frac{ \Delta z }{ \Delta x } & = \frac{ \Delta z }{ \Delta y } \frac{ \Delta y }{ \Delta x } = \eta ( \Delta y ) \frac{ \Delta y }{ \Delta x } + g ' ( y_0 ) \frac{ \Delta y }{ \Delta x } \\ \end{aligned}\]

$$

带上极限,前者为\(0\).

另一种写法是,类似上面的讨论,我们这里有一些无穷小量,而且(除了\(\frac{ \Delta z }{ \Delta x }\)以外)也不会出现无穷小量之间的除法,用一下当然有,\(g ( y + \Delta y ) - g ( y ) = ( g ' ( y ) + o ( 1 ) ) \Delta y , f ( x + \Delta x ) - f ( x ) = ( f ' ( x ) + o ( 1 ) ) \Delta x\).

考虑:

$$ \[\begin{aligned} \Delta z & = ( g ' ( y ) + o ( 1 ) ) \Delta y \\ & = ( g ' ( y ) + o ( 1 ) ) ( f ' ( x ) + o ( 1 ) ) \Delta x \\ \end{aligned}\]

$$

两边除一下\(\Delta x\)两边求极限就行.

不难发现上面的过程等价于啥呢?等价于:

\[ \frac{ \text{ d } z }{ \text{ d } x } = \frac{ \text{ d } z }{ \text{ d } y } \frac{ \text{ d } y }{ \text{ d } x } \]

反函数的导数

我们首先声称:如果\(x = \varphi ( y ) , \varphi ' \ne 0 \Rightarrow\)\(有 反 函 数\)f=^{-1}

然后我们声称:如果\(x = \varphi ( y ) \in C ( c , d )\),并且其严格单调且连续.如果\(( x_0 , y_0 )\)处其导数存在,则\(f ' ( x_0 ) = \frac{ 1 }{ \varphi ' ( f ( x_0 ) ) }\).

这个可以用极限证明,我们有:

\[ \begin{aligned} f ' ( x_0 ) & = \lim_{ x \rightarrow x_0 } \frac{ f ( x ) - f ( x_0 ) }{ x - x_0 } \\ & = \lim_{ y \rightarrow y_0 } \frac{ y - y_0 }{ \varphi ( y ) - \varphi ( y_0 ) } \\ & = \lim_{ y \rightarrow y_0 } \frac{ 1 }{ \frac{ \varphi ( y ) - \varphi ( y_0 ) }{ y - y_0 } } \\ & = \frac{ 1 }{ \varphi ' ( y_0 ) } \end{aligned} \]

现在我们证明了反函数有导数,立即有:

\[ f ( g ( x ) ) = x \Rightarrow f ' ( x ) g ' ( f ( x ) ) = 1 \]

隐函数求导

这里我们不加证明地给出隐函数求导法则,也就是暂且把\(y\)当成\(x\)的函数.

Example1

举例的话,我们来看方程:

\[ x = y + \epsilon \sin y \]

两边对\(x\)求导:

\[ \begin{aligned} 1 & = y ' + y ' \epsilon \cos y \\ y ' & = \frac{ 1 }{ 1 + \epsilon \cos y } \end{aligned} \]

参数方程的求导

如果\(\begin{cases}x = x ( t ) \\ y = y ( t )\end{cases}\),考虑求导\(\frac{ \text{ d } y }{ \text{ d } x }\).

这个做法就是反函数+链式法则.当然要保证下面需要的地方导数都不是\(0\).

不妨设\(t = t ( x )\),当然有\(y = y ( t ( x ) )\),那么\(\frac{ \text{ d } y }{ \text{ d } x } = y ' ( t ( x ) ) t ' ( x ) = \frac{ y ' ( t ) }{ x ' ( t ) }\).

Example1

极坐标的求导:

\[ \begin{cases} x = r ( \theta ) \cos \theta \\ y = r ( \theta ) \sin \theta \end{cases} \]

当然\(\frac{ \text{ d } y }{ \text{ d } x } = \frac{ r ' \sin \theta + r \cos \theta }{ r ' \cos \theta - r \sin \theta } = \frac{ \tan \theta + \frac{ r }{ r ' } }{ 1 - \tan \theta \frac{ r }{ r ' } } = \tan ( \theta + \arctan ( \frac{ r }{ r ' } ) ) = \tan \alpha\).

而容易发现\(\tan \alpha\)其实是切线和\(x\)轴正半轴的夹角.

初等函数的导数

下面给出若干初等函数的导数.

常函数

常函数的连续性显然.

导数有:

\[ f ( x ) = c \Rightarrow f ' ( x ) = 0 \]

证明显然.

三角函数

三角函数的连续性比较有意思,考虑只需证明\(\sin x\)连续即可,使用和差化积得到\(| \sin x - \sin x_0 | = | 2 \sin \frac{ x - x_0 }{ 2 } \cos \frac{ x + x_0 }{ 2 } | \leq 2 | \sin \frac{ x - x_0 }{ 2 } | \leq | x - x_0 |\).

导数有:

\[ \begin{aligned} \sin ' ( x ) & = \cos ( x ) \\ \cos ' ( x ) & = - \sin ( x ) \end{aligned} \]

只给出前者的证明,后者类似,或者换个元做诱导公式也行.

我们有和差化积:

\[ \begin{aligned} & \sin ( x + \Delta x ) - \sin ( x ) \\ = & 2 \sin ( \frac{ \Delta x }{ 2 } ) \cos ( x + \frac{ \Delta x }{ 2 } ) \end{aligned} \]

自然有:

\[ \begin{aligned} \lim_{ \Delta x \rightarrow 0 } \frac{ \Delta y }{ \Delta x } & = \lim_{ \Delta x \rightarrow 0 } \frac{ 2 \sin ( \frac{ \Delta x }{ 2 } ) \cos ( x + \frac{ \Delta x }{ 2 } ) }{ \Delta x } \\ & = \lim_{ \Delta x \rightarrow 0 } \frac{ \sin ( \frac{ \Delta x }{ 2 } ) }{ \frac{ \Delta x }{ 2 } } \cos ( x + \frac{ \Delta x }{ 2 } ) \\ & = \cos ( x ) \end{aligned} \]

进一步,我们可以考虑高阶导数:

\[ \begin{aligned} ( \sin x )^{ ( n ) } & = \sin ( x + \frac{ n \pi }{ 2 } ) \\ ( \cos x )^{ ( n ) } & = \cos ( x + \frac{ n \pi }{ 2 } ) \end{aligned} \]

而考虑\(( \tan x ) '\),我们有:

\[ \begin{aligned} ( \tan x ) ' & = \lim_{ \Delta x \rightarrow 0 } \frac{ \frac{ \sin ( x + \Delta x ) }{ \cos ( x + \Delta x ) } - \frac{ \sin x }{ \cos x } }{ \Delta x } \\ & = \lim_{ \Delta x \rightarrow 0 } \frac{ \sin \Delta x }{ \Delta x } \frac{ 1 }{ \cos x \cos ( x + \Delta x ) } \\ & = \frac{ 1 }{ \cos^2 x } \end{aligned} \]

反三角函数

使用反函数的导数公式:

\[ \begin{aligned} \arctan ' ( x ) & = \frac{ 1 }{ 1 + x^2 } \\ \arccos ' ( x ) & = \frac{ - 1 }{ \sqrt{ 1 - x^2 } } \\ \arcsin ' ( x ) & = \frac{ 1 }{ \sqrt{ 1 - x^2 } } \end{aligned} \]

反三角函数的高阶导数比较困难,我们来看个例子:

考虑\(y = \arctan x\),\(y ' = \frac{ 1 }{ 1 + x^2 } = \frac{ 1 }{ 1 + \tan^2 y } = \cos^2 y\),那么\(y ' ' = - 2 \cos y \sin y \times y ' = - \cos^2 y \sin 2 y\),事实上容易用归纳法证明\(y^{ ( n ) } = ( n - 1 ) ! \cos^n y \sin ( n ( y + \frac{ \pi }{ 2 } ) )\).

不过还有一种办法,那就是我们考虑\(y ' = - \frac{ 1 }{ 2 i } ( \frac{ 1 }{ i + x } + \frac{ 1 }{ i - x } )\),用这个归纳立刻得到\(y^{ ( n ) } = - \frac{ ( n - 1 ) ! }{ 2 i } ( ( i - x )^{ - n } - ( - 1 )^n ( i + x )^{ - n } )\).

然而\(y = \arcsin x\)要麻烦得多.下面我们来看一下:

\[ \begin{aligned} y ' & = \frac{ 1 }{ \sqrt{ 1 - x^2 } } \\ ( y ' )^2 ( 1 - x^2 ) & = 1 \\ ( 1 - x^2 ) 2 y ' y ' ' - 2 x ( y ' )^2 & \equiv 0 \\ ( 1 - x^2 ) 2 y ' ' - 2 xy ' & \equiv 0 \end{aligned} \]

两边求\(n - 2\)次导,利用莱布尼茨公式,化简后得到:

\[ ( 1 - x^2 ) y^{ ( n ) } + ( 3 - 2 n ) xy^{ ( n - 1 ) } - ( n - 2 )^2 y^{ ( n - 2 ) } \equiv 0 \]

指数函数

我们需要首先拿到指数为有理数的东西.

首先整数次方是有定义的,我们需要拿到形如\(f ( x ) = a^{ \frac{ 1 }{ x } }\)的东西,这个考虑取一下反函数即可.然后二者嵌套一下得到形如\(a^{ \frac{ q }{ p } }\)的幂函数,取反一下得到形如\(a^{ - \frac{ q }{ p } }\)的幂函数.

然后要定义无理数指数幂,类似戴德金分割,定义\(a^x = \sup_{ q \leq x , q \in Q } a^q\).

当然我们要验证那些指数的运算法则,还有一些单调性(两个无理数之间插入两个有理数就可以拆成单调的,这里还需要讨论一下和\(1\)的大小关系),这些当然都是对的.

然后我们就可以拿出指数函数,用反函数定义对数函数.

指数函数的连续性:考虑对于\(f ( x ) = a^x\),\(\forall \epsilon > 0\),\(\exists N > 0 , a < ( 1 + \epsilon )^N\),此时取\(q_1 < x_0 < q_2\),\(q_2 - q_1 < \frac{ 1 }{ N }\),这当然能做得到.考虑\(a^{ x_0 } \leq f ( x_0 + 0 ) \leq f ( q_2 )\),于是\(1 \leq \frac{ a^{ q_2 } }{ a^{ q_1 } } \leq a^{ \frac{ 1 }{ N } } \leq 1 + \epsilon\).

先来看最特殊的指数函数:

\[ f ( x ) = e^x \Rightarrow f ' ( x ) = e^x \]

事实上我们还有:

\[ f ( x ) = a^x \Rightarrow f ' ( x ) = a^x \ln a , a > 0 \]

下面来看下为啥:

\[ \begin{aligned} f ' ( x ) & = \lim_{ \Delta x \rightarrow 0 } \frac{ a^{ x + \Delta x } - a^x }{ \Delta x } \\ & = a^x \lim_{ \Delta x \rightarrow 0 } \frac{ a^{ \Delta x } - 1 }{ \Delta x } \\ & = a^x \ln a \end{aligned} \]

而高阶导数有:

\[ f ( x ) = e^{ ax } \Rightarrow f^{ ( n ) } = a^n e^{ ax } \]

对数函数

先看:

\[ f ( x ) = \log_a ( x ) \Rightarrow f ' ( x ) = \frac{ 1 }{ x \ln a } \]

证明的话考虑:

\[ \begin{aligned} f ' ( x ) & = \lim_{ \Delta x \rightarrow 0 } \frac{ \log_a ( 1 + \frac{ \Delta x }{ x } ) }{ \Delta x } \\ & = \lim_{ \Delta x \rightarrow 0 } \frac{ \log_a ( 1 + \frac{ \Delta x }{ x } ) }{ \frac{ \Delta x }{ x } } \frac{ 1 }{ x } \\ & = \frac{ 1 }{ x \ln a } \end{aligned} \]

再看:

\[ f ( x ) = \ln | x | \Rightarrow f ' ( x ) = \frac{ 1 }{ x } \]

考虑\(f ( x ) = \ln | x | = \frac{ 1 }{ 2 } \ln x^2\).

考虑对数函数的高阶导数:

\[ f ( x ) = \ln x \Rightarrow f^{ ( n ) } ( x ) = ( - 1 )^{ n - 1 } ( n - 1 ) ! x^{ - n } \]

幂函数

我们只需要定义\(x^{ \alpha } = e^{ \alpha \ln x }\)即可.

导数有:

\[ f ( x ) = x^\mu \Leftrightarrow f ' ( x ) = \mu x^{ \mu - 1 } \]

证明的话,考虑\(x = 0\)的时候根据定义显然,如果\(x \ne 0\),那么:

\[ \begin{aligned} f ' ( x ) & = \lim_{ \Delta x \rightarrow 0 } \frac{ ( x + \Delta x )^\mu - x^\mu }{ \Delta x } \\ & = \lim_{ \frac{ \Delta x }{ x } \rightarrow 0 } \frac{ ( 1 + \frac{ \Delta x }{ x } )^\mu - 1 }{ \frac{ \Delta x }{ x } } x^{ \mu - 1 } \\ & = \mu x^{ \mu - 1 } \end{aligned} \]

容易发现其高阶导数是:

\[ f ( x ) = x^\alpha \Rightarrow f^{ ( n ) } ( x ) = \alpha^{ \underline{ n } } x^{ \alpha - n } \]

一般初等函数

定理:初等函数在其定义域上除了至多一个孤立点集外,可求导并且导函数也是初等函数.

单调函数的导数

定义右上导数\(D^+ f ( x_0 ) = \varlimsup_{ h \rightarrow 0 + 0 } \frac{ f ( x_0 + h ) - f ( x_0 ) }{ h }\),同理定义右下导数\(D_+\),左上导数\(D^{ - }\),左下导数\(D_-\).那么\(f ' ( x_0 )\)存在的充要条件当然是\(D_+ = D^+ = D_- = D^-\)并且有限.

下面证明单调(不妨设为单增)函数\(f : [ a , b ] \rightarrow \mathbb{ R }\)几乎处处有导数.

我们接下来尝试证明\(E_1 = \{ x \in [ a , b ] \mid D^+ f ( x ) > D_- f ( x ) \} , E_2 = \{ x \in [ a , b ] \mid D^- f ( x ) > D_+ f ( x ) \}\)两个集合是零测集.此时\(E_1 \cup E_2\)就是零测集,而\(\mathbb{ R } \setminus ( E_1 \cup E_2 )\)中的点都满足\(D^{ + } f ( x ) \leq D_- f ( x ) \leq D^- f ( x ) \leq D_+ f ( x ) \leq D^+ f ( x )\),于是它们都相等(可能等于\(+ \infty\)).

二者类似,我们下面挑选前者进行证明:

考虑设\(A_{ r , s } = \{ x | D^+ f ( x ) > r > s > D_- f ( x ) \}\),其中\(r , s\)都是正有理数(因为是单调递增).这当然是可数个集合,所以只需要证明其中任意一个是零测集就可以.我们取\(A = A_{ r , s }\),下面证明\(A\)是零测集.

反证,先假设\(A\)不是零测集,\(m^* ( A ) > 0\)且有限(最大是\(b - a\)).

首先删除\(A\)中的孤立点集.由于孤立点集是零测集,这当然不会对答案有什么影响,也不会删成空集.这样下面可以直接假设\(A\)是开集.

根据定义,存在任意小的\(h > 0\)使得\(\frac{ f ( x - h ) - f ( x ) }{ - h } < s \Rightarrow f ( x ) - f ( x - h ) < sh\),那么我们取出这些\(I_{ x , h } = [ x - h , x ]\),并且满足\(I_{ x , h } \subseteq A\).它们当然构成\(A\)的一个Vitali覆盖.

根据Vitali覆盖引理我们有\(\exists I_{ k } = [ x_k - h_k , x_k ]\)两两不交并且满足\(m^* ( A \setminus ( \bigcup I_k ) ) < \epsilon\).而考虑\(m^* ( A \setminus ( \bigcup I_k ) ) + m^* ( \bigcup I_k ) \geq m^* ( A )\),不妨令\(B = \bigcup I_k\)于是我们得到了\(m^* ( B ) > m^* ( A ) - \epsilon\).

这里我曾经以为可以直接写\(m^* ( B ) = m^* ( A )\),但实际上是不行的,因为我们\(B\)的构造依赖于\(\epsilon\).

同时由于所有的\(I_k \subseteq A\)并且两两不交,我们还有\(\sum_j h_j \leq m^* ( A ) < ( 1 + \epsilon ) m^* ( A )\).

而我们发现我们又有\(f ( x_j ) - f ( x_j - h_j ) < sh_j\),两边求和就有\(\sum f ( x_j ) - f ( x_j - h_j ) < sm^* ( A )\).

而接下来考虑\(B\),\(B\)当然仍然是一个开集.对于\(\forall y \in B\),当然应该存在一个任意小的\(k > 0\)使得\(f ( y + k ) - f ( y ) > rk\).取出这些区间\([ y , y + k ]\)当然仍然构成\(B\)的一个Vitali覆盖.类似上面,我们当然有结论\(\sum f ( y_j + k_j ) - f ( y_j ) > rm^* ( B ) > r ( m^* ( A ) - \epsilon )\).但考虑\([ y_j , y_j + k_j ]\)一定被包含在某个\([ x_j - h_j , x_j ]\)中,又根据函数的单调性,自然可以知道\(sm^* ( A ) > \sum f ( x_j ) - f ( x_j - h_j ) \geq \sum f ( y_j + k_j ) - f ( y_j ) > r ( m^* ( A ) - \epsilon )\).于是\(sm^* ( A ) \geq rm^* ( A )\),这当然导出\(m^* ( A ) = 0\),与条件不符!

接下来的修补工作是证明\(E = \{ x | f ' ( x ) = + \infty \}\)的集合是零测集.这意味着对于\(\forall N > 0 , \exists \Delta x > 0 , f ( x + \Delta x ) - f ( x ) > N \Delta x\),取\([ x , x + \Delta x ]\)当然仍然是\(E\)的一个Vitali覆盖.同样根据Vitali覆盖引理得知\(\sum \Delta x > m^* ( E ) - \epsilon\),如果\(m^* ( E ) \ne 0\),做Vitali覆盖后对\(f ( x + \Delta x ) - f ( x ) > N \Delta x\)左右两边分别求和,左边是有界,上界当然是\(f ( b ) - f ( a )\),但右边无界.这就给出矛盾了.

理解一下上面的过程的话就是,由于该单调函数定义在一个闭区间上,那么这个单调函数应该有某种最值性.这必然会限制其大小,而如果哪里的大小崩坏了导致没有导数,这些地方的外测度一定要是\(0\),不然整体的最值性无法保证.

李氏连续函数的导数

注意到李氏连续的定义\(| f ( x ) - f ( y ) | \leq L | x - y |\),注意到\(f ( x ) = f ( x ) - Lx + Lx\).

如果钦定\(x < y\),那李氏连续等价于\(f ( y ) - f ( x ) \leq | f ( x ) - f ( y ) | \leq L ( y - x ) , f ( y ) - Ly \leq f ( x ) - Lx\),于是\(f ( x ) - Lx\)是单调降函数,当然几乎处处可导,而\(Lx\)作为初等函数当然处处可导.

李氏连续几乎等价于导函数有界.

下面我们证明:如果\(f ( x )\)\([ a , b ]\)上可导,那么\(| f ' | \leq L \Leftrightarrow | f ( x_1 ) - f ( x_2 ) | \leq L | x_1 - x_2 |\).

右推左是显然的,除一下然后取极限即可.

左推右也很显然,只需用一下拉格朗日中值定理即可.

微分

\(y = f ( x )\)\(x_0\)处有定义,假设有一个常数\(A\)使得\(f ( x_0 + \Delta x ) - f ( x_0 ) = A \Delta x + o ( \Delta x ) , \Delta x \rightarrow 0\),称\(f ( x )\)\(x_0\)可微,并把\(\text{ d } f = \text{ d } y = A \Delta x\)称为\(f ( x )\)\(x_0\)处的微分,由于后半部分是一个更高阶的无穷小量,我们说微分是函数改变量的线性主要部分.

微分与导数(微商)

结合导数极限的定义,就可以得到\(\text{ d } y = f ' ( x ) \text{ d } x\),\(f ' ( x ) = \frac{ \text{ d } y }{ \text{ d } x } \\\).这就是我们将导数称作微商的原因.换言之,一阶可微一定一阶可导,反之亦然.但容易发现,可微的定义要比可导好得多,可微可以往外拓展到平面等拓扑结构,但可导不行.

一阶微分具有形式不变性.换言之就是,我们在求导的时候是需要选定一个自变量的,当选定的自变量是\(y\)的时候,根据上面自然会有\(z = g ( y ) , \text{ d } z = g ' ( y ) \text{ d } y\).

但是当选定的自变量不是\(y\)的时候,上面的形式是同样成立的.我们下面证明这个结论,令\(y = f ( x )\):

$$ \[\begin{aligned} [ g ( f ( x ) ) ] ' & = g ' ( f ( x ) ) f ' ( x ) \\ \text{ d } z & = g ' ( f ( x ) ) f ' ( x ) \text{ d } x \\ \text{ d } z & = g ' ( y ) \text{ d } y \\ \end{aligned}\]

$$

必须提出高阶微分不存在形式不变性,换句话说,\(z = g ( y )\)的二阶微分的形式不等价于\(z = g ( y = f ( x ) )\)的二阶微分,你不能乱换元.

一般将高阶微分记作\(\frac{ \text{ d }^n y }{ \text{ d } x^n }\).

导函数的性质

费马定理

如果\(f ( x )\)在邻域\(U ( \xi , \delta )\)上有定义,\(\xi\)是其的一个极值点,在\(\xi\)处存在导数,那么\(f ' ( \xi ) = 0\).

不妨考虑最大值情况,\(f ' ( \xi ) = \lim_{ \Delta x \to + 0 } \frac{ f ( \xi + \Delta x ) - f ( \xi ) }{ \Delta x } = \lim_{ \Delta x \to - 0 } \frac{ f ( \xi + \Delta x ) - f ( \xi ) }{ \Delta x }\),前者\(\leq 0\),后者\(\geq 0\),此时当然\(f ' ( \xi ) = 0\).

罗尔中值定理

如果\(f \in C [ a , b ]\)且可导,并且\(f ( a ) = f ( b )\).则\(\exists \xi \in ( a , b )\),\(f ' ( \xi ) = 0\).

即:可导函数两个零点间一定有导数的零点.

\(M\)\(f [ a , b ]\)上的最大值,\(m\)是最小值,当二者相等即常值函数的时候,当然成立.

\(M > m\)的时候,则\(M > f ( a )\)\(m < f ( a )\)至少有一个成立.不妨设\(f ( M ) > f ( a ) = f ( b )\).

根据费马定理,这个极值点的导数为\(0\).

由此可以推论:函数的零点数量\(| \{ x | f ( x ) = 0 \} | \leq 1 + | \{ x | f ' ( x ) = 0 \} |\).

这当然可以推出\(n\)次多项式至多\(n\)个实根.

事实上可以证明更强的结论,当\(c_i\)不全为\(0\)的时候,取\(n\)个不同实数\(\lambda_k\),\(f ( x ) = \sum_{ i = 1 }^n c_i x^{ \lambda_i }\)至多有\(n - 1\)个正根.

归纳法,\(n = 1\)的时候显然成立.\(n - 1\)时成立的话,考虑\(f ( x ) = 0 \Leftrightarrow x^{ - \lambda_n } f ( x ) = 0\),而后者有一项是常数项,求导后少一项.

拉格朗日中值定理

\(f \in C [ a , b ]\),并且在\(( a , b )\)上可导,\(\exists \xi \in ( a , b ) , f ' ( \xi ) = \frac{ f ( b ) - f ( a ) }{ b - a }\).

考虑先把函数放平,设\(g ( x ) = f ( x ) - \frac{ f ( b ) - f ( a ) }{ b - a } ( x - a ) - f ( a )\),容易发现\(g ( a ) = g ( b ) = 0\),根据罗尔中值定理,\(\exists \xi , g ' ( \xi ) = 0 = f ' ( \xi ) - \frac{ f ( b ) - f ( a ) }{ b - a } , f ' ( \xi ) = \frac{ f ( b ) - f ( a ) }{ b - a }\).

Example1

证明:如果\(f ' ( x ) \equiv 0 \Rightarrow f ( x ) \equiv C\).

考虑\(\forall x , y , x \ne y\),\(\forall \xi , f ' ( \xi ) = \frac{ f ( y ) - f ( x ) }{ y - x } = 0 \Rightarrow f ( x ) = f ( y )\).

Example2

证明:如果\(f ' ( x ) \equiv g ' ( x )\),那么\(f ( x ) = g ( x ) + C\).

考虑\(h ( x ) = f ( x ) - g ( x ) , h ' ( x ) \equiv 0 \Rightarrow h ( x ) = C\).

Example3

考虑对抛物线用拉格朗日中值定理,设\(f ( x ) = px^2 + qx + r\),则\(\frac{ f ( b ) - f ( a ) }{ b - a } = \frac{ p ( b^2 - a^2 ) + q ( b - a ) }{ b - a } = p ( b + a ) + q = f ' ( \frac{ a + b }{ 2 } )\).

反过来,如果恒有\(\frac{ f ( b ) - f ( a ) }{ b - a } = f ' ( \frac{ a + b }{ 2 } )\),事实上也可以推出\(f ( x )\)是抛物线.

此时我们有\(f ( x + y ) - f ( x - y ) = 2 yf ' ( x )\),取\(y = 1\),知道\(f ( x ) \in C^{ \infty }\),于是可以两边对\(y\)求两次导数,得到\(f ' ' ( x + y ) - f ' ' ( x - y ) \equiv 0\),取\(y = x\),这当然意味着\(f ' ' ( x )\)是常函数.

柯西中值定理

\(f , g \in C [ a , b ]\),并且均在\(( a , b )\)上可导,其中\(g ' ( x ) \ne 0\).则\(\exists \xi \in ( a , b )\),\(\frac{ f ( b ) - f ( a ) }{ g ( b ) - g ( a ) } = \frac{ f ' ( \xi ) }{ g ' ( \xi ) }\).

此时注意到\(g ( b ) \ne g ( a )\),原因是根据拉格朗日中值定理,如果\(g ( b ) = g ( a ) , \exists \xi \in ( a , b ) , g ' ( \xi ) = 0\),这与\(g ' ( x ) \ne 0\)矛盾.

\(F ( x ) = f ( x ) ( g ( b ) - g ( a ) ) - g ( x ) ( f ( b ) - f ( a ) )\).

接下来注意到上述命题等价于\(\exists \xi \in ( a , b ) , F ' ( \xi ) = 0\).

而注意到\(F ( a ) = f ( a ) g ( b ) - g ( a ) f ( b ) = F ( b )\),根据罗尔中值定理立刻得到答案.

然而这个东西竟然还能推广,我们有:

如果\(f , g , h \in C [ a , b ]\)并且在\(( a , b )\)上可导,\(\exists \xi \in ( a , b ) ,\)有:

\[ \left | \begin{matrix} f ' ( \xi ) & g ' ( \xi ) & h ' ( \xi ) \\ f ( a ) & g ( a ) & h ( a ) \\ f ( b ) & g ( b ) & h ( b ) \end{matrix} \right | = 0 \]

证明的话考虑构造:

\[ F ( x ) = \left | \begin{matrix} f ( x ) & g ( x ) & h ( x ) \\ f ( a ) & g ( a ) & h ( a ) \\ f ( b ) & g ( b ) & h ( b ) \end{matrix} \right | \]

注意到\(F ( a ) = F ( b ) = 0\).

广义微分中值定理
广义罗尔中值定理

如果\(f \in C [ a , b ]\)\(\forall x \in ( a , b ) , f '_\pm ( x )\)均存在,并且\(f ( a ) = f ( b ) = 0\).则\(\exists \xi \in ( a , b )\),\(f_+ ' ( \xi ) f_- ' ( \xi ) \leq 0\).

证明和罗尔中值定理没区别,仍然是找最值.

广义拉格朗日中值定理

如果\(f \in C [ a , b ]\)\(\forall x \in ( a , b ) , f '_\pm ( x )\)均存在,\(\eta = \frac{ f ( a ) - f ( b ) }{ a - b }\),则\(\exists \xi \in ( a , b )\),\(( f_+ ' ( \xi ) - \eta ) ( f_- ' ( \xi ) - \eta ) \leq 0\).

证明差不多,仍然是把函数放平然后用广义罗尔中值定理就行.

导函数与间断点

导函数不存在第一类间断点.

证明的话,考虑证明当\(f ( x )\)\(x_0\)处可导的时候,\(\exists x_n < x_0 < y_n\),使得\(x_n , y_n \rightarrow x_0\),并且满足\(\lim f ' ( x_n ) = \lim f ' ( y_n ) = f ' ( x_0 )\).

原因根据拉格朗日中值定理,\(\exists x_n \in ( x_0 - \frac{ 1 }{ n } , x_0 )\),\(f ' ( x_n ) = \frac{ f ( x_0 ) - f ( x_0 - \frac{ 1 }{ n } ) }{ \frac{ 1 }{ n } }\),直接这么取当然就是可行的.

函数的升降性

\(f \in C [ a , b ]\)并且在\(( a , b )\)上可导,\(f\)单调不减\(\Leftrightarrow\)f’(x)

左推右当然是导数定义,右推左可以用拉格朗日微分中值定理.

另外由于保号性,\(f ' ( x ) > 0 \Rightarrow f \uparrow\),但反之不成立.

函数的极值

\(f\)\(( x_0 - \delta , x_0 + \delta )\)\(n - 1\)次可导,\(\forall 1 \leq k \leq n - 1 , f^{ ( k ) } ( x_0 ) = 0\).而且\(f\)\(x_0\)处存在\(n\)阶导数并有\(f^{ ( n ) } ( x_0 ) \ne 0\).我们有以下结论:

  1. \(n\)是奇数的时候,\(x_0\)不是极值点.

  2. \(n\)是偶数且\(f^{ ( n ) } ( x_0 ) < 0\)时,\(x_0\)是极大值点.

  3. \(n\)是偶数且\(f^{ ( n ) } ( x_0 ) > 0\)时,\(x_0\)是极小值点.

证明考虑泰勒公式:

\[ \begin{aligned} f ( x ) & = f ( x_0 ) + \sum_{ k = 1 }^n \frac{ f^{ ( k ) } ( x_0 ) }{ k ! } ( x - x_0 )^k + o ( ( x - x_0 )^n ) \\ f ( x ) - f ( x_0 ) & = ( x - x_0 )^n ( \frac{ f^{ ( n ) } ( x_0 ) }{ n ! } + o ( 1 ) ) \end{aligned} \]

于是取极小邻域并且\(n\)是偶数的时候\(f ( x ) - f ( x_0 )\)\(f^{ ( n ) } ( x_0 )\)同号,上述命题立见.

达布定理

也即:导函数拥有介值性.

如果\(f\)\([ a , b ]\)上可导,\(f ' ( a ) f ' ( b ) < 0\),那么\(\exists \xi \in ( a , b ) , f ' ( \xi ) = 0\).

不妨设\(f ' ( a ) > 0 > f ' ( b )\),那么\(f\)\(a\)处附近递增,在\(b\)处附近递减.那我们取一下\(f ( \xi ) = \max_{ [ a , b ] } \{ f ( x ) \}\),那么\(\xi \ne a , \xi \ne b\),于是\(\xi \in ( a , b )\),\(f ' ( \xi ) = 0\).

那我们加个常数就可以把这个推广到导函数的介值性.

然而这个介值性比连续性弱得多,例如下面这个函数的导函数就在闭区间\([ 0 , 1 ]\)上有界但没有最值:

\[ f ( x ) = \begin{cases} - x^2 ( 1 + \sin{ \frac{ 1 }{ x } } ) & x \ne 0 \\ 0 & x = 0 \end{cases} \]

其构造思路是让其在\(0\)附近的导数在\(( - 1 , 1 )\)上下波动,这样上确界为\(1\),但\(0\)处跳出去,所以取不到\(1\).

下面这个函数更极端,其导函数在闭区间\([ 0 , 1 ]\)上无界:

\[ f ( x ) = \begin{cases} x^2 \sin{ \frac{ 1 }{ x^2 } } & x \ne 0 \\ 0 & x = 0 \end{cases} \]

其构造思路应当是让其在\(0\)处相当厉害地波动.

函数的凹凸性

定义一个函数是下凸的,若对\(\forall x_1 , x_2 \in I , \forall \lambda \in [ 0 , 1 ] , f ( \lambda x_1 + ( 1 - \lambda ) x_2 ) \leq \lambda f ( x_1 ) + ( 1 - \lambda ) f ( x_2 )\).

如果一个函数是下凸的,那么其充要条件是\(\forall x_1 , x_2 , x_3 \in I\)满足\(x_1 < x_2 < x_3\),\(\left | \begin{matrix}1 & x_1 & f ( x_1 ) \\ 1 & x_2 & f ( x_2 ) \\ 1 & x_3 & f ( x_3 )\end{matrix} \right | \geq 0\).只需设\(x_2 = \lambda x_1 + ( 1 - \lambda ) x_3\)然后简单变形即可.

不妨设\(k ( x_1 , x_2 ) = \frac{ f ( x_1 ) - f ( x_2 ) }{ x_1 - x_2 }\)也就是这里的割线斜率.还可以证明如果一个函数是下凸的,那么其充要条件是\(\forall x_1 , x_2 , x_3 \in I , x_1 < x_2 < x_3\),斜率有\(k ( x_1 , x_2 ) \leq k ( x_1 , x_3 ) \leq k ( x_2 , x_3 )\),即所谓三弦引理.这个性质容易证明,而且该性质立刻说明开区间上的有界下凸函数一定是李氏连续函数.这意味着其应当几乎处处可导.另外三弦引理还可以改为\(k ( x_1 , x_2 ) \leq k ( x_2 , x_3 )\),原因是中间项一定是两项的带权平均.

另外显然的是:

  1. 如果\(f\)可导,那么\(f\)下凸\(\Leftrightarrow\)f’

  2. 如果\(f\)可二阶导,那么\(f\)下凸\(\Leftrightarrow\)f’’

如果\(f ( x )\)\(x_0\)附近连续并且在\(x_0\)左右小邻域内凸性相反,称其为\(f ( x )\)的一个拐点.

容易说明\(f ' ' ( x_0 ) = 0\)是拐点的必要条件,原因是拐点处\(f ' ( x )\)的增减性相反,\(x_0\)必定是\(f ' ( x )\)的极值点.由此还可以套用之前的极值点结论:

\(f\)\(( a , b )\)\(n\)次可导,\(\exists x_0 \in ( a , b ) , \forall 1 \leq k \leq n - 1 , f^{ ( k ) } ( x_0 ) = 0\).并且\(\forall x \in ( a , b ) , f^{ ( n ) } ( x ) > 0\)我们有以下结论:

  1. \(n\)是奇数的时候,\(f ( x )\)是严格单增函数.

  2. \(n\)是偶数的时候,\(f ( x )\)是严格下凸函数.

但上述条件疑似有点过强,能不能放弱一点呢?

可以发现一个在开区间\(( a , b )\)上的函数是下凸的充要条件应当是以下条件同时成立:

  1. \(\forall x \in ( a , b )\),\(f '_\pm ( x )\)均存在,并且\(f '_- ( x ) \leq f '_+ ( x )\).

  2. \(\forall x_1 , x_2 \in ( a , b ) , x_1 < x_2\),\(f '_+ ( x_1 ) \leq f '_- ( x_2 )\).

必要性几乎是显然的,只需用三弦引理然后在每个点都卡一下极限就行.

充分性略有麻烦.考虑反证,只需反推三弦引理即可.设其不是凸的,那就\(\exists x_1 , x_2 , x_3 \in ( a , b ) , x_1 < x_2 < x_3 , k ( x_1 , x_2 ) > k ( x_2 , x_3 )\).不妨设\(\eta_1 = k ( x_1 , x_2 ) , \eta_2 = k ( x_2 , x_3 )\)那么根据广义拉格朗日中值定理,\(\exists \xi_1 \in ( x_1 , x_2 ) , \xi_2 \in ( x_2 , x_3 )\),使得\(( f_+ ' ( \xi_1 ) - \eta_1 ) ( f '_- ( \xi_1 ) - \eta_1 ) \leq 0 , ( f_+ ' ( \xi_2 ) - \eta_2 ) ( f '_- ( \xi_2 ) - \eta_2 ) \leq 0\).

立刻得到\(f '_+ ( \xi_1 ) \geq \eta_1 \geq f_- ' ( \xi_1 ) , f '_+ ( \xi_2 ) \geq \eta_2 \geq f_- ' ( \xi_2 )\),由于\(\eta_1 > \eta_2\),所以\(f '_+ ( \xi_1 ) \geq \eta_1 > \eta_2 \geq f '_- ( \xi_2 )\),但\(\xi_1 < \xi_2\),这就出现了矛盾.

还可以证明下凸函数除了可数个点以外都可导,并且几乎处处有二阶导数.

这个怎么证明呢?考虑由(1)(2),可以发现\(f '_+ ( x )\)\(f_- ' ( x )\)都是单调函数,那么除了可数个点以外它们均连续,而它们在连续处必定可导,原因是\(f_+ ' ( x_0 - \epsilon ) \leq f '_- ( x_0 ) \leq f '_+ ( x_0 )\),夹逼一下就可以了.而这样的话其导数单调,于是处处二阶可导.

由此还可以发现:\(f\)在开区间\(I\)上,是下凸的等价于:

  1. \(\forall x_0 \in I , f '_\pm ( x_0 )\)存在.

  2. \(\forall x \in I , f ( x ) \geq f ( x_0 ) + f '_\pm ( x_0 ) ( x - x_0 )\).

必要性:

考虑已知凸函数,只需证明\(f ( x ) - f ( x_0 ) \geq f '_\pm ( x_0 ) ( x - x_0 )\).不妨假设\(x > x_0\)(另一方向同理),于是只需证明\(\frac{ f ( x ) - f ( x_0 ) }{ x - x_0 } \geq f '_\pm ( x_0 )\),用广义拉格朗日微分中值定理立刻得见此成立.

充分性:

任取两点\(x_1 , x_2 \in I , x_1 < x_2\),有\(\frac{ f ( x_2 ) - f ( x_1 ) }{ x_2 - x_1 } \geq f_- ' ( x_1 )\),那么左边那个东西取极限得到\(f '_+ ( x_1 )\),这样就说明了任何一个点都有\(f '_+ ( x ) \geq f '_- ( x )\).

接下来仍然容易得到:

\[ \begin{aligned} f ( x_2 ) & \geq f ( x_1 ) + f '_+ ( x_1 ) ( x_2 - x_1 ) \\ f ( x_1 ) & \geq f ( x_2 ) + f '_- ( x_2 ) ( x_1 - x_2 ) \end{aligned} \]

由上述式子立刻得到\(f_+ ' ( x_1 ) ' \leq f_- ' ( x_2 )\).这样就证明了充分性.

经典不等式

琴生不等式

如果\(f\)在区间\(I\)上是下凸的,则\(\forall x_i \in I , \lambda_i \in [ 0 , 1 ] , \sum \lambda_i = 1\),那么\(f ( \sum \lambda_i x_i ) \leq \sum \lambda_i f ( x_i )\).从几何角度来看,这意味着在\(f ( \sum \lambda_i x_i )\)处作的切线位于原函数下方.所以函数如果是上凸的话不等号要反向.

当所有\(x_i\)均相等的时候显然成立.

不然考虑直接取\(x_0 = \sum \lambda_i x_i\),此时发现\(x_0\)一定在区间内部.于是我们知道\(f ( x_i ) \geq f ( x_0 ) + f '_+ ( x_0 ) ( x_i - x_0 )\),求和得到\(\sum \lambda_i f ( x_i ) \geq f ( x_0 ) + f_+ ' ( x_0 ) \sum \lambda_i ( x_i - x_0 ) = f ( x_0 )\),这样就证毕了.

容易将琴生不等式推广到积分形式,当\(\varphi ( x )\)是下凸连续函数的时候,当然有\(\varphi ( \int_0^1 f \text{ d } x ) \leq \int_0^1 \varphi ( f ( x ) ) \text{ d } x\),证明只需对黎曼和求极限.

Example1

证明:圆内接\(n\)边形以正\(n\)边形面积和周长最大.

不妨设其为单位元,用圆心向顶点连边,会得到一圈圆心角\(\alpha_1 , \ldots , \alpha_n\),它们之和应当是\(2 \pi\)并且范围均在\(( 0 , \pi ]\)里(原因是圆心肯定得包含在正\(n\)边形里,不然肯定不算大),此范围内\(\sin\)是下凸函数,那么\(S = \frac{ 1 }{ 2 } \sum \sin \alpha_i \leq \frac{ n }{ 2 } \sin \frac{ \sum \alpha_i }{ n } = \frac{ n }{ 2 } \sin \frac{ 2 \pi }{ n }\),\(L = 2 \sum \sin \frac{ \alpha_i }{ 2 } \leq 2 n \sin \frac{ \sum \alpha_i }{ 2 n } = 2 n \sin \frac{ \pi }{ n }\).

同理还可以证明圆外接\(n\)边形以正\(n\)边形面积和周长最小,证明可以考虑取切线然后用\(\tan\)的凸性.

均值不等式

\(x_i > 0\)时:

\[ \frac{ n }{ \sum \frac{ 1 }{ x_i } } \leq ( \prod x_i )^{ \frac{ 1 }{ n } } \leq \frac{ \sum x_i }{ n } \]

\(f ( x ) = \ln x\),\(f ( x )\)是上凸的,于是\(\ln \frac{ \sum x_i }{ n } \geq \frac{ 1 }{ n } \sum \ln x_i\),右边得证,取倒数得到左边.

柯西-赫尔德不等式

\(a_i , b_i > 0\)并且\(\frac{ 1 }{ p } + \frac{ 1 }{ q } = 1\)时,有\(\sum a_i b_i \leq ( \sum a_i^p )^{ \frac{ 1 }{ p } } ( \sum b_i^q )^{ \frac{ 1 }{ q } }\).其特例给出柯西不等式.

套用琴生不等式,取\(f ( x ) = x^{ \frac{ 1 }{ q } } , \lambda_i = \frac{ a_i^p }{ \sum_j a_j^p } , x_i = \frac{ b_i^q }{ a_i^p }\),容易发现\(f ( x )\)上凸.

这样就会得到:

$$ \[\begin{aligned} f ( \sum \lambda_i x_i ) & \geq \sum \lambda_i f ( x_i ) \\ ( \sum_i \frac{ b_i^q }{ \sum_j a_j^p } )^{ \frac{ 1 }{ q } } & \geq \sum_i \frac{ a_i b_i }{ \sum_j a_j^p } \\ \end{aligned}\]

$$

化简一下就可以了.

在这里也可以将此形式拓展到积分形式,注意到当\(\frac{ 1 }{ p } + \frac{ 1 }{ q } = 1\)时,\(a^{ \frac{ 1 }{ p } } b^{ \frac{ 1 }{ q } } = e^{ \frac{ \ln a }{ p } + \frac{ \ln b }{ q } } \leq \frac{ a }{ p } + \frac{ b }{ q }\),原因是琴生不等式.

此时令\(F = ( \int_a^b | f ( x ) |^p \text{ d } x )^{ \frac{ 1 }{ p } } , G = ( \int_a^b | g ( x ) |^q \text{ d } x )^{ \frac{ 1 }{ q } }\),再令\(a = \frac{ | f ( x ) |^p }{ F^p } , b = \frac{ | g ( x ) |^q }{ G^q }\),根据上面的不等式立刻得到\(\frac{ | f ( x ) g ( x ) | }{ FG } \leq \frac{ a }{ p } + \frac{ b }{ q }\),此时做两边积分,注意到\(\int a = \int b = 1\),立刻得到\(( \int_a^b | f ( x ) |^p \text{ d } x )^{ \frac{ 1 }{ p } } ( \int_a^b | g ( x ) |^q \text{ d } x )^{ \frac{ 1 }{ q } } \geq \int_a^b | f ( x ) g ( x ) | \text{ d } x\).

闵可夫斯基(Minkovski)不等式

\(x_i , y_i \geq 0 , p \geq 1\),则\(( \sum ( x_i + y_i )^p )^{ \frac{ 1 }{ p } } \leq ( \sum x_i^p )^{ \frac{ 1 }{ p } } + ( \sum y_i^p )^{ \frac{ 1 }{ p } }\).这其实揭示了某种度量下的三角形不等式.

套用琴生不等式,取\(f ( x ) = ( 1 - x^{ \frac{ 1 }{ p } } )^p , x \in ( 0 , 1 )\).求导得到\(f ' ( x ) = - ( 1 - x^{ \frac{ 1 }{ p } } )^{ p - 1 } x^{ \frac{ 1 }{ p } - 1 }\),再来一次化简得到\(f ' ' ( x ) = ( 1 - \frac{ 1 }{ p } ) ( 1 - x^{ \frac{ 1 }{ p } } )^{ p - 2 } x^{ \frac{ 1 }{ p } - 2 } \geq 0\).于是\(f ( x )\)下凸.

\(\lambda_i = \frac{ ( x_i + y_i )^p }{ \sum_j ( x_j + y_j )^p }\),\(u_i = ( \frac{ x_i }{ x_i + y_i } )^p\).这样得到:

\[ \begin{aligned} ( 1 - \frac{ ( \sum x_i^p )^{ \frac{ 1 }{ p } } }{ ( \sum_j ( x_j + y_j )^p )^{ \frac{ 1 }{ p } } } )^p & \leq \sum_i \frac{ ( x_i + y_i )^p }{ \sum_j ( x_j + y_j )^p } ( \frac{ y_i }{ x_i + y_i } )^p \\ ( ( \sum ( x_i + y_i )^p )^{ \frac{ 1 }{ p } } - ( \sum x_i^p )^{ \frac{ 1 }{ p } } )^p & \leq \sum y_i^p \end{aligned} \]

化简一下就做完了.

洛必达法则

来看几个抽象的问题:

  1. \(\infty - \infty\).

  2. \(0 \times \infty\).

  3. \(\frac{ 0 }{ 0 }\).

  4. \(\frac{ \infty }{ \infty }\).

  5. \(0^0\).

  6. \(1^\infty\).

  7. \(\infty^0\).

(1)可以写成\(\infty ( 1 - \frac{ \infty }{ \infty } )\),这样就转化成了(4)和(2).

(2)可以写成\(\frac{ 0 }{ \frac{ 1 }{ \infty } }\),就转化成了(3).

(5)可以写成\(e^{ 0 \ln 0 }\),就转化成了(2).

(6)可以写成\(e^{ \infty \ln 1 }\),就转化成了(2).

(7)可以写成\(e^{ 0 \ln \infty }\),就转化成了(2).

这样的话我们只需要解决俩问题就行了,也就是\(\frac{ 0 }{ 0 }\)\(\frac{ \infty }{ \infty }\).

0/0型

如果\(f , g\)\(U_0 ( a , \delta )\)上可导,\(g ' ( x ) \ne 0\),\(\lim_{ x \rightarrow a } f ( x ) = \lim_{ x \rightarrow a } g ( x ) = 0\).那么若\(\lim_{ x \rightarrow a } \frac{ f ' ( x ) }{ g ' ( x ) } = k \Rightarrow \lim_{ x \rightarrow a } \frac{ f ( x ) }{ g ( x ) } = k\).

这个只需要定义\(f ( a ) = g ( a ) = 0\),这样这俩函数就连续了.然后直接跑柯西中值定理就可以对\(\frac{ f ( x ) - f ( a ) }{ g ( x ) - g ( a ) } = \frac{ f ' ( \xi ) }{ g ' ( \xi ) }\).

这里可以看出洛必达法则是单向的,因为我们取得\(\xi\)并不是连续变化的,只是取了一个\(\rightarrow 0\)\(\xi\)的子列.

而如果\(a = \infty\),那就考虑取\(t \rightarrow 0\),然后把\(x\)换成\(\frac{ 1 }{ t }\),做复合函数求导即可,结论无差异.

\(\infty\)/\(\infty\)

如果\(f , g\)\(U_0 ( a , \delta )\)上可导,\(g ' ( x ) \ne 0\),\(\lim_{ x \rightarrow a } g ( x ) = \infty\).那么若\(\lim_{ x \rightarrow a } \frac{ f ' ( x ) }{ g ' ( x ) } = k \Rightarrow \lim_{ x \rightarrow a } \frac{ f ( x ) }{ g ( x ) } = k\).

这个证明麻烦一点,先来讨论\(k \ne \pm \infty\)的情况.

考虑\(\forall \epsilon > 0\),\(\exists \delta > 0 , \forall \xi \in ( a , a + \delta )\),应当有\(k - \epsilon < \frac{ f ' ( \xi ) }{ g ' ( \xi ) } < k + \epsilon\),那么\(\forall x \in ( a , a + \delta )\),取\(x_1 = a + \delta\)当然有:

\[ \begin{aligned} \frac{ f ( x ) - f ( x_1 ) }{ g ( x ) - g ( x_1 ) } & = \frac{ f ' ( \xi ) }{ g ' ( \xi ) } \\ \frac{ f ( x ) }{ g ( x ) } & = \frac{ f ' ( \xi ) }{ g ' ( \xi ) } ( 1 - \frac{ g ( x_1 ) }{ g ( x ) } ) + \frac{ f ( x_1 ) }{ g ( x ) } \end{aligned} \]

两边取极限就做完了.

\(k = \pm \infty\)的时候容易发现上面那个还能用.

泰勒公式

\(f ( x )\)\(x_0\)处有\(n\)阶导数,则泰勒公式声称\(x \rightarrow x_0\)\(f ( x ) = \sum_{ k = 0 }^n f^{ ( k ) } ( x_0 ) \frac{ ( x - x_0 )^k }{ k ! } + o ( ( x - x_0 )^n )\),其中\(o ( ( x - x_0 )^n )\)称作皮亚诺余项.特别地,当\(x_0 = 0\)的时候,称其为麦克劳林公式.

要证明这个式子只需证明\(\lim_{ x \rightarrow x_0 } \frac{ f ( x ) - \sum_{ k = 0 }^n f^{ ( k ) } ( x_0 ) \frac{ ( x - x_0 )^k }{ k ! } }{ ( x - x_0 )^n } = 0\).对上下分别用\(n - 1\)次洛必达法则后,那么只需要证明\(\lim_{ x \rightarrow x_0 } \frac{ f^{ ( n - 1 ) } ( x ) - f^{ ( n - 1 ) ( x_0 ) } }{ ( x - x_0 ) } - f^{ ( n ) } ( x_0 ) = 0\).而这当然就是导数的定义,于是就证毕了.

拉格朗日余项

\(f ( x )\)\(( a , b )\)上有\(n + 1\)阶导数,并且\(f ( x ) \in C^n [ a , b ]\),泰勒公式有\(f ( x ) = \sum_{ k = 0 }^n f^{ ( k ) } ( x_0 ) \frac{ ( x - x_0 )^k }{ k ! } + \frac{ f^{ ( n + 1 ) } ( \xi ) }{ ( n + 1 ) ! } ( x - x_0 )^{ n + 1 }\),其中\(\xi \in ( x_0 , x )\).一般将\(\frac{ f^{ ( n + 1 ) } ( \xi ) }{ ( n + 1 ) ! } ( x - x_0 )^{ n + 1 }\)称作拉格朗日余项.

证明的话,考虑对于一个固定的\(x\),构造\(F ( t ) = f ( x ) - \sum_{ k = 0 }^n f^{ ( k ) } ( t ) \frac{ ( x - t )^k }{ k ! }\),\(G ( t ) = ( x - t )^{ n + 1 }\).这里之所以固定\(x\)而移动\(x_0\)的原因是,如果反过来固定则求导就不能实现下面的错项相消.不难发现\(F ( x ) = G ( x ) = 0\),此时考虑必定有一个\(\xi \in ( x_0 , x )\)满足\(\frac{ F ' ( \xi ) }{ G ' ( \xi ) } = \frac{ F ( x_0 ) - F ( x ) }{ G ( x_0 ) - G ( x ) } = \frac{ F ( x_0 ) }{ G ( x_0 ) }\).

这个时候研究一下他们的导数,注意到\(G ' ( t ) = - ( n + 1 ) ( x - t )^{ n }\),\(F ' ( t ) = - \sum_{ k = 0 }^n f^{ ( k + 1 ) } ( t ) \frac{ ( x - t )^k }{ k ! } + \sum_{ k = 1 }^n f^{ ( k ) } ( t ) \frac{ ( x - t )^{ k - 1 } }{ ( k - 1 ) ! } = - f^{ ( n + 1 ) } ( t ) \frac{ ( x - t )^n }{ n ! }\).

于是\(\frac{ F ( x_0 ) }{ G ( x_0 ) } = \frac{ f^{ ( n + 1 ) } ( \xi ) }{ ( n + 1 ) ! }\),\(F ( x_0 ) = \frac{ f^{ ( n + 1 ) } ( \xi ) }{ ( n + 1 ) ! } ( x - x_0 )^{ n + 1 }\).

下面给出一些常见的泰勒展开公式(其中\(0 < \theta < 1\)):

  1. \(e^x = \sum_{ k = 0 }^n \frac{ x^k }{ k ! } + \frac{ e^{ \theta x } x^{ n + 1 } }{ ( n + 1 ) ! } = 1 + \frac{ x }{ 1 ! } + \frac{ x^2 }{ 2 ! } + \frac{ x^3 }{ 3 ! } + o ( x^3 )\).

  2. \(\sin x = \sum_{ k = 0 }^{ n } \frac{ ( - 1 )^k x^{ 2 k + 1 } }{ ( 2 k + 1 ) ! } + ( - 1 )^{ n + 1 } \frac{ \cos \theta x }{ ( 2 n + 3 ) ! } x^{ 2 n + 3 } = x - \frac{ 1 }{ 3 ! } x^3 + o ( x^4 )\).

  3. \(\cos x = \sum_{ k = 0 }^n \frac{ ( - 1 )^k x^{ 2 k } }{ ( 2 k ) ! } + ( - 1 )^{ n + 1 } \frac{ \cos \theta x }{ ( 2 n + 2 ) ! } x^{ 2 n + 2 } = 1 - \frac{ 1 }{ 2 ! } x^2 + \frac{ 1 }{ 4 ! } x^4 + o ( x^5 )\).

  4. \(\tan x = x + \frac{ 1 }{ 3 } x^3 + \frac{ 2 }{ 15 } x^5 + o ( x^6 )\).

  5. \(\ln ( 1 + x ) = \sum_{ k = 1 }^n \frac{ ( - 1 )^{ k - 1 } x^k }{ k } + ( - 1 )^n \frac{ x^{ n + 1 } }{ ( n + 1 ) ( 1 + \theta x )^{ n + 1 } } = x - \frac{ 1 }{ 2 } x^2 + \frac{ 1 }{ 3 } x^3 + o ( x^3 )\).

  6. \(( 1 + x )^\alpha = \sum_{ k = 0 }^n \frac{ \alpha^{ \underline{ k } } }{ k ! } x^k + \frac{ \alpha^{ \underline{ n + 1 } } }{ ( n + 1 ) ! } ( 1 + \theta x )^{ \alpha - n - 1 } x^{ n + 1 }\).

解析函数

不妨设\(f_n ( x , x_0 ) = \sum_{ k = 0 }^n f^{ ( k ) } ( x_0 ) \frac{ ( x - x_0 )^k }{ k ! }\).我们称\(f\)\(x_0\)处解析,若\(\exists \delta > 0\),\(\lim_{ n \rightarrow \infty } f_n ( x , x_0 ) = f ( x )\),也即泰勒展式在一个邻域上可以逼近原函数.

如果其在\(( a , b )\)上任何一点都解析,那么称其在\(( a , b )\)上解析,记作\(f \in C^\omega ( a , b )\).

解析函数应当有如下性质:

  1. \(f , g\)\(x_0\)处解析,那么\(f , g\)的四则运算在\(x_0\)处也解析.

  2. \(f , g\)均解析,并且\(f \circ g\)有意义,那么\(f \circ g\)也解析.

  3. \(f\)\(x_0\)处解析,那么\(f^{ - 1 }\)\(f ( x_0 )\)处解析.

  4. 初等函数基本是解析函数.

对于(1):

\(f \pm g\)当然是平凡的,至于\(fg\)\(\frac{ f }{ g }\)如何证明解析性,我们回头再说.

对于(2):

回头再说.

拉格朗日插值

构造多项式\(P_n = \sum_{ i = 0 }^{ n } y_i ( \prod_{ j = 0 \land j \ne i }^{ n } \frac{ x - x_j }{ x_i - x_j } ) \\\).显然当\(x = x_i\)时,该多项式的答案为\(y_i\).

用这个在一个\(n + 1\)次可导的函数\(f \in C ( a , b )\)上打\(n + 1\)个点并且取出这个多项式\(P_n\),考虑它们的误差.取\(\omega ( x ) = \prod_{ k = 0 }^n ( x - x_k )\),事实上有:\(\exists \xi \in ( a , b ) , f ( x ) = P_n ( x ) + \frac{ f^{ ( n + 1 ) } ( \xi ) }{ ( n + 1 ) ! } \omega ( x )\).

\(h ( t ) = f ( t ) - P_n ( t )\),考虑对于一个固定的\(x \ne x_i\),取\(g ( t ) = \frac{ h ( x ) }{ \omega ( x ) } \omega ( t ) - h ( t )\).注意到\(g ( x ) = 0 , g ( x_i ) = 0\),所以\(g\)\(n + 2\)个零点,所以\(g^{ ( n + 1 ) }\)一定有一个零点,记为\(\xi\).

那么我们就有\(g^{ ( n + 1 ) } ( \xi ) = \frac{ h ( x ) }{ \omega ( x ) } ( n + 1 ) ! - f^{ ( n + 1 ) } ( \xi ) = 0\).上述命题就得证了.

那么怎么样能让\(\omega ( x )\)这个东西的最大值尽可能小呢?

我们定义所谓\(n\)次切比雪夫多项式\(f\),使得对于任何一个首项为\(1\)的多项式\(T_n\),\(\max_{ ( a , b ) } | T_n | \geq \max_{ ( a , b ) } | f |\).

事实上\([ - 1 , 1 ]\)上的切比雪夫多项式可以用递推关系描述:

\[ P_n = \begin{cases} 1 & n = 0 \\ x & n = 1 \\ x^2 - \frac{ 1 }{ 2 } & n = 2 \\ xP_{ n - 1 } - \frac{ 1 }{ 4 } P_{ n - 2 } & \text{ otherwise } \end{cases} \]

还可以写成\(P_n = \frac{ 1 }{ 2^{ n - 1 } } \cos ( n \arccos x )\).

函数的作图

渐近线

如果对于一个函数\(y = f ( x )\),存在一条直线\(l\)使得函数上一点\(P ( x , f ( x ) )\)距离原点距离\(\to + \infty\)的时候,\(( x , f ( x ) )\)\(l\)的距离\(\to 0\).

大概可以有以下几类渐近线:

  1. 水平渐近线:\(f ( + \infty ) = C\)\(f ( - \infty ) = C\).

  2. 垂直渐近线:\(f ( x_0 - 0 ) = \infty\)\(f ( x_0 + 0 ) = \infty\).

  3. 斜渐近线:\(l = kx + b\),那么\(\lim_{ x \to + \infty } \frac{ f ( x ) }{ x } = a , \lim_{ x \to \infty } ( f ( x ) - ax ) = b\).

作图
  1. 确定定义域和值域.

  2. 研究其奇偶性,周期性.

  3. 研究\(f ' ( x ) = 0\)的根以确定极值点和升降区间.

  4. 研究\(f ' ' ( x ) = 0\)的根找出拐点.

  5. 求出渐近线.

牛顿迭代

目的是找到一个函数\(f\)的零点,尝试取上面任何一点并作切线,找到切线与\(x\)轴的交点.或者说任取\(x_0\),取\(x_{ n + 1 } = x_n - \frac{ f ( x_n ) }{ f ' ( x_n ) }\).

我们需要证明这个做法的正确性,事实上:

如果\(f ' , f ' '\)\([ a , b ]\)上非零,\(\exists c \in [ a , b ] , f ( c ) = 0\),那我们取\(x_0 \in [ a , b ]\)满足\(f ( x_0 ) f ' ' ( x_0 ) > 0\),那么取\(x_{ n + 1 } = x_n - \frac{ f ( x_n ) }{ f ' ( x_n ) }\)的数列\(\{ x_n \} \rightarrow c\).事实上:

  1. \(f ' f ' ' > 0\),\(x_n\)单调下降趋近于\(c\).

  2. \(f ' f ' ' < 0\),\(x_n\)单调上升趋近于\(c\).

并且\(| x_n - c | \sim O ( 2^{ - 2^n } )\).

上述讨论情况有点多,我们下面只讨论其中一种进行证明:

\(f ' > 0 , f ' ' > 0\)的时候,\(f\)是一个单调上升的下凸函数.容易发现这个数列单调下降并且应当大于\(c\),那它就有极限,两边取极限得知\(\lim_{ n \to \infty } f ( x_n ) = 0\).

接下来看一下逼近速度,泰勒公式展开一下知道\(0 = f ( c ) = f ( x_n ) + f ' ( x_n ) ( c - x_n ) + \frac{ f ' ' ( \xi ) }{ 2 } ( c - x_n )^2\).从上面的结果容易看出\(n \geq 1\)的时候,\(| x_{ n + 1 } - c | = \frac{ | f ( x_n ) + f ' ( x_n ) ( c - x_n ) | }{ | f ' ( x_n ) | } = \frac{ f ' ' ( \xi ) }{ 2 | f ' ( x_n ) | } ( c - x_n )^2\).前面那个系数是有界的,可以看作一个常数.于是这一次的误差应当是上一次误差的平方级别.

积分

不定积分

如果存在可导函数\(F\)满足\(F ' ( x ) = f ( x )\),则称一个函数\(f\)可积的,\(F ( x )\)\(f ( x )\)原函数,或称其为\(f ( x )\)的不定积分.

我们之前已经证明过导数相等的两个函数最多只差一个常数,因此一个函数的原函数是有唯一的\(F ( x ) + C\)的形式的.

不定积分的运算

只给出以下两个运算法则:

\[ \begin{aligned} \int ( f ( x ) \pm g ( x ) ) \text{ d } x & = \int f ( x ) \text{ d } x \pm \int g ( x ) \text{ d } x \\ \int \alpha f ( x ) \text{ d } x & = \alpha \int f ( x ) \text{ d } x \end{aligned} \]

积分表
  1. \(\int x^\alpha \text{ d } x = \frac{ x^{ \alpha + 1 } }{ \alpha + 1 } + C , \alpha \ne - 1\).

  2. \(\int \frac{ \text{ d } x }{ x } = \ln | x | + C\).

  3. \(\int e^x \text{ d } x = e^x + C\).

  4. \(\int \cos x \text{ d } x = \sin x + C\).

  5. \(\int \sin x \text{ d } x = - \cos x + C\).

  6. \(\int \frac{ \text{ d } x }{ \cos^2 x } = \tan x + C\).

  7. \(\int \frac{ \text{ d } x }{ \sin^2 x } = - \cot x + C = - \frac{ 1 }{ \tan x } + C\).

  8. \(\int \frac{ \text{ d } x }{ 1 + x^2 } = \arctan x + C\).

  9. \(\int \frac{ \text{ d } x }{ \sqrt{ 1 - x^2 } } = \arcsin x + C\).

  10. \(\int \frac{ \text{ d } x }{ \sqrt{ x^2 \pm a^2 } } = \ln | x + \sqrt{ x^2 \pm a^2 } | + C\).

  11. \(\int \sqrt{ a^2 - x^2 } \text{ d } x = \frac{ 1 }{ 2 } ( x \sqrt{ a^2 - x^2 } + a^2 \arcsin \frac{ x }{ a } ) + C\).

  12. \(\int \sqrt{ x^2 \pm a^2 } \text{ d } x = \frac{ 1 }{ 2 } ( x \sqrt{ x^2 \pm a^2 } \pm a^2 \ln | x + \sqrt{ x^2 \pm a^2 } | ) + C\).

换元法

第一换元法:设\(\int g ( t ) \text{ d } t = G ( t ) + C\),\(w ( x )\)可导,则\(\int g ( w ( x ) ) w ' ( x ) \text{ d } x = G ( w ( x ) ) + C\).证明只需对右边求导即可.

第二换元法:设\(x ( t )\)可导,且有反函数\(t ( x )\),那么如果\(\int f ( x ( t ) ) x ' ( t ) \text{ d } t = G ( t ) + C\),则\(\int f \text{ d } x = G ( t ( x ) ) + C\).

Example1

\(I_n = \int \tan^n x \text{ d } x\).

注意到:

\[ \begin{aligned} I_n & = \int \tan^{ n - 2 } ( \frac{ 1 }{ \cos^2 x } - 1 ) \text{ d } x \\ & = \int \tan^{ n - 2 } x ( \text{ d } \tan x ) - I_{ n - 2 } \\ & = \frac{ \tan^{ n - 1 } x }{ n - 2 } - I_{ n - 2 } \end{aligned} \]

边界条件的话\(I_0 = x + C , I_1 = \int \frac{ \sin x }{ \cos x } \text{ d } x = - \int \frac{ 1 }{ \cos x } ( \text{ d } \cos x ) = - \ln ( \cos x ) + C\).

分部积分

我们应当有\(( uv ) ' = u ' v + v ' u\),两边积分得到\(uv = \int u ' v \text{ d } x + \int v ' u \text{ d } x\),变形得到\(\int v \text{ d } u = uv - \int u \text{ d } v\).

Example1

\(I_n = \int \cos^n x \text{ d } x\).

注意到:

\[ \begin{aligned} I_n & = \int \cos^{ n - 1 } x ( \text{ d } \sin x ) \\ & = \cos^{ n - 1 } x \sin x + ( n - 1 ) \int \sin^2 x \cos^{ n - 2 } x \text{ d } x \\ & = \cos^{ n - 1 } x \sin x + ( n - 1 ) \int ( 1 - \cos^2 x ) \cos^{ n - 2 } x \text{ d } x \\ & = \cos^{ n - 1 } \sin x + ( n - 1 ) I_{ n - 2 } - ( n - 1 ) I_n \end{aligned} \]

整理得到\(I_n = \frac{ 1 }{ n } \cos^{ n - 1 } x \sin x + \frac{ n - 1 }{ n } I_{ n - 2 }\).

边界条件当然是\(I_0 = x + C , I_1 = \sin x + C\).

Example2

\(I_n = \int \frac{ \text{ d } x }{ \cos^n x }\).

注意到:

\[ \begin{aligned} I_n & = \int \frac{ \text{ d } \tan x }{ \cos^{ n - 2 } x } \\ & = \frac{ \tan x }{ \cos^{ n - 2 } x } - \int \tan x ( \text{ d } \cos^{ 2 - n } x ) \\ & = \frac{ \tan x }{ \cos^{ n - 2 } x } + ( 2 - n ) \int \cos^{ - n } x \sin^2 x \text{ d } x \\ & = \frac{ \tan x }{ \cos^{ n - 2 } x } + ( 2 - n ) \int \cos^{ - n } x ( 1 - \cos^2 x ) \text{ d } x \\ & = \frac{ \tan x }{ \cos^{ n - 2 } x } + ( 2 - n ) I_n - ( 2 - n ) I_{ n - 2 } \end{aligned} \]

整理得到\(I_n = \frac{ 1 }{ n - 1 } \frac{ \tan x }{ \cos^{ n - 2 } x } + \frac{ n - 2 }{ n - 1 } I_{ n - 2 }\).

Example3

\(I_{ m , n } = \int \sin^m x \cos ( nx ) \text{ d } x\),其中\(m < n\).

注意到:

\[ \begin{aligned} I_{ m , n } & = \int \sin^m x \cos ( nx ) \text{ d } x \\ & = \frac{ 1 }{ n } \int \sin^m x \text{ d } \sin ( nx ) \\ & = \frac{ 1 }{ n } \left ( \sin^m x \sin ( nx ) - \frac{ m }{ n } \int \sin ( nx ) \sin^{ m - 1 } x \cos x \text{ d } x \right ) \end{aligned} \]

然后观察到:

\[ \begin{aligned} & \int \sin ( nx ) \sin^{ m - 1 } x \cos x \text{ d } x \\ = & - \frac{ 1 }{ n } \int \sin^{ m - 1 } x \cos x \text{ d } \cos ( nx ) \\ = & - \frac{ 1 }{ n } ( \cos ( nx ) \sin^{ m - 1 } x \cos x - \int \cos ( nx ) ( \text{ d } \sin^{ m - 1 } x \cos x ) ) \end{aligned} \]

观察到:

\[ \begin{aligned} & \int \cos ( nx ) ( \text{ d } \sin^{ m - 1 } x \cos x ) \\ = & \int \cos ( nx ) ( - \sin^{ m } + ( m - 1 ) \sin^{ m - 2 } x \cos^2 x ) \text{ d } x \\ = & \int \cos ( nx ) ( ( m - 1 ) \sin^{ m - 2 } x - m \sin^m x ) ) \text{ d } x \\ = & ( m - 1 ) I_{ m - 2 , n } - mI_{ m , n } \end{aligned} \]

往回倒腾倒腾,边界条件是:

\[ \begin{aligned} I_{ 0 , n } & = \int \cos ( nx ) \text{ d } x = \frac{ \sin ( nx ) }{ n } + C \\ I_{ 1 , n } & = \int \sin x \cos ( nx ) \text{ d } x \\ & = \frac{ 1 }{ 2 } \int ( \sin ( ( n + 1 ) x ) - \sin ( ( n - 1 ) x ) ) \text{ d } x \\ & = \frac{ 1 }{ 2 } ( \frac{ - \cos ( ( n + 1 ) x ) }{ n + 1 } + \frac{ \cos ( ( n - 1 ) x ) }{ n - 1 } ) + C \end{aligned} \]

Example4

\(I_n = \int \frac{ \text{ d } x }{ ( x^2 + a^2 )^n }\).

注意到:

\[ \begin{aligned} I_n & = \frac{ x }{ ( x^2 + a^2 )^n } - \int x \text{ d } \frac{ 1 }{ ( x^2 + a^2 )^n } \\ & = \frac{ x }{ ( x^2 + a^2 )^n } + 2 n \int \frac{ x^2 + a^2 - a^2 }{ ( x^2 + a^2 )^{ n + 1 } } \text{ d } x \\ & = \frac{ x }{ ( x^2 + a^2 )^n } + 2 nI_{ n } - 2 a^2 nI_{ n + 1 } \end{aligned} \]

边界是\(I_1 = \frac{ 1 }{ a } \arctan \frac{ x }{ a } + C\).

Example5

\(I = \int x \cos^3 x \text{ d } x\).

考虑:

$$ \[\begin{aligned} I & = \int x \cos^3 x \text{ d } x = \int x \cos^2 x \text{ d } ( \sin x ) \\ & = x \cos^2 x \sin x - \int \sin x ( \cos^2 x \text{ d } x - 2 x \cos x \sin x ) \\ & = x \cos^2 x \sin x + \int \cos^2 x ( \text{ d } \cos x ) + 2 \int x \cos x \sin^2 x \text{ d } x \\ & = x \cos^2 x \sin x + \frac{ \cos^3 x }{ 3 } + 2 \int x \cos x ( 1 - \cos^2 x ) \text{ d } x \\ & = x \cos^2 x \sin x + \frac{ \cos^3 x }{ 3 } + 2 \int x \cos x \text{ d } x - 2 I \\ & = x \cos^2 x \sin x + \frac{ \cos^3 x }{ 3 } + 2 \int x ( \text{ d } \sin x ) - 2 I \\ & = x \cos^2 x \sin x + \frac{ \cos^3 x }{ 3 } + 2 ( x \sin x + \cos x ) - 2 I + C \\ \end{aligned}\]

$$

也就是\(3 I = x \cos^2 x \sin x + \frac{ \cos^3 x }{ 3 } + 2 ( x \sin x + \cos x ) + C\).

有理分式的不定积分

考虑真分式\(R ( x ) = \frac{ P ( x ) }{ Q ( x ) }\),其中\(\deg P ( x ) < \deg Q ( x )\).至于其他分式可以做长除法变成真分式.

定义最简真分式形如\(\frac{ A }{ ( x - a )^m } , \frac{ Bx + C }{ ( x^2 + px + q )^n }\).

先证明一个引理:实数域上,任何一个多项式可以分解为若干不可约的一次多项式和二次多项式的乘积.

原因是复根一定成对出现,如果\(z\)是复根,那么\(\bar{ z }\)一定也是复根,原因是\(\overline{ zw } = \bar{ z } \bar{ w }\),对一个多项式两边逐项取共轭就可以发现上述结论.那只需要把成对的复根扔到一个二次多项式里就行.

再证明一个引理:实数上,任何一个真分式都可以转化为若干最简真分式的线性组合.

先拆一次项,如上将\(Q ( x ) = ( x - a )^m R ( x )\),其中\(R ( a ) \ne 0\),那我们考虑:

$$ \[\begin{aligned} \frac{ P ( x ) }{ Q ( x ) } - \frac{ A_1 }{ ( x - a )^m } & = \frac{ P ( x ) - A_1 R ( x ) }{ ( x - a )^m R ( x ) } \\ \end{aligned}\]

$$

此时取\(A_1 = \frac{ P ( a ) }{ R ( a ) }\),立刻见到\(( x - a ) | ( P ( x ) - A_1 R ( x ) )\),于是上下至少少一次,这样就可以继续分解了.

再拆二次项,如上将\(Q ( x ) = ( x^2 + px + q )^m R ( x )\),其中\(( x^2 + px + q ) \nmid R ( x )\),那:

\[ \frac{ P ( x ) }{ Q ( x ) } - \frac{ A_1 x + B_1 }{ ( x^2 + px + q )^m } = \frac{ P ( x ) - ( A_1 x + B_1 ) R ( x ) }{ ( x^2 + px + q )^m R ( x ) } \]

\(T ( x ) = P ( x ) - ( A_1 x + B_1 ) R ( x )\),类似上面应当要确定\(A_1 , B_1\)使得上面那部分是\(x^2 + px + q\)的倍数就可以.直接取\(x^2 + px + q\)的某个复根\(\alpha\),则只需\(T ( \alpha ) = 0\)即可,这是两个方程(实部虚部),而我们有两个未知数,理应可以解出答案.具体解得过程其实也可以直接把\(P ( x )\)\(R ( x )\)直接先用多项式长除法杀一杀然后剩的部分判一下方程.

这样最后就只需要对拆出来的东西逐项积分就行.意味着有理函数的原函数是初等函数.

有理三角函数的不定积分

\(\sin x , \cos x\)经过有限步四则运算得到的函数.

我们定义二元有理函数\(R ( u , v )\),那么有理三角函数实际上是\(R ( \cos x , \sin x )\).

下面给出以下命题:

  1. 如果其对于\(u\)是奇函数,也即\(R ( u , v ) = - R ( - u , v )\),那么\(R ( u , v ) = uR_1 ( u^2 , v )\),其中\(R_1\)是另一个二元有理函数.如果对于\(v\)是奇函数则同理.

  2. \(R ( - u , - v ) = R ( u , v )\)时,那么\(R ( u , v ) = R_1 ( \frac{ u }{ v } , v^2 )\).

证明只需要拆做\(R ( u , v ) = \frac{ P ( u , v ) }{ Q ( u , v ) }\),其中\(P , Q\)是两个多项式,然后只需简单书写即可证明.

对于(1)形式的有理三角函数,注意到:

\[ \begin{aligned} & \int R ( \cos x , \sin x ) \text{ d } x \\ = & \int \cos xR ( \cos^2 x , \sin x ) \text{ d } x \\ \\ = & \int R_1 ( 1 - \sin^2 x , \sin x ) \text{ d } ( \sin x ) \\ = & \int R_1 ( 1 - t^2 , t ) \text{ d } t \end{aligned} \]

对于(2)形式的有理三角函数,我们有:

\[ \begin{aligned} & \int R ( \cos x , \sin x ) \text{ d } x \\ = & \int R_1 ( \cos^2 x , \tan x ) \text{ d } x \\ = & \int R_1 ( \frac{ 1 }{ 1 + \tan^2 x } , \tan x ) \text{ d } x \\ = & \int R_1 ( \frac{ 1 }{ 1 + t^2 } , t ) \frac{ \text{ d } t }{ 1 + t^2 } \end{aligned} \]

有了这两种形式后呢?我们注意到任意的有理三角函数都可以表示为以上两种函数之和,原因是:

\[ \begin{aligned} & R ( u , v ) \\ = & \frac{ R ( u , v ) - R ( - u , v ) }{ 2 } \\ + \frac{ R ( - u , v ) - R ( - u , - v ) }{ 2 } \\ + \frac{ R ( - u , - v ) + R ( u , v ) }{ 2 } \end{aligned} \]

或者,令\(t = \tan \frac{ x }{ 2 }\),那么\(\sin x = \frac{ 2 t }{ 1 + t^2 } , \cos x = \frac{ 1 - t^2 }{ 1 + t^2 } , \text{ d } x = 2 \frac{ \text{ d } t }{ 1 + t^2 }\).

无理函数的不定积分

我们考虑以下几类无理函数:

第一类是\(R ( x , \sqrt[m]{ \frac{ ax + b }{ cx + d } } )\)的形式.只需做换元\(t^m = \frac{ a_1 x + b_1 }{ a_2 x + b_2 }\),立刻得到原式其实就是\(R ( \frac{ b_2 t^m - b_1 }{ a_1 - a_2 t^m } , t )\),并且\(\text{ d } x\)也可以转化到\(\text{ d } t\).

第二类是形如\(\int x^m ( a + bx^n )^p \text{ d } x\),其中\(m , n , p \in \mathbb{ Q }\).

\(t = x^n\),上式就变成了\(\frac{ 1 }{ n } \int t^{ \frac{ m + 1 }{ n } - 1 } ( a + bt )^p \text{ d } t\).令\(q = \frac{ m + 1 }{ n } - 1\).我们只需要做\(\frac{ 1 }{ n } \int t^q ( a + bt )^p \text{ d } t = \frac{ 1 }{ n } \int t^{ p + q } ( \frac{ a + bt }{ t } )^p\).事实上,下面三种情况可以积出来:

  1. \(p \in \mathbb{ Z }\).

  2. \(q \in \mathbb{ Z }\).

  3. \(p + q \in \mathbb{ Z }\).

其它的都无初等形式.

第三类是形如\(R ( x , \sqrt{ ax^2 + bx + c } )\),不妨假设\(b^2 - 4 ac \ne 0 , a \ne 0\).

  1. \(b^2 - 4 ac > 0\),则有两个实根\(\alpha > \beta\),此时提一下实根就可以知道原式等于\(R ( x , ( x - \beta ) \sqrt{ \frac{ a ( x - \alpha ) }{ x - \beta } } )\),这就能做了.

  2. \(b^2 - 4 ac < 0\),则无实根,不妨假设\(a > 0\).则做\(t - \sqrt{ a } x = \sqrt{ ax^2 + bx + c }\)并两边平方就可以反解出\(x = \frac{ t^2 - c }{ b + 2 \sqrt{ a } t }\),原本的积分就变成了关于\(t\)的有理函数的积分.

双曲换元

引入双曲三角函数\(\sinh ( x ) = \frac{ e^x - e^{ - x } }{ 2 } , \cosh = \frac{ e^x + e^{ - x } }{ 2 }\)以及\(\tanh ( x ) = \frac{ \sinh ( x ) }{ \cosh ( x ) }\).留意到\(\cosh^2 - \sinh^2 = 1\).以及:

  1. \(\frac{ \text{ d } }{ \text{ d } x } \sinh ( x ) = \cosh ( x )\)

  2. \(\frac{ \text{ d } }{ \text{ d } x } \cosh ( x ) = \sinh ( x )\)

  3. \(\frac{ \text{ d } }{ \text{ d } x } \tanh ( x ) = \frac{ 1 }{ \cosh^2 ( x ) } = 1 - \tanh^2 ( x )\)

应当发现:

  1. \(\sinh ( 2 x ) = 2 \sinh ( x ) \cosh ( x )\)

  2. \(\cosh ( 2 x ) = \cosh^2 ( x ) + \sinh^2 ( x ) = 2 \cosh^2 ( x ) - 1 = 1 + 2 \sinh^2 ( x )\)

另外其反函数应当是:

  1. \(\text{ arsinh } ( x ) = \ln ( x + \sqrt{ x^2 + 1 } )\)

  2. \(\text{ arcosh } ( x ) = \ln ( x + \sqrt{ x^2 - 1 } )\)

应当发现:

  1. \(\frac{ \text{ d } }{ \text{ d } x } \text{ arsinh } ( x ) = \frac{ 1 }{ \sqrt{ x^2 + 1 } }\)

  2. \(\frac{ \text{ d } }{ \text{ d } x } \text{ arcosh } ( x ) = \frac{ 1 }{ \sqrt{ x^2 - 1 } }\)

  3. \(\frac{ \text{ d } }{ \text{ d } x } \text{ artanh } ( x ) = \frac{ 1 }{ 1 - x^2 }\)

Example1

\(I = \int \frac{ \text{ d } x }{ \sqrt{ x^2 \pm a^2 } }\),其中\(a > 0\).

于是\(\int \frac{ \text{ d } x }{ \sqrt{ x^2 \pm a^2 } } = \ln | x + \sqrt{ x^2 \pm a^2 } | + C\).

Example2

\(I = \int \sqrt{ a^2 - x^2 } \text{ d } x\).

考虑三角换元,应当小心符号,这里注意到\(x \in [ - a , a ]\),因此直接取\(x = a \sin t\),\(t \in [ - \frac{ \pi }{ 2 } , \frac{ \pi }{ 2 } ]\),此时\(\cos t \geq 0\)恒成立,则有:

\[ \begin{aligned} I & = a^2 \int \cos^2 t \text{ d } t \\ & = a^2 \int \frac{ 1 + \cos ( 2 t ) }{ 2 } \text{ d } t \\ & = \frac{ a^2 t }{ 2 } + \frac{ a^2 }{ 4 } \sin ( 2 t ) + C \\ & = \frac{ 1 }{ 2 } ( x \sqrt{ a^2 - x^2 } + a^2 \arcsin \frac{ x }{ a } ) + C \end{aligned} \]

Example3

\(I = \int \sqrt{ x^2 \pm a^2 } \text{ d } x\).

使用双曲换元,先考虑\(\int \sqrt{ x^2 + a^2 } \text{ d } x\)的情况,此时换\(x = a \sinh t\),\(\cosh t \geq 0\),根号是平凡开出的,应当有:

\[ \begin{aligned} I & = a^2 \int \cosh^2 t \text{ d } t \\ & = a^2 \int \frac{ 1 + \cosh ( 2 t ) }{ 2 } \text{ d } t \\ & = \frac{ a^2 t }{ 2 } + \frac{ a^2 }{ 4 } \sinh ( 2 t ) + C \\ & = \frac{ 1 }{ 2 } ( x \sqrt{ x^2 + a^2 } + a^2 \text{ arsinh } \frac{ x }{ a } ) + C \end{aligned} \]

另一个同理,仍然使用双曲换元,结果是\(\frac{ 1 }{ 2 } ( x \sqrt{ x^2 - a^2 } + a^2 \text{ arcosh } \frac{ x }{ a } ) + C\)

椭圆积分

以下是几个常见的无初等形式的积分:

  1. \(\int \frac{ e^x }{ x } \text{ d } x\).

  2. \(\int \frac{ \text{ d } x }{ \ln x }\).

  3. \(\int \frac{ \sin x }{ x } \text{ d } x\).

  4. \(\int \frac{ \cos x }{ x } \text{ d } x\).

  5. \(\int e^{ x^2 } \text{ d } x\).

另外还有一类椭圆积分也无初等形式:设\(R ( x , y )\)是二元有理函数,其中\(y = \sqrt{ P_3 ( x ) }\)\(\sqrt{ P_4 ( x ) }\),也即根号下放了个三次或者四次多项式,那么\(\int R ( x , y ) \text{ d } x\)可能很难有初等形式.这样的积分可以被归结为三类椭圆积分.

首先说明\(R ( x , \sqrt{ P_3 ( x ) } )\)可以转化,原因是\(P_3 ( x ) = 0\)一定有至少一个实数解,任意取出一个设为\(\lambda\),则\(P_3 ( x ) = ( x - \lambda ) P_2 ( x )\),令\(t^2 + \lambda = x\),带入可以转化为\(R ( t^2 + \lambda , \sqrt{ P_2 ( t^2 + \lambda ) } ) = R_1 ( t , \sqrt{ P_4 ( t ) } )\).这就意味着其实根号下四次多项式是更本质一些的.

而四次多项式可以分解为\(P_4 ( x ) = a ( x^2 + p_1 x + q_1 ) ( x^2 + p_2 x + q_2 )\).不妨假设其无重根(如果有重根的话,那么根号下就可以开出去一部分,那就可积了),设其四个根(可能有复根)分别为\(\alpha_1 , \beta_1 , \alpha_2 , \beta_2\),并且\(\alpha_1 , \beta_1\)是上述分解中前半部分的根,特别地,如果这是四个实根,则不妨调整它们的顺序使得\(\alpha_1 > \beta_1 > \alpha_2 > \beta_2\).那么根据韦达定理总有:\(p_1 = - ( \alpha_1 + \beta_1 ) , q_1 = \alpha_1 \beta_1\),后半部分同理.

我们尝试把这两个式子的一次项都去掉,当\(p_1 = p_2\)的时候可以直接一起配方令\(x = t - \frac{ p }{ 2 }\).当\(p_1 \ne p_2\)的时候,尝试换元用\(t\)代替\(x\),不妨设\(x = \frac{ u t + v }{ 1 + t }\),那么\(( x^2 + p_1 x + q_1 ) = \frac{ P_2 ' ( t ) }{ ( 1 + t )^2 }\).为了让其没有一次项应当解以下方程:

\[ \begin{cases} 2 u v + p_1 ( u + v ) + 2 q_1 = 0 \\ 2 u v + p_2 ( u + v ) + 2 q_2 = 0 \end{cases} \]

此时可以解出来\(\begin{cases}u + v = - \frac{ 2 ( q_1 - q_2 ) }{ p_1 - p_2 } \\ u v = \frac{ p_2 q_1 - p_1 q_2 }{ p_1 - p_2 }\end{cases}\),为了解出\(u , v\)是两个实数,应当检验\(( u + v )^2 - 4 uv \geq 0\)是否成立.带入韦达定理发现左边等于\(( \alpha_1 - \alpha_2 ) ( \alpha_1 - \beta_2 ) ( \beta_1 - \alpha_2 ) ( \beta_1 - \beta_2 ) > 0\).原因是如果是四个实根,则根据假设立刻得到.如果存在复根则配对一下复根也可以立刻得到.

总之,在上面的一系列操作后,我们要研究的形式统一成了\(R ( t , y = \sqrt{ A ( 1 + m_1 t^2 ) ( 1 + m_2 t^2 ) } ) = \frac{ a ( t ) + b ( t ) y }{ c ( t ) + d ( t ) y } = B_1 ( t ) + B_2 ( t ) y\),其中\(B_1 ( t ) , B_2 ( t )\)都是\(t\)的有理函数.前者可以直接积分拆出去,那我们关心的就只剩下后面的\(B_2 ( t ) y = \frac{ B_2 ( t ) y }{ y }\)的部分.

我们之前已经提过可以将一个函数拆为偶函数和奇函数之和,事实上:

\[ R ( t ) = \frac{ R ( t ) + R ( - t ) }{ 2 } + \frac{ R ( t ) - R ( - t ) }{ 2 } = R_1 ( t^2 ) + tR_2 ( t^2 ) \]

那么后者立刻可以换元积分,只剩下前者做不动.剩下的形式是:\(\int \frac{ R ( t^2 ) }{ \sqrt{ A ( 1 + m_1 t^2 ) ( 1 + m_2 t^2 ) } } \text{ d } t\),其中\(A\)可以先扔出去一些,使得\(A = \pm 1\).而且由于被积函数是偶函数,所以还可以不妨设\(t \geq 0\).由于根号下不能变成二次函数(不然就直接做完了),还不妨设\(m_1 \ne m_2 , m_1 \ne 0 , m_2 \ne 0\).下面开始讨论:

  1. \(A = 1\),\(m_1 = - h_1^2 , m_2 = - h_2^2 , h_1 > h_2 > 0\).

此时令\(t = \frac{ z }{ h_1 }\)带入化简变形再扔出去点常数得到原式变化为\(\int \frac{ R ( z^2 ) }{ \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } } \text{ d } z\),其中\(k = \frac{ h_2 }{ h_1 }\).

  1. \(A = 1\),\(m_1 = - h_1^2 , m_2 = h_2^2 , h_1 > 0 , h_2 > 0\).

此时令\(t = \frac{ \sqrt{ 1 - z^2 } }{ h_1 }\).扔出去一些常数仍然可以化简成(1)的形式,只是\(k = \frac{ h_2 }{ \sqrt{ h_1^2 + h_2^2 } }\).

  1. \(A = 1 , m_1 = h_1^2 , m_2 = h_2^2 , h_1 > h_2 > 0\).

\(t = \frac{ z }{ h_1 \sqrt{ 1 - z^2 } }\).扔出去一些常数仍然是(1)的形式,只是\(k = \frac{ \sqrt{ h_1^2 - h_2^2 } }{ h_1 }\).

  1. \(A = - 1\),\(m_1 = - h_1^2 , m_2 = h_2^2 , h_1 > 0 , h_2 > 0\).

\(t = \frac{ 1 }{ h_1 \sqrt{ 1 - z^2 } }\),还是(1)的形式,只是\(k = \frac{ h_1 }{ \sqrt{ h_1^2 + h_2^2 } }\).

  1. \(A = - 1\),\(m_1 = - h_1^2 , m_2 = - h_2^2 , h_1 > h_2 > 0\).

\(t = \frac{ \sqrt{ 1 - \frac{ h_1^2 - h^2_2 }{ h_1^2 } z^2 } }{ h_2 }\),还是(1),只是\(k = \frac{ \sqrt{ h_1^2 - h_2^2 } }{ h_1 }\).

这样就全都转化为了\(\int \frac{ R ( z^2 ) }{ \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } } \text{ d } z\)的形式了.然后把\(R ( z^2 )\)给拆开,那么这个式子就应该是\(I_n = \int \frac{ z^{ 2 n } }{ \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } } \text{ d } z\)\(H_m = \int \frac{ \text{ d } z }{ ( z^2 - a )^m \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } }\)的线性组合,注意这里系数有可能是复数.

此时注意到

\[ \begin{aligned} & ( z^{ 2 n - 3 } \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } ) ' \\ = & ( 2 n - 3 ) z^{ 2 n - 4 } \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } + z^{ 2 n - 3 } \frac{ 2 k^2 z^3 - ( k^2 + 1 ) z }{ \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } } \\ = & \frac{ ( 2 n - 3 ) z^{ 2 n - 4 }{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } + z^{ 2 n - 3 } ( 2 k^2 z^3 - ( k^2 + 1 ) z ) }{ \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } } \\ = & \frac{ ( 2 n - 1 ) k^2 z^{ 2 n } - ( 2 n - 2 ) ( k^2 + 1 ) z^{ 2 n - 2 } + ( 2 n - 3 ) z^{ 2 n - 4 } }{ \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } } \end{aligned} \]

两边积分得到:

\[ \begin{aligned} & ( 2 n - 1 ) k^2 I_n - ( 2 n - 2 ) ( k^2 + 1 ) I_{ n - 1 } + ( 2 n - 3 ) I_{ n - 2 } \\ = & z^{ 2 n - 3 } \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } \end{aligned} \]

上述只要\(n\)是整数就行,甚至不需要\(n\)是正的.所以所有的\(I_n\),包括负整数\(n\),都可以被\(I_0 , I_1\)表示.

接下来看\(H_m\),当\(a = 0\)的时候无非是\(H_m = I_{ - m }\),

接下来注意到:

$$ \[\begin{aligned} & ( \frac{ z }{ ( z^2 - a )^{ m - 1 } } \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } ) ' \\ = & \frac{ ( 2 - 2 m ) z^2 + z^2 - a }{ ( z^2 - a )^m } \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } \\ + \frac{ 2 k^2 z^4 - ( k^2 + 1 ) z^2 }{ \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } } \frac{ 1 }{ ( z^2 - a )^{ m - 1 } } \\ \end{aligned}\]

$$

\(C = \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) }\),\(W = z^2 - a\),那么\(C^2 = k^2 ( W + a )^2 - ( k^2 + 1 ) ( W + a ) + 1\).上式化简为:

\[ \begin{aligned} & = \frac{ ( 2 - 2 m ) ( W + a ) C^2 }{ W^m C } + \frac{ C^2 + 2 k^2 ( W + a )^2 - ( k^2 + 1 ) ( W + a ) }{ W^{ m - 1 } C } \\ & = \frac{ ( 2 - 2 m ) ( W + a ) ( k^2 ( W + a )^2 - ( k^2 + 1 ) ( W + a ) + 1 ) }{ W^m C } \\ + \frac{ 3 k^2 ( W + a )^2 - 2 ( k^2 + 1 ) ( W + a ) + 1 }{ W^{ m - 1 } C } \end{aligned} \]

接下来是繁复的化简,然后两边积分得到:

\[ \begin{aligned} & \frac{ z }{ ( z^2 - a )^{ m - 1 } } \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } \\ = & ( 2 m - 2 ) ( - a + ( k^2 + 1 ) a^2 - k^2 a^3 ) H_m \\ - ( 2 m - 3 ) ( 1 - 2 a ( k^2 + 1 ) + 3 k^2 a^2 ) H_{ m - 1 } \\ + ( 2 m - 4 ) ( k^2 + 1 - 3 k^2 a ) H_{ m - 2 } \\ - ( 2 m - 5 ) k^2 H_{ m - 3 } \end{aligned} \]

而注意到\(H_0 = I_0 , H_{ - 1 } = I_1 - aI_0\).

综上,所有的椭圆积分都可以由\(I_0 , I_1 , H_1\)表示.也就是椭圆积分可以转化为以下三种积分:

  1. \(\int \frac{ \text{ d } z }{ \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } }\).

  2. \(\int \frac{ z^2 \text{ d } z }{ \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } }\).

  3. \(\int \frac{ \text{ d } z }{ ( 1 + hz^2 ) \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } }\),其中\(h\)可以是复数.

有意思的是如果令\(z = \sin \varphi\),\(\text{ d } z = \sqrt{ 1 - z^2 } \text{ d } \varphi\),这样形式就好看了很多.椭圆积分可以用以下的优美形式表示:

  1. \(E ( k , \varphi ) = \int \frac{ \text{ d } \varphi }{ \sqrt{ 1 - k^2 \sin^2 \varphi } }\).

  2. \(F ( k , \varphi ) = \int \sqrt{ 1 - k^2 \sin^2 \varphi } \ \text{ d } \varphi\).

  3. \(\Pi ( h , k , \varphi ) = \int \frac{ \text{ d } \varphi }{ ( 1 + h \sin^2 \varphi ) \sqrt{ 1 - k^2 \sin^2 \varphi } }\),其中\(h\)可以是复数.

其中:

\[ \begin{aligned} \int \frac{ z^2 \text{ d } z }{ \sqrt{ ( 1 - z^2 ) ( 1 - k^2 z^2 ) } } & = \int \frac{ \sin^2 \varphi \text{ d } \varphi }{ \sqrt{ 1 - k^2 \sin^2 \varphi } } \\ & = \int ( \frac{ 1 }{ k^2 \sqrt{ 1 - k^2 \sin^2 \varphi } } \text{ ) } - \frac{ 1 - k^2 \sin^2 \varphi }{ k^2 \sqrt{ 1 - k^2 \sin^2 \varphi } } \text{ ) } d \varphi \\ & = \frac{ E ( k , \varphi ) }{ k^2 } - \frac{ F ( k , \varphi ) }{ k^2 } \end{aligned} \]

黎曼积分

\(f ( x )\)是定义在\([ a , b ]\)上的函数,对于区间\([ a , b ]\)插入分点\(x_i ( i = 0 , 1 , \cdots , n )\),且有\(a = x_0 < x_1 < \cdots < x_n = b\),我们称之为对区间\([ a , b ]\)的一种分割,并记为\(\Delta\).又记\(\Delta x_i = x_i - x_{ i - 1 } , i \in [ 1 , n ]\),\(\lambda ( \Delta ) = \max \{ \Delta x_i \mid i \in [ 1 , n ] \}\),并定义黎曼和\(S_\Delta = \sum_{ i = 1 }^n f ( \xi_i ) \Delta x_i\).

若存在实数\(J\),对\(\forall \epsilon > 0 , \exists \delta > 0\),对于任意分划,只要\(\lambda ( \Delta ) < \delta\),都有\(| S_\Delta - J | < \epsilon \\\),则称\(f ( x )\)\([ a , b ]\)黎曼可积,这个\(J\)\(f ( x )\)\([ a , b ]\)上的定积分,记作\(\int_{ a }^b f ( x ) \text{ d } x \\\).容易见到定积分唯一,证明无非也是拿\(\epsilon\)去卡.

对于\([ a , b ]\)上的连续函数,定积分实际上就是其与\(f ( x )\)围成面积的代数和.

由此可以顺便定义达布上下和,即令\(m_i = \inf_{ [ x_{ i - 1 } , x_i ] } f ( x ) , M_i = \sup_{ [ x_{ i - 1 } , x_i ] } f ( x )\),并定义振幅\(w_i = M_i - m_i\),特别地定义\(M = \sup ( M_i ) , m = \inf ( m_i )\).定义\(\overline{ S }_\Delta = \sum M_i \Delta x_i , \underline{ S }_{ \Delta } = \sum m_i \Delta x_i\).

并在此基础上定义上下积分,上积分\(\overline{ \int_a^b } f ( x ) \text{ d } x = \inf \overline{ S }_\Delta , \underline{ \int_a^b } f ( x ) \text{ d } x = \sup \underline{ S }_\Delta\).上下积分显然都是存在的,我们会在后面证明黎曼可积等价于上下积分相等.

为了方便,我们约定:

  1. \(a = b\),\(\int_a^b f ( x ) \text{ d } x = 0\).

  2. \(a > b\),\(\int_a^b f ( x ) \text{ d } x = - \int_b^a f ( x ) \text{ d } x\).

下列性质应当是成立的:

  1. (必要条件)如果一个函数黎曼可积,则它在该闭区间上有界.

  2. 对于任意分划任取\(\xi\),都有\(\underline{ S }_\Delta \leq S_\Delta ( \xi ) \leq \overline{ S }_\Delta\).

  3. \(\forall \epsilon > 0\),\(\exists \xi_1 , \xi_2\),使得\(\underline{ S }_\Delta - \epsilon \leq S_\Delta ( \xi_1 )\),\(\overline{ S }_\Delta + \epsilon \geq S_\Delta ( \xi_2 )\).

再定义所谓加细:如果\(\Delta_1 \subseteq \Delta_2\),那么称\(\Delta_2\)\(\Delta_1\)的加细.此时应当有\(\overline{ S }_{ \Delta_1 } \geq \overline{ S }_{ \Delta_2 } , \underline{ S }_{ \Delta_1 } \leq \underline{ S }_{ \Delta_2 }\).另外容易注意到如果\(| \Delta_2 \setminus \Delta_1 | = k\),那么\(0 \leq \overline{ S }_{ \Delta_1 } - \overline{ S }_{ \Delta_2 } \leq k \lambda ( \Delta_1 ) ( M - m )\),原因是考虑把这些新的断点一个一个加上去,每次加一个会新断开原本的断点,此时最多造成\(( M - m ) \Delta x \leq ( M - m ) \lambda ( \Delta_1 )\)的差.注意到此时这些东西似乎全都可以被限制住.

这同样给出了原因:为什么我们会定义上下积分呢?因为随着分点的加多,也就是随着划分的加细,达布上下和会分别单调递减或递增,这样就应当存在一个极限,然而问题在于我们难以在划分上定义序,这样就少了某种极限的方式.然而,我们试图绕开来找到一种确定的能探到极限的方式.

另外的结论是对于任意两个分划\(\Delta_1 , \Delta_2\),总有\(\underline{ S }_{ \Delta_1 } \leq \overline{ S }_{ \Delta_2 }\).原因是\(\Delta = \Delta_1 \cup \Delta_2\),立刻见到\(\underline{ S }_{ \Delta_1 } \leq \underline{ S }_{ \Delta } \leq \overline{ S }_\Delta \leq \overline{ S }_{ \Delta_2 }\).这意味着\(\overline{ \int } f \geq \underline{ \int } f\).

接下来证明定积分中的达布定理,也就是\(\forall \epsilon > 0 , \exists \delta > 0\),\(\forall \Delta , \lambda ( \Delta ) < \delta\)的时候,\(0 \leq \overline{ S }_\Delta - \overline{ \int_a^b } f ( x ) \text{ d } x \leq \epsilon\).换言之\(\lim_{ \lambda ( \Delta ) \to 0 } \overline{ S }_{ \Delta } = \overline{ \int_a^b } f ( x ) \text{ d } x\),当然下积分也是同理的.

这个的证明考虑先用上积分的定义,应当存在一个\(\Delta '\),满足\(0 \leq \overline{ S }_{ \Delta ' } - \overline{ \int_a^b } f ( x ) \text{ d } x \leq \frac{ \epsilon }{ 2 }\).不妨设\(| \Delta ' | = n_0\),接下来取\(\delta < \frac{ \epsilon }{ 2 n_0 ( M - m ) }\),那么接下来对于\(\forall \Delta , \lambda ( \Delta ) < \delta\)的时候,取\(\Delta^* = \Delta ' \cup \Delta\),根据上面我们证明的步骤,这里最多会多\(n_0\)个断点,自然得知\(\overline{ S }_{ \Delta } - \overline{ S }_{ \Delta^* } \leq n_0 \lambda ( \Delta ) ( M - m ) < \frac{ \epsilon }{ 2 }\).

这样的话就可以注意到:

\[ \begin{aligned} & \overline{ S }_\Delta - \overline{ \int_a^b } f ( x ) \text{ d } x \\ = & ( \overline{ S }_{ \Delta ' } - \overline{ \int_a^b } f ( x ) \text{ d } x ) - ( \overline{ S }_{ \Delta ' } - \overline{ S }_{ \Delta } ) \\ < & \frac{ \epsilon }{ 2 } - ( \overline{ S }_{ \Delta^* } - \overline{ S }_\Delta ) < \epsilon \end{aligned} \]

这里可以证明原函数可积的充分必要条件是上下积分相等.

首先证明充分性:当上下积分相等的时候,设其为\(J\),取足够小的\(\epsilon\),由上知道\(\exists \delta > 0\),使得\(J - \epsilon < \underline{ S }_\Delta \leq S_\Delta ( \xi ) \leq \overline{ S }_\Delta < J + \epsilon\),夹逼一下立刻知道其满足.

然后证明必要性:当原函数可积分的时候,只要分点足够密,应当有\(J - \epsilon < \underline{ S }_\Delta \leq \underline{ \int } f ( x ) \text{ d } x \leq \overline{ \int } f ( x ) \text{ d } x \leq \overline{ S }_\Delta < J + \epsilon\).

而由于我们可以见到上和与下和应当是错开来的,而如果它们中间能接上自然意味着上下积分相等.因此推论为:如果\(f\)在闭区间上有界并且\(\forall \epsilon , \exists \Delta\)使得\(0 \leq \overline{ S }_\Delta - \underline{ S }_\Delta \leq \epsilon\),则\(f\)可积.我们最初拿到的那个定义也可以这么改:只需要存在一个分划而不需要使得任意分划都这么满足.方式就是用我们已经找到的这个去并我们想要限制的那个,然后把限制延后一点使得这些全被限制住.

由上述可以证明闭区间上的连续函数一定是闭区间上的可积函数.原因是闭区间上的连续函数一定是一致连续函数,那么对于一个\(\epsilon\),可以找到一个\(\delta\)控制住区间长度,使得极差\(< \epsilon\).此时直接找一个\(\Delta\),注意到\(\overline{ S } - \underline{ S } = \sum ( M_i - m_i ) \Delta x_i \leq \sum \epsilon \Delta x \leq ( b - a ) \epsilon\),只需取\(\epsilon \to 0\)就可以搞定.

还可以证明如果\(f\)在闭区间上有界并且只有有限个间断点,那么\(f\)可积.原因也很简单,只需要拿足够小的区间把这有限个间断点盖住,然后外面继续如上操作,间断点处尽可能缩小区间长度来取出其影响.

还可以证明单调函数一定可积,原因是\(\overline{ S } - \underline{ S } \leq \delta ( f ( b ) - f ( a ) ) \to 0\).

可积性与连续性的关系(勒贝格定理)

我们还可以进一步探索黎曼可积和连续性的关系,例如,我们可以证明:\(\forall f \in R [ a , b ] , \forall \epsilon > 0 , \exists g \in C [ a , b ] \int_a^b | f ( x ) - g ( x ) | \text{ d } x < \epsilon\).

如何证明呢?感觉上只需要用分段线性函数去逼近一下就可以了对吧.所以我们考虑对于划分\(\Delta\),直接把所有的\(( x_i , f ( x_i ) )\)连起来形成一个分段线性函数.然后观察此时的\(| f - g |\),不妨分段考虑,对于\(\int_{ x_{ i - 1 } }^{ x_i } ( f - g ) ( x ) \text{ d } x \leq ( M_i - m_i ) \Delta x_i\),而后者求和之后实际上就是\(\overline{ S } - \underline{ S }\),当\(f\)可积的时候这个当然会趋近于\(0\).

我们还可以证明\(f \in R [ a , b ]\)的连续点在\([ a , b ]\)上稠密,只需要证明\(\forall [ \alpha , \beta ] \in R [ a , b ] , \alpha < \beta\),\([ \alpha , \beta ]\)这个区间内存在连续点即可.考虑定义一点处的振幅\(w_{ f } ( x_0 ) = \lim_{ \delta \to + 0 } w_f ( x_0 - \delta , x_0 + \delta )\),这个随着\(\delta\)缩小当然应当是单调不增的,因此一定有非负极限(但可能是无穷大).我们注意到\(f\)\(x_0\)处连续的充要条件是\(f\)\(x_0\)处的振幅为\(0\).必要性和充分性都容易证明.

我们考虑用区间套来找到这个连续点,考虑对于\([ \alpha_0 , \beta_0 ] \in [ a , b ]\),取分划\(\Delta_0\)使得\(\sum w_i \Delta x_i < \frac{ 1 }{ 2 } ( \beta_0 - \alpha_0 )\),并且加细使得\(\lambda ( \Delta_0 ) < \frac{ 1 }{ 2 } ( \beta_0 - \alpha_0 )\),注意这里的两个\(\frac{ 1 }{ 2 }\)其实用处不同,前者是为了让\(w_i\)足够小,后者是为了让区间长度足够小.此时考虑由于\(\sum \Delta x_i = \beta_0 - \alpha_0\),所以一定存在一个\(w_i < \frac{ 1 }{ 2 }\),拿出这个区间作为\([ \alpha_1 , \beta_1 ]\),则区间长度至少折半,并且只需在上述对\([ \alpha_n , \beta_n ]\)时取\(\sum w_i \Delta x_i < \frac{ 1 }{ 2^{ n + 1 } } ( \beta_0 - \alpha_0 )\)就可以使得\(w_i\)也趋近于\(0\),这样就能用区间套找到一个点使得它是连续点.

事实上可以证明一个函数黎曼可积的充分必要条件是其有界并且几乎处处连续.

为了方便不妨把\(f\)延拓到整个实轴,令\(f ( x ) = \begin{cases}f ( a ) & x \leq a \\ f ( b ) & x \geq b \\ f ( x ) & \text{ otherwise }\end{cases}\).

下面定义\(E_r = \{ x_0 \mid w_f ( x_0 ) \geq \frac{ 1 }{ r } \}\).我们考虑证明其是闭集,也就是证明其补集\(E_r^c = \{ x_0 \in ( a , b ) \mid w_f ( x_0 ) < \frac{ 1 }{ r } \}\)是开集.如果\(x_0 \in E_r^c\),注意到此时\(\exists \delta > 0 , w_f ( x_0 - \delta , x_0 + \delta ) < \frac{ 1 }{ r }\),那么这必然意味着\(x_0\)邻域中的点的振幅也会\(< \frac{ 1 }{ r }\),这当然意味着其是开集.

\(D\)\(f\)的间断点集,容易见到\(D = \bigcup_{ n = 1 }^{ \infty } E_n\),下面只需要证明每个\(E_n\)都是零测集即可.

先证明必要性:当\(f \in R [ a , b ]\)时,则\(f\)有界,现在对于固定的\(m\),尝试证明\(E_m\)是零测的,由达布定理,\(\forall \epsilon > 0\),\(\exists \Delta\),使得\(\sum w_i \Delta x_i = \overline{ S }_\Delta - \underline{ S }_\Delta < \epsilon\).

观察前者,注意到:

\[ \begin{aligned} \epsilon & > \sum w_i \Delta x_i = \overline{ S }_\Delta - \underline{ S }_\Delta \\ & = \sum_{ E_m \cap ( x_{ k - 1 } , x_k ) \ne \emptyset } w_k \Delta x_k + \sum_{ E_m \cap ( x_{ k - 1 } , x_k ) = \emptyset } w_k \Delta x_k \\ & \geq \frac{ 1 }{ m } \sum_{ E_m \cap ( x_{ k - 1 } , x_k ) \ne \emptyset } \Delta x_k \end{aligned} \]

因此\(m^* ( E_m ) \leq \sum_{ E_m \cap ( x_{ k - 1 } , x_k ) \ne \emptyset } \Delta x_k < m \epsilon\),由于\(m\)一开始就固定,\(\epsilon\)可以尽量小,所以这意味着\(E_m\)是零测集.必要性得证.

再证明充分性:当每一个\(E_m\)都是零测集的时候,\(\forall \epsilon > 0\),取\(r \in N_+ , r > \frac{ 1 }{ \epsilon }\).此时见到\(E_{ r }^c\)是开集,那它可以写成若干两两不交开区间的并,不妨记作\(E_r^c = \bigcup_{ k = 1 }^{ \infty } T_k\).由于此时\(E_m\)是零测集,这意味着\(\sum | T_k | = b - a\).接下来可以取足够大的\(n\)使得\(\sum_1^n | T_k | > b - a - \frac{ \epsilon }{ 2 }\),接下来取\(T_k\)的闭子区间\(J_k\),使得\(\sum_1^n | J_k | > b - a - \epsilon\).这里为什么要把开区间再进一步缩成闭区间呢?原因是你这里如果直接用开区间构造分划可能会把端点处给包进去,因此我们不得不设其端点处的一部分值拿到闭区间,这样那些振幅较大的就被舍弃了.

接下来考虑由于每个点\(x_0 \in J_k\)\(w_f ( x_0 ) < \frac{ 1 }{ r } < \epsilon\),必定有其一个小邻域\(( x_0 - \delta , x_0 + \delta )\)满足整个邻域的振幅\(< \epsilon\),用有限覆盖定理拿出一个开覆盖,然后缩掉这些开覆盖的区间就能拿到一个\(J_k\)的分划(或者干脆将这些开区间的端点和\(J_k\)的端点直接当作一个分划),把这些分划全都并起来就得到了一个划分\(\Delta\).

此时观察这个划分,应当有:

\[ \begin{aligned} & \overline{ S }_\Delta - \underline{ S }_\Delta \\ = & \sum w_k \Delta x_k \\ = & \sum_{ [ x_{ k - 1 } , x_k ] \subseteq \bigcup J_i } w_k \Delta x_k + \sum_{ [ x_{ k - 1 } , x_k ] \subsetneq \bigcup J_i } w_k \Delta x_k \\ < & \epsilon ( b - a ) + ( M - m ) \epsilon \end{aligned} \]

这样就可以使其任意小.

上述证明同样声明了:黎曼可积的充要条件是震荡区间超过某个值的区间长度之和随着细分的增加应当尽可能小.

上述结论立刻能见到比如黎曼函数是黎曼可积的,因为其间断点集就是有理点集,就是零测集.

可积函数的简单性质

不妨设\(f , g \in R [ a , b ]\),则:

  1. \(m ( b - a ) \leq \int_a^b f ( x ) \text{ d } x \leq M ( b - a )\).

  2. \(f \geq 0\)\(\int_a^b f ( x ) \text{ d } x \geq 0\).

  3. \(\int_{ a }^b ( f \pm g ) \text{ d } x = \int_a^b f \text{ d } x \pm \int_a^b g \text{ d } x\).

  4. \(\int_{ a }^b Cf \text{ d } x = C \int_a^b f \text{ d } x\).

  5. (保序性)\(f \geq g\)\(\int_a^b f \text{ d } x \geq \int_a^b g \text{ d } x\).事实上只要\(f \geq g\)在一个稠密子集上成立即可.

  6. 如果\(c \in [ a , b ]\),那么此时\(f \in R [ a , c ] , f \in R [ c , b ]\),并且\(\int_a^b f \text{ d } x = \int_a^c f \text{ d } x + \int_c^b f \text{ d } x\).

  7. 如果\(g\)是连续函数,那么\(g ( f ( x ) ) \in R [ a , b ]\).

  8. \(| f | \in R [ a , b ]\),并且\(| \int_a^b f ( x ) \text{ d } x | \leq \int_a^b | f ( x ) | \text{ d } x\).

  9. 如果除了一个有限的点集以外,\(g = f\),则\(g \in R [ a , b ]\)并且\(\int_a^b g \text{ d } x = \int_a^b f \text{ d } x\).

  10. 如果\(f \geq 0 , \int_a^b f \text{ d } x = 0\),那么\(f\)在其连续点集合上恒等于\(0\).

(1)(2)是显然的,(3)(4)(5)只需将积分看作黎曼和的极限,(6)的话考虑在\([ a , b ]\)上间断点集都是零测的了,那么其子集\([ a , c ] , [ c , b ]\)上的间断点集当然也是零测集.

(7)的话考虑一个几乎处处连续的函数在外面套一层连续函数当然也是几乎处处连续的.

(8)的话考虑绝对值函数是连续函数,然后注意到\(- | f ( x ) | \leq f ( x ) \leq | f ( x ) |\)使用保序性就可以了.

(9)的证明是简单的.但是为什么是有限点集而不是零测集呢?因为如果是无限个点,那么它们不仅会影响自己的连续性,还会影响旁边点的连续性,例如迪利克雷函数.这里可以看出来黎曼函数是有其限制性的,推广到勒贝格积分后会消除这个问题.

(10)的话只需考虑反证法,对于一个连续点\(x_0\),如果\(f ( x_0 ) > 0\),那么周围应当有一个小邻域也大于\(0\),或者干脆用一致连续性取\(> \frac{ f ( x ) }{ 2 }\)的一个小邻域,这样就反证完了.

广义原函数

对于\(f ( x ) : I \to \mathbb{ R }\),称\(F ( x )\)为其广义原函数,若\(\forall c , d \in I , c < d\)满足\(\frac{ F ( d ) - F ( c ) }{ d - c } \in [ \inf_{ [ c , d ] } f ( x ) , \sup_{ [ c , d ] } f ( x ) ]\).容易见到原函数一定是广义原函数,原因是拉格朗日中值定理.

应当容易注意到以下命题:

  1. 局部有界函数的广义原函数是局部李氏连续的,故几乎处处有导数.

  2. \(f ( x )\)\(x_0\)处连续,\(F ( x )\)\(f ( x )\)的广义原函数,则\(F ' ( x_0 )\)存在并且恰好等于\(f ( x_0 )\).

(1)是显然的.

(2)的证明的话,考虑\(| \frac{ F ( x ) - F ( x_0 ) }{ x - x_0 } - f ( x_0 ) | \leq w_f [ x_0 , x ]\),由于\(f ( x_0 )\)连续,那么此时其振幅\(w_f [ x_0 , x ]\)\(x \to x_0\)时应当趋近于\(0\),使用夹逼定理,于是证毕.

牛顿-莱布尼茨公式(微积分基本定理)

先证明一个引理:如果\(f ( x ) \in [ a , b ]\),\(F ( x )\)是其广义原函数,那么\(\underline{ \int_a^b } f ( x ) \text{ d } x \leq F ( b ) - F ( a ) \leq \overline{ \int_a^b } f ( x ) \text{ d } x\).

证明的话,只需证明对于任意分划\(\Delta\)都有\(\underline{ S }_\Delta ( f ) \leq F ( b ) - F ( a ) \leq \overline{ S }_\Delta f ( x )\).而注意到\(F ( b ) - F ( a ) = \sum F ( x_i ) - F ( x_{ i - 1 } ) = \sum \frac{ F ( x_i ) - F ( x_{ i - 1 } ) }{ x_i - x_{ i - 1 } } \Delta x_i\).而根据广义原函数的定义,\(m_i \leq \frac{ F ( x_i ) - F ( x_{ i - 1 } ) }{ x_i - x_{ i - 1 } } \leq M_i\),立刻证毕.

由此显然证明了牛顿-莱布尼茨公式(NL公式):设\(f ( x ) \in R [ a , b ]\),并且能找到其一个广义原函数\(F ( x )\),则\(F ( b ) - F ( a ) = \int_a^b f ( x ) \text{ d } x\).

接下来声明一个定理:如果一个函数\(f ( x ) \in R [ a , b ]\),它就存在广义原函数,而且不同的广义原函数最多相差一个常数.

先证明存在性,我们注意到变限积分\(F ( x ) = \int_a^x f ( t ) \text{ d } t\)显然是\(f ( x )\)的广义原函数,而且它是处处连续的,只需套用定义就可以证明.

再证唯一性,设\(F_1 ( x ) , F_2 ( x )\)都是\(f ( x )\)的广义原函数.根据LN公式,有\(F_1 ( x ) - F_1 ( a ) = \int_{ a }^x f ( t ) \text{ d } t = F_2 ( x ) - F_2 ( a )\),立刻有\(F_1 ( x ) - F_2 ( x ) = F_1 ( a ) - F_2 ( a ) = C\).

此时回忆到\(f ( x )\)\(x_0\)处连续可以推出\(F ( x )\)可导,那么反过来是否成立呢?考虑以下经典反例:

\[ \begin{aligned} F ( x ) & = \begin{cases} 0 & x = 0 \\ x^2 \sin \frac{ 1 }{ x } & \text{ otherwise } \end{cases} \\ f ( x ) & = F ' ( x ) = \begin{cases} 0 & x = 0 \\ 2 x \sin \frac{ 1 }{ x } - \cos \frac{ 1 }{ x } & \text{ otherwise } \end{cases} \end{aligned} \]

但总之可以看到连续函数一定有原函数.

此时回忆到我们曾经定义过左右上下导数\(( F_\pm ) '\)\(( F^\pm ) '\).设\(f \in R [ a , b ]\),\(F\)\(f\)的广义原函数,不妨直接设\(F ( x ) = \int_a^x f ( t ) \text{ d } t\),那么我们声明\(\int_a^b ( F_\pm ) ' \text{ d } x = \int_a^b ( F^\pm ) ' \text{ d } x = \int_a^b f ( x ) \text{ d } x\).

四个证明类似,只考虑其中之一\(F_+ '\)如何证明.取\(m_0 = \inf_{ [ c , d ] } f\),下面令\(G ( x ) = F ( x ) - F ( c ) - m_0 ( x - c ) = \int_c^x ( f ( t ) - m_0 ) \text{ d } t\).当\(x \in [ c , d ]\)时,容易发现\(G ( x )\)单增.既然如此,其任意左右上下导数当然都\(\geq 0\),也就是\(( G_+ ) ' = ( F_+ ) ' - m_0 \geq 0\).同理如果取\(M_0 = \sup_{ [ c , d ] } f\)的话还可以证明\(( F_+ ) ' \leq M_0\).

那么就有\(w_{ F_+ ' } [ c , d ] \leq w_{ f } [ c , d ]\),我们知道\(f\)是黎曼可积的,也就是\(0 \leq \sum w_{ F_+ ' } [ x_{ i - 1 } , x_i ] \Delta x_i \leq \sum w_f [ x_{ i - 1 } , x_i ] \Delta x_i < \epsilon\),此时就可以证明其可积性.

而注意到\(f\)几乎处处连续,\(F\)几乎处处可导,并且在\(f\)的连续点处\(f ( x ) = F_+ '\),这个连续点集当然是稠密集,因此它们的积分相等,这样就做完了.

Example1

\(\int_a^b \text{ sgn } ( x ) \text{ d } x\).

注意到\(\text{ sgn } ( x )\)的广义原函数是\(| x |\),所以\(\int_a^b \text{ sgn } ( x ) \text{ d } x = | b | - | a |\).

Example2(黎曼引理)

\(f \in R [ a , b ] , g \in R [ 0 , T ]\)并且\(g\)\(\mathbb{ R }\)上以\(T\)为周期.求证:

\[ \lim_{ \lambda \to \infty } \int_a^b f ( x ) g ( \lambda x ) \text{ d } x = \cfrac{ \int_0^T g ( x ) \text{ d } x }{ T } \int_a^b f ( x ) \text{ d } x \]

首先注意到:

$$ \[\begin{aligned} & \lim_{ \lambda \to \infty } \int_a^b f ( x ) g ( \lambda x ) \text{ d } x \\ = & \lim_{ \lambda \to \infty } \int_a^b f ( x ) ( g ( \lambda x ) - \cfrac{ \int_0^T g ( x ) \text{ d } x }{ T } + \cfrac{ \int_0^T g ( x ) \text{ d } x }{ T } ) \text{ d } x \\ \end{aligned}\]

$$

因此可以用\(g ( \lambda x ) - \cfrac{ \int_0^T g ( x ) \text{ d } x }{ T }\)代替\(g\),这样就能满足\(\int_0^T g ( x ) \text{ d } x = 0\).

接下来只需证明\(\lim_{ \lambda \to \infty } \int_a^b f ( x ) g ( \lambda x ) \text{ d } x = 0\),不妨设\(| f ( x ) | \leq M , | g ( x ) | \leq M\).

考虑对分划\(\Delta\),满足\(\sum w_i \Delta x_i \leq \epsilon\):

\[ \begin{aligned} & | \int_a^b f ( x ) g ( \lambda x ) \text{ d } x | \\ = & | \sum \int_{ x_{ i - 1 } }^{ x_i } ( f ( x ) - f ( x_i ) + f ( x_i ) ) g ( \lambda x ) \text{ d } x | \\ \leq & | \sum \int_{ x_{ i - 1 } }^{ x_i } f ( x_i ) g ( \lambda x ) \text{ d } x | + | \sum \int_{ x_{ i - 1 } }^{ x_i } ( f ( x ) - f ( x_i ) ) g ( \lambda x ) \text{ d } x | \\ \leq & \sum | f ( x_i ) | \cdot | \int_{ x_{ i - 1 } }^{ x_i } g ( \lambda x ) \text{ d } x | + M \sum w_i \Delta x_i \\ \leq & M \sum | \int_{ x_{ i - 1 } }^{ x_i } g ( \lambda x ) \text{ d } x | + M \sum w_i \Delta x_i \\ \leq & M \sum | \frac{ 1 }{ \lambda } \int_{ \lambda x_{ i - 1 } }^{ \lambda x_i } g ( x ) \text{ d } x | + M \epsilon \end{aligned} \]

接下来设\(G ( x ) = \int_0^x g ( t ) \text{ d } t\),由于\(g\)的周期性,而且其在任何一个长度为\(T\)的区间上积分为\(0\),所以\(| G ( x ) | \leq W\),那么\(\forall x , y , | G ( x ) - G ( y ) | \leq 2 W\).

那么上式就\(\leq 2 MW \frac{ n }{ \lambda } + M \epsilon\),这里虽然有个无穷大的\(n\),但由于\(\lambda\)可以尽可能大且在\(n\)之后决定取值,因此这个影响可以被消除.

这个命题的一个平凡推论是\(g ( x ) = \sin ( nx )\):

\[ \lim_{ \lambda \to \infty } \int_a^b f ( x ) \sin ( \lambda x ) \mathrm{ d } x = \lim_{ \lambda \to \infty } \int_a^b f ( x ) \cos ( \lambda x ) \mathrm{ d } x = 0 \]

Example3

\(\lim_{ n \to \infty } I_n\),其中\(I_n = \frac{ 1 }{ n^{ 1 + \alpha } } ( \sum_{ k = 1 }^n k^\alpha ) = \frac{ 1 }{ n } \sum_{ k = 1 }^n ( \frac{ k }{ n } )^\alpha\).

注意到\(n \to \infty\)的时候,上面就等于\(\int_0^1 x^\alpha \text{ d } x = \frac{ 1 }{ 1 + \alpha }\).

Example4(Dirichlet核)

\(\int_0^{ \frac{ \pi }{ 2 } } \frac{ \sin ( ( 2 n + 1 ) x ) }{ \sin x } \text{ d } x\).

注意到根据积化和差有:

\[ \begin{aligned} & \int_0^{ \frac{ \pi }{ 2 } } \frac{ \sin ( ( 2 n + 1 ) x ) }{ \sin x } \text{ d } x \\ = & \int_0^{ \frac{ \pi }{ 2 } } ( 1 + 2 \sum_k \cos ( 2 kx ) ) \text{ d } x \\ = & \frac{ \pi }{ 2 } + 2 \sum_{ k } \frac{ 1 }{ 2 k } \sin ( k \pi ) \\ = & \frac{ \pi }{ 2 } \end{aligned} \]

Example5

考虑\(f \in \mathbb{ R }\),\(\forall a < b\),都有\(f \in R [ a , b ]\),已知\(f ( x ) = \int_0^x f ( t ) \text{ d } t\),求证\(f \equiv 0\).

首先注意到变限积分是李氏连续的,因此\(f\)当然就是局部李氏连续的,因此自然看出\(f\)\(\mathbb{ R }\)上都是连续的.既然如此,那\(f\)就在\(\mathbb{ R }\)上处处可导并且\(f ' ( x ) \equiv f ( x )\),同理还可以看出\(f\)实际上任意阶可导.理应见到\(f\)应当和\(e^x\)有关,凑\(g ( x ) = \frac{ f ( x ) }{ e^x }\),则\(g ' ( x ) = \frac{ f ' - f }{ e^x } \equiv 0\),这立刻得到\(g ( x ) \equiv C\).

然而\(g ( 0 ) = f ( 0 ) = 0\),于是\(g \equiv C \equiv 0\),所以\(f \equiv 0\).

换元法

不妨设\(f \in R [ a , b ] , F ' = f\),\(\varphi ( t ) : [ \alpha , \beta ] \to [ a , b ]\),\(\varphi ( \alpha ) = a , \varphi ( \beta ) = b\),并且\(\varphi\)可导,而且\(f ( \varphi ( t ) ) \varphi ' ( t ) \in R [ \alpha , \beta ]\),则:

\[ \int_a^b f ( x ) \text{ d } x = \int_\alpha^\beta f ( \varphi ( t ) ) \varphi ' ( t ) \text{ d } t \]

证明的话,考虑考虑NL公式,应当有:

\[ \begin{aligned} ( F ( \varphi ( t ) ) ) ' & = f ( \varphi ( t ) ) \varphi ' ( t ) \\ \int_\alpha^\beta ( F ( \varphi ( t ) ) ) ' & = \int_\alpha^\beta f ( \varphi ( t ) ) \varphi ' ( t ) \\ F ( b ) - F ( a ) & = \int_\alpha^\beta f ( \varphi ( t ) ) \varphi ' ( t ) \end{aligned} \]

然而回忆到有原函数和是否黎曼可积之间是有区别的,适当调整条件可以得到另一个策略的换元法:不妨设\(f \in R [ a , b ] , \varphi ( t ) : [ \alpha , \beta ] \to [ a , b ]\),并且\(\varphi ( t )\)单增,\(\varphi ( \alpha ) = a , \varphi ( \beta ) = b\),\(\varphi\)可导并且\(\varphi ' \in R [ \alpha , \beta ]\),则\(f ( \varphi ( t ) ) \varphi ' ( t ) \in R [ \alpha , \beta ]\)且上述积分仍然成立.

策略是对两边做黎曼和,利用\(\varphi\)的单调性和一致连续性,可以取\(S_{ \Delta } = \sum f ( \eta_k ) \Delta x_k\),利用中值定理可以写作\(S_{ \Delta } = \sum f ( \varphi ( \xi_k ) ) \varphi ' ( \mu_k ) \Delta t_k\).

而另一边的黎曼和\(\sigma_{ \Delta ' } = \sum f ( \varphi ( \xi_k ) ) \varphi ' ( \xi_k ) \Delta t_k\).

只需证明二者之差趋近于\(0\),令\(M = \sup | f | ,\)做差得到:

\[ \begin{aligned} & | \sum f ( \varphi ( \xi_k ) ) ( \varphi ' ( \xi_k ) - \varphi ' ( \mu_k ) ) \Delta t_k | \\ \leq & M | \sum ( \varphi ' ( \xi_k ) - \varphi ' ( \mu_k ) ) \Delta t_k | \\ \leq & M | \sum w_k \Delta t_k | \end{aligned} \]

\(\varphi\)可积,上述趋近于\(0\).

这些定理都有点诡异,它们会在RS积分处再详细讨论.

Example1

\(\int_0^{ \frac{ \pi }{ 2 } } \frac{ \sin x }{ \sin x + \cos x } \text{ d } x\).

注意到:

\[ \begin{aligned} & \int_0^{ \frac{ \pi }{ 2 } } \frac{ \sin x }{ \sin x + \cos x } \text{ d } x \\ = & \int_0^{ \frac{ \pi }{ 4 } } \left ( \frac{ \sin x }{ \sin x + \cos x } + \frac{ \sin ( \frac{ \pi }{ 2 } - x ) }{ \sin ( \frac{ \pi }{ 2 } - x ) + \cos ( \frac{ \pi }{ 2 } - x ) } \right ) \text{ d } x \\ = & \int_0^{ \frac{ \pi }{ 4 } } \frac{ \sin x + \cos x }{ \sin x + \cos x } \text{ d } x \\ = & \frac{ \pi }{ 4 } \end{aligned} \]

其实就是找个点对折.

Example2

\(I = \int_0^\pi \frac{ \theta \sin \theta }{ a + b \cos^2 \theta } \text{ d } \theta\),其中\(a , b > 0\).

\(\theta = \pi - \varphi\),应当有:

\[ \begin{aligned} I & = - \int_\pi^0 \frac{ ( \pi - \varphi ) \sin \varphi }{ a + b \cos^2 \varphi } \text{ d } \varphi \\ & = \int_0^\pi \frac{ ( \pi - \varphi ) \sin \varphi }{ a + b \cos^2 \varphi } \text{ d } \varphi \\ & = \pi \int_{ 0 }^\pi \frac{ \sin \varphi }{ a + b \cos^2 \varphi } \text{ d } \varphi - I \end{aligned} \]

移项得到:

\[ \begin{aligned} I & = \frac{ \pi }{ 2 } \int_0^\pi \frac{ - \text{ d } \cos \theta }{ a + b \cos^2 \theta } \\ & = \frac{ \pi }{ \sqrt{ ab } } \arctan \sqrt{ \frac{ b }{ a } } \end{aligned} \]

Example3

如果\(\forall a < b , f \in R [ a , b ]\),并且\(f ( x + y ) = f ( x ) + f ( y )\)恒成立,求证\(f ( x ) \equiv f ( 1 ) x\).

固定\(x\),对\(y\)\([ 0 , 1 ]\)积分,得到:

\[ f ( x ) = \int_x^{ x + 1 } f ( t ) \text{ d } t - \int_0^1 f ( y ) \text{ d } y \]

而变限积分是局部李氏连续的,所以\(f ( x )\)局部连续,所以\(f ( x )\)整体连续,立刻得到\(f ( x )\)可导,立刻得到其是\(C^\infty\)的.

那就可以两边对\(x\)求导,得到\(\forall y , f ' ( x + y ) = f ' ( x )\),因此\(f ' \equiv C\).

分部积分

\(u , v \in R [ a , b ]\)并且均可导,而且\(u ' , v ' \in R [ a , b ]\),则:

\[ ( uv ) ' = u ' v + uv ' \]

从这里能看出\(( uv ) '\)也是黎曼可积的,那就可以用牛顿莱布尼茨公式两边积分得到:

\[ \begin{aligned} \int_a^b uv ' \text{ d } x & = uv \mid_a^b - \int_a^b u ' v \text{ d } x \\ & = \int_a^b u \text{ d } v = uv \mid_a^b - \int_a^b v \text{ d } u \end{aligned} \]

这个版本当然是简单的,那能不能上点难度呢?

不妨考虑\(f , g \in R [ a , b ]\),那它们的广义原函数可以取为\(F ( x ) = \int_a^x f ( t ) \text{ d } t + A , G ( x ) = \int_a^x g ( t ) \text{ d } t + B\).

\(\int_a^b Fg \text{ d } x = FG \mid_a^b - \int_a^b Gf \text{ d } x\).

先证明一个引理:

\[ \lim_{ \lambda ( \Delta ) \to 0 } \sum_k^n f ( \xi_k ) \int_{ x_{ i - 1 } }^{ x_i } g ( t ) \text{ d } t = \int_a^b f ( x ) g ( x ) \text{ d } x \]

证明无非是用黎曼和,设\(M = \sup | f |\),直接考虑:

\[ \begin{aligned} & | \sum_k^n f ( \xi ) \int_{ x_{ i - 1 } }^{ x_i } g \mathrm{ d } t - \sum_k^n \int_{ x_{ i - 1 } }^{ x_i } fg \text{ d } t | \\ \leq & \sum | f ( \xi_k ) | \int_{ x_{ i - 1 } }^{ x_i } | g ( t ) - g ( \xi_k ) | \text{ d } t + | \sum f ( \xi_k ) g ( \xi_k ) \Delta t_k - \int_a^b f g \text{ d } t | \\ \leq & M \sum w_k ( g ) \text{ d } t + \sum w_k ( fg ) \Delta t_i \end{aligned} \]

这个当然趋向于\(0\).

使用abel求和法则,得到:

\[ \begin{aligned} ( FG ) \mid_a^b & = \sum_k ( F ( x_k ) G ( x_k ) - F ( x_{ k - 1 } ) G ( x_{ k - 1 } ) ) \\ & = \sum_k ( F ( x_k ) G ( x_k ) - F ( x_{ k - 1 } ) G ( x_k ) + F ( x_{ k - 1 } ) G ( x_k ) - F ( x_{ k - 1 } ) G ( x_{ k - 1 } ) ) \\ & = \sum_{ k }^n G ( x_k ) ( F ( x_k ) - F ( x_{ k - 1 } ) ) + \sum_{ k } F ( x_{ k - 1 } ) ( G ( x_i ) - G ( x_{ i - 1 } ) ) \\ & = \sum_k G ( x_i ) \int_{ x_{ i - 1 } }^{ x_i } f ( x ) \text{ d } x + \sum_{ k }^n F ( x_{ i - 1 } ) \int_{ x_{ i - 1 } }^{ x_i } g ( x ) \text{ d } x \end{aligned} \]

使用引理就完事了.

Example1

求证:

\[ \int_a^x ( \int_a^t f ( u ) \text{ d } u ) \text{ d } t = \int_a^x ( x - t ) f ( t ) \text{ d } t \]

\(F ( x ) = \int_a^t f ( t ) \text{ d } t\),\(g ( x ) = 1 , G ( x ) = x - a\)就可以直接套用分部积分公式得到:

$$ \[\begin{aligned} LHS & = \int_a^x F ( t ) g ( t ) \text{ d } t \\ & = FG \mid_a^x - \int_a^x f ( t ) G ( t ) \text{ d } t \\ & = ( x - a ) \int_a^x f ( t ) \text{ d } t - \int_a^x f ( t ) ( t - a ) \text{ d } t \\ \end{aligned}\]

$$

这样就做完了.

或者设\(F ( a ) = 0\),将上式记作:

\[ \int_a^x F ( t ) \mathrm{ d } t = \int_a^x ( x - t ) F ' ( t ) \mathrm{ d } t \]

Example2

\(I = \int_0^{ \frac{ \pi }{ 2 } } \frac{ x \sin x \cos x }{ ( a^2 \cos^2 x + b^2 \sin^2 x )^2 } \text{ d } x\),其中\(a , b > 0\).

有:

\[ \begin{aligned} & \int_0^{ \frac{ \pi }{ 2 } } \frac{ x \sin x \cos x }{ ( a^2 \cos^2 x + b^2 \sin^2 x )^2 } \text{ d } x \\ = & \frac{ - 1 }{ 2 ( b^2 - a^2 ) } \int_0^{ \frac{ \pi }{ 2 } } x \text{ d } ( \frac{ 1 }{ a^2 + ( b^2 - a^2 ) \sin^2 x } ) \\ = & \frac{ - 1 }{ 2 ( b^2 - a^2 ) } ( \frac{ \pi }{ 2 b^2 } - \int_0^{ \frac{ \pi }{ 2 } } \frac{ \text{ d } x }{ a^2 \cos^2 x + b^2 \sin^2 x } ) \\ = & \frac{ 1 }{ 2 ( b^2 - a^2 ) } ( - \frac{ \pi }{ 2 b^2 } + \int_0^{ \frac{ \pi }{ 2 } } \frac{ \text{ d } \tan x }{ a^2 + b^2 \tan^2 x } ) \\ = & \frac{ 1 }{ 2 ( b^2 - a^2 ) } ( - \frac{ \pi }{ 2 b^2 } + \frac{ \pi }{ 2 ab } ) \\ = & \frac{ \pi }{ 4 ab^2 ( a + b ) } \end{aligned} \]

Example3(Wallis公式)

\(I_n = \int_0^{ \frac{ \pi }{ 2 } } \sin^n x \text{ d } x\).

换元后直接分部积分:

$$ \[\begin{aligned} I_n & = - \int_0^{ \frac{ \pi }{ 2 } } \sin^{ n - 1 } x \text{ d } \cos x \\ & = \int_0^{ \frac{ \pi }{ 2 } } \cos x \text{ d } ( \sin^{ n - 1 } x ) \\ & = ( n - 1 ) \int_0^{ \frac{ \pi }{ 2 } } \sin^{ n - 2 } x ( 1 - \sin^2 x ) \text{ d } x \\ & = ( n - 1 ) I_{ n - 2 } - ( n - 1 ) I_n \\ \end{aligned}\]

$$

于是\(I_n = \frac{ n - 1 }{ n } I_{ n - 2 }\).

注意到\(I_0 = \frac{ \pi }{ 2 } , I_1 = 1\),所以\(I_{ 2 m } = \frac{ ( 2 m - 1 ) ! ! }{ ( 2 m ) ! ! } \frac{ \pi }{ 2 } , I_{ 2 m + 1 } = \frac{ ( 2 m ) ! ! }{ ( 2 m + 1 ) ! ! }\).

然而注意到\(I_n\)随着\(n\)增大而减小,于是应该有\(I_{ 2 m + 1 } \leq I_{ 2 m } \leq I_{ 2 m - 1 }\),展开得到:

\[ \begin{aligned} a_n & = \frac{ 1 }{ 2 n + 1 } ( \frac{ ( 2 n ) ! ! }{ ( 2 n - 1 ) ! ! } )^2 \\ & \leq \frac{ \pi }{ 2 } \leq \\ \frac{ 1 }{ 2 n } ( \frac{ ( 2 n ) ! ! }{ ( 2 n - 1 ) ! ! } )^2 & = b_n \end{aligned} \]

\(\lim a_n = \lim b_n\),因此\(\lim a_n = \lim b_n = \frac{ \pi }{ 2 }\).

泰勒公式的积分余项

回忆到泰勒公式的余项:

\(f ( x )\)\(a\)处有\(n\)阶导数,则\(f ( x ) = \sum_{ k = 0 }^n \frac{ f^{ ( k ) } ( a ) }{ k ! } ( x - a )^k + o ( ( x - a )^n )\).

\(f ( x )\)\(( \alpha , \beta )\)上有\(n + 1\)阶导数,则\(f ( x ) = \sum_{ k = 0 }^n \frac{ f^{ ( k ) } ( a ) }{ k ! } ( x - a )^k + \frac{ f^{ ( n + 1 ) } ( \xi ) }{ ( n + 1 ) ! } ( x - a )^{ n + 1 }\).

事实上还可以写积分余项,若\(f^{ ( n + 1 ) } \in R [ \alpha , \beta ]\),则\(f ( x ) = \sum_{ k = 0 }^n \frac{ f^{ ( k ) } ( a ) }{ k ! } ( x - a )^k + \frac{ 1 }{ n ! } \int_a^x ( x - t )^n f^{ ( n + 1 ) } ( t ) \text{ d } t\).

首先能写出\(f ( x ) = f ( a ) + \int_a^x f ' ( t ) \text{ d } t\),考虑不断展开后面那一项,用分部积分注意到:

\[ \begin{aligned} & \int_a^x f^{ ( m + 1 ) } ( t ) \frac{ ( x - t )^m }{ m ! } \text{ d } t \\ = & \int_a^x f^{ ( m + 1 ) } ( t ) \text{ d } ( - \frac{ ( x - t )^{ m + 1 } }{ ( m + 1 ) ! } ) \\ = & f^{ ( m + 1 ) } ( a ) \frac{ ( x - a )^{ m + 1 } }{ ( m + 1 ) ! } + \frac{ 1 }{ ( m + 1 ) ! } \int_a^x ( x - t )^{ m + 1 } f^{ ( m + 2 ) } ( t ) \text{ d } t \end{aligned} \]

Example1

函数\(f ( x )\)\([ a , b ]\)上各阶导数存在且非负,求证:

\[ f ( x ) = \sum_{ n = 0 }^\infty \frac{ f^{ ( n ) } ( a ) }{ n ! } ( x - a )^n \]

其实这个题应该放到幂级数那里,不过确实和积分余项关系更大.分析的话首先会发现要证两边相等一定要搞定余项对吧,但是拉格朗日余项要求对所有的点的任意阶导数都存在一个控制,但这是做不到的,原函数对导函数的控制只能是在一段连续区间上的控制(用NL公式),而做不到对所有单点的控制.因此使用积分余项,一个自然的想法是除了\(b\)端点以外的误差应该都比\(b\)处的误差要小,注意到:

\[ \frac{ x - t }{ x - a } \leq \frac{ b - t }{ b - a } \]

所以:

\[ \begin{aligned} R_n ( x ) & = \frac{ 1 }{ n ! } \int_a^x f^{ ( n + 1 ) } ( t ) ( x - t )^n \mathrm{ d } t \\ & \leq \frac{ ( x - a )^n }{ ( b - a )^n } \frac{ 1 }{ n ! } \int_a^x f^{ ( n + 1 ) } ( t ) ( b - t )^n \mathrm{ d } t \\ & \leq \frac{ ( x - a )^n }{ ( b - a )^n } R_n ( b ) \end{aligned} \]

接下来如果能控制\(R_n ( b )\)就万事大吉,发现:

\[ \begin{aligned} R_n ( b ) & = \frac{ 1 }{ n ! } \int_a^b f^{ ( n + 1 ) } ( t ) ( b - t )^n \mathrm{ d } t \\ & = \frac{ 1 }{ n ! } \int_a^b ( b - t )^n \mathrm{ d } f^{ ( n ) } ( t ) \\ & = - \frac{ ( b - a )^n }{ n ! } f^{ ( n ) } ( a ) + \frac{ 1 }{ ( n - 1 ) ! } \int_a^b ( b - t )^{ n - 1 } f^{ ( n ) } ( t ) \\ & \leq R_{ n - 1 } ( b ) \\ & \leq \cdots \leq f ( b ) - f ( a ) \end{aligned} \]

这就搞定了,当\(x \in [ a , b )\)的时候,由于\(\frac{ ( x - a )^n }{ ( b - a )^n } \to 0\)而自然完事.而单调函数的端点是随便延拓的,写下来的话,如果端点处不满足则必然端点处不收敛,意味着:

\[ \lim_{ x \to b - 0 } \sum_{ n = 0 }^\infty \frac{ f^{ ( n ) } ( a ) }{ n ! } ( x - a )^n = + \infty \]

但这不可能,因为左边的恰好是原本收敛的那个函数\(x \to b - 0\)处的表现.

积分第一中值定理

\(f , g \in R [ a , b ]\)并且\(g\)不变号.不妨设\(f\)的连续点集为\(A\),称它的本性上界\(M = \inf_{ x \in A } ( f ( x ) )\),同理定义本性下界\(m\).则\(\exists \mu \in [ m , M ]\)使得:

\[ \int_a^b fg ( x ) \text{ d } x = \mu \int_a^b g ( x ) \text{ d } x \]

来证明这个事,不妨设\(g ( x ) \geq 0\).

\(\int_a^b g ( x ) \text{ d } x = 0\)的时候,此时由于\(g ( x ) \geq 0\),因此\(g ( x )\)一定几乎处处为零(否则,存在一个\(g\)的连续点处不为\(0\),在这个点邻域附近卡一下就能卡掉),那左右两边都等于\(0\).

\(\int_a^b g ( x ) \text{ d } x > 0\)的时候,由于\(mg \leq gf \leq Mg\)对于\(f\)的连续点集\(A\)成立,而这是个稠密集,立刻见到\(\int_a^b mg \text{ d } x \leq \int_a^b gf \text{ d } x \leq \int_a^b Mg \text{ d } x\).于是\(\mu = \frac{ \int_a^b f g \text{ d } x }{ \int_a^b g \text{ d } x } \in [ m , M ]\).

作为更加常见的版本,当\(f \in C [ a , b ]\)的时候,\(\exists \xi \in ( a , b )\)使得:

\[ \int_a^b fg ( x ) \text{ d } x = f ( \xi ) \int_a^b g ( x ) \text{ d } x \]

该版本与之前的区别在于要断言\(\xi \ne a , \xi \ne b\).使用反证法,在\(\int_a^b g ( x ) \text{ d } x > 0\)的时候,不妨假设\(\xi = b\),此时前面\(( a , b )\)中不能有和\(f ( b )\)相同的,又因为其是连续函数,因此不妨设\(( a , b )\)\(f ( x )\)均比\(f ( b )\)要小,用极限把端点用保号性卡出来就知道\([ a , b ]\)\(f ( x ) \leq f ( b )\).

由于此时\(\int_a^b g ( x ) \text{ d } x > 0\),于是一定存在一个\(x_0 , g ( x_0 ) > 0\),并且\(x_0\)是一个连续点.此时就存在其一个小邻域都\(> \frac{ 1 }{ 2 } g ( x_0 ) > 0\),并且这个邻域上的\(f ( x ) < f ( b )\).在这个邻域上立刻可以发现:

\[ \int_a^b ( M - f ( x ) ) g ( x ) \text{ d } x > 0 \]

这就有了矛盾.

Example1

\(f \in R [ 0 , 1 ]\),\(f ( + 0 )\)存在,则:

\[ \lim_{ n \to + \infty } \int_0^1 \frac{ n f ( x ) }{ 1 + n^2 x^2 } \text{ d } x = \frac{ \pi }{ 2 } f ( + 0 ) \]

不妨设\(f ( 0 ) = f ( + 0 )\),因为改变有限个点的取值是不会改变其积分的.

此时:

\[ \begin{aligned} & \int_0^1 \frac{ n f ( x ) }{ 1 + n^2 x^2 } \text{ d } x \\ = & \int_0^{ \frac{ 1 }{ \sqrt{ n } } } \frac{ n f ( x ) }{ 1 + n^2 x^2 } \text{ d } x + \int_{ \frac{ 1 }{ \sqrt{ n } } }^{ 1 } \frac{ n f ( x ) }{ 1 + n^2 x^2 } \text{ d } x \end{aligned} \]

而考虑:

\[ \begin{aligned} & \int_0^{ \frac{ 1 }{ \sqrt{ n } } } \frac{ n f ( x ) }{ 1 + n^2 x^2 } \text{ d } x \\ = & \mu \int_0^{ \frac{ 1 }{ \sqrt{ n } } } \frac{ n }{ 1 + n^2 x^2 } \text{ d } x \\ = & \mu \arctan \sqrt{ n } \to f ( 0 ) \frac{ \pi }{ 2 } \end{aligned} \]

而后者:

\[ \begin{aligned} & | \int_{ \frac{ 1 }{ \sqrt{ n } } }^{ 1 } \frac{ n f ( x ) }{ 1 + n^2 x^2 } \text{ d } x | \\ \leq & \sup | f | ( \arctan ( nx ) \mid_{ \frac{ 1 }{ \sqrt{ n } } }^1 ) \\ = & \sup | f | \arctan ( \frac{ n - \sqrt{ n } }{ 1 + n \sqrt{ n } } ) \to 0 \end{aligned} \]

这样就做完了.这里拆成两部分可能是难以想到的,事实上这么做的意义是使得\(\mu \to f ( 0 )\)而放缩,其中这个\(nx\)的变化量很大,因此可以稍微匀一下变化.

Example2

\(f\)二阶可导,并且一,二阶导可积,则\(\exists \xi \in ( a , b )\),使得\(\int_a^b f ( x ) \text{ d } x = ( b - a ) f ( \frac{ a + b }{ 2 } ) + \frac{ ( b - a )^3 }{ 24 } f ' ' ( \xi )\).

考虑:

\[ \begin{aligned} & \int_a^b f ( x ) \text{ d } x \\ = & \int_{ a }^{ \frac{ a + b }{ 2 } } f ( x ) \text{ d } x + \int_{ \frac{ a + b }{ 2 } }^{ b } f ( x ) \text{ d } x \\ = & \int_0^{ \frac{ b - a }{ 2 } } f ( a + t ) \text{ d } t + \int_0^{ \frac{ b - a }{ 2 } } f ( b - t ) \text{ d } t \\ = & \int_0^{ \frac{ b - a }{ 2 } } f ( a + t ) + f ( b - t ) \text{ d } t \\ = & t ( f ( a + t ) + f ( b - t ) ) \mid_0^{ \frac{ b - a }{ 2 } } - \int_0^{ \frac{ b - a }{ 2 } } t ( f ' ( a + t ) - f ' ( b - t ) ) \text{ d } t \\ = & ( b - a ) f ( \frac{ a + b }{ 2 } ) - \int_0^{ \frac{ b - a }{ 2 } } t ( f ' ( a + t ) - f ' ( b - t ) ) \text{ d } t \end{aligned} \]

前半部分已经完事了,接下来看后半部分,继续分部积分:

\[ \begin{aligned} & \int_0^{ \frac{ b - a }{ 2 } } t ( f ' ( a + t ) - f ' ( b - t ) ) \text{ d } t \\ = & \frac{ 1 }{ 2 } \int_0^{ \frac{ b - a }{ 2 } } ( f ' ( a + t ) - f ' ( b - t ) ) \text{ d } ( t^2 ) \\ = & \left ( \frac{ t^2 }{ 2 } ( f ' ( a + t ) - f ' ( b - t ) ) \right ) \mid_{ 0 }^{ \frac{ b - a }{ 2 } } - \int_0^{ \frac{ b - a }{ 2 } } \frac{ t^2 }{ 2 } ( f ' ' ( a + t ) + f ' ' ( b - t ) ) \text{ d } t \\ = & - \int_0^{ \frac{ b - a }{ 2 } } \frac{ t^2 }{ 2 } ( f ' ' ( a + t ) + f ' ' ( b - t ) ) \text{ d } t \\ = & \mu \int_0^{ \frac{ b - a }{ 2 } } \frac{ t^2 }{ 2 } \text{ d } t \\ = & \mu \frac{ ( b - a )^3 }{ 48 } \end{aligned} \]

接下来看\(\mu\),\(\mu \in [ \inf ( f ' ' ( a + t ) + f ' ' ( b - t ) ) , \sup ( f ' ' ( a + t ) + f ' ' ( b - t ) ) ]\),由导函数介值性,意味着必然\(\exists \xi_1 \in [ 0 , \frac{ b - a }{ 2 } ]\)使得\(\mu = f ' ' ( a + \xi_1 ) + f ' ' ( b - \xi_1 )\).再用一次\(2 f ' '\)的介值性得到\(\mu = 2 f ' ' ( \xi ) , \xi \in ( a + \xi_1 , b - \xi_1 ) \subseteq ( a , b )\).

积分第二中值定理

\(g \in R [ a , b ] , f \geq 0\),并且\(f\)单调,则:

  1. \(f\)单调递减时,\(\exists \xi \in [ a , b ]\),\(\int_a^b f g \text{ d } x = f ( a + 0 ) \int_a^\xi g ( x ) \text{ d } x\).

  2. \(f\)单调递增时,\(\exists \xi \in [ a , b ]\),\(\int_a^b f g \text{ d } x = f ( b - 0 ) \int_\xi^b g ( x ) \text{ d } x\).

  3. \(\exists \xi \in [ a , b ]\),\(\int_a^b f g \text{ d } x = f ( a + 0 ) \int_a^\xi g \text{ d } x + f ( b - 0 ) \int_\xi^b g \text{ d } x\).

  4. 在上述基础上,如果\(f\)不是几乎常值函数,那么上述的\(\xi \in ( a , b )\).

(1)(2)相似,下面只对(1)进行证明:

不妨设\(f ( a ) = f ( a + 0 ) , G = \int_a^x g ( x ) \text{ d } x\)\(g\)的广义原函数,其满足\(G ( a ) = 0\),不妨设\(M = \sup G , m = \inf G\),回忆到:

\[ \begin{aligned} \int_a^b f g \text{ d } x & = \lim_{ \lambda ( \Delta ) \to 0 } \sum_{ i = 1 }^n f ( x_{ i - 1 } ) \int_{ x_{ i - 1 } }^{ x_i } g \text{ d } x \\ & = \sum_{ i = 1 }^n f ( x_{ i - 1 } ) ( G ( x_i ) - G ( x_{ i - 1 } ) ) \\ & = f ( x_{ n - 1 } ) G ( x_n ) + \sum_{ i = 1 }^{ n - 1 } ( f ( x_{ i - 1 } ) - f ( x_{ i } ) ) G ( x_i ) \\ & \leq f ( a ) M \end{aligned} \]

在最后一步放缩进行修改就可以改为\(\geq f ( a ) m\),而我们已经得知\(G\)的连续性,因此用介值性就可以解决上述问题.

难点在于(4)如何证明.

当其不是几乎常值函数的时候,应该满足\(f ( a + 0 ) > f ( b - 0 )\).

\(\int_a^b f g \text{ d } x = 0\)的时候,如果迫不得已必须取端点就应当有\(\forall \xi \in ( a , b )\),都有\(\int_a^\xi g \text{ d } x \ne 0\),由于其连续导出的介值性那就当然拿到了\(G\)的保号性.我们上面已经用Abel变换得到了:

$$ \[\begin{aligned} \int_a^b f g \text{ d } x & = \sum_{ i = 1 }^n f ( x_{ i - 1 } ) ( G ( x_i ) - G ( x_{ i - 1 } ) ) \\ & = f ( x_{ n - 1 } ) G ( x_n ) + \sum_{ i = 1 }^{ n - 1 } ( f ( x_{ i - 1 } ) - f ( x_{ i } ) ) G ( x_i ) \\ \end{aligned}\]

$$

此时考虑取\(c , d\)使得\(a < c < d < b\),并且满足\(f ( c ) > f ( d )\),由于\(f\)并不是几乎常值函数,这当然可以做到,上式每一项都是\(\geq 0\)的,那就可以把区间从\([ a , b ]\)重新控制到\([ c , d ]\)中.于是此时上式立刻:

\[ \begin{aligned} & \int_a^b f g \text{ d } x \\ \geq & ( f ( c ) - f ( d ) ) \min_{ [ c , d ] } G ( x ) > 0 \end{aligned} \]

然而我们假设中\(\int_a^b f g \text{ d } x = 0\),这样就导出了矛盾.

接下来考虑\(\int_a^b f g \text{ d } x \ne 0\)的情况,如果其迫不得已必须取在端点的话当然要取到右端点此时应该有\(\int_a^b f g \text{ d } x = f ( a ) \int_a^b g \text{ d } x\).

仍然看上面的Abel变换后的结果,同时按照上面同样的办法取出一个子区间\([ c , d ]\).回忆到为了保证前面都没有能和\(G ( b )\)相同的,因此\(G ( b )\)必然是前面的最大值.再回忆到\(G ( a ) = 0\),立刻能得到\(G ( b ) > \sup_{ [ a , c ] } G ( x )\),设后者为\(M\),应当有:

$$ \[\begin{aligned} & \int_a^b f g \text{ d } x \\ = & f ( x_{ n - 1 } ) G ( b ) + \sum_{ i = 1 }^{ n - 1 } ( f ( x_{ i - 1 } ) - f ( x_{ i } ) ) G ( x_i ) \\ \leq & f ( x_{ n - 1 } ) G ( b ) + M ( f ( a ) - f ( c ) ) + G ( b ) ( f ( c ) - f ( b ) ) \\ \end{aligned}\]

$$

这里这个\(f ( x_{ n - 1 } )\)很烦,但是当\(\lambda ( \Delta ) \to 0\)的时候当然会使得\(f ( x_{ n - 1 } ) \to f ( b - 0 )\),上式变更为:

\[ \begin{aligned} & \int_a^b f g \text{ d } x \\ \leq & f ( b ) G ( b ) + M ( f ( a ) - f ( c ) ) + G ( b ) ( f ( c ) - f ( b ) ) \\ = & M ( f ( a ) - f ( c ) ) + G ( b ) f ( c ) \\ < & f ( a ) G ( b ) \end{aligned} \]

这就导出了矛盾.

最后来看(3),不妨设\(f\)单减,设\(\varphi ( x ) = f ( x ) - f ( b ) \geq 0\)且单减,用(1)的结论得到\(\exists \xi \in [ a , b ]\)使得\(\int_a^b \varphi g \text{ d } x = \varphi ( a ) \int_a^\xi g \text{ d } x\).变形后就可以得到原本的式子.单增是同理的.总之,(3)是(1)(2)的一个更为优美的推论.

Example1

\(f \in C^1 [ a , b ]\),并且满足\(f '\)单调递减,且\(f ' ( b ) \geq M > 0\).求证:\(| \int_a^b \cos f ( x ) \text{ d } x | \leq \frac{ 2 }{ M }\).

注意到:

$$ \[\begin{aligned} & \int_a^b \cos f ( x ) \text{ d } x \\ = & \int_a^b \frac{ f ' \cos f }{ f ' } \text{ d } x \\ = & \frac{ 1 }{ f ' ( b ) } \int_\xi^b f ' \cos f \text{ d } x \\ = & \frac{ 1 }{ f ' ( b ) } ( \sin f ( b ) - \sin f ( \xi ) ) \\ \end{aligned}\]

$$

这就完事了.

有界变差函数

对于一个\(f : [ a , b ] \to R\)的函数,做分划\(\Delta : a = x_0 < \cdots < x_n = b\),定义其变差为\(V_\Delta = \sum_k | f ( x_i ) - f ( x_{ i - 1 } ) |\),定义其全变差为\(V_{ [ a , b ] } ( f ) = \sup_\Delta V_\Delta\).当全变差为有限的时候,称\(f\)是有界变差函数.容易见到由介值定理,如果\(f\)可导而且\(f '\)可积,则\(V_{ [ a , b ] } ( f ) = \int_a^b | f ' | \mathrm{ d } x\).

应当容易见到,闭区间上的单调函数是有界变差的,且\(V_{ | f | } \leq V_f , V_{ f + g } \leq V_f + V_g\).

接下来我们来证明:\(f\)是有界变差函数,当且仅当\(f\)是两个单调(不一定严格)函数的差.或者更严格一点,可以写成两个单调不减函数的差.另外,作为这个命题的平凡推论,我们知道有界变差函数几乎处处可导,并且有至多可数个间断点,且只有第一类间断点.

充分性显然,下面来看必要性.假设\(f\)是有界变差的,此时类似积分可以定义一个变上限函数\(V_f ( x ) = V_f [ a , x ]\),其显然是单调不降的.

接下来定义\(g = V_f ( x ) - f ( x )\),我们来说明它一定也是单调不减的.

那考虑当\(x_2 > x_1\)时,观察\(g ( x_2 ) - g ( x_1 ) = V_f ( x_2 ) - V_f ( x_1 ) - ( f ( x_2 ) - f ( x_1 ) )\).

既然全变差的定义依赖于分划,我们当然可以加分点,自然有\(V_f ( x_2 ) - V_f ( x_1 ) = V_{ f , [ x_1 , x_2 ] } \geq | f ( x_2 ) - f ( x_1 ) | \geq f ( x_2 ) - f ( x_1 )\).

自然得证.

可应当意识到连续函数不一定是有界变差函数,原因仍然考虑\(f ( x ) = \begin{cases}0 & x = 0 \\ x \sin \frac{ 1 }{ x } & \text{ otherwise }\end{cases}\).在闭区间\([ 0 , 1 ]\)上取\(x_k = \frac{ 1 }{ ( k + \frac{ 1 }{ 2 } ) \pi }\),这样\(\sin \frac{ 1 }{ x_i }\)的取值正负交替,容易见到出现了调和级数.

然而,稍微加点条件,我们可以证明李氏连续是有界变差的.可以直接套用定义,也可以回忆到\(f ( x ) = f ( x ) - Lx + Lx = Lx - ( Lx - f ( x ) )\).因此导函数有界就一定有界变差.并且此时,可以让其拆出两个不降的可导函数.

定积分的应用
Example1(图形证明不等式)

回忆到我们证明积分形式的柯西不等式的时候,证明了当\(\frac{ 1 }{ p } + \frac{ 1 }{ q } = 1\)时,\(a^{ \frac{ 1 }{ p } } b^{ \frac{ 1 }{ q } } = e^{ \frac{ \ln a }{ p } + \frac{ \ln b }{ q } } \leq \frac{ a }{ p } + \frac{ b }{ q }\).

下面可以用类似的策略理解这个式子,首先等价于证明\(ab \leq \frac{ a^p }{ p } + \frac{ b^q }{ q }\).原因是考虑设\(S_1 = \frac{ a^p }{ p } , S_2 = \frac{ b^q }{ q }\),设\(f ( x ) = x^{ p - 1 }\),留意到\(f ( x )\)的积分表示出了\(S_1\),而\(f^{ - 1 } ( x )\)恰好表示出了\(S_2\).

Example2(参数方程曲线面积)

回忆到换元法,取参数方程\(\begin{cases}x = x ( t ) \\ y = y ( t )\end{cases}\),此时不妨假设\(x ( \alpha ) = a , x ( \beta ) = b\),且\(x ( t )\)单调递增且连续,\(x ' ( t )\)除有限点外都存在且黎曼可积.那当然应当有:

\[ \int_a^b f ( x ) \text{ d } x = \int_\alpha^\beta y ( t ) x ' ( t ) \text{ d } t \]

注意到如果反之条件使得\(x ( \alpha ) = b , x ( \beta ) = a\),则需要补一个\(- 1\).

由此可见,对于不自交的任意参数方程表示的曲线,直接积分的正负号一抵消,仍然可以求出曲线下方的面积.如果自交,就是要把自交部分的面积减去.顺便而言,简单封闭曲线(例如圆或者椭圆)当然是上述我们所说的特殊情况.

不过对于封闭曲线,由于转一圈会回到同一个点处,使用分部积分得到:

\[ \begin{aligned} & \int_\alpha^\beta y x ' \text{ d } t \\ = & \int_\alpha^\beta y \text{ d } x \\ = & xy |_a^b - \int_\alpha^\beta xy ' \text{ d } t \\ = & - \int_\alpha^\beta xy ' \text{ d } t \end{aligned} \]

兼顾一下对称性,可以写作\(S = \frac{ 1 }{ 2 } | \int_\alpha^\beta ( x ' y - y ' x ) \text{ d } t |\).由此立刻得到椭圆面积为\(ab \pi\).

Example3(极坐标的面积)

\(r = r ( \theta ) , \theta \in [ \alpha , \beta ] , r ( \theta ) \in C ( \alpha , \beta )\).

此时考虑对\(\theta\)做划分,取\(\Delta : \alpha = \theta_0 < \cdots < \theta_n = \beta\),并取\(m_i = \inf_{ [ \theta_{ i - 1 } , \theta_i ] } r , M_i = \sup_{ [ \theta_{ i - 1 } , \theta_i ] }\),立刻得到\(\frac{ 1 }{ 2 } m_i^2 \Delta \theta_i \leq \Delta S_i \leq \frac{ 1 }{ 2 } \sum M_i^2 \Delta \theta_i\),这样加密后得到\(S = \frac{ 1 }{ 2 } \int_\alpha^\beta r^2 ( \theta ) \text{ d } \theta\).

Example4(参数方程曲线的弧长)

取参数方程\(\begin{cases}x = x ( t ) \\ y = y ( t )\end{cases}\),并且假设\(x , y\)均连续.首先我们应当定义其”弧长”的含义.

可以使用折线逼近的策略定义弧长.具体而言,直接取分划\(\Delta : \alpha = t_0 < \cdots < t_n = \beta\).定义一个点\(P_i = ( x ( t_i ) , y ( t_i ) )\),这样我们当然就得到了若干个点,在这些点上就可以将相邻两个点求出折线,设折线长为\(\overline{ M_{ i - 1 } M_i }\).

接下来,称曲线是可求长的,当且仅当取出的折线的上确界是有限的,并将此上确界定义为曲线长.

我们接下来证明,其可求长当且仅当\(x ( t )\)\(y ( t )\)都是有界变差的.

先看必要性,任取分划\(\Delta : \alpha = t_0 < \cdots < t_n = \beta\).立刻得到\(V_\Delta ( x ) = \sum | x_i - x_{ i - 1 } | \leq \sum \overline{ M_{ i - 1 } M_i }\),当然是有界的,对于\(y ( t )\)同理.

另外,斜边小于两条直角边的和(三角形不等式),于是充分性也显然.

然而真要实际应用需要稍加条件,即:\(x ( t ) , y ( t )\)可导且导函数黎曼可积(说明其导函数有界,为李氏连续函数,那自然是有界变差函数).则弧长为\(\int_\alpha^\beta \sqrt{ ( x ' ( t ) )^2 + ( y ' ( t ) )^2 } \text{ d } t\).

证明比较容易,考虑勾股定理,\(\overline{ M_{ i - 1 } M_i } = \sqrt{ ( x ( t_i ) - x ( t_{ i - 1 } ) )^2 + ( y ( t_i ) - y ( t_{ i - 1 } ) )^2 }\).使用微分中值定理,得到其等于\(\Delta t_i \sqrt{ ( x ' ( \xi_i ) )^2 + ( y ' ( \eta_i ) )^2 }\).这里强行换成一个东西,于是就会得到\(\Delta t_i \sqrt{ ( x ' ( \xi_i ) )^2 + ( y ' ( \xi_i ) )^2 } + w_i\)的形式,其中\(w_i\)恰为两项之差.然后换黎曼和,只需证明后者\(w_i\)随着加密而趋向于\(0\).而这个根号差可以做分子有理化.具体而言:

\[ \begin{aligned} w_i & = \Delta t_i \left ( \sqrt{ ( x ' ( \xi_i ) )^2 + ( y ' ( \eta_i ) )^2 } - \sqrt{ ( x ' ( \xi_i ) )^2 + ( y ' ( \xi_i ) )^2 } \right ) \\ & = \Delta t_i \frac{ y ' ( \eta_i )^2 - y ' ( \xi_i )^2 }{ \sqrt{ ( x ' ( \xi_i ) )^2 + ( y ' ( \eta_i ) )^2 } + \sqrt{ ( x ' ( \xi_i ) )^2 + ( y ' ( \xi_i ) )^2 } } \\ & = \Delta t_i \frac{ ( y ' ( \eta_i ) + y ' ( \xi_i ) ) }{ \sqrt{ ( x ' ( \xi_i ) )^2 + ( y ' ( \eta_i ) )^2 } + \sqrt{ ( x ' ( \xi_i ) )^2 + ( y ' ( \xi_i ) )^2 } } ( y ' ( \eta_i ) - y ' ( \xi_i ) ) \\ & \leq \Delta t_i ( y ' ( \eta_i ) - y ' ( \xi_i ) ) \end{aligned} \]

最后会得到\(\leq \sum \omega_{ y ' } \Delta t_i\),立刻得到其趋向于\(0\).顺便还要证明这个是上确界,只需要证明加点后答案增加即可,然后用黎曼积分那一部分的对划分取并的技巧即可.

由此应当能推出直角坐标系下弧长公式,即\(l = \int_a^b \sqrt{ 1 + ( f ' ( x ) )^2 } \text{ d } x\).

Example5(极坐标下的弧长公式)

此时应当有\(x ' = r ' \cos \theta - r \sin \theta , y ' = r ' \sin \theta + r \cos \theta\),注意到\(( x ' )^2 + ( y ' )^2 = r^2 + ( r ' )^2\),于是极坐标下的公式当然是\(l = \int_\alpha^\beta \sqrt{ r^2 + ( r ' )^2 } \text{ d } \theta\).

Example6(等周不等式)

求给定长度的闭合曲线能围出的最大面积.

\(\Gamma\)是一个周长为\(l\)的简单可求长闭曲线,其面积为\(A\),我们下面证明\(A \leq \frac{ l^2 }{ 4 \pi }\).

先考虑\(\Gamma\)比较光滑的情况,也就是其有导函数且导函数可积.参数方程给出\(l = \int_\alpha^\beta \sqrt{ ( x ' )^2 + ( y ' )^2 } \text{ d } \theta\)\(A = \int_\alpha^\beta xy ' \text{ d } \theta\).注意这里假设曲线是逆时针方向旋转的.

接下来,考虑在原基础上画个圆,这个圆的参数方程横坐标继承自上述\(x ( \theta )\)而纵坐标由圆定义为\(\bar{ y } = \pm \sqrt{ r^2 - x^2 }\),这里的\(2 r = \sup x - \inf x\).也就是横着的最长距离.为了使得这个圆转起来是合理的,实际上应该找到上述曲线的左右端点然后分段函数定义,我们这里略去此细节.

然后呢,此时观察到应当有\(\pi r^2 = - \int_\alpha^\beta \bar{ y } x ' \text{ d } \theta\),发挥注意力得到:

\[ \begin{aligned} 2 \sqrt{ A \pi r^2 } & \leq A + \pi r^2 \\ & = \int_\alpha^\beta ( xy ' + \bar{ y } x ' ) \text{ d } \theta \\ & \leq \int_\alpha^\beta \sqrt{ x^2 + ( \bar{ y } )^2 } \sqrt{ y '^2 + x '^2 } \text{ d } t \\ & = rl \end{aligned} \]

于是证毕.

那么不光滑怎么办呢?可以用分段光滑函数(比如折线)逼近,这样就行了.

Example7(求多面体体积)

体积的定义无非类似面积,用夹逼定理定义任意形状的体积.

考虑对于每个\(x\),在\(x\)那里做截面,设得到的截面面积是\(S ( x )\),那么体积感觉上应当是\(V = \int_a^b S ( x ) \text{ d } x\).

然而这个结论的准确证明可能需要一些重积分知识.我们尝试越级打怪,加一个很神秘的条件:就是两个截面之间一定存在包含关系以及\(S ( x )\)是关于\(x\)连续变化的.然后看看能不能把这个结论证出来.

考虑\(x\)的范围是\([ a , b ]\),接下来对其作分划\(\Delta : a = x_0 < \cdots < x_n = b\).接下来取\(\eta_i , \xi_i\)满足\(S ( \xi_i ) = \max_{ [ x_{ i - 1 } , x_i ] } S ( x ) , S ( \eta_i ) = \min_{ [ x_{ i - 1 } , x_i ] } S ( x )\).此时回忆到包含关系,那么我们拿出来的\(\xi_i\)\(\eta_i\)当然就是包含别人以及被包含的两个截面,以它们为底面积做柱体,留意到此时当然有:

\[ S ( \eta_i ) ( x_{ i } - x_{ i - 1 } ) \leq V_{ [ x_{ i - 1 } , x_i ] } \leq S ( \xi_i ) ( x_i - x_{ i - 1 } ) \]

回忆到假设\(S ( x )\)是连续变化的因此黎曼可积,于是这个东西两边其实就是达布上下和,立刻得到积分的结论.

旋转体当然满足以上条件,易见旋转体的体积为\(\pi \int_a^b f^2 ( x ) \mathrm{ d } x\),参数方程同理.

Example8(旋转体的侧面积公式)

曲面的面积难以定义,所以我们现在暂时成为物理系学生.下面只考虑旋转体.

对于旋转体来说,先用折线逼近原曲线,然后旋转后得到若干圆台,用圆台的侧面积之和去逼近旋转体的侧面积.

对于\([ a , b ]\),我们先做一个分划\(\Delta : a = x_0 < \cdots < x_n = b\),\(y_i = f ( x_i )\).圆台侧面积给出\(\Delta S_i = \pi ( y_{ i - 1 } + y_i ) | \overline{ M_{ i - 1 } M_i } | = \pi ( y_{ i - 1 } + y_i ) \sqrt{ 1 + ( \cfrac{ y_i - y_{ i - 1 } }{ x_i - x_{ i - 1 } } )^2 } \Delta x_i\),利用微分中值定理,就有:

\[ \begin{aligned} S_i & = \pi ( y_{ i - 1 } + y_i ) \sqrt{ 1 + ( f ' ( \xi_i ) )^2 } \Delta x_i \\ & = 2 \pi f ( \xi_i ) \sqrt{ 1 + ( f ' ( \xi_i ) )^2 } \Delta x_i + ( y_i + y_{ i - 1 } - 2 \pi f ( \xi_i ) ) \sqrt{ 1 + ( f ' ( \xi_i ) )^2 } \Delta x_i \end{aligned} \]

加密后第二项可以用振幅控制住,所以答案就是\(2 \pi \int_a^b f ( x ) \sqrt{ 1 + ( f ' ( x ) )^2 } \mathrm{ d } x\).

对于参数方程当然也是平凡的,答案应当是\(2 \pi \int_a^b y \sqrt{ 1 + ( \frac{ y ' }{ x ' } )^2 } x ' \mathrm{ d } t = 2 \pi \int_a^b y \sqrt{ ( x ' )^2 + ( y ' )^2 } \mathrm{ d } t\),注意这里是按照\(x\)轴翻转.应当看到由此一段球面上的环的面积就是\(2 \pi r \Delta x\).

Example9(\(\pi\)的无理性证明)

假设\(\pi = \frac{ p }{ q } \in \mathbb{ Q }\)并且\(p \bot q , p , q \in \mathbb{ N_+ }\).

考虑设\(f_n ( x ) = q^n x^n ( p - qx )^n\),留意到\(\forall 0 \leq i \leq n - 1\),有\(f_n^{ ( i ) } ( 0 ) = f_n^{ ( i ) } ( \pi ) = 0\).

接下来考察\(\forall n \leq i \leq 2 n\),此时留意到\(f_n^{ ( i ) } ( 0 )\)\(f_n^{ ( i ) } ( \pi )\)都应当是整数并且是\(n !\)的倍数(是\(0\)也是\(n !\)的倍数).

考虑积分\(I_n = \frac{ 1 }{ n ! } \int_0^\pi f_n ( x ) \sin x \mathrm{ d } x > 0\).对其狂暴使用分部积分:

$$ \[\begin{aligned} I_n & = \frac{ 1 }{ n ! } \int_0^\pi f_n ( x ) \sin x \mathrm{ d } x \\ & = \frac{ 1 }{ n ! } \int_0^\pi f_n ( x ) \mathrm{ d } ( - \cos x ) \\ \end{aligned}\]

$$

不断做分部积分,前面扔出来的项也就是\(f_n^{ ( i ) } ( 0 )\)或者\(f_n^{ ( i ) } ( \pi )\)然后再乘上\(\sin , \cos\)\(0 , \pi\)之类取值的问题.总之,这个东西算出来一定是\(n !\)的倍数,前面乘了个\(\frac{ 1 }{ n ! }\),他就一定是整数.又因为其大于\(0\),他就一定\(\geq 1\).

那么矛盾在哪呢?留意到\(f_n = ( qx ( p - qx ) )^n \leq ( \frac{ p }{ 2 } )^{ 2 n } , \sin x \leq 1\),所以\(I_n \leq \frac{ 1 }{ n ! } ( \frac{ p }{ 2 } )^{ 2 n } \pi \to 0\).

Example10(古鲁金第一定理)

躲开微元法,要证明一些东西可以扔进去的话(比如密度函数),应当可以通过”平均密度”的概念用之前那个引理(分部积分那里,步骤是先积分,乘系数,后求和),总之都是平凡的.

考虑一个旋转体,反正用上面那套东西,搞出来质心应当有\(\bar{ y } = \frac{ \int_\alpha^\beta y \sqrt{ x '^2 + y '^2 } \mathrm{ d } t }{ l }\).移项得到\(2 \pi \bar{ y } l = 2 \pi \int_\alpha^\beta y \sqrt{ x '^2 + y '^2 } \mathrm{ d } t\).也就是:旋转线转一圈,质心周长乘以曲线的弧长等于侧面积.

Example11(古鲁金第二定理)

考虑两条曲线夹起来的部分,也就是设\([ a , b ]\)上有\(f ( x ) \geq g ( x ) \geq 0\),那这两条线就会围出一块二维出来.这一块的质心能不能求呢?当然也可以,只不过略有区别,\(\bar{ x } = \frac{ \int_a^b x ( f ( x ) - g ( x ) \mathrm{ d } x ) }{ S }\),而\(\bar{ y } = \frac{ 1 }{ 2 } \frac{ \int_a^b ( f^2 ( x ) - g^2 ( x ) \mathrm{ d } x ) }{ S }\).移项得到\(2 S \bar{ y } = \int_a^b ( f^2 ( x ) - g^2 ( x ) \mathrm{ d } x )\),也就是旋转面转一圈,质心周长乘以面积等于体积.

Example12(转动惯量)

定义为\(J = \int mr^2\).

考虑以\(x\)轴为旋转轴,先考虑线的情况,无非是分成小段每一段分别处理,对于每一段用长度和密度的乘积来逼质量,关于\(x\)轴的转动惯量\(J = \int_\alpha^\beta y^2 ( t ) \rho ( t ) \sqrt{ ( x ' ( t ) )^2 + ( y ' ( t ) )^2 } \text{ d } t\).

Example13

\(F\)是所有满足\(f \in C^1 [ 0 , 1 ] \mid f ( 0 ) = 0 , f ( 1 ) = 1 , f ' \geq 0\),\(f '\)单调不降的函数\(f\)组成的集合,记\(S_f\)\(f ( x )\)\(x\)轴转一圈得到的侧面积,求\(\sup_{ f \in F } S_f\)\(\inf_{ f \in F } S_f\).

先猜下确界是\(\pi\),上确界是\(\sqrt{ 2 } \pi\).

先证明下界是对的,考虑:

\[ \begin{aligned} S_f & = 2 \pi \int_0^1 f \sqrt{ 1 + ( f ' )^2 } \mathrm{ d } x \geq 2 \pi \int_0^1 f \cdot f ' \mathrm{ d } x \\ & = \pi \end{aligned} \]

怎么逼近呢?这个当然是直接平的是最优秀的对吧,考虑\(f_n ( x ) = x^n\),发现:

\[ \pi \leq S_{ f_n } \leq 2 \pi \int_0^1 f_n ( 1 + f_n ' ) \mathrm{ d } x = \pi + 2 \pi \int_0^1 f_n \mathrm{ d } x = \pi + \frac{ 2 \pi }{ n + 1 } \to \pi \]

上界怎么搞定呢?考虑肯定是\(f ( x ) = x\)是最好的,我们下面证明任意一段曲线,如果把曲线拉直就更优秀.

也就是考虑\(( 0 , 0 )\)\(( x_0 , f ( x_0 ) )\)的连线\(y = \frac{ f ( x_0 ) }{ x_0 } x\),容易见到:

\[ \begin{aligned} & \int_0^{ x_0 } y \sqrt{ 1 + ( y ' )^2 } \mathrm{ d } x \\ = & \int_0^{ x_0 } \frac{ f ( x_0 ) }{ x_0 } x \sqrt{ 1 + ( \frac{ f ( x_0 ) }{ x_0 } )^2 } \mathrm{ d } x \\ = & \frac{ 1 }{ 2 } f ( x_0 ) \sqrt{ x_0^2 + f ( x_0 )^2 } \end{aligned} \]

只要我们证明:

\[ \int_0^x f ( t ) \sqrt{ 1 + ( f ' ( t ) )^2 } \mathrm{ d } t \leq \frac{ 1 }{ 2 } f ( x ) \sqrt{ x^2 + f^2 ( x ) } \]

即可.注意到它们在零点的取值相同,因此直接算导数之差,要证:

\[ \begin{aligned} \frac{ 1 }{ 2 } f ' \sqrt{ x^2 + f^2 } + \frac{ x + f \cdot f ' }{ 2 \sqrt{ x^2 + f^2 } } f - f \sqrt{ 1 + ( f ' )^2 } & \geq 0 \\ 2 f \sqrt{ 1 + ( f ' )^2 } \sqrt{ x^2 + f^2 } & \leq ( x^2 + 2 f^2 ) f ' + xf \end{aligned} \]

敢算就敢赢,两边平方得到:

\[ 3 f^2 x^2 + 4 f^4 \leq x^4 ( f ' )^2 + 2 x^3 f \cdot f ' + 2 xf^3 f ' \]

注意到下凸函数满足\(f ' \geq \frac{ f }{ x }\),上述结论刚刚好得证,出这个题的lwg老师真是高人了.

定积分近似计算

考虑对\(\int_a^b f ( x ) \mathrm{ d } x\)做数值近似,将\([ a , b ]\)等分,取\(x_k = a + \frac{ k }{ n } ( b - a )\),其中\(0 \leq k \leq n\),而\(\Delta x = \frac{ b - a }{ n }\),\(x_{ k - \frac{ 1 }{ 2 } } = \frac{ x_k + x_{ k - 1 } }{ 2 }\).

那么用黎曼和逼积分,那么无非三种方式:要么算左端点的函数值,要么算右端点的函数值,要么算中间点的函数值.

问题在于计算误差,我们下面证明,如果\(f\)一阶可导,则:

  1. \(\int_a^b f ( x ) \mathrm{ d } x = \frac{ b - a }{ n } \sum_{ k = 1 }^n y_k - \frac{ ( b - a )^2 }{ 2 n } f ' ( \xi )\)

  2. \(\int_a^b f ( x ) \mathrm{ d } x = \frac{ b - a }{ n } \sum_{ k = 1 }^n y_{ k - 1 } + \frac{ ( b - a )^2 }{ 2 n } f ' ( \eta )\)

两个是类似的,只证第一个,考虑:

\[ \begin{aligned} & \int_a^b f ( x ) \mathrm{ d } x - \frac{ b - a }{ n } \sum_{ k = 1 }^n y_k \\ = & \sum_{ k = 1 }^n \int_{ x_{ k - 1 } }^{ x_k } ( f ( x ) - f ( x_k ) ) \mathrm{ d } x \\ = & \sum_{ k = 1 }^n \int_{ x_{ k - 1 } }^{ x_k } ( f ( x ) - f ( x_k ) ) \mathrm{ d } ( x - x_{ k - 1 } ) \\ = & - \sum_{ k = 1 }^n \int_{ x_{ k - 1 } }^{ x_k } ( x - x_{ k - 1 } ) f ' ( x ) \mathrm{ d } x \\ = & - \sum_{ k = 1 }^n f ' ( \xi_k ) \int_{ x_{ k - 1 } }^{ x_k } ( x - x_{ k - 1 } ) \mathrm{ d } x \\ = & - \sum_{ k = 1 }^n f ' ( \xi_k ) \frac{ ( b - a )^2 }{ 2 n^2 } \\ = & - \frac{ ( b - a )^2 }{ 2 n } f ' ( \xi ) \end{aligned} \]

最后一步是因为求均值也可以用介值定理.

那么在中点估计会怎么样呢?考虑给\(f\)更好的条件,让\(f\)二阶可导,则:

\[ \int_a^b f ( x ) \mathrm{ d } x = \frac{ b - a }{ n } \sum_{ k = 1 }^n y_{ k - \frac{ 1 }{ 2 } } - \frac{ ( b - a )^3 }{ 24 n^2 } f ' ' ( \xi ) \]

\(x_{ k - \frac{ 1 }{ 2 } }\)处做泰勒展开,应当有:

$$ \[\begin{aligned} f ( x ) - f ( x_{ k - \frac{ 1 }{ 2 } } ) & = ( x - x_{ k - \frac{ 1 }{ 2 } } ) f ' ( x_{ k - \frac{ 1 }{ 2 } } ) + \frac{ 1 }{ 2 } ( x - x_{ k - \frac{ 1 }{ 2 } } )^2 f ' ' ( \xi_k ) \\ \end{aligned}\]

$$

不妨设\(m_k \leq f ' ' ( \xi_k ) \leq M_k\),则:

\[ \begin{aligned} \int_{ x_{ k - 1 } }^{ x_k } ( f ( x ) - f ( x_{ k - \frac{ 1 }{ 2 } } ) ) \mathrm{ d } x & \leq \frac{ M_k }{ 2 } \int_{ x_{ k - 1 } }^{ x_k } ( x - x_{ k - \frac{ 1 }{ 2 } } )^2 \mathrm{ d } x \\ & = M_k \frac{ ( b - a )^3 }{ 24 n^3 } \end{aligned} \]

用介值定理就可以求和,原命题自然得证.

而上面的做法是矩形逼近,能不能用梯形逼近呢?用梯形逼近的话其实无非是\(\frac{ b - a }{ n } ( \frac{ y_0 + y_n }{ 2 } \sum_{ k = 1 }^{ n - 1 } y_k )\),然而,对于\(f \in C^2 [ a , b ]\),我们声明:

\[ \int_a^b f ( x ) \mathrm{ d } x = \frac{ b - a }{ n } ( \frac{ y_0 + y_n }{ 2 } \sum_{ k = 1 }^{ n - 1 } y_k ) - \frac{ ( b - a )^3 }{ 12 n^2 } f ' ' ( \xi ) \]

证明当然还是分部积分,考虑:

$$ \[\begin{aligned} & \int_{ x_{ k - 1 } }^{ x_k } f ( x ) \mathrm{ d } x \\ = & \int_{ x_{ k - 1 } }^{ x_k } f ( x ) \mathrm{ d } ( x - x_{ k - 1 } ) \\ = & f ( x_k ) \frac{ b - a }{ n } - \int_{ x_{ k - 1 } }^{ x_k } ( x - x_{ k - 1 } ) f ' ( x ) \mathrm{ d } x \\ = & f ( x_k ) \frac{ b - a }{ n } - \frac{ 1 }{ 2 } \int_{ x_{ k - 1 } }^{ x_k } f ' ( x ) \mathrm{ d } ( x - x_{ k - 1 } )^2 \\ = & f ( x_k ) \frac{ b - a }{ n } - \frac{ 1 }{ 2 } f ' ( x_k ) ( \frac{ b - a }{ n } )^2 + \frac{ 1 }{ 2 } \int_{ x_{ k - 1 } }^{ x_k } f ' ' ( x ) ( x - x_{ k - 1 } )^2 \mathrm{ d } x \\ \end{aligned}\]

$$

同理,在上面换\(x - x_k\)而非\(x - x_{ k - 1 }\),就可以得到:

$$ \[\begin{aligned} & \int_{ x_{ k - 1 } }^{ x_k } f ( x ) \mathrm{ d } x \\ = & f ( x_{ k - 1 } ) \frac{ b - a }{ n } + \frac{ 1 }{ 2 } f ' ( x_{ k - 1 } ) ( \frac{ b - a }{ n } )^2 + \frac{ 1 }{ 2 } \int_{ x_{ k - 1 } }^{ x_k } f ' ' ( x ) ( x - x_{ k } )^2 \mathrm{ d } x \\ \end{aligned}\]

$$

此时用NL公式,应当能见到把上面两式子相加可以得到:

\[ \begin{aligned} & \int_{ x_{ k - 1 } }^{ x_k } f ( x ) \mathrm{ d } x \\ = & \frac{ f ( x_{ k - 1 } ) + f ( x_k ) }{ 2 } \frac{ b - a }{ n } + \frac{ 1 }{ 4 } \int_{ x_{ k - 1 } }^{ x_k } f ' ' ( x ) ( ( x - x_{ k } )^2 + ( x - x_{ k - 1 } )^2 - ( \frac{ b - a }{ n } )^2 ) \mathrm{ d } x \\ = & \frac{ f ( x_{ k - 1 } ) + f ( x_k ) }{ 2 } \frac{ b - a }{ n } + \frac{ 1 }{ 2 } \int_{ x_{ k - 1 } }^{ x_k } f ' ' ( x ) ( x - x_k ) ( x - x_{ k - 1 } ) \mathrm{ d } x \\ = & \frac{ f ( x_{ k - 1 } ) + f ( x_k ) }{ 2 } \frac{ b - a }{ n } + \frac{ 1 }{ 2 } f ' ' ( \xi_k ) \int_{ x_{ k - 1 } }^{ x_k } ( x - x_k ) ( x - x_{ k - 1 } ) \mathrm{ d } x \\ = & \frac{ y_{ k - 1 } + y_k }{ 2 } \Delta x - \frac{ 1 }{ 12 } f ' ' ( \xi_k ) \frac{ ( b - a )^3 }{ n^3 } \end{aligned} \]

这样就完事了,接下来对\(n\)求个和就能得到之前的公式.

接下来是二次曲线逼近.考虑用\(( x_{ k - 1 } , y_{ k - 1 } ) , ( x_{ k - \frac{ 1 }{ 2 } } , y_{ k - \frac{ 1 }{ 2 } } ) , ( x_k , y_k )\)三个点确定一条二次曲线.不妨设这条二次曲线为\(Q_k ( x ) = px^2 + qx + r\).然而,此时观察到:

\[ \begin{aligned} & \int_{ x_{ k - 1 } }^{ x_k } Q_k ( x ) \mathrm{ d } x \\ = & \frac{ p }{ 3 } ( x_k^3 - x_{ k - 1 }^3 ) + \frac{ q }{ 2 } ( x_k^2 - x_{ k - 1 }^2 ) + r ( x_k - x_{ k - 1 } ) \\ = & \frac{ x_k - x_{ k - 1 } }{ 6 } ( Q_k ( x_k ) + Q_k ( x_{ k - 1 } ) + Q_k ( x_{ k - \frac{ 1 }{ 2 } } ) ) \\ = & \frac{ b - a }{ 6 n } ( y_{ k - 1 } + y_k + 4 y_{ k - \frac{ 1 }{ 2 } } ) \end{aligned} \]

这也很合理,观察一下就可以知道这个恰好是在尝试把梯形逼近和中点逼近两种方式尝试约掉后面的误差项系数.

定理是,如果\(f \in C^4 [ a , b ]\),误差项为\(- \frac{ ( b - a )^5 }{ 2880 n^4 } f^{ ( 4 ) } ( \xi )\).这就是所谓辛普森积分法.

广义积分

考虑函数\(f : [ a , + \infty ) \to \mathbb{ R }\),如果其\(\forall b > a\),\(f \in R [ a , b ]\),我们称其内闭可积.那我们就定义其广义积分为\(\int_a^{ + \infty } f \mathrm{ d } x = \lim_{ b \to + \infty } \int_a^b f \mathrm{ d } x\),当后者极限存在时.同理当然可以定义区间\(( - \infty , b ]\)上的广义积分.而如果\(\int_0^{ + \infty } f \mathrm{ d } x\)\(\int_{ - \infty }^0 f \mathrm{ d } x\)都收敛,则定义它们的和为\(\int_{ - \infty }^{ + \infty } f \mathrm{ d } x\).

称一个函数的瑕点为其局部无界的点,则考虑\(f : [ a , b ) \to \mathbb{ R }\),其中\(b\)\(f\)的瑕点,且\(f\)内闭可积,则\(\int_a^b f ( x ) \mathrm{ d } x = \lim_{ A \to b - 0 } \int_a^A f ( x ) \mathrm{ d } x\),若后者极限存在.瑕积分和上述广义积分并无明显区别,下述也不再区分.

在进一步讨论前,我们应当再仔细研究一下广义积分的收敛性,也就是当什么时候其极限存在呢?我们有以下命题:

  1. \(f ( x ) \geq 0 , x \in [ a , + \infty )\)时,\(F ( A ) = \int_a^A f ( x ) \mathrm{ d } x\)单增.那么此时\(F ( + \infty )\)存在当且仅当\(F ( A )\)有界.

  2. 比较原理:\(0 \leq f \leq cg , c > 0\),若\(\int_a^{ + \infty } g \mathrm{ d } x\)收敛,则\(\int_a^{ + \infty } f \mathrm{ d } x\)收敛.该结论可以移植到瑕积分上.

  3. 比较原理的推论:\(f , g \geq 0 , 0 < c_1 \leq \frac{ f }{ g } \leq c_2\),则\(\int f \mathrm{ d } x , \int g \mathrm{ d } x\)收敛性相同.进一步地,如果\(f , g \geq 0\),在趋近于某个瑕点的时候,\(\frac{ f }{ g }\)趋近于某个非零常数,那它们在这一点的收敛性相同.

(1)是根据单调收敛准则,而(2)则是(1)的推论,只是给出了一个界.

定义函数\(f\)绝对收敛,当\(\int_a^{ + \infty } | f | \mathrm{ d } x < \infty\)时.而考虑\(f = | f | - ( | f | - f )\),而\(0 \leq | f | - f \leq 2 | f |\),所以绝对收敛可以推出收敛,但反之不可.因此,我们将收敛但不绝对收敛的函数称为条件收敛.该结论也可以移植到瑕积分上.

接下来,我们有柯西收敛原理:\(\int_a^{ + \infty } f \mathrm{ d } x\)收敛的充要条件是对于\(\forall \epsilon > 0 , \exists M > a\)使得\(\forall A > B \geq M\),都有\(| \int_{ B }^A f \mathrm{ d } x | < \epsilon\).

证明当然无非是函数部分柯西收敛准则的重复应用.

柯西收敛原理推到瑕积分上的话,考虑\(F ( x ) = \int_a^x f ( t ) \mathrm{ d } t\),则瑕积分\(\lim_{ t \to b - 0 } F ( t )\)存在当且仅当\(\forall \epsilon > 0\),\(\exists \delta > 0\),当\(x_1 , x_2 \in ( b - \delta , b )\)的时候,有\(| F ( x_1 ) - F ( x_2 ) | < \epsilon\).

接下来还有Dirichlet-Abel判别法,设\(f , g : [ a , + \infty ) \to \mathbb{ R }\)内闭可积,\(f\)单调,那有:

  1. Dirichlet判别法:如果\(f ( + \infty ) = 0\),\(G ( A ) = \int_a^A g \mathrm{ d } x\)有界,则\(\int_a^{ + \infty } fg \mathrm{ d } x\)收敛.

  2. Abel判别法:如果\(f\)有界,\(\int_a^{ \infty } g \mathrm{ d } x\)收敛,则\(\int_a^{ + \infty } fg \mathrm{ d } x\)收敛.

用第二积分中值定理,就有\(\int_A^B f g \mathrm{ d } x = f ( A ) \int_A^\xi g \mathrm{ d } x + f ( B ) \int_{ \xi }^B g \mathrm{ d } x\).用柯西收敛原理则上述两条均为显然.结论当然可以推广到瑕积分上.

Example1

\(f\)\(( - \infty , + \infty )\)上内闭可积,且\(f ( + \infty ) = A , f ( - \infty ) = B\),对于\(a > 0\),求证\(\int_{ - \infty }^{ + \infty } \left ( f ( x + a ) - f ( x ) \right ) \mathrm{ d } x\)收敛并求其值.

注意到:

\[ \begin{aligned} \int_0^{ C } \left ( f ( x + a ) - f ( x ) \right ) \mathrm{ d } x & = \int_{ a }^{ C + a } f ( x ) \mathrm{ d } x - \int_0^C f ( x ) \mathrm{ d } x \\ & = \int_{ C }^{ C + a } f ( x ) \mathrm{ d } x - \int_0^a f ( x ) \mathrm{ d } x \\ & \to aA - \int_0^a f ( x ) \mathrm{ d } x \end{aligned} \]

另一侧同理为:

\[ \begin{aligned} \int_{ - C }^{ 0 } \left ( f ( x + a ) - f ( x ) \right ) \mathrm{ d } x & = \int_{ - C + a }^{ a } f ( x ) \mathrm{ d } x - \int_{ - C }^0 f ( x ) \mathrm{ d } x \\ & = - \int_{ - C }^{ - C + a } f ( x ) \mathrm{ d } x + \int_0^a f ( x ) \mathrm{ d } x \\ & \to - aB + \int_0^a f ( x ) \mathrm{ d } x \end{aligned} \]

于是答案是\(a ( A - B )\).

Example2

求证:

\[ \int_{ 1 }^{ + \infty } \frac{ \mathrm{ d } x }{ x^p } = \begin{cases} \lt \infty & p \gt 1 \\ \infty & p \leq 1 \end{cases} \]

显然.

Example3

求证:\(\int_a^{ + \infty } \frac{ \sin^2 x }{ x^2 } \mathrm{ d } x\)收敛.

原因是由比较原理,所以\(0 \leq \frac{ \sin^2 x }{ x^2 } \leq \frac{ 1 }{ x^2 }\),立刻知其收敛性.

Example4

判断\(\int_0^{ + \infty } \frac{ x \mathrm{ d } x }{ 1 + x^4 \sin^2 x }\)的收敛性.

考虑取\(F ( A ) = \int_0^A \frac{ x \mathrm{ d } x }{ 1 + x^4 \sin^2 x }\),接下来考虑\(F ( n \pi ) = \sum_{ k = 1 }^n U_k\),其中\(U_k = \int_{ ( k - 1 ) \pi }^{ k \pi } \frac{ x \mathrm{ d } x }{ 1 + x^4 \sin^2 x }\).

考虑:

\[ \begin{aligned} U_k & = \int_{ ( k - 1 ) \pi }^{ k \pi } \frac{ x \mathrm{ d } x }{ 1 + x^4 \sin^2 x } \\ & \geq \int_{ ( k - 1 ) \pi }^{ k \pi } \frac{ x \mathrm{ d } x }{ 1 + ( k \pi )^4 \sin^2 x } \\ & \geq 2 ( k - 1 ) \pi \int_{ 0 }^{ \frac{ \pi }{ 2 } } \frac{ x \mathrm{ d } x }{ 1 + ( k \pi )^4 ( \sin x )^2 } \\ & \geq 2 ( k - 1 ) \pi \int_{ 0 }^{ \frac{ \pi }{ 2 } } \frac{ x \mathrm{ d } x }{ 1 + ( k \pi )^4 x^2 } \\ & = \frac{ 2 ( k - 1 ) \pi }{ k^2 \pi^2 } \arctan ( k^2 \pi^2 x ) |_0^{ \frac{ \pi }{ 2 } } \\ & \geq \frac{ 2 ( k - 1 ) \pi }{ k^2 \pi^2 } \arctan ( \frac{ \pi^3 }{ 2 } ) \\ & = O ( \frac{ 1 }{ k } ) \end{aligned} \]

这就证完了,必然发散.

Example5

\(f : ( - \infty , + \infty ) \to \mathbb{ R }\)且内闭可积,\(p > 0\),并且\(\int_{ - \infty }^{ + \infty } | f |^p \mathrm{ d } x < \infty\),求证\(\lim_{ h \to 0 } \int_{ - \infty }^{ + \infty } \left | f ( x + h ) - f ( x ) \right |^p \mathrm{ d } x\)收敛.

既然\(\int_{ - \infty }^{ + \infty } | f |^p \mathrm{ d } x < \infty\),那么一定存在一个足够大的\(A\),使得\(\int_{ A }^{ + \infty } | f |^p \mathrm{ d } x\)足够小,不妨取足够大的\(A > 0\)使得\(\int_{ A - 1 }^{ + \infty } | f |^p \mathrm{ d } x < \epsilon_1\).

事实上考虑\(| u + v | \leq | u | + | v | \leq 2 \max ( | u | , | v | )\),那么\(| u + v |^p \leq 2^p ( | u |^p + | v |^p )\),取\(| h | < 1\),则:

\[ \begin{aligned} & \int_{ A }^{ + \infty } \left | f ( x + h ) - f ( x ) \right |^p \mathrm{ d } x \\ \leq & 2^p \int_{ A }^{ + \infty } | f ( x + h ) |^p \mathrm{ d } x + 2^p \int_{ A }^{ + \infty } | f ( x ) |^p \mathrm{ d } x \\ = & 2^p \int_{ A + h }^{ + \infty } | f ( x ) |^p \mathrm{ d } x + 2^p \int_{ A }^{ + \infty } | f ( x ) |^p \mathrm{ d } x \\ \leq & 2^{ p + 1 } \int_{ A - 1 }^{ + \infty } | f |^p \mathrm{ d } x \\ \leq & 2^{ p + 1 } \epsilon_1 \end{aligned} \]

同理,另一侧也可以放掉.现在的问题在于\(( - A + 1 , A - 1 )\)中间这一段.

考虑用一个线性函数逼近,做分划\(\Delta : - A + 1 = x_0 < \cdots < x_n = A - 1\),取线性函数逼近,策略为\(x \in [ x_{ k - 1 } , x_k ]\)的时候\(g ( x ) = \frac{ f ( x_k ) - f ( x_{ k - 1 } ) }{ x_k - x_{ k - 1 } } ( x - x_{ k - 1 } ) + f ( x_{ k - 1 } )\).接下来考虑对于每一段,设\(M_k = \sup_{ [ x_{ k - 1 } , x_k ] } f , m_k = \inf_{ [ x_{ k - 1 } , x_k ] } f\),则每一段可以被控制为\(M_k - m_k\).我们早在之前就提过黎曼可积的函数可被线性函数逼近,然而疑问是这种逼近能否在\(p\)次方意义下满足,于是取足够小的划分使得\(\sum_{ k = 1 }^n ( M_k - m_k ) \Delta x_k < \epsilon_2^2\).

接下来常规分治,取\(C = \{ 1 \leq k \leq n | M_k - m_k \geq \epsilon_2 \}\)\(B = \{ 1 \leq k \leq n | M_k - m_k < \epsilon_2 \}\).见到\(\sum_{ k \in C } \Delta x_k < \epsilon_2\).不妨设\(M = \sup_{ [ - A + 1 , A - 1 ] } f , m = \inf_{ [ - A + 1 , A - 1 ] } f\)立刻有:

\[ \begin{aligned} & \int_{ - A + 1 }^{ A - 1 } \left | f - g \right |^p \mathrm{ d } x \\ \leq & \sum_{ k } | M_k - m_k |^p \Delta x_k \\ = & \sum_{ k \in C } | M_k - m_k |^p \Delta x_k + \sum_{ k \in B } | M_k - m_k |^p \Delta x_k \\ \leq & | M - m |^p \epsilon_2 + \epsilon_2^p ( 2 A - 2 ) \end{aligned} \]

这样这里就被限制住了,而考虑:

$$ \[\begin{aligned} & \int_{ - \infty }^{ + \infty } \left | f ( x + h ) - f ( x ) \right |^p \mathrm{ d } x \\ \leq & \int_{ - \infty }^{ + \infty } 3^p \left ( \left | f ( x + h ) - g ( x + h ) \right |^p + \left | g ( x + h ) - g ( x ) \right |^p + \left | f ( x ) - g ( x ) \right |^p \right ) \mathrm{ d } x \\ \end{aligned}\]

$$

前后两项都能被上述控制住,只剩中间的\(| g ( x + h ) - g ( x ) |^p\)\(O ( h^p )\)的,只需调整\(h\)就能控制住.

Example6

求证:\(\int_1^{ + \infty } \frac{ \sin x }{ x } \mathrm{ d } x\)是条件收敛的.

用DA判别法,取\(f = \frac{ 1 }{ x }\)当然趋近于\(0\),而\(| \int_1^A \sin x \mathrm{ d } x | \leq 2\),于是收敛.

那接下来就要证明它并非绝对收敛.只需考虑:

\[ \begin{aligned} & \int_1^{ + \infty } \frac{ | \sin x | }{ x } \mathrm{ d } x \\ \geq & \int_1^{ + \infty } \frac{ \sin^2 x }{ x } \mathrm{ d } x \\ = & \int_1^{ + \infty } \frac{ 1 - \cos^2 x }{ x } \mathrm{ d } x \end{aligned} \]

当然并不绝对收敛.

事实上还可以直接求出来这个积分的值.

接下来考虑\(f ( x ) = \begin{cases}0 & x = 0 \\ \frac{ 1 }{ x } - \frac{ 1 }{ 2 \sin \frac{ x }{ 2 } } & x \in [ - \pi , \pi ] \setminus \{ 0 \}\end{cases}\).只需泰勒展开就知道它是解析的.回忆到黎曼引理:

\[ \begin{aligned} & \int_0^{ \infty } \frac{ \sin x }{ x } \mathrm{ d } x \\ = & \lim_{ n \to + \infty } \int_{ 0 }^{ ( n + \frac{ 1 }{ 2 } ) \pi } \frac{ \sin x }{ x } \mathrm{ d } x \\ = & \lim_{ n \to + \infty } \int_{ 0 }^{ \pi } \frac{ \sin ( ( n + \frac{ 1 }{ 2 } ) t ) }{ t } \mathrm{ d } t \\ = & \lim_{ n \to + \infty } \int_{ 0 }^{ \pi } \left ( f ( t ) + \frac{ 1 }{ 2 \sin \frac{ t }{ 2 } } \right ) \sin ( ( n + \frac{ 1 }{ 2 } ) t ) \mathrm{ d } t \\ = & \lim_{ n \to + \infty } \int_{ 0 }^{ \pi } \frac{ 1 }{ 2 \sin \frac{ t }{ 2 } } \sin ( ( n + \frac{ 1 }{ 2 } ) t ) \mathrm{ d } t \\ = & \lim_{ n \to + \infty } \int_{ 0 }^{ \pi } \left ( \frac{ 1 }{ 2 } + \sum_{ k = 1 }^n \cos ( kt ) \right ) \mathrm{ d } t \\ = & \frac{ \pi }{ 2 } \end{aligned} \]

Example7

给定\(f \in C [ 0 , + \infty ]\),\(\int_0^{ + \infty } f^2 \mathrm{ d } x < + \infty , f ( 0 ) = 0\),取\(g ( x ) = \int_0^x f ( t ) \mathrm{ d } t\),求证:\(\int_0^{ + \infty } \frac{ g^2 ( x ) }{ x^2 } \mathrm{ d } x \leq 4 \int_0^{ + \infty } f^2 \mathrm{ d } x\)以证明前者存在.

当然是分部积分,用洛必达法则知道\(\lim_{ x \to 0 } \frac{ g }{ x } \to 0\),考虑:

\[ \begin{aligned} \int_0^A \frac{ g^2 }{ x^2 } \mathrm{ d } x & = \int_0^A g^2 \mathrm{ d } ( - \frac{ 1 }{ x } ) \\ & = - \frac{ g^2 ( x ) }{ x } |_0^A + \int_0^A \frac{ 2 gf }{ x } \mathrm{ d } x \\ & = - \frac{ g^2 ( A ) }{ A } + 2 \int_0^A \frac{ g }{ x } f \mathrm{ d } x \\ & \leq 2 ( \int_0^A \frac{ g^2 }{ x^2 } \mathrm{ d } x )^{ \frac{ 1 }{ 2 } } ( \int_0^A f^2 \mathrm{ d } x )^{ \frac{ 1 }{ 2 } } \end{aligned} \]

整理一下就做完了.

Example8(欧拉积分)

\(\int_0^{ + \infty } \frac{ x^{ p - 1 } }{ 1 + x } \mathrm{ d } x , 0 < p < 1\)的收敛性和值.

考虑\(\frac{ x^{ p - 1 } }{ 1 + x }\)\(x \to 0\)的时候趋近于\(x^{ p - 1 }\),而在\(x \to \infty\)的时候趋近于\(x^{ p - 2 }\),因此绝对收敛.

难点在于把这个东西求出来.接下来将采取一些不严谨的说法.

考虑\(0 \leq x < 1\)的时候,有:

$$ \[\begin{aligned} \frac{ x^{ p - 1 } }{ 1 + x } & = x^{ p - 1 } \sum_{ j = 0 }^\infty ( - x )^j \\ & = \sum_{ j = 0 } ( - 1 )^j x^{ p + j - 1 } \\ \end{aligned}\]

$$

暂时抛开多余的思量,两边做积分:

\[ \begin{aligned} \int_0^1 \frac{ x^{ p - 1 } }{ 1 + x } \mathrm{ d } x & = \sum_{ j = 0 } ( - 1 )^j \int_0^1 x^{ p + j - 1 } \mathrm{ d } x \\ & = \sum_{ j = 0 } ( - 1 )^j \frac{ 1 }{ p + j } \end{aligned} \]

另一边,其实只需换元,可以发现:

$$ \[\begin{aligned} & \int_1^{ + \infty } \frac{ x^{ p - 1 } }{ 1 + x } \mathrm{ d } x \\ = & \int_0^1 \frac{ t^{ 1 - p } }{ 1 + t^{ - 1 } } \frac{ \mathrm{ d } t }{ t^2 } \\ = & \int_0^1 \frac{ t^{ - p } }{ 1 + t } \mathrm{ d } t \\ = & \int_0^1 \frac{ t^{ 1 - p - 1 } }{ 1 + t } \mathrm{ d } t \\ = & \sum_{ j = 0 }^{ \infty } ( - 1 )^j \frac{ 1 }{ 1 - p + j } \\ = & \sum_{ j = 0 }^{ \infty } ( - 1 )^{ j + 1 } \frac{ 1 }{ p - ( j + 1 ) } \\ = & \sum_{ j = 1 }^{ \infty } ( - 1 )^{ j } \frac{ 1 }{ p - j } \\ \end{aligned}\]

$$

结合起来,答案当然就是\(\sum_{ j = - \infty }^{ + \infty } \frac{ ( - 1 )^j }{ p + j }\).

我们暂且断言上面那个无穷级数等于\(\frac{ \pi }{ \sin ( p \pi ) }\),原因是我们权且承认下述级数是正确的:

\[ \frac{ 1 }{ \sin t } = \sum_{ j = - \infty }^{ + \infty } \frac{ ( - 1 )^j }{ p + j \pi } \]

Example9(Frullani积分)

\(f \in C [ 0 , + \infty )\),且\(\int_0^{ + \infty } \frac{ f ( x ) }{ x } \mathrm{ d } x\)收敛,求证\(\int_0^{ + \infty } \frac{ f ( ax ) - f ( bx ) }{ x } \mathrm{ d } x = f ( 0 ) \ln \frac{ b }{ a }\).

考虑:

$$ \[\begin{aligned} & \int_A^{ B } \frac{ f ( ax ) - f ( bx ) }{ x } \mathrm{ d } x \\ = & \int_{ aA }^{ aB } \frac{ f ( x ) }{ x } \mathrm{ d } x - \int_{ bA }^{ bB } \frac{ f ( x ) }{ x } \mathrm{ d } x \\ = & \int_{ aA }^{ bA } \frac{ f ( x ) }{ x } \mathrm{ d } x - \int_{ aB }^{ bB } \frac{ f ( x ) }{ x } \mathrm{ d } x \\ = & \int_{ a }^{ b } \frac{ f ( Ax ) }{ x } \mathrm{ d } x - \int_{ aB }^{ bB } \frac{ f ( x ) }{ x } \mathrm{ d } x \\ \end{aligned}\]

$$

前者当\(A \to 0\)的时候当然转化为\(\int_{ a }^{ b } \frac{ f ( 0 ) }{ x } \mathrm{ d } x\),而后者用柯西判准知道趋近于\(0\),立刻完事.

Example10

\(I = \int_0^{ \frac{ \pi }{ 2 } } \ln ( \sin x ) \mathrm{ d } x\).

考虑\(x \to 0\)的时候,\(\ln ( \sin x ) \sim \ln x\),而\(\int \ln x = x \ln x - x\),因此是绝对收敛的.

那怎么求这个积分呢?考虑一些对称技巧,立刻有:

$$ \[\begin{aligned} I & = \int_0^{ \frac{ \pi }{ 2 } } \ln ( \sin x ) \mathrm{ d } x \\ & = \int_{ \frac{ \pi }{ 2 } }^{ \pi } \ln ( \sin x ) \mathrm{ d } x \\ & = \int_{ 0 }^{ \frac{ \pi }{ 2 } } \ln ( \cos x ) \mathrm{ d } x \\ \end{aligned}\]

$$

那么:

\[ \begin{aligned} I & = \frac{ 1 }{ 2 } \int_0^\pi \ln ( \sin x ) \mathrm{ d } x \\ & = \int_0^{ \frac{ \pi }{ 2 } } \ln ( \sin 2 t ) \mathrm{ d } t \\ & = \int_0^{ \frac{ \pi }{ 2 } } \left ( \ln 2 + \ln ( \sin t ) + \ln ( \cos t ) \right ) \mathrm{ d } t \\ & = \frac{ \pi }{ 2 } \ln 2 + 2 I \end{aligned} \]

所以\(I = - \frac{ \pi }{ 2 } \ln 2\).

Example11

讨论\(\int_0^1 \frac{ \ln x }{ x^{ \alpha } } , \alpha > 0\)的收敛性.

考虑\(x \in ( 0 , 1 ]\)的时候,\(\frac{ \ln x }{ x^{ \alpha } } \leq 0\),因此其收敛性当然等价于绝对收敛性.取\(x \to 0\)的部分,而考虑:

\(0 < \alpha < 1\),任取一个足够小的\(\delta > 0\)使得\(0 < \alpha + \delta < 1\),都可以取足够逼近的\(x \to 0\)使得\(| \frac{ \ln x }{ x^{ \alpha } } | < \frac{ 1 }{ x^{ \alpha + \delta } }\).于是此时绝对收敛.反之,当\(\alpha \geq 1\)的时候,\(| \frac{ \ln x }{ x^\alpha } | > \frac{ 1 }{ x }\),此时发散.

Example12

讨论\(p , q > 0\),\(\int_2^{ + \infty } \frac{ \mathrm{ d } x }{ x^p \ln^q x }\)的收敛性.

\(p > 1\)的时候,显然\(\frac{ 1 }{ x^p \ln^q x } < \frac{ 1 }{ x^p }\),因此当然绝对收敛.

\(p < 1\)的时候,同Example11,只需放掉\(\ln x\)就行,因此是发散的.

\(p = 1\)的时候,估计出了点问题,此时做换元\(t = \ln x\),则原式变为:

$$ \[\begin{aligned} & \int_{ \ln 2 }^{ + \infty } e^{ - t } e^{ t } \frac{ 1 }{ t^q } \mathrm{ d } t \\ = & \int_{ \ln 2 }^{ + \infty } \frac{ 1 }{ t^q } \mathrm{ d } t \\ \end{aligned}\]

$$

所以当\(q > 1\)的时候收敛,当\(q \leq 1\)的时候发散.

Example13

讨论\(I = \int_0^{ \frac{ \pi }{ 2 } } \frac{ \sin x }{ x^p } \mathrm{ d } x\)的收敛性.

\(f = \frac{ \sin x }{ x }\),容易见到\(f\)\(( 0 , \frac{ \pi }{ 2 } )\)上是单调递减的,那就应当有:

\[ \frac{ 2 }{ \pi } \frac{ 1 }{ x^{ p - 1 } } \leq \frac{ \sin x }{ x^p } = \frac{ \sin x }{ x } \frac{ 1 }{ x^{ p - 1 } } \leq \frac{ 1 }{ x^{ p - 1 } } \]

因此其收敛性等价于\(\int_{ 0 }^{ \frac{ \pi }{ 2 } } \frac{ 1 }{ x^{ p - 1 } }\)的收敛性,当\(p < 2\)时收敛.

Example14

\(f \in C^2 [ a , + \infty )\),若\(\int_a^{ + \infty } f^2 ( x ) \mathrm{ d } x < + \infty , \int_a^{ + \infty } ( f ' ' )^2 ( x ) \mathrm{ d } x < + \infty\),求证\(\int_a^{ + \infty } ( f ' )^2 ( x ) \mathrm{ d } x < + \infty\).

此时考虑做分部积分,当然有:

$$ \[\begin{aligned} \int_a^x f ( t ) f ' ' ( t ) \mathrm{ d } t & = f ( x ) f ' ( x ) - f ( a ) f ' ( a ) - \int_a^x ( f ' ( t ) )^2 \mathrm{ d } t \\ f ( x ) f ' ( x ) & = f ( a ) f ' ( a ) + \int_a^x f ( t ) f ' ' ( t ) \mathrm{ d } t + \int_a^x ( f ' ( t ) )^2 \mathrm{ d } t \\ \end{aligned}\]

$$

此时回忆到柯西不等式:

\[ ( \int_a^x f ( t ) f ' ' ( t ) \mathrm{ d } t ) \leq ( \int_a^x f^2 ( t ) \mathrm{ d } t ) ( \int_a^x ( f ' ' ( t ) )^2 \mathrm{ d } t ) \]

因此这一项被控制住了,于是我们知道\(f ( x ) f ' ( x )\)\(\int_a^x ( f ' ( t ) )^2 \mathrm{ d } t\)收敛性相同.

接下来反证原结论,假设后者并不收敛而是趋近\(+ \infty\).那\(f ( x ) f ' ( x ) \to + \infty\),对其做积分,则:

\[ \int_a^{ + \infty } f ( x ) f ' ( x ) \mathrm{ d } x = \int_a^{ + \infty } f ( x ) \mathrm{ d } f ( x ) = f^2 ( x ) - f^2 ( a ) \]

因此\(f^2 ( x ) \to + \infty\),这当然与\(\int_a^{ + \infty } f^2 ( x ) \mathrm{ d } x < + \infty\)相违背.

Example15

判断\(\int_1^{ + \infty } \tan \left ( \cfrac{ \sin x }{ x } \right ) \mathrm{ d } x\)的收敛性.

考虑\(\int_1^{ + \infty } \frac{ \sin x }{ x } \mathrm{ d } x\)当然是收敛的,而对\(\tan \frac{ \sin x }{ x }\)做泰勒展开应该和\(\frac{ \sin x }{ x }\)同阶,于是:

$$ \[\begin{aligned} & \int_1^{ + \infty } \tan \left ( \cfrac{ \sin x }{ x } \right ) \mathrm{ d } x \\ = & \int_1^{ + \infty } \frac{ \sin x }{ x } \mathrm{ d } x + \int_1^{ + \infty } \left ( \tan \left ( \cfrac{ \sin x }{ x } \right ) - \frac{ \sin x }{ x } \right ) \mathrm{ d } x \\ \end{aligned}\]

$$

前半部分当然收敛,后半部分取绝对值放缩后是\(O ( \frac{ 1 }{ x^2 } )\)的,当然也收敛.

Example16

讨论\(\int_1^{ + \infty } \frac{ \sin x }{ x^p } \arctan x \mathrm{ d } x , p > 0\)的收敛性.

\(\int_1^{ + \infty } \frac{ \sin x }{ x^p } \mathrm{ d } x\)收敛,而\(\arctan x\)单调有界,立刻知道收敛.

Example17

讨论\(\int_2^{ + \infty } \frac{ \cos \sqrt{ x } }{ x^p \ln x } \mathrm{ d } x\)的收敛性.

当然先做换元\(t = \sqrt{ x }\),那么原式变成:

$$ \[\begin{aligned} & \int_{ \sqrt{ 2 } }^{ + \infty } \frac{ 2 t \cos t \mathrm{ d } t }{ t^{ 2 p } \ln t^2 } \\ = & \int_{ \sqrt{ 2 } }^{ + \infty } \frac{ \cos t \mathrm{ d } t }{ t^{ 2 p - 1 } \ln t } \\ \end{aligned}\]

$$

\(2 p - 1 > 1 , p > 1\)的时候当然绝对收敛,而\(0 \leq 2 p - 1 \leq 1\)的时候用DA判准知道收敛,\(2 p - 1 < 0\)的时候当然发散.

Example18(磨光核函数)

构造一个\(C^{ \infty }\)的函数\(g ( x )\),满足当\(x \leq 0\)的时候,\(g ( x ) = 0\);而当\(x \geq 1\)的时候,\(g ( x ) = 1\).也就是你要造一个函数把两段直线焊接起来.

考虑\(h ( x ) = \begin{cases}e^{ - \frac{ 1 }{ x^2 } } & x \ne 0 \\ 0 & x = 0\end{cases}\).这个\(h ( x )\)容易检验是\(C^{ \infty }\)的,只需看\(0\)点处的可导性即可.

\(H ( x ) = \int_{ - \infty }^x h ( t ) h ( 1 - t ) \mathrm{ d } t\).容易见到这函数在\(0\)处和\(1\)处都无穷阶可导.稍微乘下常数就可以搞定.

Example19

\(\int_0^{ + \inf } f ( x ) \mathrm{ d } x\)收敛,\(xf ( x )\)单调,求证:\(\lim_{ x \to \inf } xf ( x ) \ln x = 0\).

首先容易证明\(xf ( x )\)单调递减趋于\(0\).那么:

\[ \begin{aligned} & \int_{ x_0 }^{ x_0^2 } f ( x ) \mathrm{ d } x \\ = & \int_{ x_0 }^{ x_0^2 } f ( x ) \frac{ x }{ x } \mathrm{ d } x \\ = & \int_{ x_0 }^{ x_0^2 } xf ( x ) \mathrm{ d } \ln x \\ \geq & x_0^2 f ( x_0^2 ) \ln x_0 \\ = & \frac{ 1 }{ 2 } x_0^2 f ( x_0^2 ) \ln x_0^2 \end{aligned} \]

\(x_0 \to \inf\)用柯西准则证毕.

Example20

求证:当\(\int_a^b | f | < \infty\)的时候,黎曼引理仍然成立.

回忆到黎曼引理要求\(f \in R [ a , b ]\),但这里的确可以推广,原因是瑕积分肯定只有有限个瑕点(有无限个瑕点能立刻证明发散),只需要用足够小的区间把这有限个瑕点盖住,用柯西准则就可以证明这部分很小,而外面的部分当然是正常的黎曼引理.

RS积分

\(\alpha ( x ) : [ a , b ] \to \mathbb{ R }\)是一个单调不减的函数,对于有界函数\(f ( x ) : [ a , b ] \to \mathbb{ R }\),考虑一个分划\(P : a = x_0 < \cdots < x_n = b\),定义\(\Delta \alpha_k = \alpha ( x_k ) - \alpha ( x_{ k - 1 } ) \geq 0\),并定义\(M_k = \sup_{ [ x_{ k - 1 } , x_k ] } f ( x ) , m_k = \inf_{ [ x_{ k - 1 } , x_k ] } f ( x )\).在此基础上定义上和\(U ( P , f , \alpha ) = \sum_{ k = 1 }^n M_k \Delta \alpha_k\),同理定义下和\(L ( P , f , \alpha ) = \sum_{ k = 1 }^n m_k \Delta \alpha_k\).定义上积分\(\overline{ \int_{ a }^b } f ( x ) \mathrm{ d } \alpha = \inf_P{ U ( P , f , \alpha ) }\),同理定义下积分\(\underline{ \int_{ a }^b } f ( x ) \mathrm{ d } \alpha = \inf_P{ L ( P , f , \alpha ) }\).那么如果有以下\(\overline{ \int_{ a }^b } f ( x ) \mathrm{ d } \alpha = \underline{ \int_{ a }^b } f ( x ) \mathrm{ d } \alpha\),称\(f\)\([ a , b ]\)上关于\(\alpha\)RS可积,记作\(f \in{ R }_\alpha [ a , b ]\),而将此值称作\(f\)关于\(\alpha\)的RS积分,记作\(\int_a^b f ( x ) \mathrm{ d } \alpha\).

类比黎曼积分那套理论,应当有以下显而易见的性质:

  1. 分划\(P^*\)如果是\(P\)的加密,那么\(L ( P , f , \alpha ) \leq L ( P^* , f , \alpha ) , U ( P , f , \alpha ) \geq U ( P^* , f , \alpha )\).

  2. \(L ( P_1 , f , \alpha ) \leq U ( P_2 , f , \alpha )\).

  3. \(\underline{ \int_{ a }^b } f ( x ) \mathrm{ d } \alpha \leq \overline{ \int_{ a }^b } f ( x ) \mathrm{ d } \alpha\).

  4. \(f \in{ R }_\alpha\),其充要条件是\(\forall \epsilon > 0\),存在分划\(P\)使得\(0 \leq U ( P , f , \alpha ) - L ( P , f , \alpha ) < \epsilon\).

接下来考虑证明一些性质:

  1. \(f_1 , f_2 \in{ R }_\alpha [ a , b ]\),则\(f_1 + f_2 \in{ R }_\alpha [ a , b ]\),并且\(\int_a^b ( f_1 + f_2 ) \mathrm{ d } \alpha = \int_a^b f_1 \mathrm{ d } \alpha + \int_a^b f_2 \mathrm{ d } \alpha\).

  2. \(f \in{ R }_\alpha [ a , b ]\),则\(cf \in{ R }_\alpha [ a , b ]\),并且\(\int_a^b ( cf ) \mathrm{ d } \alpha = c \int_a^b f \mathrm{ d } \alpha\).

  3. \(f_1 , f_2 \in{ R }_\alpha [ a , b ] , f_1 \leq f_2\),则\(\int_a^b f_1 \mathrm{ d } \alpha \leq \int_a^b f_2 \mathrm{ d } \alpha\).

  4. \(f \in{ R }_\alpha [ a , b ] , c \in [ a , b ]\),那么\(f \in{ R }_\alpha [ a , c ] , f \in{ R }_\alpha [ c , b ]\),且\(\int_a^b f \mathrm{ d } \alpha = \int_a^c f \mathrm{ d } \alpha + \int_c^b f \mathrm{ d } \alpha\).

  5. \(f \in{ R }_\alpha [ a , b ] , | f | \leq M\),则\(| \int_a^b f \mathrm{ d } \alpha | \leq M \left ( \alpha ( b ) - \alpha ( a ) \right )\).

  6. \(f \in{ R }_{ \alpha_1 } [ a , b ]\)并且\(f \in{ R }_{ \alpha_2 } [ a , b ]\),则\(f \in{ R }_{ \alpha_1 + \alpha_2 } [ a , b ]\),并且\(\int_a^b f \mathrm{ d } ( \alpha_1 + \alpha_2 ) = \int_a^b f \mathrm{ d } \alpha_1 + \int_a^b f \mathrm{ d } \alpha_2\).

  7. \(f \in{ R }_\alpha [ a , b ] , c > 0\).则\(f \in{ R }_{ c \alpha } [ a , b ]\),并且\(\int_a^b f \mathrm{ d } ( c \alpha ) = c \int_a^b f \mathrm{ d } \alpha\).

  8. \(f \in{ R }_\alpha [ a , b ] , m \leq f \leq M , g \in C [ m , M ]\).则\(g ( f ( x ) ) \in{ R }_\alpha [ a , b ]\).

  9. \(f \in{ R }_\alpha [ a , b ]\),则\(| f | \in{ R }_\alpha [ a , b ]\),且\(| \int_a^b f \mathrm{ d } \alpha | \leq \int_a^b | f | \mathrm{ d } \alpha\).

  10. \(f_1 , f_2 \in{ R }_\alpha [ a , b ]\),则\(f_1 f_2 \in{ R }_\alpha [ a , b ]\).

  11. 如果极限\(\lim_{ \lambda ( P ) \to 0 } ( \sum f ( t_k ) \Delta \alpha_k ) , t_k \in [ x_{ k - 1 } , x_k ]\)存在,则\(f \in{ R }_\alpha [ a , b ]\)并且其RS积分就是上述极限.然而,逆命题未必成立.

对于(1),考虑对于分划\(P_1 , P_2\)而言:

\[ \begin{aligned} L ( P_1 , f_1 , \alpha ) + L ( P_2 , f_2 , \alpha ) & \leq L ( P_1 \cup P_2 , f_1 , \alpha ) + L ( P_1 \cup P_2 , f_2 , \alpha ) \\ & \leq L ( P_1 \cup P_2 , f_1 + f_2 , \alpha ) \\ & \leq U ( P_1 \cup P_2 , f_1 + f_2 , \alpha ) \\ & \leq U ( P_1 \cup P_2 , f_1 , \alpha ) + U ( P_1 \cup P_2 , f_2 , \alpha ) \leq U ( P_1 , f_1 , \alpha ) + U ( P_2 , f_2 , \alpha ) \end{aligned} \]

对此式子两边同取上下确界可以证明\(\forall \epsilon > 0 , U ( P_1 \cup P_2 , f_1 + f_2 , \alpha ) - L ( P_1 \cup P_2 , f_1 + f_2 , \alpha ) < \epsilon\),即可得证(1).

对于(2),显然\(U ( P , cf , \alpha ) = cU ( P , f , \alpha )\),下和同理,于是立即得证.

对于(3),由(1),显然\(f_2 \geq f_1\)时,\(\int_a^b ( f_2 - f_1 ) \mathrm{ d } \alpha \geq 0\),于是\(\int_a^b f_2 \mathrm{ d } \alpha \geq \int_a^b f_1 \mathrm{ d } \alpha\).

对于(4),考虑既然\(f \in R_\alpha [ a , b ]\),那么\(\forall \epsilon > 0\),都应该\(\exists P\)使得\(U_{ [ a , b ] } ( P , f , \alpha ) - L_{ [ a , b ] } ( P , f , \alpha ) < \epsilon\),而令\(P ' = P \cup \{ c \}\),也就是将\(c\)强行作为一个分点,上式仍然成立,而可以将\(P '\)拆分为两个部分,不妨记作\(P_1 , P_2\),应该有:

\[ \begin{aligned} & U_{ [ a , b ] } ( P ' , f , \alpha ) - L_{ [ a , b ] } ( P ' , f , \alpha ) \\ = & U_{ [ a , c ] } ( P_1 , f , \alpha ) - L_{ [ a , c ] } ( P_1 , f , \alpha ) + U_{ [ c , b ] } ( P_2 , f , \alpha ) - L_{ [ c , b ] } ( P_2 , f , \alpha ) < \epsilon \end{aligned} \]

此二项均为正,因此分别\(< \epsilon\),那也就说明了\(f \in R_\alpha [ a , c ]\)\(f \in R_\alpha [ c , b ]\),并且仍然是钦定\(c\)为分点就可以见到\(\int_a^b f \mathrm{ d } \alpha = \int_a^c f \mathrm{ d } \alpha + \int_c^b f \mathrm{ d } \alpha\).

对于(5),由(3)可以得知:

\[ - \int_a^b M \mathrm{ d } \alpha \leq \int_a^b f \mathrm{ d } \alpha \leq \int_a^b M \mathrm{ d } \alpha \]

而由定义立刻见到\(\int_a^b M \mathrm{ d } \alpha = M ( \alpha ( b ) - \alpha ( a ) )\).

对于(6),考虑\(\Delta ( \alpha_1 + \alpha_2 )_k = \Delta \alpha_1 + \Delta \alpha_2\),因此\(U ( P , f , \alpha_1 + \alpha_2 ) = U ( P , f , \alpha_1 ) + U ( P , f , \alpha_2 )\).因此证明与(4)无异.

对于(7),只需考虑\(\Delta ( c \alpha ) = c \Delta \alpha\),于是\(U ( P , f , c \alpha ) = cU ( P , f , \alpha )\),于是证明与(2)无异.

考虑(8)的证明,由于\(g\)是闭区间上的连续函数,立刻知道其一致连续.也就是\(\forall \epsilon > 0 , \exists 0 < \delta < \epsilon\),使得\(| s - t | < \delta\)时一定有\(| g ( s ) - g ( t ) | < \epsilon\).接下来考虑由于\(f \in R_\alpha [ a , b ]\),应当可以取一组划分\(P : a = x_0 < \cdots < x_n = b\),使得\(U ( P , f , \alpha ) - L ( P , f , \alpha ) < \delta^2\).考虑将划分分为两类:\(A = \{ 1 \leq k \leq n \mid M_k - m_k < \delta \}\)\(B = \{ 1 \leq k \leq n \mid M_k - m_k \geq \delta \}\).这个思路就会和根号分治很像.那接下来考虑定义\(M_k^* = \sup_{ [ x_{ k - 1 } , x_k ] } g ( f ( x ) ) , m_k^* = \inf_{ [ x_{ k - 1 } , x_k ] } g ( f ( x ) )\).

那这就会使得当\(k \in A\)的时候,由于\(g\)的一致连续性,立刻可以知道\(M_k^* - m_k^* \leq \epsilon\).而当\(k \in B\)的时候,考虑:

\[ \begin{aligned} \delta \sum_{ k \in B } \Delta \alpha_k & \leq \sum_{ k \in B } ( M_k - m_k ) \Delta \alpha_k \\ & = U ( P , f , \alpha ) - L ( P , f , \alpha ) < \delta^2 \end{aligned} \]

于是\(\sum_{ k \in B } \Delta \alpha_k < \delta\).如此一来:

\[ \begin{aligned} & U ( P , g \circ f , \alpha ) - L ( P , g \circ f , \alpha ) \\ = & \sum_{ k \in A } ( M_k^* - m_k^* ) \Delta \alpha_k + \sum_{ k \in B } ( M_k^* - m_k^* ) \Delta \alpha_k \\ < & \epsilon ( \alpha ( b ) - \alpha ( a ) ) + 2 ( \sup | g | ) \delta \\ < & \epsilon \left ( \alpha ( b ) - \alpha ( a ) + 2 \sup | g | \right ) \end{aligned} \]

这样就证毕了.

考虑(9)的证明,首先由(8)知道\(| f | \in{ R }_\alpha [ a , b ]\).而我们可以说存在\(c = \pm 1\),使得\(| \int_a^b f \mathrm{ d } \alpha | = c ( \int_a^b f \mathrm{ d } \alpha )\).而\(cf ( x ) \leq | f ( x ) |\),由(3)的保序性得证.

考虑(10)的证明,嵌套函数\(g = x^2\)并利用(9),则我们可以知道如果\(f \in{ R }_\alpha [ a , b ]\),那么\(f^2 \in{ R }_\alpha [ a , b ]\).此时观察到\(4 f_1 f_2 = ( f_1 + f_2 )^2 - ( f_1 - f_2 )^2\),立即得证.

(11)的证明比较显然.(11)直接的逆命题的话有个反例是考虑\(f ( x ) = \begin{cases}1 & x \geq 0 \\ 0 & x < 0\end{cases} , \alpha ( x ) = \begin{cases}1 & x > 0 \\ 0 & x \leq 0\end{cases}\).此时会发现\(x = 0\)这个点取不取在分划里是重要的,只要不取在分划里,怎么加密也没有用.

接下来当然应当研究一下连续性对RS可积的意义.我们声明:

  1. 如果\(f \in C [ a , b ]\),则\(f \in{ R }_\alpha [ a , b ]\)且对\(\forall \epsilon > 0 , \exists \delta > 0\),并且只要\(\lambda ( P ) < \delta\),那么\(| \sum f ( t_k ) \Delta \alpha_k - \int_a^b f \mathrm{ d } \alpha | < \epsilon\),其中\(t_k \in [ x_{ k - 1 } , x_k ]\).

  2. (1)中的条件如果改成\(f \in R_\alpha [ a , b ] , \alpha \in C [ a , b ]\),结论仍然成立.

  3. 如果\(f\)单调,但是\(\alpha\)连续,则我们也能证明\(f_\alpha \in{ R }_\alpha [ a , b ]\).

  4. 作为(3)的推论,如果\(f\)是有界变差函数,\(\alpha\)连续,也能证明\(f_\alpha \in{ R }_\alpha [ a , b ]\).

  5. 如果\([ a , b ]\)上的有界函数\(f\)只有有限个间断点,并且\(f\)\(\alpha\)的间断点集交集为空,则\(f \in R_\alpha [ a , b ]\).同时,(1)中的性质仍然成立.

(1)的证明,考虑\(\forall \epsilon > 0\),取\(\gamma > 0\),使得\(\left ( \alpha ( b ) - \alpha ( a ) \right ) \gamma < \epsilon\).此时,\(f\)是闭区间上的连续函数,那它就一定是一致连续的函数.那么\(\exists \delta > 0\),当\(| x - y | < \delta\)的时候,有\(| f ( x ) - f ( y ) | < \gamma\).此时只需考虑\(U ( P , f , \alpha ) - L ( P , f , \alpha ) < \epsilon\)就做完了.

(2)的证明,考虑既然\(f \in R_{ \alpha } [ a , b ]\),因此一定存在一组分划\(P^*\)使得\(U ( P^* , f , \alpha ) < \int_a^b f \mathrm{ d } \alpha + \epsilon\).

那么接下来对于任意一组分划\(P : a = x_0 < \cdots < x_m = b\),将其分为两组:一组是\(A = \{ k \mid \exists i , x_i^* \in ( x_{ k - 1 } , x_k ) \}\),\(B = \{ 1 , 2 , \cdots , m \} \setminus A\).也即\(B\)中的每个区间都被包含在\(P^*\)的分划中.既然如此,在\(B\)上的和的部分当然就要\(\leq U ( P^* , f , \alpha ) < \int_a^b f \mathrm{ d } \alpha + \epsilon\).只要我们能证明\(A\)能被控制住即可.

而由于\(\alpha\)连续,其在\([ a , b ]\)上绝对连续,可以取足够小的分划使得\(\Delta \alpha\)足够小.既然如此,\(\sum_{ k \in A } f ( t_k ) \Delta \alpha_k \leq nM \max \{ \Delta \alpha_k \}\),其中\(M\)\(f\)\([ a , b ]\)上的上界,这个立刻可以被\(\max \{ \Delta \alpha_k \}\)控制住.

(3)的证明,不妨设\(f\)单调不降,此时考虑取足够大的\(n\)使得\(\frac{ \alpha ( b ) - \alpha ( a ) }{ n } ( f ( b ) - f ( a ) ) < \epsilon\).那么由于\(\alpha\)连续,所以其有介值性,可以通过选取划分使得\(\Delta \alpha_k \equiv \frac{ \alpha ( b ) - \alpha ( a ) }{ n } ( f ( b ) - f ( a ) )\),那还是考虑\(U ( P , f , \alpha ) - L ( P , f , \alpha ) < \epsilon\)即可.

(5)的证明相当平凡,只需用闭区间上的连续函数是一致连续处理间断点即可,在此略过.

于上述基础上进一步拓展,可以拓展到\(\alpha\)是有界变差的情况.原因是有界变差函数可以表示为两个不降函数的差,不妨设\(\alpha ( x ) = \beta ( x ) - \gamma ( x )\),则我们定义\(\int_a^b f \mathrm{ d } \alpha = \int_a^b f \mathrm{ d } \beta - \int_a^b f \mathrm{ d } \gamma\).

这个还要证明是良定的,原因是如果一个有界变差函数能表示成两种情形,有\(\beta_1 ( x ) - \gamma_1 ( x ) = \beta_2 ( x ) - \gamma_2 ( x )\),那么\(\beta_1 ( x ) + \gamma_2 ( x ) = \beta_2 ( x ) + \gamma_1 ( x )\),这两边都是不降函数,那根据\(\alpha\)部分可以加减的性质就完事了.

既然如此,对拓展的版本进一步寻找性质,不妨设\(V ( x ) = V_a^x \alpha\).

  1. \(f \in C [ a , b ]\)\(\alpha\)是有界变差,或\(f , \alpha\)都是有界变差且\(f\)连续时,\(| \int_a^b f \mathrm{ d } \alpha | \leq \int_a^b f \mathrm{ d } V\)

  2. 作为(1)的推论,上述条件时,\(| \int_a^b f \mathrm{ d } \alpha | \leq \sup | f | \times V_a^b \alpha\)

  3. (分部积分):当\(\alpha , f\)都是有界变差,并且它们有一个是连续的时候,\(\int_a^b f \mathrm{ d } \alpha = f \alpha \mid_a^b - \int_a^b \alpha \mathrm{ d } f\).应当见到其实该定理只需要\(\alpha , f\)有一个是连续就行.

  4. (第一积分中值定理):\(f \in C [ a , b ]\)\(\alpha\)不降,则\(\int_a^b f \mathrm{ d } \alpha = f ( \xi ) \left ( \alpha ( b ) - \alpha ( a ) \right )\).

  5. (第二积分中值定理):\(f\)\([ a , b ]\)上单调,\(\alpha\)是连续有界变差.则\(\int_a^b f \mathrm{ d } \alpha = f ( a ) \left ( \alpha ( \xi ) - \alpha ( a ) \right ) + f ( b ) \left ( \alpha ( b ) - \alpha ( \xi ) \right )\).

  6. (变量替换公式):如果\(f , g \in C [ a , b ]\)并且\(g\)严格增,取\(h = g^{ - 1 }\),\(c = g ( a ) , d = g ( b )\),那么\(\int_a^b f ( x ) \mathrm{ d } x = \int_c^d f ( h ( y ) ) \mathrm{ d } h ( y )\).

  7. (和黎曼可积的关系):\(f \in R [ a , b ]\),\(\alpha\)可导并且\(\alpha ' \in R [ a , b ]\),则\(f \in R_\alpha [ a , b ]\),且\(\int_a^b f \mathrm{ d } \alpha = \int_a^b f \alpha ' \mathrm{ d } x\)

考虑(1)的证明,由于此时已经可以使用求和来逼近,那不妨考虑:

\[ \begin{aligned} | S ( P , f , \alpha ) | & = | \sum f ( t_k ) \Delta \alpha_k | \\ & \leq | \sum f ( t_k ) | \cdot | \Delta \alpha_k | \\ & \leq | \sum f ( t_k ) | \Delta V_k \end{aligned} \]

于是证毕.(2)自是(1)的推论.

(3)的话,当然是Abel求和,考虑:

\[ \begin{aligned} S ( P , f , \alpha ) & = \sum_{ k = 1 }^n f ( t_k ) ( \alpha ( x_k ) - \alpha ( x_{ k - 1 } ) ) \\ & = f ( b ) \alpha ( b ) - f ( a ) \alpha ( a ) - \sum_{ k = 1 }^{ n + 1 } \alpha ( x_{ k - 1 } ) ( f ( t_k ) - f ( t_{ k - 1 } ) ) \\ & = f \alpha |_a^b - S ( Q , \alpha , f ) \end{aligned} \]

容易见到\(| P | \to 0\)会导致\(| Q | \to 0\),便是显然.

考虑(4),由于\(f\)是连续的,直接取\(f\)的上下界并介值定理一下即是显然.

考虑(5),用分部积分公式,立刻有:

\[ \begin{aligned} \int_a^b f \mathrm{ d } \alpha & = f ( b ) \alpha ( b ) - f ( a ) \alpha ( a ) - \int_a^b \alpha \mathrm{ d } f \\ & = f ( b ) \alpha ( b ) - f ( a ) \alpha ( a ) - \alpha ( \xi ) ( f ( b ) - f ( a ) ) \end{aligned} \]

整理一下即可.

考虑(6),由于连续性,因此对\(x\)做的划分同样通过一个\(h\)成为了新的一组划分,而且由于闭区间上的连续函数是一致连续的,这个划分当然也趋近于\(0\),立即见到成立.

对于(7),首先用介值定理得到\(\Delta \alpha_k = \alpha ' ( \xi_k ) \Delta x_k\),那当然有:

\[ \begin{aligned} S ( P , f , \alpha ) & = \sum f ( t_k ) \Delta \alpha_k \\ & = \sum f ( t_k ) \alpha ' ( t_k ) \Delta x_k + \sum f ( t_k ) ( \alpha ' ( \xi_k ) - \alpha ' ( t_k ) ) \Delta x_k \end{aligned} \]

而后面那一项绝对值不超过\(| \sup f | \sum \omega_{ \alpha ' }\),当然趋近于\(0\).

级数

对于数列\(\{ a_n \}\),定义\(S_n = \sum_{ k = 1 }^n a_k\).如果\(\lim_{ n \to \infty } S_n\)存在,则称级数\(\sum_{ k = 1 }^{ \infty } a_n\)收敛,记作\(S = \sum_{ k }^{ \infty } a_n\),否则如若上述极限不存在,称其发散.

容易见到以下性质显然成立,然而逆命题并不总是成立:

  1. \(\sum^{ + \infty } a_n = A , \sum^{ + \infty } b_n = B\),则\(\sum^{ + \infty } ( a_n + b_n ) = A + B\).

  2. \(\sum^{ + \infty } a_n = A\),则\(\sum^{ + \infty } c a_n = cA\).

  3. 结合律:\(\sum^{ + \infty } a_n = A\),若\(\{ n_k \}\)是递增正整数序列且\(n_0 = 1\),设\(C_k = \sum_{ n = n_{ k - 1 } }^{ n_k - 1 } a_n\),则\(\sum_k^{ + \infty } C_k = A\).

(1)(2)显然,(3)当然是因为原数列收敛立刻能推出其子列收敛.

如果\(\sum | a_n | < \infty\),则称此级数绝对收敛.考虑\(a_n = | a_n | - ( | a_n | - a_n )\),前后两者都是正项数列而且\(| a_n | - a_n \leq 2 | a_n |\),所以绝对收敛当然能推出收敛,而反之不可.将收敛但不绝对收敛的级数称作条件收敛.绝对收敛的两个级数之和当然也绝对收敛,乘一个系数后也绝对收敛.

我们有柯西收敛原理:\(\sum a_n\)收敛的充要条件是\(\forall \epsilon > 0\),\(\exists N > 0 , \forall m > n \geq N\),\(| \sum_{ k = n }^m a_k | < \epsilon\).用柯西准则立刻见到如若\(\lim_{ n \to \infty } S_n\)收敛则必有\(\lim_{ n \to \infty } a_n = 0\).但反命题当然不成立.这是相当重要的,正是因为\(\lim_{ n \to \infty } a_n = 0\),所以我们才总能使用泰勒展开等手段进行估计和放缩.

再还有Abel-Dirichlet判别法,设\(a_n\)单调,\(B_n = \sum_{ k = 1 }^n b_k\),\(B_n\)有界,\(| B_n | \leq M\):

  1. 引理:\(| \sum_{ k = 1 }^n a_k b_k | \leq M ( | a_1 | + 2 | a_n | ) \leq 2 M ( | a_1 | + | a_n | )\).

  2. Dirichlet判别法:若\(a_n \to 0\),\(B_n\)有界,则\(\sum a_k b_k\)收敛.

  3. Abel判别法:若\(B_n\)收敛,\(a_n\)有界,则\(\sum a_k b_k\)收敛.

(1)的话当然只需使用Abel变换,有:

\[ \begin{aligned} \sum_{ k = 1 }^n a_k b_k & = \sum_{ k = 1 }^n a_k ( B_k - B_{ k - 1 } ) \\ & = a_n B_n + \sum_{ k = 1 }^{ n - 1 } ( a_k - a_{ k + 1 } ) B_k \end{aligned} \]

则:

\[ \begin{aligned} & | \sum_{ k = 1 }^n a_k b_k | \\ \leq & | a_n B_n | + \sum_{ k = 1 }^{ n - 1 } | a_k - a_{ k + 1 } | \cdot | B_k | \\ \leq & M ( | a_1 - a_n | + | a_n | ) \\ \leq & M ( | a_1 | + 2 | a_n | ) \end{aligned} \]

(2)(3)的话用柯西判准,考虑任意一段求和\(| B_{ n + p } - B_{ n - 1 } | \leq 2 M\),于是:

\[ | \sum_{ k = n }^{ n + p } a_k b_k | \leq 2 M ( | a_n | + 2 | a_{ n + p } | ) \]

则属显然.

DA判别法的一个推论是,对于\(\sum b_k\)\(\sum c_k\)来说,如果\(\frac{ b_k }{ c_k }\)单调有界且不趋于\(0\),那么它们敛散性相同.

Example1

\(\sum \frac{ \sin ( nx ) }{ n }\)的收敛性.

首先当\(x = 2 k \pi\)的时候当然收敛,否则使用DA判别法,考虑证明\(\sum \sin ( nx )\)有界.

用积化和差,考虑:

\[ \begin{aligned} | \sum_{ k = 1 }^n \sin ( kx ) | & = \left | \frac{ \sum 2 \sin \frac{ x }{ 2 } \sin ( kx ) }{ 2 \sin ( \frac{ x }{ 2 } ) } \right | \\ & = \left | \frac{ \sum \cos ( k - \frac{ 1 }{ 2 } ) x - \cos ( k + \frac{ 1 }{ 2 } ) x }{ 2 \sin ( \frac{ x }{ 2 } ) } \right | \\ & \leq \frac{ 1 }{ | \sin \frac{ x }{ 2 } | } \end{aligned} \]

这就完事.

能不能进一步把上面的这个级数求出来呢?考虑欧拉公式,令\(z = e^{ ix }\),知道\(e^{ inx } = \cos ( nx ) + i \sin ( nx )\),所以\(\sum \frac{ z^n }{ n } = - \ln ( 1 - z )\)的虚部就是所求.

而:

\[ \begin{aligned} - \ln ( 1 - z ) & = - \ln ( 1 - \cos x - i \sin x ) \\ & = - \ln \left ( 2 ( \sin \frac{ x }{ 2 } ) ( \sin \frac{ x }{ 2 } - i \cos \frac{ x }{ 2 } ) \right ) \\ & = - \ln \left ( 2 ( \sin \frac{ x }{ 2 } ) e^{ \frac{ x - \pi }{ 2 } i } \right ) \\ & = - \ln ( 2 \sin \frac{ x }{ 2 } ) + \frac{ \pi - x }{ 2 } i \end{aligned} \]

这就顺便解决了\(\sum \frac{ \cos ( nx ) }{ n }\)的情况.

Example2

判断\(\sum \frac{ ( - 1 )^n }{ n^p + ( - 1 )^n } , p > 0\)的收敛性.

观察到:

\[ \begin{aligned} & \frac{ ( - 1 )^n }{ n^p + ( - 1 )^n } \\ = & \frac{ ( - 1 )^n }{ n^p } \frac{ 1 }{ 1 + \frac{ ( - 1 )^n }{ n^p } } \\ = & \frac{ ( - 1 )^n }{ n^p } \frac{ 1 - \frac{ ( - 1 )^n }{ n^p } }{ 1 - \frac{ 1 }{ n^{ 2 p } } } \\ = & \frac{ ( - 1 )^n }{ n^p - \frac{ 1 }{ n^p } } - \frac{ 1 }{ n^{ 2 p } - 1 } \end{aligned} \]

前半部分当然收敛,于是\(p \leq \frac{ 1 }{ 2 }\)的时候发散,\(\frac{ 1 }{ 2 } < p \leq 1\)的时候条件收敛.

Example3

\(\sum \frac{ \sin ( \frac{ n \pi }{ 4 } ) }{ n^p + \sin ( \frac{ n \pi }{ 4 } ) }\)的敛散性.

考虑:

\[ \begin{aligned} & \frac{ \sin ( \frac{ n \pi }{ 4 } ) }{ n^p + \sin ( \frac{ n \pi }{ 4 } ) } \\ = & \frac{ \sin ( \frac{ n \pi }{ 4 } ) }{ n^p } \frac{ 1 }{ 1 + \frac{ \sin ( \frac{ n \pi }{ 4 } ) }{ n^p } } \\ = & \frac{ \sin ( \frac{ n \pi }{ 4 } ) }{ n^p } \left ( 1 - \frac{ \sin ( \frac{ n \pi }{ 4 } ) }{ n^p } + o ( \frac{ 1 }{ n^p } ) \right ) \\ = & \frac{ \sin ( \frac{ n \pi }{ 4 } ) }{ n^p } - \frac{ \sin^2 ( \frac{ n \pi }{ 4 } ) }{ n^{ 2 p } } + o ( \frac{ 1 }{ n^{ 2 p } } ) \end{aligned} \]

见到应该是\(p \leq \frac{ 1 }{ 2 }\)发散,\(\frac{ 1 }{ 2 } < p \leq 1\)的时候条件收敛,\(p > 1\)的时候绝对收敛.

正项级数

  1. \(a_n \geq 0\)的时候,\(S_n\)有界\(\Leftrightarrow\)S_n

  2. \(0 \leq a_n \leq b_n\),若\(\sum^{ + \infty } b_n < \infty\),则\(\sum^{ + \infty } a_n < \infty\).

  3. \(a_n , b_n > 0\),则若\(\varlimsup_{ n \to \infty } \frac{ a_n }{ b_n } < \infty\),则\(\sum^{ + \infty } b_n < \infty \Rightarrow \sum^{ + \infty } a_n < \infty\).

  4. \(a_n , b_n > 0\),则若\(\varliminf_{ n \to \infty } \frac{ a_n }{ b_n } > 0\),则\(\sum^{ + \infty } b_n = \infty \Rightarrow \sum^{ + \infty } a_n = \infty\).

  5. \(a_n\)单调递减趋近于\(0\).则\(\sum^{ + \infty }_n a_n < \infty \Leftrightarrow \sum_{ k }^{ + \infty } 2^k a_{ 2^k } < \infty\).

  6. \(\sum_{ k = 1 }^{ + \infty } \frac{ 1 }{ n^p }\),当\(p \leq 1\)的时候发散,而当\(p > 1\)的时候收敛.

  7. \(\sum_{ k = 2 }^{ + \infty } \frac{ 1 }{ n \ln^p n }\),当\(p \leq 1\)的时候发散,而当\(p > 1\)的时候收敛.

  8. 设单调递减连续正函数\(f ( x )\)满足\(a_n = f ( n )\),则\(\sum_{ k = 1 }^{ + \infty } a_k < \infty \Leftrightarrow \int_1^{ + \infty } f ( x ) \mathrm{ d } x < \infty\).

  9. 比值判别法:对于\(a_n > 0\),如果\(\varlimsup_{ n \to \infty } \frac{ a_{ n + 1 } }{ a_n } < 1\),则\(\sum a_n < \infty\).

  10. 比值判别法:对于\(a_n > 0\),如果\(\varliminf_{ n \to \infty } \frac{ a_{ n + 1 } }{ a_n } > 1\),则\(\sum a_n = \infty\).

  11. 根值判别法:对于\(a_n > 0\),设\(l = \varlimsup_{ n \to \infty } ( a_n )^{ \frac{ 1 }{ n } }\),如果\(l < 1\),则\(\sum a_n < \infty\);若\(l > 1\),则\(\sum a_n = \infty\).

  12. 对于\(a_n > 0\),如果\(\varliminf_{ n \to \infty } n \ln \frac{ a_n }{ a_{ n + 1 } } > 1\),则\(\sum a_n < \infty\).

  13. 对于\(a_n > 0\),如果\(\varlimsup_{ n \to \infty } n \ln \frac{ a_n }{ a_{ n + 1 } } < 1\),则\(\sum a_n = \infty\).

  14. 拉贝判别法:对于\(a_n > 0\),若\(\varliminf_{ n \to \infty } n ( \frac{ a_n }{ a_{ n + 1 } } - 1 ) > 1\),则\(\sum a_n < \infty\).

  15. 拉贝判别法:对于\(a_n > 0\),若\(\varlimsup_{ n \to \infty } n ( \frac{ a_n }{ a_{ n + 1 } } - 1 ) < 1\),则\(\sum a_n = \infty\).

(1)当然是单调收敛准则.(2)只是(1)的推论.

(3)(4)只需套用定义即可.

(5)的话,不妨设\(S_n = \sum_{ k = 1 }^n a_k\)\(T_n = \sum_{ k = 1 }^n 2^k a_{ 2^k }\)考虑当\(2^k \leq n\)的时候,有:

\[ \begin{aligned} S_n & \geq \sum_{ j = 1 }^{ 2^k } a_j \\ & = a_1 + \sum_{ j = 0 }^{ k - 1 } \sum_{ i = 2^j + 1 }^{ 2^{ j + 1 } } a_i \\ & \geq \frac{ 1 }{ 2 } T_k \end{aligned} \]

\(n < 2^{ k + 1 }\)的时候,则有:

\[ \begin{aligned} S_n & \leq \sum_{ j = 1 }^{ 2^k } a_j \\ & = \sum_{ j = 0 }^{ k - 1 } \sum_{ i = 2^j }^{ 2^{ j + 1 } - 1 } a_i \\ & \leq T_k \end{aligned} \]

(6)的话,首先\(p \leq 1\)的时候\(\frac{ 1 }{ n^p } \geq \frac{ 1 }{ n }\)于是显然,而当\(p > 1\)的时候,考虑用(5),观察\(\sum 2^k \frac{ 1 }{ 2^{ pk } } = \sum 2^{ ( 1 - p ) k }\),当然收敛.

(7)的话亦然考虑(5),等价于\(\sum 2^k \frac{ 1 }{ 2^k k^p \ln^p 2 } = \sum \frac{ 1 }{ k^p \ln^p 2 }\),等价于(6)了.这个结论还可以推广到\(\sum \frac{ 1 }{ n \ln n ( \ln \ln n )^p }\),总之都是类似的做法,结论也类似.

(8)的证明只需考虑:

\[ a_{ n + 1 } = f ( n + 1 ) \leq \int_n^{ n + 1 } f ( t ) \mathrm{ d } t \leq f ( n ) = a_n \]

立刻证毕.

而且这个估计还可以更精细,事实上我们可以证明下列极限总是存在:

\[ \lim_{ n \to \infty } ( \sum_{ k = m }^n f ( k ) - \int_m^n f ( x ) \mathrm{ d } x ) = \alpha \]

而且还满足\(0 \leq \alpha \leq f ( m )\).

考虑固定\(m\),设\(g ( n ) = \sum_{ k = m }^n f ( k ) - \int_m^n f ( x ) \mathrm{ d } x\),用单调收敛准则,我们先证明它单调递减且有下界,注意到:

\[ g ( n ) - g ( n + 1 ) = - f ( n + 1 ) + \int_{ n }^{ n + 1 } f ( x ) \mathrm{ d } x \geq 0 \]

这就证明了其单调递减,而又有:

\[ g ( n ) = \sum_{ k = m }^{ n - 1 } \left ( f ( k ) - \int_{ k }^{ k + 1 } f ( x ) \mathrm{ d } x \right ) + f ( n ) \geq f ( n ) \geq 0 \]

因此有下界.同时注意到\(g ( m ) = f ( m )\),因此总有\(0 \leq \alpha \leq f ( m )\)成立.

不仅如此,如果\(f ( n )\)还满足\(\lim_{ x \to \infty } f ( x ) = 0\),我们还可以把这个极限收敛的速度求出来.我们有:

\[ | \sum_{ k = m }^n f ( k ) - \int_m^n f ( x ) \mathrm{ d } x - \alpha | \leq f ( n ) \]

干脆令\(l > n\),考虑LHS应该是:

\[ \begin{aligned} & \sum_{ k = m }^n f ( k ) - \int_m^n f ( x ) \mathrm{ d } x - \alpha \\ = & \sum_{ k = m }^n f ( k ) - \int_m^n f ( x ) \mathrm{ d } x - \left ( \lim_{ l \to \infty } ( \sum_{ k = m }^l f ( k ) - \int_m^l f ( x ) \mathrm{ d } x ) \right ) \\ = & \lim_{ l \to \infty } \left ( \int_n^l f ( x ) \mathrm{ d } x - \sum_{ k = n + 1 }^l f ( k ) \right ) \\ = & \lim_{ l \to \infty } \left ( \sum_{ k = n + 1 }^l ( \int_{ k - 1 }^k f ( k ) \mathrm{ d } x - f ( k ) ) \right ) \\ \leq & \lim_{ l \to \infty } \left ( \sum_{ k = n + 1 }^l ( f ( k - 1 ) - f ( k ) ) \right ) \\ \leq & f ( n ) \end{aligned} \]

而上式换个方向放缩就可以知道\(\geq 0\),这就搞定.

(9)(10)类似(3)(4),用等比数列控制住即可.

(11)的话,如若\(l = \varlimsup_{ n \to \infty } ( a_n )^{ \frac{ 1 }{ n } }\).

\(l < 1\)的时候,取\(\epsilon > 0\)使得\(l + \epsilon < 1\),则\(\exists N_0 > 0\),\(\forall n \geq N_0\),\(( a_n )^{ \frac{ 1 }{ n } } < l + \epsilon\),意味着\(a_n < ( l + \epsilon )^n\),立刻见到其收敛.

\(l > 1\)的时候,取\(\epsilon > 0\)使得\(l - \epsilon > 1\),则存在原数列的一个无穷子列\(\{ n_k \}\),使得\(a_{ n_k } > ( l - \epsilon )^{ n_k } \to \infty\),当然发散.

而注意到根据Stolz定理:

\[ \varliminf \frac{ a_{ n + 1 } }{ a_n } \leq \varliminf \sqrt[n]{ a_n } \leq \varlimsup \sqrt[n]{ a_n } \leq \varlimsup \frac{ a_{ n + 1 } }{ a_n } \]

这就意味着根值判别法理论上严格强于比值判别法.

(12)(13)的证明,考虑当\(l = \varliminf_{ n \to \infty } n \ln \frac{ a_n }{ a_{ n + 1 } } > 1\)的时候,取\(\epsilon > 0 , p = l - \epsilon > 1\),那么就有\(\exists N_0 > 0 , \forall n \geq N_0\),都有:

\[ \begin{aligned} n \ln \frac{ a_n }{ a_{ n + 1 } } & > p \\ \frac{ a_n }{ a_{ n + 1 } } & > e^{ \frac{ p }{ n } } > \left ( ( 1 + \frac{ 1 }{ n } )^n \right )^{ \frac{ p }{ n } } \\ \frac{ a_{ n + 1 } }{ a_n } & < \cfrac{ \frac{ 1 }{ ( n + 1 )^p } }{ \frac{ 1 }{ n^p } } \end{aligned} \]

\(b_n = \frac{ 1 }{ n^p }\),由上见到\(a_n < \frac{ a_{ N_0 } }{ b_{ N_0 } } b_n\),这就控制住了.(13)同理.控制\(e\)的时候改用不等式\(e < ( 1 + \frac{ 1 }{ n - 1 } )^n\)即可.

(14)(15)仍然类似,设\(b_n = n ( \frac{ a_n }{ a_{ n + 1 } } - 1 )\).

\(l = \varliminf_{ n \to \infty } b_n > 1\)的时候,取\(\epsilon > 0\),\(l - \epsilon > 1\),则\(\exists N_0 > 0 , \forall n \geq N_0\),\(b_n > l - \epsilon = l '\).而:

\[ \begin{aligned} \frac{ a_n }{ a_{ n + 1 } } & = 1 + \frac{ b_n }{ n } \\ \ln \frac{ a_n }{ a_{ n + 1 } } & = \ln ( 1 + \frac{ b_n }{ n } ) > \ln ( 1 + \frac{ l ' }{ n } ) \\ \varliminf n \ln \frac{ a_n }{ a_{ n + 1 } } & \geq \varliminf \ln ( 1 + \frac{ l ' }{ n } )^{ n } = l ' > 1 \end{aligned} \]

这就做完了.(15)同理.

Example1

斐波那契数列\(f_0 = 0 , f_1 = 1\),求\(\sum \frac{ 1 }{ f_k }\)的收敛性.

考虑\(f_{ n - 1 } \leq 2 f_{ n - 2 }\),所以\(f_n = f_{ n - 1 } + f_{ n - 2 } \geq \frac{ 3 }{ 2 } f_{ n - 1 } \geq ( \frac{ 3 }{ 2 } )^{ n - 1 }\).这就做完了.

Example2

假设\(0 < a_n\)单调递增且有界,求证:\(\sum ( 1 - \frac{ a_k }{ a_{ k + 1 } } ) < \infty\).

考虑:

\[ \begin{aligned} & \sum ( 1 - \frac{ a_k }{ a_{ k + 1 } } ) \\ = & \sum{ a_k } ( \frac{ 1 }{ a_k } - \frac{ 1 }{ a_{ k + 1 } } ) \\ \leq & \sup{ a } \sum ( \frac{ 1 }{ a_k } - \frac{ 1 }{ a_{ k + 1 } } ) \\ \leq & \frac{ \sup{ a } }{ a_1 } \end{aligned} \]

Example3

\(\sum \frac{ 1 }{ n^p - n^q } , p > q > 0\)的收敛性.

直接考虑\(\lim_{ n \to \infty } \cfrac{ \frac{ 1 }{ n^p - n^q } }{ \frac{ 1 }{ n^p } } = 1\),所以\(p \leq 1\)的时候发散,\(p > 1\)的时候收敛.

Example4

\(\sum \sin \frac{ 1 }{ n^2 }\)的收敛性.

直接考虑\(\lim_{ n \to \infty } \cfrac{ \sin \frac{ 1 }{ n^2 } }{ \frac{ 1 }{ n^2 } } = 1\),所以收敛.

Example5

\(a_n = ( 1 - \sqrt[3]{ \frac{ n - 1 }{ n + 1 } } )^p , p > 0\),讨论\(\sum a_n\)的敛散性.

考虑:

\[ \begin{aligned} \sqrt[3]{ \frac{ n - 1 }{ n + 1 } } & = ( 1 - \frac{ 1 }{ n } )^{ \frac{ 1 }{ 3 } } ( 1 + \frac{ 1 }{ n } )^{ - \frac{ 1 }{ 3 } } \\ & = ( 1 - \frac{ 1 }{ 3 n } + O ( \frac{ 1 }{ n^2 } ) ) ( 1 - \frac{ 1 }{ 3 n } + O ( \frac{ 1 }{ n^2 } ) ) \\ & = 1 - \frac{ 2 }{ 3 n } + O ( \frac{ 1 }{ n^2 } ) \end{aligned} \]

所以\(a_n\)\(\frac{ 1 }{ n^p }\)同敛散.

Example6

\(S_n = \sum_{ k = 1 }^n \frac{ 1 }{ \sqrt{ k } } - 2 \sqrt{ n }\)的敛散性.

考虑:

\[ \begin{aligned} a_{ n + 1 } & = S_{ n + 1 } - S_n \\ & = \frac{ 1 }{ \sqrt{ n + 1 } } - 2 \sqrt{ n + 1 } + 2 \sqrt{ n } \\ & = \frac{ 1 }{ \sqrt{ n + 1 } } - \frac{ 2 }{ \sqrt{ n + 1 } + \sqrt{ n } } \\ & = \frac{ \sqrt{ n } - \sqrt{ n + 1 } }{ \sqrt{ n + 1 } ( \sqrt{ n + 1 } + \sqrt{ n } ) } \\ & = \frac{ - 1 }{ \sqrt{ n + 1 } ( \sqrt{ n + 1 } + \sqrt{ n } )^2 } = O ( - n^{ - \frac{ 3 }{ 2 } } ) \end{aligned} \]

所以收敛.

Example7

\(a_n = \frac{ 1 }{ \sqrt{ n } } - \sqrt{ \ln ( 1 + \frac{ 1 }{ n } ) }\)的级数和收敛性.

注意到:

\[ \begin{aligned} a_n & = \frac{ 1 }{ \sqrt{ n } } - \sqrt{ \ln ( 1 + \frac{ 1 }{ n } ) } \\ & = \frac{ 1 }{ \sqrt{ n } } - \sqrt{ \frac{ 1 }{ n } - \frac{ 1 }{ 2 n^2 } + o ( \frac{ 1 }{ n^2 } ) } \\ & = \frac{ 1 }{ \sqrt{ n } } - \frac{ 1 }{ \sqrt{ n } } \left ( 1 - \frac{ 1 }{ 2 n } + o ( \frac{ 1 }{ n } ) \right )^{ \frac{ 1 }{ 2 } } \\ & = \frac{ 1 }{ \sqrt{ n } } - \frac{ 1 }{ \sqrt{ n } } \left ( 1 - \frac{ 1 }{ 4 n } + o ( \frac{ 1 }{ n } ) \right ) \\ & = O ( n^{ - \frac{ 3 }{ 2 } } ) \end{aligned} \]

所以收敛.

Example8

\(\zeta ( a ) = \sum_{ k = 1 }^{ \infty } \frac{ 1 }{ k^a }\),求\(\lim_{ \sigma \to 0 + 0 } \sigma \zeta ( 1 + \sigma )\)\(\lim_{ \sigma \to 0 + 0 } \left ( \zeta ( 1 + \sigma ) - \frac{ 1 }{ \sigma } \right )\).

\(f ( x ) = \frac{ 1 }{ x^{ 1 + \sigma } }\),设\(F ( x ) = \int_1^x f ( t ) \mathrm{ d } t\)考虑:

\[ \begin{aligned} \sum_{ k = n + 1 }^{ \infty } a_k & \leq F ( + \infty ) - F ( n ) \leq \sum_{ k = n }^{ \infty } a_k \\ F ( + \infty ) - F ( n + 1 ) & \leq \sum_{ k = n + 1 }^{ \infty } a_k \leq F ( + \infty ) - F ( n ) \\ \frac{ 1 }{ \sigma } \frac{ 1 }{ ( n + 1 )^\sigma } & \leq \sum_{ k = n + 1 }^{ \infty } a_k \leq \frac{ 1 }{ \sigma } \frac{ 1 }{ n^\sigma } \\ \frac{ 1 }{ ( n + 1 )^\sigma } & \leq \sigma \sum_{ k = n + 1 }^{ \infty } a_k \leq \frac{ 1 }{ n^\sigma } \end{aligned} \]

\(n = 0\)\(n = 1\)得到\(1 \leq \sigma \zeta ( 1 + \sigma ) \leq \sigma + 1\),于是\(\lim_{ \sigma \to 0 + 0 } \sigma \zeta ( 1 + \sigma ) = 1\).

而同理,见到:

\[ \zeta ( 1 + \sigma ) = 1 + \frac{ 1 }{ 2^{ 1 + \sigma } } + \cdots + \frac{ 1 }{ n^{ 1 + \sigma } } + \sum_{ k = n + 1 }^{ \infty } \frac{ 1 }{ k^{ 1 + \sigma } } \]

而:

$$ \[\begin{aligned} & 1 + \frac{ 1 }{ 2^{ 1 + \sigma } } + \cdots + \frac{ 1 }{ n^{ 1 + \sigma } } + \frac{ 1 }{ \sigma } \frac{ 1 }{ ( n + 1 )^\sigma } \\ \leq & \zeta ( 1 + \sigma ) \leq \\ 1 + \frac{ 1 }{ 2^{ 1 + \sigma } } + \cdots + \frac{ 1 }{ n^{ 1 + \sigma } } + \frac{ 1 }{ \sigma } \frac{ 1 }{ n^\sigma } \\ \end{aligned}\]

$$

用上述不等式:

$$ \[\begin{aligned} & 1 + \frac{ 1 }{ 2^{ 1 + \sigma } } + \cdots + \frac{ 1 }{ n^{ 1 + \sigma } } + \frac{ 1 }{ \sigma } \left ( \frac{ 1 }{ ( n + 1 )^\sigma } - 1 \right ) \\ \leq & \zeta ( 1 + \sigma ) - \frac{ 1 }{ \sigma } \leq \\ 1 + \frac{ 1 }{ 2^{ 1 + \sigma } } + \cdots + \frac{ 1 }{ n^{ 1 + \sigma } } + \frac{ 1 }{ \sigma } \left ( \frac{ 1 }{ n^\sigma } - 1 \right ) \\ \end{aligned}\]

$$

两边对\(\sigma \to 0 + 0\)取极限,见到:

\[ \begin{aligned} & 1 + \frac{ 1 }{ 2 } + \cdots + \frac{ 1 }{ n } - \ln ( n + 1 ) \\ \leq & \varliminf_{ \sigma \to 0 + 0 } ( \zeta ( 1 + \sigma ) - \frac{ 1 }{ \sigma } ) \leq \varlimsup_{ \sigma \to 0 + 0 } ( \zeta ( 1 + \sigma ) - \frac{ 1 }{ \sigma } ) \leq \\ 1 + \frac{ 1 }{ 2 } + \cdots + \frac{ 1 }{ n } - \ln ( n ) \end{aligned} \]

两边对\(n\)取极限得到\(\lim_{ \sigma \to 0 + 0 } \zeta ( 1 + \sigma ) - \frac{ 1 }{ \sigma } = \gamma\).

Example9

\(a_n > 0\),证明:若\(\varlimsup_{ n \to \infty } a_n^{ \frac{ 1 }{ \ln n } } < \frac{ 1 }{ e }\)则收敛.若\(\varliminf_{ n \to \infty } a_n^{ \frac{ 1 }{ \ln n } } > \frac{ 1 }{ e }\)则发散.

只证前者,则存在\(p > 1\)使得\(\varlimsup_{ n \to \infty } a_n^{ \frac{ 1 }{ \ln n } } < \frac{ 1 }{ e^p }\),两边取\(\ln\)就做完了.

Example10

\(a_n > 0\),证明:若\(\varliminf_{ n \to \infty } \cfrac{ \ln \frac{ 1 }{ a_n } }{ \ln n } > 1\)则收敛.若\(\varlimsup_{ n \to \infty } \cfrac{ \ln \frac{ 1 }{ a_n } }{ \ln n } < 1\)则发散.

只证前者,考虑前者等价于\(\varlimsup_{ n \to \infty } \ln a_n^{ \frac{ 1 }{ \ln n } } < - 1\),转化为Example9.

Example11

数列\(\{ a_n \}\)恒正,数列\(b_n = \frac{ a_n }{ a_{ n + 1 } } - 1 - \frac{ 1 }{ n }\)的部分和有界,求证\(\sum a_n\)发散.

考虑:

\[ \begin{aligned} \frac{ a_n }{ a_{ n + 1 } } & = 1 + \frac{ 1 }{ n } + b_n \leq e^{ \frac{ 1 }{ n } + b_n } \\ \frac{ a_1 }{ a_{ n + 1 } } & \leq e^{ \ln n + \gamma + M } = cn \\ a_n & \geq \frac{ ca_1 }{ n } \end{aligned} \]

这就搞定.

交错级数

考虑\(\sum ( - 1 )^{ n - 1 } a_n\),其中\(a_n > 0\).

Leibniz定理:如果\(a_n\)单调下降趋近于\(0\),则交错级数收敛.

考虑\(S_{ 2 n } = ( a_1 - a_2 ) + ( a_3 - a_4 ) + \cdots\)\(S_{ 2 n + 1 } = a_1 - ( a_2 - a_3 ) - ( a_4 - a_5 ) - \cdots\),所以见到\(S_{ 2 n }\)单调上升,\(S_{ 2 n + 1 }\)单调下降.并且显然\(S_{ 2 n } < S_{ 2 n + 1 }\).而且\(S_{ 2 n + 1 } - S_{ 2 n } = a_{ 2 n + 1 } \to 0\),所以二者均收敛且极限相同极限相同.

当然,这也只是DA判别法的一个特例.

Leibniz定理还可以如此理解:由于后面的项正负抵消,我们发现:

\[ | \sum_{ k = n }^\infty ( - 1 )^k a_k | \leq a_n \to 0 \]

也就是后面的交错都可以被首项控制住.

Example1

考虑\(\sum ( - 1 )^{ n } \frac{ \ln^2 n }{ n }\)的收敛性.

\(f ( x ) = \frac{ \ln^2 x }{ x }\),则\(f ' = \frac{ 2 \ln x - \ln^2 x }{ x^2 }\),显然当\(x\)足够大的时候\(f ' ( x ) < 0\)\(f ( + \infty ) = 0\),所以原式收敛.

Example2

\(a_n > 0\),求证:若\(\varliminf n ( \frac{ a_n }{ a_{ n + 1 } } - 1 ) > 0\),则\(\sum ( - 1 )^n a_n\)收敛.

考虑\(n\)足够大的时候\(\exists \epsilon > 0\),使得\(n ( \frac{ a_n }{ a_{ n + 1 } } - 1 ) > \epsilon\),也就是\(\frac{ a_{ n + 1 } }{ a_n } < \frac{ n }{ n + \epsilon } < 1\),这就能证明\(a_n\)单调递减.下面只需要证明\(\lim a_n = 0\)即可.

而考虑取定\(N > 0\),对于\(n \geq N\),有\(\frac{ a_n }{ a_N } = \prod_{ k = N }^{ n - 1 } \frac{ a_{ k + 1 } }{ a_{ k } }\),\(a_N\)是定死的,下面只需要证明后面那个乘积趋近于\(0\).

注意到:

$$ \[\begin{aligned} & \prod_{ k = N }^{ n - 1 } \frac{ a_{ k + 1 } }{ a_{ k } } \\ < & \prod_{ k = N }^{ n - 1 } \frac{ n }{ n + \epsilon } \\ = & \prod_{ k = N }^{ n - 1 } \frac{ 1 }{ 1 + \frac{ \epsilon }{ n } } \\ \end{aligned}\]

$$

然而注意到:

\[ \begin{aligned} & \prod_{ k = N }^{ n - 1 } ( 1 + \frac{ \epsilon }{ n } ) \\ \geq & 1 + \frac{ \epsilon }{ N } + \cdots + \frac{ \epsilon }{ n - 1 } \to \infty \end{aligned} \]

这就完事.

Example3

\(f ( x ) = \sum_{ n = 1 }^\infty \frac{ ( - 1 )^{ n - 1 } }{ n^x } , x \in ( 0 , \infty )\),求\(\sup f\)\(\inf f\).

首先显然能搞出\(f ( x ) \in C^\infty ( 0 , + \infty )\),原因是能证明其和其若干阶导数都内闭一致收敛(用DA判法).

首先交错级数的绝对值要\(\leq\)首项,所以先猜\(\sup f = 1\).考虑:

\[ f ( x ) = 1 - \sum_{ n = 1 }^\infty \left ( \frac{ 1 }{ ( 2 n )^x } - \frac{ 1 }{ ( 2 n + 1 )^x } \right ) \]

容易见到只要让\(x \to \infty\)那就逐项趋近于\(0\).

还有一个问题是\(\inf f\).考虑:

$$ \[\begin{aligned} & \sum_{ n = 1 }^\infty \frac{ 1 }{ ( 2 n )^x } - \frac{ 1 }{ ( 2 n + 1 )^x } \\ = & \sum_{ n = 1 }^\infty \int_{ 2 n }^{ 2 n + 1 } \frac{ x \mathrm{ d } t }{ t^{ x + 1 } } \\ \end{aligned}\]

$$

这里注意到我们积分的那几段都是\([ 2 n , 2 n + 1 ]\),我们可以把奇数段补上,因为\(x > 0\),所以补的那一段更大,自然有:

\[ \begin{aligned} & \sum_{ n = 1 }^\infty \int_{ 2 n }^{ 2 n + 1 } \frac{ x \mathrm{ d } t }{ t^{ x + 1 } } \\ \leq & \frac{ 1 }{ 2 } \int_1^{ + \infty } \frac{ \mathrm{ d } t }{ t^{ x + 1 } } = \frac{ 1 }{ 2 } \end{aligned} \]

\(f ( x ) = 1 - \sum_{ n = 1 }^\infty \left ( \frac{ 1 }{ ( 2 n )^x } - \frac{ 1 }{ ( 2 n + 1 )^x } \right )\),所以\(f ( x ) \geq \frac{ 1 }{ 2 }\).

接下来来证明其能取到,考虑:

\[ \begin{aligned} & \sum_{ n = 1 }^\infty \frac{ 1 }{ ( 2 n )^x } - \frac{ 1 }{ ( 2 n + 1 )^x } \\ = & \sum_{ n = 1 }^\infty \frac{ 1 }{ ( 2 n )^x } \left ( 1 - \frac{ 1 }{ ( 1 + \frac{ 1 }{ 2 n } )^x } \right ) \\ = & \sum_{ n = 1 }^\infty \frac{ 1 }{ ( 2 n )^x } \left ( \frac{ x }{ 2 n } + O ( \frac{ x }{ n^2 } ) \right ) \\ = & \frac{ x }{ 2^{ x + 1 } } \zeta ( x + 1 ) + xO ( 1 ) \\ \to & \frac{ 1 }{ 2 } \end{aligned} \]

原因是\(\lim_{ x \to 0 + 0 } x \zeta ( x + 1 ) \to 1\),这个结论我们之前搞定过.

积分判别法

\(\omega_n = \sup_{ [ n , n + 1 ] } f - \inf_{ [ n , n + 1 ] } f \geq 0\).我们声称若\(\sum \omega_n < \infty\),则\(\int_1^{ \infty } f ( x ) \mathrm{ d } x\)\(\sum f ( n )\)收敛性相同.

考虑:

$$ \[\begin{aligned} & \sum_{ k = 1 }^n f_k - \int_1^{ n + 1 } f ( x ) \mathrm{ d } x \\ = & \sum_{ k = 1 }^n \int_k^{ k + 1 } ( f ( k ) - f ( x ) ) \mathrm{ d } x \\ \end{aligned}\]

$$

考虑证明右式绝对收敛,有:

\[ \begin{aligned} & \sum_{ k = 1 }^n \int_k^{ k + 1 } | f ( k ) - f ( x ) | \mathrm{ d } x \\ \leq & \sum_{ k = 1 }^n \int_k^{ k + 1 } \omega_k \mathrm{ d } x \\ = & \sum_{ k = 1 }^{ n + 1 } \omega_k \end{aligned} \]

这就证毕.

问题又来到如何搞定\(\sum \omega_n < \infty\)的条件,其实只要有界变差就行了对吧,我们断言:如果\(f\)可导,\(f '\)可积且\(\int_1^{ \infty } | f ' | \mathrm{ d } x < \infty\)\(\sum \omega_n < \infty\).

对于\(\omega_n\),不妨\([ n , n + 1 ]\)的上界在\(x_1\)处取到,下界在\(x_2\)处取到,于是:

$$ \[\begin{aligned} \omega_n & = f ( x_1 ) - f ( x_2 ) \\ & = | \int_{ x_1 }^{ x_2 } f ' \mathrm{ d } x | \\ & \leq | \int_{ x_1 }^{ x_2 } | f ' | \mathrm{ d } x | \\ & \leq \int_{ n }^{ n + 1 } | f ' | \mathrm{ d } x \\ \end{aligned}\]

$$

于是\(\sum \omega \leq \int_1^{ + \infty } | f ' | \mathrm{ d } x\).

Example1

\(\sum \frac{ \sin ( n^\alpha x ) }{ n^\beta }\)的收敛性,其中\(\beta > \alpha > 0 , \alpha + \beta > 1\).

用积分判别法,考虑取\(f ( t ) = \frac{ \sin ( t^\alpha x ) }{ t^\beta }\),考虑:

\[ f ' ( t ) = \frac{ x \alpha t^{ \alpha - 1 + \beta } \cos ( t^\alpha x ) - \beta t^{ \beta - 1 } \sin ( t^\alpha x ) }{ t^{ 2 \beta } } \]

逐项观察,都是\(O ( \frac{ 1 }{ t^{ \beta - \alpha + 1 } } )\)级别,这样\(\int | f ' | \mathrm{ d } t\)就收敛了.

那就只需要看积分的收敛性,取\(s = t^\alpha\)考察:

$$ \[\begin{aligned} \int_1^{ \infty } f ( t ) \mathrm{ d } t & = \int_1^{ \infty } \frac{ \sin ( t^\alpha x ) }{ t^\beta } \mathrm{ d } t \\ & = \int_1^{ \infty } \frac{ \sin ( s x ) \frac{ 1 }{ \alpha } s^{ \frac{ 1 }{ \alpha } - 1 } }{ s^\frac{ \beta }{ \alpha } } \mathrm{ d } s \\ & = \int_1^{ \infty } \frac{ \sin ( s x ) }{ \alpha s^\frac{ \beta + \alpha - 1 }{ \alpha } } \mathrm{ d } s \\ \end{aligned}\]

$$

后者用DA判法知道收敛.

级数的交换顺序

定义\(\mathbb{ N }_+\)的一个重排\(f : \mathbb{ N }_+ \to \mathbb{ N }_+\),当且仅当\(f ( 1 ) , f ( 2 ) , \cdots\)这个数列中,每个正整数都恰好出现一次.

我们声称正项级数满足:\(\sum a_n = \sum a_{ f ( n ) }\).

如何证明呢?

\(\sum a_n < \infty\)的时候,考虑设\(A_n = \sum_{ k = 1 }^n a_k , B_n = \sum_{ k = 1 }^n a_{ f ( k ) }\).考虑取\(N_n = \max_{ 1 \leq k \leq n } f ( k )\),那就有:

\[ B_n = \sum_{ k = 1 }^n a_{ f ( k ) } \leq A_{ N_n } \leq \sum_{ 1 }^{ \infty } a_n \]

于是\(B_n\)当然是收敛的,并且\(\sum a_{ f ( n ) } \leq \sum a_n\),而如果\(a_{ f ( n ) }\)\(a_n\)的重排,那么反之,\(a_n\)\(a_{ f ( n ) }\)的重排,于是\(\sum a_{ f ( n ) } \geq \sum a_n\),这就证明了二者相同.

既如此,如果\(\sum a_n\)发散的时候,就可以反证法证明\(\sum a_{ f ( n ) }\)不可能收敛.这样就完成了证明.

下面我们证明,如果\(\sum a_n\)绝对收敛,换言之\(\sum | a_n | < \infty\),那么仍有\(\sum a_n = \sum a_{ f ( n ) }\).

考虑取\(a_n^+ = \frac{ | a_n | + a_n }{ 2 } , a_n^- = \frac{ | a_n | - a_n }{ 2 }\).那考虑\(0 \leq a_n^+ \leq | a_n | , 0 \leq a_n^- \leq | a_n |\),所以它们当然都绝对收敛,那当然有:

\[ \begin{aligned} \sum a_n & = \sum ( a_n^+ - a_n^- ) \\ & = ( \sum a_n^+ ) - ( \sum a_n^- ) \end{aligned} \]

而后者当然可以随意重排.

那么对于条件收敛呢?我们有黎曼重排定理:如果\(\sum a_n\)条件收敛,则\(\forall B \leq A\),其中\(A , B \in \mathbb{ R } \cup \{ \pm \infty \}\),则存在重排\(f\),令\(S_n = \sum_{ k = 1 }^n a_{ f ( k ) }\),有:

\[ \varliminf S_n = B , \varlimsup S_n = A \]

为证明此,考虑设\(I_+ = \{ n \in \mathbb{ N }_+ \mid a_n \geq 0 \} = \{ n_1 < n_2 \cdots \}\),\(I_-\)类似设出.

容易见到首先\(\lim a_n \to 0\),并且\(\sum_{ n \in I_+ } a_n = + \infty , \sum_{ n \in I_- } a_n = - \infty\).

考虑先从\(I_+\)里取数,然后不断加加加加加直到超过\(A\),由于正的部分相加是正无穷,这当然能做到,然后就继续从\(I_-\)里取数开始回退,退退退退到\(B\)之下,再重复上述过程.由于\(a_n \to 0\),这玩意当然会满足条件.

那么如果\(A\)是正无穷呢?那没关系,我就每次加数的时候变化\(A\),第一次个循环令\(A = 1\),第二次令\(A = 2\),以此类推.由此见上述命题的合理性.而且具体的论证过程只需要对这上面写抽象语言就行.

可是,难道一般的级数就真的不能交换顺序了嘛?事实上使用柯西准则,我们可以证明如果重排是局部的,或者说\(\exists M > 0 , \forall n , | n - f ( n ) | \leq M < \infty\),换言之交换的距离有上界,那交换后敛散性不变.

这个怎么证明呢?首先如果原级数收敛的话,用柯西准则,因为通项趋于\(0\),所以往外扩张适当有界长度(实际上就是\(M\))应当无影响.如果原级数发散的话,如果通项还是不趋于\(0\)那当然还是完蛋,否则的话还可以用上面的证明.这就证毕了.

Example

\(a_n > 0\),当\(\sum \frac{ 1 }{ a_n } < \infty\)的时候,求证\(\sum \frac{ n }{ \sum_{ k = 1 }^n a_k } < \infty\).

首先考虑\(\{ a_n \}\)单增的情况,如果不单增的话,可以直接对其进行排序.

考虑\(\frac{ 2 n }{ \sum_{ k = 1 }^{ 2 n } a_k } < \frac{ 2 n }{ na_n } = \frac{ 2 }{ a_n }\),同理\(\frac{ 2 n - 1 }{ \sum_{ k = 1 }^{ 2 n } a_k } < \frac{ 2 n - 1 }{ na_n } < \frac{ 2 }{ a_n }\),于是证毕.

级数的乘法

考虑\(( \sum a_j ) ( \sum b_k ) = \sum a_j b_k\),首要的问题在于如何指定后者的求和顺序.

柯西策略是,考虑取\(c_n = \sum_{ j + k = n + 1 } a_j b_k\),然后取原式顺序为\(\sum c_n\).此好处是可以求解生成函数乘积,\(( \sum a_j x^j ) ( \sum b_k x^k )\).

矩形策略是,考虑取\(c_n = \sum_{ \max ( j , k ) = n } a_j b_k\),然后取原式顺序为\(\sum c_n\).此好处是它的求和天然是\(( \sum_{ j = 1 }^n a_j ) ( \sum_{ k = 1 }^n b_k )\)的极限.所以此方法天然有如果\(\sum a_j = A , \sum b_k = B\),则\(\sum c = AB\).

接下来我们证明,如果\(\sum a\)\(\sum b\)都绝对收敛,那它们的乘积任意排列都是相等的.换言之只要双重指标集合\(\{ ( j_i , k_i ) \} = \{ ( j , k ) \}\)那就都收敛于同一值.

证明策略类似,取\(N_n = \max_{ 1 \leq i \leq n } ( j_i , k_i )\),那么当然有:

\[ \sum_{ i = 1 }^n | a_{ j_i } b_{ k_i } | \leq ( \sum_{ j = 1 }^{ N_n } | a_{ j } | ) ( \sum_{ k = 1 }^{ N_n } | b_{ k } | ) \]

那当然就绝对收敛,再类似之前的可以证明其与顺序无关,这个时候用矩形策略就可以知道最终就收敛于\(( \sum a ) ( \sum b )\).

如果是条件收敛,矩形和当然没问题,仍然收敛,难点当然在于柯西和何时收敛?我们声称:如果\(\sum a_n\)收敛,\(\sum | b_n | < \infty\),也就是一个收敛一个绝对收敛,我们就能推出柯西和是收敛的而且就等于矩形和.

考虑设矩形法的\(u_k = \sum_{ \max ( i , j ) = k } a_i b_j\),柯西法的\(c_k = \sum_{ i + j = k + 1 } a_i b_j\),考虑求:

\[ \begin{aligned} & | \sum_{ k = 1 }^n u_k - c_k | \\ = & | \sum_{ i_j > n + 1 , i \leq n , j \leq n } a_i b_j | \\ \leq & \sum_{ i = 2 }^n | b_i | | \sum_{ j = n - i + 2 }^n a_j | \\ = & \sum_{ i = 2 }^N | b_i | | \sum_{ j = n - i + 2 }^n a_j | + \sum_{ i = N + 1 }^n | b_i | | \sum_{ j = n - i + 2 }^n a_j | \end{aligned} \]

接下来用柯西收敛原理,先取\(N\),只要\(N\)足够大,由于\(| \sum_{ j = n - i + 2 }^n a_j |\)当然是有界的,因为\(\sum a\)收敛,只要\(N\)足够大,不管\(n\)如何,\(\sum_{ i = N + 1 }^n | b_i |\)用柯西收敛原理就足够小.这样后半项就解决了.

前半项同理,在\(N\)取定的时候\(\sum_{ i = 2 }^N | b_i |\)就取定有界了.而只要在此基础上使得\(n\)尽可能大,\(| \sum_{ j = n - i + 2 }^n a_j |\)用柯西收敛原理就控制住了,于是整体就很小.那就证明了此时柯西和恰好就是矩形和.

一般的柯西和没有这么好的结论,但其实证明可以类似上面,具体地,我们取\(A_n = \sum_{ k = 1 }^n a_k , B_n = \sum_{ k = 1 }^n b_k\)并且\(\lim A , \lim B\)都存在,取柯西和\(c_n = \sum_{ k = 1 }^n a_k b_{ n - k + 1 }\),我们断言\(C_n = \sum_{ k = 1 }^n c_k\)收敛当且仅当极限\(\lim_{ n \to \infty } \sum_{ k = 1 }^n a_k \sum_{ j = n - k + 1 }^n b_j\)存在.

原因是:

\[ \begin{aligned} & \sum_{ k = 1 }^n a_k \sum_{ j = n - k + 1 }^n b_j \\ = & \sum_{ k = 1 }^n a_k ( B_n - B_{ n - k } ) \\ = & B_n A_n - ( \sum_{ k = 1 }^{ n - 1 } a_k B_{ n - k } ) \\ = & B_n A_n - C_{ n - 1 } \end{aligned} \]

这就证毕,而且当然见到只有上述极限为\(0\)的时候,柯西和才会有\(\lim C = ( \lim A ) ( \lim B )\).

无穷乘积

对于数列\(\{ a_n \}\),设\(A_n = \prod_{ k = 1 }^n a_k\),若\(\lim_{ n \to \infty } A_n\)存在且非零,则称\(\prod_{ k = 1 }^{ + \infty } a_k\)收敛.为什么这里要求非零呢?因为我们希望类似无穷和,这里去掉前有限项后,敛散性不变.这就要求我们最好判掉零的情况.如若其极限为\(0\),则仍称其发散,但有的时候发散到零也会有一些性质,到时我们会单独讨论.

既然如此,不妨设\(a_n \ne 0\).有以下性质:

  1. \(\prod a_n\)收敛,则\(\lim a_n = 1\).既然如此,\(a_n\)从某一项开始就满足\(a_n > 0\).之后不妨干脆设\(a_n > 0\).

  2. \(A_n\)有非\(0\)极限当且仅当\(\ln A_n\)有极限.

  3. 柯西收敛准则:\(A_n\)有非零极限的必要条件是\(\forall \epsilon > 0 , \exists N , \forall N \leq n \leq m\),\(| 1 - \prod_{ k = n }^m a_k | < \epsilon\).特别地,如果\(\forall a_n \ne 0\),则上式为充要条件.

(1)(2)显然.

(3)的话也比较显然.

总之,既然\(\lim a_n \to 1\),不妨干脆设其为\(1 + a_n\),其中\(\lim a_n = 0\),从而原本要研究的\(\prod ( 1 + a_n )\)可以转为研究\(\sum \ln ( 1 + a_n )\).

  1. \(a_n\)定号的时候,\(\sum \ln ( 1 + a_n )\)\(\sum a_n\)的敛散性相同.

  2. \(a_n\)不定号的时候,若\(\sum a_n^2 < \infty\),则\(\sum \ln ( 1 + a_n )\)\(\sum a_n\)的敛散性相同.同理如若\(\sum a_n^2\)发散,则上述两个级数至少一个发散.

  3. \(\sum | \ln ( 1 + a_n ) |\)\(\sum | a_n |\)的敛散性相同.

(1)是因为\(\lim \frac{ \ln ( 1 + a_n ) }{ a_n } = 1\).

(2)是因为\(a_n - \ln ( 1 + a_n )\)可以被\(a_n^2\)控制住,原因是\(a_n \to 0\),换言之存在\(c_1 , c_2\)使得\(c_1 x^2 < a_n - \ln ( 1 + a_n ) < c_2 x^2\),只需要对\(0\)附近做个简单放缩.既然它们的差收敛,那它们当然敛散性相同.

(3)还是因为\(\lim \frac{ | \ln ( 1 + x ) | }{ | x | } = 1\).

Example1

\(| x | < 1\)的时候,求\(\prod_{ k = 1 } ( 1 + x^{ 2^{ k - 1 } } )\)的极限.

容易见到\(A_n = \prod_{ k = 1 }^n ( 1 + x^{ 2^{ k - 1 } } ) = \frac{ 1 - x^{ 2^n } }{ 1 - x }\),这样自然就收敛了.

Example2

\(\prod_{ k = 1 } \cos \frac{ \varphi }{ 2^k }\).

\(\varphi \ne 0\)的时候,考虑\(A_n = \prod_{ k = 1 }^n \cos \frac{ \varphi }{ 2^k } = \frac{ \sin \varphi }{ 2^n \sin \frac{ \varphi }{ 2^n } }\).虽然这里当\(\varphi = 2^k \pi\)的时候会有若干项分母为\(0\),但由于我们可以干脆去掉这前几项,而只看后几项分母均不为\(0\),当然收敛于\(\frac{ \sin \varphi }{ \varphi }\).

\(\varphi = 0\)的时候每一项都是\(1\),乘起来仍然收敛.

Example3

考虑\(\Gamma ( x ) = \frac{ 1 }{ x } \prod_{ n = 1 }^{ \infty } \frac{ ( 1 + \frac{ 1 }{ n } )^x }{ 1 + \frac{ x }{ n } }\)敛散性,其中\(x \ne 0 , - 1 , - 2 , \cdots\).

直接泰勒展开,见到:

\[ \begin{aligned} & \frac{ ( 1 + \frac{ 1 }{ n } )^x }{ 1 + \frac{ x }{ n } } \\ = & ( 1 + \frac{ x }{ n } + \frac{ x ( x - 1 ) }{ 2 n^2 } + o ( \frac{ 1 }{ n^2 } ) ) ( 1 - \frac{ x }{ n } + \frac{ x^2 }{ n^2 } + o ( \frac{ 1 }{ n^2 } ) ) \\ = & 1 + \frac{ x ( x - 1 ) }{ 2 n^2 } + o ( \frac{ 1 }{ n^2 } ) \end{aligned} \]

这就绝对收敛了.

而我们观察\(A_n\),有:

$$ \[\begin{aligned} A_n & = \frac{ 1 }{ x } \prod_{ k = 1 }^{ n } \frac{ ( \frac{ k + 1 }{ k } )^x }{ 1 + \frac{ x }{ k } } \\ & = \frac{ ( n + 1 )^x }{ x ( 1 + \frac{ x }{ 1 } ) \cdots ( 1 + \frac{ x }{ n } ) } \\ & = ( \frac{ n + 1 }{ n } )^x \frac{ n ! n^x }{ x^{ \overline{ n + 1 } } } \\ \end{aligned}\]

$$

于是见到:

\[ \frac{ \Gamma ( x + 1 ) }{ \Gamma ( x ) } = \lim_{ n \to \infty } \frac{ ( n + 1 ) x }{ x + 1 + n } = x \]

所以\(\Gamma ( x + 1 ) = x \Gamma ( x )\),而且\(\Gamma ( 1 ) = 1\),所以\(\Gamma ( n ) = n !\),这实际上是阶乘函数的一个推广.

而此时有\(\Gamma ( x + 1 ) = x \Gamma ( x ) = \prod_{ n = 1 }^\infty \frac{ ( 1 + \frac{ 1 }{ n } )^x }{ 1 + \frac{ x }{ n } }\).

而观察这个级数:

\[ \begin{aligned} & \prod_{ n = 1 }^\infty \frac{ e^{ \frac{ 1 }{ n } } }{ 1 + \frac{ 1 }{ n } } \\ = & \frac{ e^{ 1 + \frac{ 1 }{ 2 } + \cdots + \frac{ 1 }{ n } } }{ n + 1 } \\ = & \frac{ e^{ \ln n + \gamma + c_n } }{ n + 1 } \to e^\gamma \end{aligned} \]

其中\(\gamma\)是欧拉常数,误差项\(c_n = H_n - \ln n - \gamma \to 0\).

从而观察到:

\[ \begin{aligned} & e^{ \gamma x } \Gamma ( x + 1 ) \\ = & \prod_{ n = 1 }^\infty \frac{ e^{ \frac{ x }{ n } } }{ 1 + \frac{ x }{ n } } \end{aligned} \]

从而\(\frac{ 1 }{ \Gamma ( x + 1 ) } = e^{ \gamma x } \prod_{ n = 1 }^\infty ( 1 + \frac{ x }{ n } ) e^{ - \frac{ x }{ n } }\).

在此基础上,如若设\(b_n = \frac{ n ! n^x }{ x^{ \overline{ n + 1 } } }\).容易见到\(\lim b_n = \lim A_n = \Gamma ( x )\),而观察到:

\[ \begin{aligned} \frac{ b_{ n + 1 } }{ b_n } & = \frac{ ( 1 + \frac{ 1 }{ n } )^{ x + 1 } }{ 1 + \frac{ x + 1 }{ n } } \\ & = 1 + \frac{ x ( x + 1 ) }{ 2 n^2 } + o ( \frac{ 1 }{ n^2 } ) \\ & \to 1 \end{aligned} \]

而且如若\(x ( x + 1 ) > 0\),并且取\(n\)足够大,则上式大于\(1\),反之上式小于\(1\).因此当\(n\)足够大的时候\(b_n\)单调有界(原因是其极限存在).

因此还可以得到结论:\(\sum \frac{ n ! a_n }{ x^{ \overline{ n + 1 } } }\)\(\sum \frac{ a_n }{ n^x }\)敛散性相同,其中\(x \ne 0 , - 1 , - 2 , \cdots\).原因只是因为这俩的比值恰好是\(b_n\)单调有界,根据DA判别法知道二者同敛散.

Example4

\(\sum_{ n = 1 }^\infty \frac{ ( nx )^n }{ n ! }\)的收敛性.

考虑:

\[ \frac{ a_{ n + 1 } }{ a_n } = ( \frac{ n + 1 }{ n } )^n x \to ex \]

根据比值判法,当\(| x | < \frac{ 1 }{ e }\)的时候绝对收敛,而当\(| x | > \frac{ 1 }{ e }\)的时候发散,问题只在于\(| x | = \frac{ 1 }{ e }\)的时候如何.

\(x = \frac{ 1 }{ e }\)的时候,使用拉贝判法:

\[ \begin{aligned} n ( \frac{ a_n }{ a_{ n + 1 } } - 1 ) & = n ( ( 1 - \frac{ 1 }{ n + 1 } )^n e - 1 ) \\ & = n ( e^{ n \ln ( 1 - \frac{ 1 }{ n + 1 } ) + 1 } - 1 ) \\ & = n ( e^{ n ( - \frac{ 1 }{ n + 1 } - \frac{ 1 }{ 2 ( n + 1 )^2 } + o ( \frac{ 1 }{ n^2 } ) ) + 1 } - 1 ) \\ & = n ( e^{ \frac{ 1 }{ n + 1 } - \frac{ n }{ 2 ( n + 1 )^2 } + o ( \frac{ 1 }{ n } ) } - 1 ) \\ & = n ( \frac{ 1 }{ n + 1 } - \frac{ n }{ 2 ( n + 1 )^2 } + o ( \frac{ 1 }{ n } ) ) \\ & \to \frac{ 1 }{ 2 } < 1 \end{aligned} \]

所以发散.

\(x = - \frac{ 1 }{ e }\)的时候,使用DA判法:应当见到\(a_n = ( - 1 )^n | a_n |\),此时\(| a_n |\)单调递减且趋于\(0\),用DA判法知道其收敛.

所以条件收敛.

Example5

求证\(\sum a_n ( x^2 - 1 ) ( x^2 - 2^2 ) \cdots ( x^2 - n^2 )\)\(\forall x \notin \mathbb{ Z }\),其都有相同的敛散性.就是对于一个确定的\(\{ a_n \}\),对所有的\(x\),要么都收敛,要么都发散.

考虑设\(f_n ( x ) = ( x^2 - 1 ) ( x^2 - 2^2 ) \cdots ( x^2 - n^2 )\),观察到:

\[ \frac{ f_n ( x ) }{ f_n ( x_0 ) } = \frac{ ( x^2 - 1 ) ( x^2 - 2^2 ) \cdots ( x^2 - n^2 ) }{ ( x_0^2 - 1 ) ( x_0^2 - 2^2 ) \cdots ( x_0^2 - n^2 ) } \]

这当然是个无穷乘积,观察到\(\frac{ x^2 - n^2 }{ x_0^2 - n^2 } = 1 + \frac{ x^2 - x_0^2 }{ x_0^2 - n^2 } = 1 + O ( \frac{ 1 }{ n^2 } )\),所以\(\lim_{ n \to \infty } \frac{ f_n ( x ) }{ f_n ( x_0 ) }\)存在且非零.

而且,当\(n\)足够大的时候,或者更进一步说\(| n | > \max ( | x | , | x_0 | )\)的时候\(\frac{ f_n ( x ) }{ f_n ( x_0 ) }\)当然就定号了,而且\(\frac{ x^2 - n^2 }{ x_0^2 - n^2 } = 1 + \frac{ x^2 - x_0^2 }{ x_0^2 - n^2 }\),其与\(1\)比较只取决于\(x^2 - x_0^2\),这就意味着\(\frac{ f_n ( x ) }{ f_n ( x_0 ) }\)\(n\)足够大的时候是单调有界非零的,于是DA判法知道同敛散.

Example6

求证\(\sin x = x \prod_{ k = 1 }^{ \infty } ( 1 - \frac{ x^2 }{ k^2 \pi^2 } )\).

先看\(\sin x = 0\)的根,假设其根为\(u + iv\),考虑:

\[ \begin{aligned} \sin x & = \frac{ e^{ ix } - e^{ - ix } }{ 2 i } = 0 \\ e^{ 2 ix } & = 1 \\ e^{ 2 iu - 2 v } & = 1 \\ | e^{ 2 iu - 2 v } | & = 1 \\ e^{ - 2 v } & = 1 \\ v & = 0 \end{aligned} \]

所以其只有实根,用多项式理论知道如若\(\sin x\)的根只有\(2 k \pi\),应该有:

\[ \sin x = cx \prod_{ k = 1 }^{ \infty } ( 1 - \frac{ x^2 }{ k^2 \pi^2 } ) \]

容易见到这个无穷乘积的确收敛,而\(x \to 0\)的时候\(\frac{ \sin x }{ x } = 1\),所以\(c = 1\).

那么考虑\(\sin x\)的泰勒展开,有:

\[ \begin{aligned} 1 - \frac{ x^2 }{ 6 } + \cdots & = \prod_{ k = 1 } ( 1 - \frac{ x^2 }{ k^2 \pi^2 } ) \\ & = 1 - ( \frac{ 1 }{ \pi^2 } \sum_k \frac{ 1 }{ k^2 } ) x^2 + \cdots \end{aligned} \]

这就能知道\(\sum_{ k = 1 }^\infty \frac{ 1 }{ k^2 } = \frac{ \pi^2 }{ 6 }\).

然而上述的多项式理论还是太过粗糙,下面提供一种更加严谨的证明:

我们有欧拉公式:

$$ \[\begin{aligned} ( \cos x + i \sin x )^{ 2 n + 1 } & = \cos ( 2 n + 1 ) x + i \sin ( 2 n + 1 ) x \\ \end{aligned}\]

$$

然而左侧可以使用二项式定理展开,有:

\[ ( \cos x + i \sin x )^{ 2 n + 1 } = \sum \binom{ 2 n + 1 }{ k } \cos^k x ( i \sin x )^{ 2 n + 1 - k } \]

容易见到为了贡献虚部,\(k\)必须是偶数,那此时\(\cos^k x = ( 1 - \sin^2 x )^{ \frac{ k }{ 2 } }\),总之,我们发现应该存在一个\(n\)次多项式\(P_n\),使得:

$$ \[\begin{aligned} \sin ( 2 n + 1 ) x & = ( \sin x ) P_n ( \sin^2 x ) \\ \end{aligned}\]

$$

这个多项式的根应该怎么取呢?考虑当\(\varphi_k = \frac{ k \pi }{ 2 n + 1 } , 1 \leq k \leq n\)的时候,左侧为\(0\),而右侧\(\sin \varphi_k\)不该为\(0\),更进一步地,\(\sin^2 \varphi_k\)两两不同,这就知道它们确实是\(P_n\)\(n\)个根.同时见到\(P ( 0 ) = \lim_{ x \to 0 } P_n ( \sin^2 x ) = 2 n + 1\),从而我们已经能唯一确定这个有限项多项式\(P_n ( x ) = ( 2 n + 1 ) \prod_{ k = 1 }^n ( 1 - \frac{ x }{ \sin^2 \varphi_k } )\).

接下来,将原本上式中的\(x\)换成\(\frac{ x }{ 2 n + 1 }\),我们就能得到:

\[ \sin x = ( 2 n + 1 ) \sin ( \frac{ x }{ 2 n + 1 } ) \prod_{ k = 1 }^n ( 1 - \frac{ \sin^2 \frac{ x }{ 2 n + 1 } }{ \sin^2 \varphi_k } ) \]

这里已经十分接近我们想要的答案了,但是这个项数和\(n\)一起增大,策略当然是大小步极限,考虑取:

$$ \[\begin{aligned} U_m & = ( 2 n + 1 ) \sin \frac{ x }{ 2 n + 1 } \prod_{ k = 1 }^m ( 1 - \frac{ \sin^2 \frac{ x }{ 2 n + 1 } }{ \sin^2 \varphi_k } ) \\ V_m & = \prod_{ k = m + 1 }^n ( 1 - \frac{ \sin^2 \frac{ x }{ 2 n + 1 } }{ \sin^2 \varphi_k } ) \\ \end{aligned}\]

$$

取定\(m\),当然总能取足够大的\(n\)使得\(U_m \to x \prod_{ k = 1 }^m ( 1 - \frac{ x^2 }{ k^2 \pi^2 } )\).

而用柯西准则,当\(m\)足够大的时候,如果能证明\(V_m \to 1\)就完事了.我们考虑:

$$ \[\begin{aligned} 1 & \geq V_m \geq \prod_{ k = m + 1 }^\infty ( 1 - \frac{ \sin^2 \frac{ x }{ 2 n + 1 } }{ \sin^2 \varphi_k } ) \\ \end{aligned}\]

$$

而回忆到当\(\sin^2 x \leq x^2\)恒成立,在\(x \in [ 0 , \frac{ \pi }{ 2 } ]\)的时候,\(\sin x \geq \frac{ 2 }{ \pi } x\)也成立,所以:

$$ \[\begin{aligned} V_m & \geq \prod_{ k = m + 1 }^\infty ( 1 - \frac{ \sin^2 \frac{ x }{ 2 n + 1 } }{ \sin^2 \varphi_k } ) \\ & \geq \prod_{ k = m + 1 }^\infty ( 1 - \frac{ x^2 }{ 4 k^2 } ) \\ \end{aligned}\]

$$

此时回忆到\(\prod_{ k = 1 }^\infty ( 1 - \frac{ x^2 }{ 4 k^2 } )\)是收敛的,所以由柯西准则,当\(m\)足够大的时候,\(\prod_{ k = m + 1 }^\infty ( 1 - \frac{ x^2 }{ 4 k^2 } )\)趋近于\(1\),这就证毕了.

函数项数列

也就是每一项都是一个函数的数列,假设定义域在\(I \subseteq \mathbb{ R }\)上,写作\(\{ f_n ( x ) \}\).此时对于一个固定的\(x_0 \in I\),则\(\{ f_n ( x_0 ) \}\)就是一个普通的数列.当然不一定\(I\)中的每一个\(x_0\)都收敛,我们将收敛点的集合称为函数项级数的收敛域,其它的点称为发散点,发散点组成的集合称为发散域.

对于收敛域,直接记\(f ( x ) = \lim_{ n \to \infty } f_n ( x )\),我们将这里的\(f ( x )\)就是这个函数列的极限函数.既然有了极限就可以定义级数,也就是可以定义\(S_n = \sum_{ k = 1 }^n f_k ( x )\),然后取其极限拿到\(\sum_{ k = 1 }^\infty f_n ( x ) = S ( x )\).

我们要解决的问题大概有以下三个:

  1. 如果\(f_n\)均是连续的,那么要求什么条件,可以满足\(f\)连续.也就是两层极限什么时候可以交换顺序.

  2. 如果\(f_n\)均是黎曼可积的,那么要求什么条件,可以满足\(f\)黎曼可积并且\(\lim \int f_n = \int f\),也就是极限和积分什么时候可以交换顺序.

  3. 如果\(f_n\)均可导,那么什么时候\(f\)也可导,并且\(\lim f_n ' = f '\),也就是极限和导数什么时候可以交换顺序.

如果不加条件,上述三条全都是不满足的,下述Example会给出若干例子.

Example1

\(f_n ( x ) = x^n , x \in [ 0 , 1 ]\),求其极限函数.

显然\(f ( x ) = \begin{cases}1 & x = 1 \\ 0 & \text{ otherwise }\end{cases}\),由此可以见到,连续函数的极限函数不一定连续.

Example2

\(f_n ( x ) = \begin{cases}1 & ( n ! ) x \in \mathbb{ Z } \\ 0 & \text{ otherwise }\end{cases}\),求其极限函数.

显然是迪利克雷函数.

\(f_n ( x )\)只有有限个间断点,容易见到其黎曼可积,然而迪利克雷函数并不黎曼可积.可积函数的极限函数不一定可积.

Example3

\(f_n ( x ) = nx ( 1 - x^2 )^n , x \in [ 0 , 1 ]\),求其极限函数.

容易见到\(\lim f_n ( x ) = 0\),也就是这个函数处处收敛到\(0\).

然而,对其求积分:

\[ \begin{aligned} \int_0^1 f_n ( x ) \mathrm{ d } x & = \int_0^1 nx ( 1 - x^2 )^n \mathrm{ d } x \\ & = - \frac{ n }{ 2 } \int_0^1 ( 1 - x^2 )^n \mathrm{ d } ( 1 - x^2 ) \\ & = - \frac{ n }{ 2 ( n + 1 ) } ( 1 - x^2 )^{ n + 1 } |_0^1 \\ & = \frac{ n }{ 2 ( n + 1 ) } \to \frac{ 1 }{ 2 } \end{aligned} \]

由此见到,极限函数的积分不一定等于积分的极限.极限和积分不一定可交换.

Example4

考虑\(f_n ( x ) = \begin{cases}2 n^2 x \\ x \in [ 0 , \frac{ 1 }{ 2 n } ] \\ 2 n^2 ( x - \frac{ 1 }{ n } ) & x \in ( \frac{ 1 }{ 2 n } , \frac{ 1 }{ n } ] \\ 0 & \text{ otherwise }\end{cases}\),也就是这个函数在\(\frac{ 1 }{ 2 n }\)处高度为\(n\),底长为\(\frac{ 1 }{ n }\)的一个小三角形.求其极限函数.

对于每一个点,这个函数当然逐点收敛于\(0\).然而也可以见到,这个函数的积分对于每一个\(n\)来说都是\(\frac{ 1 }{ 2 }\).

再次说明了极限函数的积分不一定等于积分的极限.极限和积分不一定可交换.

Example5

考虑\(f_n ( x ) = \frac{ \sin ( nx ) }{ \sqrt{ n } }\),求其极限函数.

当然逐点收敛于\(0\),然而观察到\(f_n ' ( x ) = \sqrt{ n } \cos nx\),\(f ' ( x ) = 0\).因此,光滑函数列的导数的极限又不一定等于极限的导数.

一致收敛

我们称一列函数\(\{ f_n ( x ) \}\)一致收敛\(f ( x )\),当且仅当\(\forall \epsilon > 0\),\(\exists N = N ( \epsilon )\),使得当\(n \geq N\)的时候,\(| f ( x ) - f_n ( x ) | < \epsilon , \forall x \in I\).注意这里的\(N\)不取决于\(x\)的选取,这就是和极限不同的地方,一致收敛要求整个函数都在逐步地贴向最终的函数.此时,记\(f_n ( x ) \rightrightarrows f ( x )\).还可以定义内闭一致收敛的概念,也就是对于一个\(I\)的任意的子紧集(在\(\mathbb{ R }\)上表现为有界闭集)都一致收敛.

一致收敛的等价定义当然是,取\(M_n = \sup_{ x \in I } | f_n ( x ) - f ( x ) |\),那么一致收敛等价于\(\lim M_n = 0\).

一致收敛强大的地方在于,对于收敛来说,是取定了\(x\)再挪动\(n\),因此\(n\)可以控制\(x\).然而,一致收敛要求先取定\(n\)再挪动\(x\).这种天然的交换能力赋予了一致收敛的强大.另外还容易见到,当\(I\)的点集是有限的时候,一定一致收敛.

我们还可以定义一致有界的概念,当存在一个上界\(M\),使得\(\forall n , | f_n | \leq M\)恒成立.显然,如果一个函数列一致有界,则极限函数肯定有界.

另外,我们可以见到,如果\(f_n \rightrightarrows f\),那么如果\(f\)有界,则\(f_n\)一致有界.反之,如果\(f_n\)有界,则\(f_n\)一致有界.

考虑前者,是因为:

\[ | f_n | \leq | f_n - f | + | f | \]

这俩当然是有界的.

对于后者,考虑反证,假设\(f\)无界(因为如果有界则前者即可推出),那么:

\[ | f | \leq | f - f_n | + | f_n | \]

由于\(| f - f_n |\)必然需要有界,因此前者无界,后者无论对于哪个\(n\)来说,必然也得无界.

我们有以下性质:

  1. \(f_n \rightrightarrows f , g_n \rightrightarrows g , x \in I\),则\(c_1 f_n + c_2 g_n \rightrightarrows c_1 f + c_2 g , x \in I\).

  2. \(f_n \rightrightarrows f , g_n \rightrightarrows g , x \in I\),而且\(f , g\)有界,则\(f_n g_n \rightrightarrows fg , x \in I\).

  3. 如果\(x \in I\)的时候\(f_n \rightrightarrows f\),\(x \in J\)的时候也\(f_n \rightrightarrows f\),则当\(x \in I \cup J\)的时候也有\(f_n \rightrightarrows f\).

对于(1),考虑令\(M_{ n } = \sup | f_n - f | , K_n = \sup | g_n - g |\),则:

\[ \begin{aligned} & | ( c_1 f_n + c_2 g_n ) - ( c_1 f + c_2 g ) | \\ \leq & | c_1 | M_n + | c_2 | K_n \to 0 \end{aligned} \]

立刻证毕.

对于(2),经典的做法:

\[ \begin{aligned} & | f_n g_n - fg | \\ = & | f_n ( g_n - g ) + g ( f_n - f ) | \\ \leq & | f_n | \cdot | g_n - g | + | g | \cdot | f_n - f | \end{aligned} \]

\(| f_n |\)一致有界,\(| g_n |\)一致有界得到\(| g |\)有界,所以上式就被控制住了.

对于(3),只需要把两部分的\(\sup\)分开算就可以见到仍能被控制住.

这里也有柯西准则:对于一列函数\(\{ f_n \}\),其一致收敛的充要条件是,\(\forall \epsilon > 0 , \exists N , \forall n , m \geq N , | f_n ( x ) - f_m ( x ) | < \epsilon\).

必要性显然,只证充分性,对于此时固定一个确定的\(x\),那么\(\{ f_n ( x ) \}\)就是一个柯西列且存在极限.逐点取极限就可以拿到\(f ( x ) = \lim_{ n \to \infty } f_n ( x )\).而\(| f_n ( x ) - f_m ( x ) | < \epsilon\)中只需要让\(m \to \infty\)就拿到了\(| f_n ( x ) - f ( x ) | \leq \epsilon\),这恰好是一致收敛的定义.

Example1

求证:\(f_n ( x ) = \frac{ x }{ 1 + n^2 x^2 }\)一致收敛.

当然处处收敛于\(0\)了,考虑用均值不等式,有\(| f_n ( x ) | \leq \frac{ | x | }{ 2 n | x | } = \frac{ 1 }{ 2 n }\),这就搞定.

Example2

求证:\(f_n ( x ) = x^n , x \in [ 0 , 1 )\)并不一致收敛.

当然处处收敛到\(0\),但是\(\sup f_n ( x ) = 1\),所以并不一致收敛.

Example3

\(f_n ( x ) = \frac{ 1 }{ n } , g_n ( x ) = x , x \in ( 0 , + \infty )\),容易见到\(f_n \rightrightarrows 0 , g_n \rightrightarrows x\).而且\(f_n ( x )\)当然一致有界.然而,\(f_n g_n \not \rightrightarrows 0\).

Example4

\(g \in C [ 0 , 1 ] , g ( 1 ) = 0\),求证:\(f_n ( x ) = g ( x ) x^n \rightrightarrows 0\).

由于\(g\)在闭区间上连续,则其必然在闭区间上一致连续.因此\(\forall \epsilon > 0\),取\(\delta \in ( 0 , 1 )\),使得\(x \in [ \delta , 1 ]\)的时候,\(| g ( x ) | < \epsilon\),而取\(M = \sup_{ [ 0 , 1 ] } | g |\),那么\(| f_n ( x ) | \leq M \delta^n + \epsilon\),注意这里的\(\delta\)不取决于\(n\)的选取这就搞定.

Example5

\(f_n ( x ) = n \left ( \sqrt{ x + \frac{ 1 }{ n } } - \sqrt{ x } \right ) , x \in ( 0 , + \infty )\),判断其收敛性.

容易发现\(f_n ( x ) = \frac{ 1 }{ \sqrt{ x + \frac{ 1 }{ n } } + \sqrt{ x } } \to \frac{ 1 }{ 2 \sqrt{ x } }\),因此其收敛.问题在于判断其是否一致收敛.

观察到:

\[ \begin{aligned} & | f_n ( x ) - \frac{ 1 }{ 2 \sqrt{ x } } | \\ = & \frac{ \sqrt{ x + \frac{ 1 }{ n } } - \sqrt{ x } }{ 2 \sqrt{ x } \left ( \sqrt{ x + \frac{ 1 }{ n } } + \sqrt{ x } \right ) } \\ = & \frac{ 1 }{ 2 n \sqrt{ x } \left ( \sqrt{ x + \frac{ 1 }{ n } } + \sqrt{ x } \right )^2 } \end{aligned} \]

一个策略是直接对此式子求导,但也可以采取另一种分析策略,考虑:

\[ \begin{aligned} \sqrt{ x + \frac{ 1 }{ n } } & = \sqrt{ x } \left ( 1 + \frac{ 1 }{ nx } \right )^{ \frac{ 1 }{ 2 } } \\ & = \sqrt{ x } \left ( 1 + \frac{ 1 }{ 2 nx } + O ( \frac{ 1 }{ n^2 } ) \right ) \end{aligned} \]

所以当\(x\)足够小的时候可能会出问题,直接取\(x = \frac{ 1 }{ n }\),误差为:

\[ \frac{ 1 }{ 2 \sqrt{ n } \left ( \frac{ 1 + \sqrt{ 2 } }{ \sqrt{ n } } \right )^2 } = O ( \sqrt{ n } ) \]

这就证明了并非一致收敛.

Example6

\([ 0 , 1 ]\)上的\(f_n ( x )\)满足\(\exists L > 0 , \forall x \ne y , | f_n ( x ) - f_n ( y ) | \leq L | x - y |\).并且\(\forall x \in [ 0 , 1 ] , f_n ( x ) \to f ( x )\).求证:\(f_n ( x ) \rightrightarrows f ( x )\).也就是:一致李氏连续的收敛函数列一定一致收敛.

李氏连续意味着我们可以用控制自变量的方式控制因变量.回忆到定义在有限集上的收敛函数列一定是一致收敛的.因此我们选择在数轴上打足够密的点来控制.

具体地,\(\forall \epsilon > 0\),我们将\([ 0 , 1 ]\)拆为长度不超过\(\frac{ \epsilon }{ 3 L }\)的小区间.假设分点是\(x_1 , \cdots , x_K\).这当然对于一个\(\epsilon\)来说是有限个点,我们可以让它们同时趋近于一致收敛,用柯西准则,也就是拿到一个\(N\),使得\(\forall n , m \geq N\),\(| f_n ( x_i ) - f_m ( x_i ) | < \frac{ \epsilon }{ 3 }\).

现在\(\forall x \in [ 0 , 1 ] , \exists x_i , | x - x_i | < \frac{ \epsilon }{ 3 L }\).于是:

\[ \begin{aligned} & | f_n ( x ) - f_m ( x ) | \\ \leq & | f_n ( x ) - f_n ( x_i ) | + | f_n ( x_i ) - f_m ( x_i ) | + | f_m ( x_i ) - f_m ( x ) | \\ < & \epsilon \end{aligned} \]

这就搞定.

函数项级数

函数项级数上也有柯西准则,也就是函数项级数的一致收敛性等价于\(\forall \epsilon , \exists N , \forall n , m \geq N , | \sum_{ k = n }^m f_k ( x ) | < \epsilon , \forall x \in I\).

还可以在这里定义绝对收敛:也就是\(\sum | f_n ( x ) |\)收敛.当然仍有绝对收敛推收敛.如果\(\sum | f_n ( x ) |\)还一致收敛,则称原级数绝对一致收敛.注意,这里的绝对一致收敛是定义在\(| f_n |\)的基础上.也就是说,一个函数既绝对收敛,又一致收敛,但它可能并不绝对一致收敛.然而反之是成立的,如果一个函数绝对一致收敛,可以推出它一致收敛,原因是\(\sum | f_n | \geq | \sum f_n |\),用柯西准则就可以得知.

另外,用柯西准则可以见到如果\(\sum f_n \rightrightarrows f\),那么\(f_n ( x ) \rightrightarrows 0\).

Example1

考虑函数项级数\(\sum ( - x )^n ( 1 - x ) , x \in [ 0 , 1 ]\).

直接考虑其余项,\(R_n ( x ) = \sum_{ k = n + 1 }^\infty ( - x )^k ( 1 - x ) = \frac{ ( - x )^{ n + 1 } ( 1 - x ) }{ 1 + x }\).此时考虑:

\[ \begin{aligned} | R_n | & \leq x^{ n + 1 } ( 1 - x ) \\ & = \frac{ 1 }{ n + 1 } ( n + 1 ) ( 1 - x ) x^{ n + 1 } \\ & \leq \frac{ 1 }{ n + 1 } ( \frac{ n + 1 }{ n + 2 } )^{ n + 2 } \\ & \leq \frac{ 1 }{ n + 1 } \to 0 \end{aligned} \]

所以该级数一致收敛.

那么是否绝对收敛呢?考虑:

\[ \begin{aligned} & \sum_{ k = 1 }^n | ( - x )^n ( 1 - x ) | \\ = & \sum_{ k = 1 }^n ( x^k - x^{ k + 1 } ) \\ = & x - x^{ n + 1 } \end{aligned} \]

所以当然也绝对收敛到\(\begin{cases}x & x \in [ 0 , 1 ) \\ 0 & x = 1\end{cases}\).

可是,它并不是绝对一致收敛的.考虑\(\sup_{ [ 0 , 1 ) } | S ( x ) - S_n ( x ) | = \sup_{ [ 0 , 1 ) } | x^{ n + 1 } | = 1\).

Example2

\(\sum \left ( \cos \frac{ \pi x }{ n } \right )^{ n^3 }\)的收敛域.

不妨设\(u_n ( x ) = \left ( \cos \frac{ \pi x }{ n } \right )^{ n^3 }\),考虑:

\[ \begin{aligned} \sqrt[n]{ u_n ( x ) } & = \left ( \cos \frac{ \pi x }{ n } \right )^{ n^2 } \\ & = \left ( 1 - \frac{ \pi^2 x^2 }{ 2 n^2 } + O ( \frac{ 1 }{ n^4 } ) \right )^{ n^2 } \\ & = \exp ( n^2 \ln \left ( 1 - \frac{ \pi^2 x^2 }{ 2 n^2 } + O ( \frac{ 1 }{ n^4 } ) \right ) ) \\ & = \exp ( n^2 \left ( - \frac{ \pi^2 x^2 }{ 2 n^2 } + O ( \frac{ 1 }{ n^4 } ) \right ) ) \\ & = \exp ( - \frac{ \pi^2 x^2 }{ 2 } + O ( \frac{ 1 }{ n^2 } ) ) \\ & \to e^{ - \frac{ \pi^2 x^2 }{ 2 } } \end{aligned} \]

所以最后模拟成了一个等比数列,那收敛域就是\(\mathbb{ R } \setminus \{ 0 \}\).

M判别法

\(| f_n ( x ) | \leq a_n , x \in I\),如果\(\sum a_n < \infty\),则\(\sum f_n ( x )\)绝对一致收敛.

证明的话,考虑用一般级数可以拿到\(\forall \epsilon > 0 , \exists N , \forall n , m \geq N , \sum_{ k = n }^m | a_n | < \epsilon\),但又有\(\forall x \in I , \sum_{ k = n }^m | f_n ( x ) | \leq \sum_{ k = n }^m a_k\),这就知道其绝对一致收敛.

DA判别法

假设\(\{ a_n ( x ) \} , \{ b_n ( x ) \}\)是两个函数列.对于任意固定的\(x \in I\),\(\{ a_n ( x ) \}\)是一个单调数列.注意这里其实不要求大家都递增或递减,只要对于每一个点都是单调的.而取\(B_n ( x ) = \sum_{ k = 1 }^n b_k ( x )\).则当:

  1. Dirichlet判别法:当\(a_n ( x ) \rightrightarrows 0\),\(B_n ( x )\)一致有界时,则\(\sum a_n b_n\)一致收敛.

  2. Able判别法:当\(\{ a_n ( x ) \}\)一致有界,\(B_n ( x )\)一致收敛时,则\(\sum a_n b_n\)一致收敛.

证明和级数部分完全一样,只需要对于任意的\(x\)都这么搞即可:

\[ \begin{aligned} & | \sum_{ k = n + 1 }^{ n + p } a_k ( x ) b_k ( x ) | \\ = & | \sum_{ k = n + 1 }^{ n + p } a_k ( x ) ( B_{ k } ( x ) - B_{ k - 1 } ( x ) ) | \\ = & | a_{ n + p } B_{ n + p } ( x ) + \sum_{ k = n + 1 }^{ n + p - 1 } ( a_k ( x ) - a_{ k + 1 } ( x ) ) B_k ( x ) | \\ \leq & M ( a_{ n + 1 } ( x ) + 2 a_{ n + p } ( x ) ) \end{aligned} \]

其中\(M = \sup_{ 1 \leq i \leq p } \{ | \sum_{ k = n + 1 }^{ n + i } b_k ( x ) | \}\).

Example1

\(b_n\)单调下降趋近于\(0\)的时候,求证:\(\sum_{ k = 1 }^\infty b_n \sin ( nx ) , x \in \mathbb{ R }\)一致收敛的充要条件是\(b_n = o ( \frac{ 1 }{ n } )\).

先证必要性,设\(S_{ n , p } = \sum_{ k = n }^p b_k \sin ( kx )\).由柯西原理,\(\forall \epsilon > 0 , \exists N , \forall n , p \geq N , | S_{ n , p } | < \epsilon\).此时取\(p = 2 n - 1 , x = \frac{ \pi }{ 4 n }\),此时当\(n \leq k \leq p\)的时候,\(\sin ( k \pi ) > \sin \frac{ \pi }{ 4 }\),立刻有:

\[ \begin{aligned} \epsilon & > | S_{ n , p } ( x ) | \\ & > nb_{ 2 n } \sin \frac{ \pi }{ 4 } = \frac{ \sqrt{ 2 } }{ 2 } n b_{ 2 n } \end{aligned} \]

这就搞定了\(b_{ 2 n } = o ( \frac{ 1 }{ n } )\),又因为\(b_n\)是单调下降的,那当然搞定了.

再证充分性,只要证明在\([ 0 , \pi ]\)上一致收敛,由于\(\sin ( nx )\)是奇函数,那么在\([ - \pi , 0 ]\)上当然也一致收敛,那就搞定了.

\(\mu_n = \max_{ m \geq n }{ mb_m }\),注意到\(\mu_n\)单调下降趋近于\(0\).下面开始讨论:

\(x \in [ 0 , \frac{ \pi }{ p } ]\)的时候,此时\(S_{ n , p }\)中的每一项都同号.自然有:

\[ \begin{aligned} \sum_{ k = n }^p b_k \sin ( kx ) & \leq \sum_{ k = n }^p b_k kx \\ & \leq \frac{ \pi }{ p } \sum_{ k = n }^p b_k k \\ & \leq \frac{ \pi }{ p } ( p - n ) \mu_n \\ & \leq \pi \mu_n \end{aligned} \]

这就完事.

\(x \in [ \frac{ \pi }{ n } , \pi ]\)的时候,和差化积公式给出:

\[ \begin{aligned} & | \sum_{ k = 1 }^n \sin ( kx ) | \\ = & \left | \frac{ \cos ( k - \frac{ 1 }{ 2 } ) x - \cos ( k + \frac{ 1 }{ 2 } ) }{ 2 \sin \frac{ x }{ 2 } } \right | \\ \leq & \frac{ 1 }{ | \sin \frac{ x }{ 2 } | } \\ < & n \end{aligned} \]

原因是当\(\frac{ x }{ 2 } \leq \frac{ \pi }{ 2 }\)的时候,\(\sin \frac{ x }{ 2 } \geq \frac{ 2 }{ \pi } \frac{ x }{ 2 } \geq n\).

回忆到Abel变换给出\(| S_{ n , p } | \leq n ( 2 b_n + b_p ) < 3 nb_n \to 0\).这就搞定.

\(x \in ( \frac{ \pi }{ p } , \frac{ \pi }{ n } )\)的时候,取\(m = \lfloor \frac{ \pi }{ x } \rfloor \leq \frac{ \pi }{ x }\).那我们就有:\(\frac{ \pi }{ m + 1 } \leq x \leq \frac{ \pi }{ m }\).

\(k \in [ n , m ]\)的时候,\(kx \leq \pi\),那\(\sin ( kx ) \leq kx\)就成立,那么和上面一样:

\[ | S_{ n , m } | \leq \pi \mu_n \]

\(k \in [ m + 1 , p ]\)的时候,此时\(\frac{ 1 }{ | \sin \frac{ x }{ 2 } | } \geq \frac{ 1 }{ m + 1 }\),因此:

\[ | S_{ m + 1 , p } | \leq ( m + 1 ) ( 2 b_{ m + 1 } + b_p ) < 3 \mu_{ m + 1 } \]

则:

\[ | S_{ n , p } | \leq | S_{ n , m } | + | S_{ m + 1 , p } | < \pi \mu_n + 3 \mu_{ m + 1 } \]

这就搞定.

连续性

我们还可以定义等度连续的概念:我们说\(f_n\)等度连续,当\(\forall \epsilon > 0 , \exists \delta > 0\),使得\(\forall x , y\),若\(| x - y | < \delta\),则\(\forall n , | f_n ( x ) - f_n ( y ) | < \epsilon\).其实就是某种一致(函数列)的一致(定义域上)连续.

我们可以证明:如果\(f_n ( x ) \in C [ a , b ]\),而且其等度连续,则如果\(\lim_{ n \to \infty } f_n ( x ) = f ( x ) , x \in [ a , b ]\),则\(f_n \rightrightarrows f , x \in [ a , b ]\).

证明与前述Example6证明一致李氏连续类似,事实上Example6是这个的一个推论.我们取定\(\delta\),使得\(| x - y | < \delta\)时一定有\(\forall n , | f_n ( x ) - f_n ( y ) | < \frac{ \epsilon }{ 3 }\),此时再令\(n \to \infty\),就有\(| f ( x ) - f ( y ) | \leq \frac{ \epsilon }{ 3 }\),再取一个分划\(\Delta : a = x_0 < \cdots < x_m = b\)并要求\(\lambda ( \Delta ) < \delta\).

自然有:

\[ \begin{aligned} | f_n ( x ) - f ( x ) | & \leq | f_n ( x ) - f_n ( x_i ) | + | f_n ( x_i ) - f ( x_i ) | + | f ( x_i ) - f ( x ) | \\ & \leq \epsilon \end{aligned} \]

原因仍是有限点集上的收敛一定是一致收敛.

下面要探索的就是一致连续是否保持了原函数项级数的作用.

先看一个引理:当\(x_0 \in [ a , b ]\)的时候,如若当\(x \in [ a , b ] \setminus \{ x_0 \}\),\(f_n ( x ) \rightrightarrows f ( x )\),已知\(\lim_{ x \to x_0 } f_n ( x ) = \alpha_n\)存在.则\(\lim_{ n \to \infty } \alpha_n\)存在而且\(\lim_{ x \to x_0 } f ( x ) = \lim_{ n \to \infty } \alpha_n\).换言之,\(\lim_{ x \to x_0 } \lim_{ n \to \infty } f_n ( x ) = \lim_{ n \to \infty } \lim_{ x \to x_0 } f_n ( x )\).

证明的话,首先要证明\(\lim_{ n \to \infty } \alpha_n\)存在,考虑\(\forall \epsilon > 0 , \exists N , \forall n , m \geq N\),有\(| f_n ( x ) - f_m ( x ) | < \frac{ \epsilon }{ 3 }\),取极限知道\(| \alpha_n - \alpha_m | \leq \frac{ \epsilon }{ 3 }\),这说明\(\{ \alpha_n \}\)是柯西列,当然收敛.不妨设\(\alpha = \lim_{ n \to \infty } \alpha_n\).

此时有:

\[ | f ( x ) - \alpha | \leq | f ( x ) - f_N ( x ) | + | f_N ( x ) - \alpha_N | + | \alpha_N - \alpha | \]

两边一取极限使得\(x \to x_0\),立刻见到\(| f ( x ) - \alpha | < \epsilon\).这已经能看出一致连续的强大了.正是因为一致连续可以先固定\(N\),我们才可以在这里对\(x \to x_0\)取极限.所以这里有一个天然的可交换性.

这个引理的一个推论是:如果\(f_n \rightrightarrows f , x \in [ a , b ]\),则对于\(x_0 \in [ a , b ]\),如果\(f_n ( x )\)\(x_0\)处连续,则\(f\)也在\(x_0\)处连续.原因是既然连续,则\(\alpha_n = \lim_{ x \to x_0 } f_n ( x ) = f_n ( x_0 )\),所以\(\lim_{ x \to x_0 } f ( x ) = \lim_{ n \to \infty } f_n ( x_0 ) = f ( x_0 )\).这就说明在\(x_0\)处连续.更有推论:如果\(f_n \in C [ a , b ] , f_n \rightrightarrows f\),则\(f \in C [ a , b ]\).从而还可以见到,如果一串连续函数收敛到一个不连续函数,那这肯定也不是一致收敛的.

那么反过来,如果连续函数列收敛到连续函数,能不能推出一致收敛呢?我们事实上有迪尼定理:如果\(f_n ( x ) \in C [ a , b ]\),当\(n < m\)的时候,\(\forall x \in [ a , b ] , f_n ( x ) \leq f_m ( x )\),此时如若\(f_n \rightarrow f\),而且\(f \in C [ a , b ]\),则\(f_n \rightrightarrows f\).也就是只要有一定的单调性,我们就可以说一致连续是连续函数列收敛到连续函数的充要条件.

\(R_n ( x ) = f ( x ) - f_n ( x ) \geq 0\),注意到\(\lim_{ n \to \infty } R ( x ) = 0\)而且\(R_n ( x )\)连续且逐点随\(n\)单调递减,则必有\(R_n \to 0\).如果我们能证明\(R_n ( x ) \rightrightarrows 0\),那就万事大吉.不妨设\(M_n = \max_{ x \in [ a , b ] } R_n ( x ) = R_n ( x_n )\),那么只要证明\(M_n \to 0\)就可以搞定一致收敛.然而\(M_n\)本身是单调下降的.反证,如果\(\lim_{ n \to \infty } M_n = c > 0\),此时观察\(x_n \in [ a , b ]\),既然如此,\(\{ x_n \}\)必定有收敛子列,任取一个收敛子列\(\{ x_{ n_k } \}\)并假设其收敛到\(x_0\),接下来看:

\[ \begin{aligned} & \lim_{ m \to \infty } R_m ( x_0 ) \\ = & \lim_{ m \to \infty } \lim_{ x_{ n_k } \to x_0 } R_m ( x_{ n_k } ) \\ \geq & \lim_{ m \to \infty } \lim_{ n_k > m , x_{ n_k } \to x_0 } R_{ n_k } ( x_{ n_k } ) \\ = & \lim_{ x_{ n_k } \to x_0 } R_{ n_k } ( x_{ n_k } ) > 0 \end{aligned} \]

可这就出事了.于是矛盾,反证成立.

迪尼定理的一个推论是如果\(f_n ( x ) \geq 0\),那么此时\(S_n ( x ) = \sum_k^n f ( x )\)就是逐点单调的了.因此我们可以看到此时\(\sum f_n\)一致收敛性也就等价于其连续性.

Example1

考虑\(f_n \geq 0\),而且\(\forall n , f_n\)单增的时候,如若\(\sum f_n ( x ) \leq M , \forall x \in [ a , b )\).求证此时\(\lim_{ x \to b - 0 } \sum_{ n = 1 }^\infty f_n ( x ) = \sum_{ n = 1 }^\infty f_n ( b - 0 )\).

\(S_n = \sum_k^n f_k ( x )\),取定\(m\),此时\(\forall x \in [ a , b )\),\(S ( x ) \geq S_m ( x )\).令\(x \to b - 0\),自然有\(\sum_{ n = 1 }^m f_n ( b - 0 ) \leq \lim_{ x \to b - 0 } S ( x )\).直接令\(S ( b - 0 ) = \lim_{ x \to b - 0 } S ( x )\),这个极限存在,原因是\(S ( x )\)是单调的.从而取极限得到\(\sum_{ n = 1 }^\infty f_n ( b - 0 ) \leq S ( b - 0 )\).

接下来另一个方向,考虑:

\[ \begin{aligned} \sum_{ n = 1 }^m f_n ( x ) & \leq \sum_{ n = 1 }^m f_n ( b - 0 ) \leq \sum_{ n = 1 }^\infty f_n ( b - 0 ) \\ S ( x ) & \leq \sum_{ n = 1 }^\infty f_n ( b - 0 ) \\ S ( b - 0 ) & \leq \sum_{ n = 1 }^\infty f_n ( b - 0 ) \end{aligned} \]

这就搞定.

Example2

\(f_n\)\([ a , b ]\)上可微而且\(f_n ' \in R [ a , b ]\),若\(\forall x \in [ a , b ] , \forall n , | \sum_{ k = 1 }^n f_k ' ( x ) | \leq M\),\(\sum f_n ( x )\)\([ a , b ]\)上收敛.求证其在\([ a , b ]\)上一致收敛.

容易观察到\(\sum f_n ( x )\)一致李氏连续,用之前等度连续的结论就可以做掉.

可积性

如果\(f_n \in R [ a , b ] , f_n \rightrightarrows f\),则我们声明\(f \in R [ a , b ]\)\(\int_a^b f \mathrm{ d } x = \lim_{ n \to \infty } \int_a^b f_n \mathrm{ d } x\).

考虑证明,首先\(f_n\)是有界的,又因为一致收敛,所以能推出\(f\)也是有界的.

一个想法是使用勒贝格定理.直接取\(K_n\)\(f_n\)的间断点集,立刻得到\(K_n\)是零测集.接下来令\(K = \bigcup K_n\),那\(K\)还是零测集(可数个零测集的并),此时对于\(\forall x \in [ a , b ] \setminus K\),\(\forall n , f_n\)都在\(x\)处连续,那\(f\)肯定也在\(x\)处连续,所以\(f\)的间断点集就一定被包含于零测集\(K\),所以黎曼可积.

接下来的问题是是否积分相等,取\(M_n = \sup_{ [ a , b ] } | f - f_n |\),注意到:

\[ \begin{aligned} & | \int_a^b f \mathrm{ d } x - \int_a^b f_n \mathrm{ d } x | \\ \leq & \int_a^b | f - f_n | \mathrm{ d } x \\ \leq & \int_a^b M_n \mathrm{ d } x \\ = & M_n ( b - a ) \to 0 \end{aligned} \]

这就搞定.然而注意到这里需要依赖于\(b - a\)的有界性.

另一个策略是直接用分划达布和证明\(f \in R [ a , b ]\).不妨设\(| f_n | \leq M , | f | \leq M\).则\(\forall \epsilon > 0 , \exists n\),\(| f_n ( x ) - f ( x ) | < \epsilon\).由于\(f_n ( x ) \in R [ a , b ]\),可以取定分划\(\Delta : a = x_0 < \cdots < x_p = b\),使得\(\sum ( M_i - m_i ) \Delta x_i < \epsilon\).

于此,我们取\(\bar{ M }_i = \sup_{ [ x_{ i - 1 } , x_i ] } f ( x ) , \bar{ m }_i\)同理.观察到\(\forall x \in [ x_{ i - 1 } , x_i ] , f ( x ) \leq f_n ( x ) + \epsilon \leq M_i + \epsilon\),所以一定有\(\bar{ M }_i \leq M_i + \epsilon\).对于\(\bar{ m }_i\)同理.此时:

\[ \begin{aligned} & \sum ( \bar{ M }_i - \bar{ m }_i ) \Delta x_i \\ \leq & \sum ( M_i - m_i ) \Delta x_i + 2 \epsilon ( b - a ) \\ \leq & \epsilon ( 1 + 2 ( b - a ) ) \end{aligned} \]

这就搞定.

事实上这个结论可以更强,可以放弃一致收敛的条件.我们有控制收敛定理:假设\(f_n \in R [ a , b ]\),而且它们一致有界,\(\forall n , \forall x \in [ a , b ] , | f_n | \leq M\).并且\(f ( x ) = \lim_{ n \to \infty } f_n ( x ) \in R [ a , b ]\),则\(\int_a^b f ( x ) \mathrm{ d } x = \lim_{ n \to \infty } \int_a^b f_n ( x ) \mathrm{ d } x\).

为证明此,先引入一些相关的定义:

定义阶梯函数为分段常值函数,假设\(f \in R [ a , b ]\),则我们可以用阶梯函数逼近\(f\),具体而言,假设\(g\)是阶梯函数,并且\(g \leq f\),那么我们可以将\(g\)类似达布下和而分划够细,以使得\(\int_a^b f \mathrm{ d } x = \sup_{ g \leq f , \text{ g is a step function } } \{ \int_a^b g ( x ) \mathrm{ d } x \}\).

定义初等集:有限个不交区间的并,可以见到其测度\(m ( E )\)就是所有不交区间的长度之和.

定义闭初等集:有限个不交闭区间的并.

定义有界闭初等集列:\(A_n\)是闭初等集.容易见到,如果\(A_n \ne \emptyset\),而且\(A_{ n + 1 } \subseteq A_n\),则\(\bigcap_{ n = 1 }^\infty A_n \ne \emptyset\),证明的话只需类似区间套定理,每个\(A_n\)内取一个点,这个点列是有界的,那它就一定有收敛子列,收敛到的那个点一定被含在每一个\(A_n\)中.这就搞定.

不妨设\(A_n\)是有界非空集列,满足\(A_{ n + 1 } \subseteq A_n , A_n \ne \emptyset , \bigcap_{ n = 1 }^\infty A_n = \emptyset\).此时定义\(\alpha_n = \sup \{ m ( E ) \mid E \subseteq A_n , \text{ E is a closed elementary set } \}\).我们下面证明\(\lim_{ n \to \infty } \alpha_n = 0\).

首先显然\(\alpha_n\)单调递减.如若其不以\(0\)为极限,则一定有正下界\(\alpha_n > \delta > 0\).我们可以取\(A_n\)的闭初等子集\(E_n \subseteq A_n\)满足\(m ( E_n ) > \alpha_n - \frac{ \delta }{ 2^n }\).

接下来定义\(H_n = \bigcap_{ k = 1 }^n E_k\),这当然是初等集,此时见到\(H_{ n + 1 } \subseteq H_n\).接下来对\(A_n \setminus H_n\)的任意初等子集\(E\),显然:

\[ \begin{aligned} E & = E \setminus H_n \\ & = E \setminus ( \bigcap_{ k = 1 }^n E_k ) \\ & = \bigcup_{ k = 1 }^n ( E \setminus E_k ) \end{aligned} \]

\(E \subseteq A_n \subseteq A_k\),所以\(E_k\)\(E \setminus E_k\)都是\(A_k\)的初等子集.所以:

\[ \begin{aligned} m ( E \setminus E_k ) + m ( E_k ) & \leq \alpha_k \\ m ( E \setminus E_k ) & \leq \frac{ \delta }{ 2^k } \end{aligned} \]

所以\(m ( E ) \leq \delta\).如果\(H_n = \emptyset\),那么\(m ( E ) = \alpha_n\),这就不符.所以\(H_n \ne \emptyset\),所以\(\bigcap_{ n = 1 }^\infty H_n \ne \emptyset\),所以\(\bigcap A_n \ne \emptyset\).矛盾,这就证明了原本的结论.

接下来考虑\(f ( x ) - f_n ( x )\),当没有一致连续的条件时,可能出现问题的地方在于有的地方两者不一定靠的足够近,想办法让这种地方所占的长度尽可能小就行.

对于\(\forall \epsilon > 0 , A_n = \{ x \in [ a , b ] \mid \exists j \geq n , | f_j ( x ) - f ( x ) | \geq \epsilon \}\).容易见到\(A_{ n + 1 } \subseteq A_n\),由于\(f_n \to f\),所以\(\bigcap_{ n = 1 }^\infty A_n = \emptyset\).引理告诉我们\(\alpha_n \to 0\).既然如此,存在\(N\),使得\(\forall n \geq N\),\(A_n\)的任意初等子集\(E\)都有\(m ( E ) < \epsilon\).取\(F = [ a , b ] \setminus E\).这其实更像是取\([ a , b ]\)的一个分划,因此如果我们在上面取阶梯函数的话,完全可以让阶梯函数所需的那个分划和这个分划并起来,从而完全由上述结果取到阶梯函数,此外我们的\(A_n \setminus E\)的部分由于落在\(F\)里而需要被\(\epsilon\)控制.

此时取阶梯函数\(S ( x )\)满足\(0 \leq S ( x ) \leq | f ( x ) - f_n ( x ) |\).这个时候看\(S ( x )\)的积分:

\[ \begin{aligned} \int_a^b S ( x ) \mathrm{ d } x & = \int_E S ( x ) \mathrm{ d } x + \int_F S ( x ) \mathrm{ d } x \\ & \leq 2 M \epsilon + \epsilon ( b - a ) \end{aligned} \]

这个对任意\(S ( x )\)都成立,由于我们之前说的阶梯函数的上界可以逼近原函数,所以这就意味着:

\[ \begin{aligned} & | \int_a^b f_n ( x ) - f ( x ) \mathrm{ d } x | \\ \leq & \int_a^b | f_n ( x ) - f ( x ) | \mathrm{ d } x \\ \leq & 2 M \epsilon + \epsilon ( b - a ) \end{aligned} \]

这就搞定.不过细心的读者也许会注意到一些问题,首先是这里用内测度逼近疑似有点神秘,然而如果用勒贝格测度的定义直接跑其实一眼就能看出来上面的结论.

还有另一个结论:假设\(f_n \in R [ a , b ] , | f_n | \leq M\),已知\(\lim_{ n \to \infty } f_n ( x ) = f ( x )\)存在(注意这里并不要求\(f ( x ) \in R [ a , b ]\)),我们就可以证明\(\lim_{ n \to \infty } \int_a^b f_n ( x ) \mathrm{ d } x\)存在.

考虑\(| \int_a^b f_n \mathrm{ d } x | \leq M ( b - a )\)有界,所以其可以取上下极限操作.令\(\overline{ F } = \varlimsup_{ n \to \infty } \int_a^b f_n \mathrm{ d } x , \underline{ F } = \varliminf_{ n \to \infty } \int_a^b f_n \mathrm{ d } x\).既然如此,就一定存在两列\(\{ n_k \}\)\(\{ m_k \}\),使得\(\overline{ F } = \lim_{ k \to \infty } \int_a^b f_{ n_k } \mathrm{ d } x , \underline{ F } = \lim_{ k \to \infty } \int_a^b f_{ m_k } \mathrm{ d } x\).然而:

\[ \begin{aligned} \overline{ F } - \underline{ F } & = \lim_{ k \to \infty } \int_a^b ( f_{ n_k } - f_{ m_k } ) \mathrm{ d } x \\ & = \int_a^b \lim_{ k \to \infty } ( f_{ n_k } - f_{ m_k } ) \mathrm{ d } x = 0 \end{aligned} \]

这你就可以见到,我们其实可以把这个极限干脆定义成\(f\)的积分.这实际上就是勒贝格积分.

Example1

求证:\(\int_0^1 \frac{ 1 }{ x^x } \mathrm{ d } x = \sum_{ n = 1 }^\infty \frac{ 1 }{ n^n }\).

展开:

\[ \begin{aligned} \frac{ 1 }{ x^x } & = e^{ - x \ln x } \\ & = \sum_{ n \geq 0 } \frac{ ( - x \ln x )^n }{ n ! } \end{aligned} \]

容易证明这个函数项级数是一致收敛的,那我们就可以逐项积分,而且积分内可以做多少次分部积分都无所谓(反正是有限逼近无限).

那么:

\[ \begin{aligned} & \int_0^1 \frac{ 1 }{ x^x } \mathrm{ d } x \\ = & \int_0^1 \sum_{ n \geq 0 } \frac{ ( - x \ln x )^n }{ n ! } \mathrm{ d } x \\ = & \sum_{ n \geq 0 } \int_0^1 \frac{ ( - x \ln x )^n }{ n ! } \mathrm{ d } x \end{aligned} \]

\(x = e^{ - t }\),换元:

\[ \begin{aligned} & \sum_{ n \geq 0 } \int_0^1 \frac{ ( - x \ln x )^n }{ n ! } \mathrm{ d } x \\ = & - \sum_{ n \geq 0 } \frac{ 1 }{ n ! } \int_0^{ + \infty } e^{ - ( n + 1 ) t } t^n \mathrm{ d } t \end{aligned} \]

而考虑:

\[ \begin{aligned} & \int_0^{ + \infty } e^{ - ( n + 1 ) t } t^n \mathrm{ d } t \\ = & \frac{ - 1 }{ n + 1 } \int_0^{ + \infty } t^n \mathrm{ d } e^{ - ( n + 1 ) t } \\ = & \frac{ - 1 }{ n + 1 } \left ( e^{ - ( n + 1 ) t } t^{ n } |_0^{ + \infty } - n \int_0^{ + \infty } e^{ - ( n + 1 ) t } t^{ n - 1 } \right ) \\ = & \frac{ n }{ n + 1 } \int_0^{ + \infty } e^{ - ( n + 1 ) t } t^{ n - 1 } \\ = & \cdots \\ = & \frac{ n ! }{ ( n + 1 )^{ n } } \int_0^{ + \infty } e^{ - ( n + 1 ) t } \mathrm{ d } t \\ = & - \frac{ n ! }{ ( n + 1 )^{ n + 1 } } \end{aligned} \]

和上面结合一下就证毕.

Example2

设函数列\(\{ f_n ( x ) \}\)任意内闭可积,并且\(\{ f_n ( x ) \}\)\(\mathbb{ R }\)上一致收敛到\(f ( x )\),再设存在函数\(g ( x )\)满足:

\[ | f_n ( x ) | \leq g ( x ) \]

并且\(\int_{ - \infty }^{ + \infty } g ( x ) \mathrm{ d } x < + \infty\).求证下列积分收敛而且:

\[ \int_{ - \infty }^{ + \infty } f ( x ) \mathrm{ d } x = \lim_{ n \to \infty } \int_{ - \infty }^{ + \infty } f_n ( x ) \mathrm{ d } x \]

首先要证明\(\int_{ - \infty }^{ + \infty } f ( x ) \mathrm{ d } x\)收敛.只需观察到\(| f_n | \leq g\)两遍取极限就可以拿到\(| f | \leq g\),所以绝对收敛.

接下来考虑如何证明相等,这里的问题在于虽然\(f ( x ) \rightrightarrows f\),但是由于区间长度无限长,因此这个控制会被放大.于此我们的策略是考虑将区间分成三段:\([ - \infty , - A ] , [ - A , A ] , [ A , + \infty ]\),对于中间的部分用一致收敛控制住,对于前后的部分用柯西准则控制住.

具体而言,\(| f ( x ) - f_n ( x ) | \leq 2 g ( x )\)取足够大的\(A\)使得\(\int_{ A }^{ + \infty } g ( x ) \mathrm{ d } x \leq \frac{ \epsilon }{ 6 }\)以及\(\int_{ - \infty }^{ - A } g ( x ) \mathrm{ d } x \leq \frac{ \epsilon }{ 6 }\),接下来考虑取足够大的\(n\)使得在\([ - A , A ]\)上,\(| f_n ( x ) - f ( x ) | < \frac{ \epsilon }{ 6 A }\):

\[ \begin{aligned} & | \int_{ - \infty }^{ + \infty } f_n ( x ) - f ( x ) \mathrm{ d } x | \\ \leq & | \int_{ - A }^{ + A } f_n ( x ) - f ( x ) \mathrm{ d } x | + | \int_{ - \infty }^{ - A } f_n ( x ) - f ( x ) \mathrm{ d } x | + | \int_{ + A }^{ + \infty } f_n ( x ) - f ( x ) \mathrm{ d } x | \\ \leq & 2 A \frac{ \epsilon }{ 6 A } + \frac{ \epsilon }{ 6 } \times 4 \\ = & \epsilon \end{aligned} \]

这就搞定了.

可微性

先看一个平凡的命题:假设\(f_n \in C^1 [ a , b ] , x_0 \in [ a , b ]\),已知\(\{ f_n ( x_0 ) \}\)收敛,而且\(f_n ' \rightrightarrows g\).则\(f_n \rightrightarrows f\),其中\(f \in C^1 [ a , b ]\),并且恰好满足\(f ' = g\).

考虑\(g ( x ) = \lim_{ n \to \infty } f_n ' ( x ) , x \in [ a , b ]\)当然能得到\(g ( x )\)是连续函数.

接下来考虑NL公式给出:

$$ \[\begin{aligned} f_n ( x ) & = f_n ( x_0 ) + \int_{ x_0 }^x f '_n ( t ) \mathrm{ d } t \\ \lim_{ n \to \infty } f_n ( x ) & = \lim_{ n \to \infty } f_n ( x_0 ) + \lim_{ n \to \infty } \int_{ x_0 }^x f '_n ( t ) \mathrm{ d } t \\ \lim_{ n \to \infty } f_n ( x ) & = \lim_{ n \to \infty } f_n ( x_0 ) + \int_{ x_0 }^x \lim_{ n \to \infty } f '_n ( t ) \mathrm{ d } t \\ f ( x ) & = \lim_{ n \to \infty } f_n ( x_0 ) + \int_{ x_0 }^x g ( t ) \mathrm{ d } t \\ \end{aligned}\]

$$

这就见到\(f_n \to f , f \in C^1 [ a , b ]\)而且\(f ' = g\).现在的问题是能否推出一致收敛\(f_n \rightrightarrows f\).有:

\[ \begin{aligned} & | f_n ( x ) - f ( x ) | \\ = & | f_n ( x_0 ) + \int_{ x_0 }^x f_n ' ( t ) \mathrm{ d } t - f ( x_0 ) - \int_{ x_0 }^x g ( t ) | \\ \leq & | f_n ( x_0 ) - f ( x_0 ) | + | \int_{ x_0 }^x f_n ' ( t ) \mathrm{ d } t - \int_{ x_0 }^x g ( t ) | \\ \leq & | f_n ( x_0 ) - f ( x_0 ) | + ( b - a ) \sup | f_n ' - g | \end{aligned} \]

这就完事.

上述结果能不能加强呢?事实上有一个更一般的结果:假设对于一串连续函数\(f_n ( x ) \in C [ a , b ]\),已知\(\exists x_0 \in [ a , b ]\),\(\lim_{ n \to \infty } f_n ( x_0 )\)存在.若对于\(\forall \epsilon > 0\),\(\exists N > 0 , \forall n , m \geq N\),函数\(g ( x ) = f_n ( x ) - f_m ( x )\)的李氏常数\(< \epsilon\).则我们可以推出\(\{ f_n ( x ) \}\)一致收敛,设\(f_n ( x ) \rightrightarrows f ( x )\),若对于某个\(x \in [ a , b ]\),如果\(f_n ' ( x )\)恒存在,而且\(\lim_{ n \to \infty } f_n ' ( x )\)存在,则\(f ' ( x )\)存在而且\(f ' ( x ) = \lim_{ n \to \infty } f_n ' ( x )\).

这个结论的正确性比较直观,就是用李氏连续的性质限制整个函数的波动.这个结论当然要严格强于原本的结论,因为闭区间上的可导函数自然是李氏连续函数,如若\(f_n ' ( x )\)一致连续,当然能推出上述的李氏连续性质,立刻得到原本结论.

下面考虑证明:\(\forall \epsilon > 0 , \exists N , \forall n , m \geq N\),都有\(| f_n ( x_0 ) - f_m ( x_0 ) | < \frac{ \epsilon }{ 2 }\),并且\(f_n ( x ) - f_m ( x )\)的李氏常数\(< \frac{ \epsilon }{ 2 ( b - a ) }\).注意到此时:

\[ \begin{aligned} & | f_n ( x ) - f_m ( x ) | \\ \leq & | f_n ( x ) - f_m ( x ) - ( f_n ( x_0 ) - f_m ( x_0 ) ) | + | f_n ( x_0 ) - f_m ( x_0 ) | \\ < & \frac{ \epsilon }{ 2 ( b - a ) } | x - x_0 | + \frac{ \epsilon }{ 2 } \leq \epsilon \end{aligned} \]

这就证明了\(f_n\)一致收敛,不妨设\(f_n \rightrightarrows f\).

接下来对于某个\(x \in [ a , b ]\),定义\(\varphi_n ( t ) = \frac{ f_n ( t ) - f_n ( x ) }{ t - x } , t \in [ a , b ] \setminus \{ x \}\),并补定义\(\varphi ( t ) = \frac{ f ( t ) - f ( x ) }{ t - x } , t \in [ a , b ] \setminus \{ x \}\).显然\(\varphi_n ( t ) \in C [ a , b ] \setminus \{ x \}\)

首先注意到:

\[ \begin{aligned} & | \varphi_n ( t ) - \varphi_m ( t ) | \\ = & \frac{ 1 }{ | t - x | } | f_n ( t ) - f_m ( t ) - ( f_n ( x ) - f_m ( x ) ) | \\ \leq & \frac{ 1 }{ | t - x | } \frac{ \epsilon }{ 2 ( b - a ) } | t - x | \\ = & \frac{ \epsilon }{ 2 ( b - a ) } \end{aligned} \]

于是\(\varphi_n ( t )\)一致收敛,而且容易见到\(\varphi_n \rightrightarrows \varphi\).从而:

\[ \begin{aligned} f ' ( x ) & = \lim_{ t \to x } \varphi ( t ) \\ & = \lim_{ t \to x } \lim_{ n \to \infty } \varphi_n ( t ) \\ & = \lim_{ n \to \infty } \lim_{ t \to x } \varphi_n ( t ) \\ & = \lim_{ n \to \infty } f_n ' ( x ) \end{aligned} \]

这就搞定了.

容易发现上述的推论是可导函数列的收敛性质(并不需要\(C^1\)).而且我们还可以推出一个推论:那就是导函数一致收敛到的函数也是导函数.

Example1

假设\(\{ q_n \}\)\([ 0 , 1 ]\)中的全体有理数排成的数列.定义\(f ( x ) = \sum_{ n = 1 }^\infty \frac{ | x - q_n | }{ 3^n } , x \in [ 0 , 1 ]\).

首先用大M判别法,注意到\(\frac{ | x - q_n | }{ 3^n } \leq \frac{ 1 }{ 3^n }\),而每一项都是连续的,所以总的\(f ( x )\)是连续函数,而且这个定义也是收敛的.而且对于\(x_0 \in [ 0 , 1 ] \setminus \mathbb{ Q }\),\(f_n ' ( x_0 )\)当然都是存在的,而且见到\(f_n ' ( x_0 ) = \sum_{ k = 1 }^n \frac{ \text{ sgn } ( x_0 - q_k ) }{ 3^k }\),并且这个导数还足够小.因此立刻见到当\(n , m\)足够大的时候,立刻见到\(f_n - f_m\)的李氏常数可以尽可能小.

于是套用上面的结论可以知道\(f ( x )\)\([ 0 , 1 ] \setminus \mathbb{ Q }\)处可导.那么其在\(\mathbb{ Q } \cap [ 0 , 1 ]\)上可导么?如若\(x \in \mathbb{ Q }\),不妨设\(x = q_n\),则考虑\(f ( x ) = \frac{ | x - q_n | }{ 3^n } + \sum_{ k \ne n } \frac{ | x - q_k | }{ 3^k }\),前半部分在\(q_n\)处不可导可后半部分在\(q_n\)处可导,于是总和当然不可导.

Example2

\(f ( x ) = \sum_{ n = 1 }^\infty \frac{ \sin ( nx ) }{ n^3 }\),求其导函数.

观察到\(\sum_{ n = 1 }^\infty | ( \frac{ \sin ( nx ) }{ n^3 } ) ' | \leq \sum \frac{ 1 }{ n^2 } < \infty\),所以其导函数也绝对一致收敛.立刻能推出\(f \in C^1 ( - \infty , + \infty )\),而且导函数就是逐项求导的\(f ' ( x ) = \sum_{ n = 1 }^\infty \frac{ \cos ( nx ) }{ n^2 }\).

部分应用

Borel引理

对任何一个实数列\(\{ a_n \}\),都存在一个函数\(f ( x ) \in C^{ \infty } ( \mathbb{ R } )\),满足\(f^{ ( n ) } ( 0 ) = a_n\).

考虑造一个\(g ( x ) = \begin{cases}1 & 0 \leq x \leq \frac{ 1 }{ 2 } \\ 0 & x \geq 1\end{cases}\),其中中间少了一段用磨光核连起来.考虑造一个单调递增无界正数列\(\{ \lambda_n \}\),并取:

\[ f ( x ) = \sum_{ n = 0 }^\infty \frac{ a_n x^n }{ n ! } g ( \lambda_n | x | ) \]

这个的好处是什么呢?我们发现当\(\lambda_n | x | \geq 1\),\(| x | \geq \frac{ 1 }{ \lambda_n }\)的时候\(g ( \lambda_n | x | ) = 0\),又因为\(\lambda_n\)单调递增趋近于无穷,所以除了\(0\)以外的所有点上都是有限和,因此全都收敛而且全都可导,所以\(f \in C^{ \infty } ( \mathbb{ R } \setminus \{ 0 \} )\).

考虑\(f_n ( x ) = \frac{ a_n x^n }{ n ! } g ( \lambda_n | x | )\),这个当然是\(C^{ \infty }\)的.并且当然有\(f_n^{ ( n ) } ( 0 ) = a_n\).现在如果我们能搞定这个导数级数的收敛性就搞定了\(0\)处的可导性了对吧.取\(M_k = \max_{ 0 \leq l \leq k } | g^{ ( l ) } |\),当\(k \leq n\)的时候考虑:

$$ \[\begin{aligned} | f_n^{ ( k ) } ( x ) | & \leq \frac{ | a_n | }{ n ! } \sum_{ m = 0 }^k \left | \binom{ k }{ m } n^{ \underline{ k - m } } x^{ n - k + m } g^{ ( m ) } ( \lambda_n | x | ) \lambda_n^m \right | \\ & \leq \frac{ | a_n | }{ n ! } \sum_{ m = 0 }^k \left | \binom{ k }{ m } n^{ \underline{ k - m } } x^{ n - k + m } M_k \lambda_n^m \right | \\ \end{aligned}\]

$$

注意这里的\(x\)一定很小,\(| x | < \frac{ 1 }{ \lambda_n }\)的时候上式才有意义,开始放缩:

\[ \begin{aligned} | f_n^{ ( k ) } ( x ) | & \leq \frac{ | a_n | }{ n ! } \sum_{ m = 0 }^k \left | \frac{ k ! }{ m ! ( k - m ) ! } n^{ \underline{ k - m } } M_k \frac{ 1 }{ \lambda_n^{ n - k } } \right | \\ & \leq \frac{ | a_n | }{ n ! } \sum_{ m = 0 }^k \left | \frac{ k ! }{ m ! ( k - m ) ! } n^{ \underline{ k - m } } M_k \frac{ 1 }{ \lambda_n^{ n - k } } \right | \\ & = \frac{ | a_n | }{ n ! } \sum_{ m = 0 }^k \left | \frac{ k ! }{ m ! ( k - m ) ! } \frac{ n ! }{ ( n - k + m ) ! } M_k \frac{ 1 }{ \lambda_n^{ n - k } } \right | \\ & \leq | a_n | M_k \frac{ 1 }{ \lambda_n^{ n - k } } k ! \end{aligned} \]

显然只需取足够小的\(\lambda_n\)就用大M判别法控制住了.

维尔斯特拉斯函数

考虑造一个处处连续处处不可导的函数,首先它应该在任何一个区间上都没有单调性(因为单调函数几乎处处可导).

首先造一个连续的\(2\)周期函数\(h ( x ) = \begin{cases}x & 0 \leq x \leq 1 \\ 2 - x & 1 \leq x \leq 2 \\ h ( x - 2 ) & \text{ otherwise }\end{cases}\).或者我们干脆定义\(h ( x ) = \sin ( \frac{ \pi }{ 2 } 4^n x )\),这样这个函数更光滑一点,但对论证几乎没有区别.

考虑造\(f ( x ) = \sum_{ n = 0 }^{ \infty } ( \frac{ 3 }{ 4 } )^n h ( 4^n x )\),注意到:

\[ f ( x ) \leq \sum ( \frac{ 3 }{ 4 } )^n < \infty \]

根据大M判别法,所以这个函数的确绝对一致收敛.那这个函数就确实继承了连续性.

首先有引理:如果\(f ' ( x_0 )\)存在,而且\(\alpha_n \leq x_0 \leq \beta_n , 0 < \beta_n - \alpha_n \to 0\),则\(\lim_{ n \to \infty } \frac{ f ( \beta_n ) - f ( \alpha_n ) }{ \beta_n - \alpha_n } \to f ' ( x_0 )\).取\(\lambda_n = \frac{ \beta_n - x_0 }{ \beta_n - \alpha_n }\),容易见到\(0 \leq \lambda_n \leq 1\),见到:

\[ \begin{aligned} & \frac{ f ( \beta_n ) - f ( \alpha_n ) }{ \beta_n - \alpha_n } - f ' ( x_0 ) \\ = & \lambda_n ( \frac{ f ( \beta_n ) - f ( x_0 ) }{ \beta_n - x_0 } - f ' ( x_0 ) ) + ( 1 - \lambda_n ) ( \frac{ \alpha_n - f ( x_0 ) }{ \alpha_n - x_0 } - f ' ( x_0 ) ) \end{aligned} \]

容易见到趋近于\(0\).不过要简单判断一下\(\alpha_n = x_0\)的情况.

既然如此,\(\forall x \in \mathbb{ R }\),考虑定义\(\alpha_m = \frac{ \lfloor 4^m x \rfloor }{ 4^m } , \beta_m = \alpha_m + \frac{ 1 }{ 4^m }\),容易见到\(\alpha_m \leq x < \beta_m\).并且当\(n \leq m\)的时候,\(( 4^n \alpha_m , 4^n \beta_m )\)上不存在整数.

见到:

\[ 4^n ( \beta_m - \alpha_m ) = \begin{cases} \in 4 \mathbb{ N } & n > m \\ 1 & n = m \\ < 1 & \text{ otherwise } \end{cases} \]

于是:

\[ | h ( 4^n \beta_m ) - h ( 4^n \alpha_m ) | = \begin{cases} 0 & n > m \\ | 4^n \beta_m - 4^n \alpha_m | = 4^{ n - m } & n \leq m \end{cases} \]

\(n < m\)的地方往负了放,自然有:

\[ \begin{aligned} | f ( \beta_m ) - f ( \alpha_m ) | & = \sum_{ n = 0 }^m ( \frac{ 3 }{ 4 } )^n ( h ( 4^n \beta_m ) - h ( 4^n \alpha_m ) ) \\ & \geq ( \frac{ 3 }{ 4 } )^m - \sum_{ n = 0 }^{ m - 1 } ( \frac{ 3 }{ 4 } )^n 4^{ n - m } \\ & = ( \frac{ 3 }{ 4 } )^m - \frac{ 1 }{ 4^m } \frac{ 3^m - 1 }{ 2 } \\ & = \frac{ 1 }{ 4^m } \frac{ 3^m + 1 }{ 2 } \end{aligned} \]

所以:

\[ \frac{ | f ( \beta_m ) - f ( \alpha_m ) | }{ \beta_m - \alpha_m } \geq \frac{ 3^m + 1 }{ 2 } \]

然而如若这点导数存在,那么这里的导数就是\(\lim_{ m \to \infty } \frac{ 3^m + 1 }{ 2 } = \infty\),这就矛盾了.因此这个函数处处不可导.

连续曲线充满平面

存在充满\([ 0 , 1 ] \times [ 0 , 1 ]\)的连续曲线.连续曲线在这里定义为\(( x ( t ) , y ( t ) ) , t \in [ 0 , 1 ]\)满足\(x ( t ) , y ( t ) \in C [ 0 , 1 ]\),任意\(( a , b ) \in [ 0 , 1 ] \times [ 0 , 1 ]\),都存在\(t\)使得\(a = x ( t ) , b = y ( t )\).

搞一个连续函数\(g ( t )\)满足:

$$ g ( t ) = \[\begin{cases} 0 & t \in [ 0 , \frac{ 1 }{ 3 } ] \cup [ \frac{ 5 }{ 3 } , 2 ] \\ 3 t - 1 & t \in [ \frac{ 1 }{ 3 } , \frac{ 2 }{ 3 } ] \\ 1 & t \in [ \frac{ 2 }{ 3 } , \frac{ 4 }{ 3 } ] \\ 3 t + 5 & t \in [ \frac{ 4 }{ 3 } , \frac{ 5 }{ 3 } ] \\ \end{cases}\]

$$

并且满足\(g ( t + 2 ) = g ( t )\),也就是一个周期梯形函数.

接下来定义:

\[ \begin{aligned} x ( t ) & = \sum_{ n = 1 }^\infty \frac{ 1 }{ 2^n } g ( 3^{ 2 n - 2 } t ) \\ y ( t ) & = \sum_{ n = 1 }^\infty \frac{ 1 }{ 2^n } g ( 3^{ 2 n - 1 } t ) \end{aligned} \]

容易发现\(0 \leq x ( t ) , y ( t ) \leq \sum_{ n = 1 }^\infty \frac{ 1 }{ 2^n } = 1\),所以的确绝对一致收敛,继承了连续性而且确实在\([ 0 , 1 ] \times [ 0 , 1 ]\)中.

接下来\(\forall ( a , b ) \in [ 0 , 1 ] \times [ 0 , 1 ]\),我们尝试找到一个\(t\)使得\(a = x ( t ) , b = y ( t )\).考虑取二者的二进制表示\(a = \sum_{ n = 1 }^\infty \frac{ a_n }{ 2^n } , b = \sum_{ n = 1 }^\infty \frac{ b_n }{ 2^n }\),其中\(a_n , b_n \in \{ 0 , 1 \}\).取一个新的数列\(c_{ 2 n - 1 } = a_n , c_{ 2 n } = b_n\).取\(0 \leq c = 2 \sum_{ n = 1 }^\infty \frac{ c_n }{ 3^n } \leq 1\),下面我们证明\(x ( c ) = a , x ( c ) = b\).

考虑\(3^k c = 2 \sum_{ n = 1 }^k \frac{ c_n }{ 3^{ n - k } } + 2 \sum_{ n = k + 1 }^\infty \frac{ c_n }{ 3^{ n - k } }\).其中前半部分是个偶整数,因此在带入函数\(g\)后会消失,观察后半部分,容易见到:如果\(c_{ k + 1 } = 0\),则后半部分\(\leq \frac{ 1 }{ 3 }\);如果\(c_{ k + 1 } = 1\),则后半部分\(\geq \frac{ 2 }{ 3 }\),因此\(g ( 3^k c ) = c_{ k + 1 }\).带入原式定义就看到\(x ( c ) = a , y ( c ) = b\).

甚至说,这里的\(c\)其实就在康托尔三分集中,所以事实上这个曲线上的零测集就足以覆盖整个平面.

幂级数

我们把形如\(f ( x ) = \sum_{ n = 0 }^{ \infty } a_n ( x - x_0 )^n\)的函数项级数称作幂级数,由于可以做自变量平移,不妨假设\(x_0 = 0\)\(f ( x ) = \sum_{ n = 0 }^{ \infty } a_n x^n\).

一个最先遇到的问题当然是幂级数的收敛范围,首先\(x = 0\)肯定收敛.其次我们可以发现如果\(f ( r )\)收敛,那么\(\forall x \in \mathbb{ R } , | x | < | r |\)都有\(f ( x )\)收敛,原因是:

\[ \sum | a_n x^n | = \sum | a_n r^n | \cdot | \frac{ x }{ r } |^n \]

由于\(\sum a_n r^n\)收敛,所以其通项\(\lim_{ n \to \infty } a_n r^n = 0\),那至少是有界的,而\(| \frac{ x }{ r } |^n\)又是个无穷递降等比数列,那就肯定收敛.既然如此,取\(R = \sup \{ | x | , x \in \mathbb{ R } | f ( x ) \text{ is converge } \}\).由上面的结论我们知道\(\forall x \in ( - R , R )\)都有\(f ( x )\)收敛,另外\(\forall x , | x | > R\)都有\(f ( x )\)发散.既然如此,我们将\(( - R , R )\)称作幂级数的收敛区间,容易见到收敛域和收敛区间最多只可能差两个点,换言之设收敛域为\(E\),则自然有\(( - R , R ) \subseteq E \subseteq [ - R , R ]\).

\(\rho = \varlimsup_{ n \to + \infty } \sqrt[n]{ | a_n | }\),则\(R = \rho^{ - 1 }\)(这里要做一些约定:不妨设\(\inf^{ - 1 } = 0\)\(0^{ - 1 } = \inf\)).原因是\(\varlimsup_{ n \to + \infty } \sqrt[n]{ | a_n x^n | } = | x | \rho\),用根值判别法就显然了.

这里还有一个更弱的比值判别法的版本:如若\(a_n \ne 0\),\(\rho = \lim_{ n \to \infty } \left | \frac{ a_{ n + 1 } }{ a_n } \right |\)存在,则\(R = \rho^{ - 1 }\).原因是Stolz定理给出:

\[ \varliminf \frac{ | a_{ n + 1 } | }{ | a_n | } \leq \varliminf \sqrt[n]{ | a_n | } \leq \varlimsup \sqrt[n]{ | a_n | } \leq \varlimsup \frac{ | a_{ n + 1 } | }{ | a_n | } \]

下面我们证明,在收敛区间的内部\(( - R , R )\)内,\(\sum a_n x^n\)是内闭绝对一致收敛的.而如果其在端点处也收敛,例如在\(x = R\)时收敛的话,则其在\([ 0 , R ]\)上一致收敛.

前者的话,只需用大M判别法即可,任取\([ - r , r ] \subseteq ( - R , R )\)然后看\(| a_n x^n | \leq | a_n r^n |\).

而对于后者的话,考虑\(\sum a_n x^n = \sum a_n R^n ( \frac{ x }{ R } )^n\),而\(( \frac{ x }{ R } )^n\)是单调一致有界,而\(\sum a_n R^n\)收敛,用DA判法则搞定.

上述结论的一个显然推论是幂级数是收敛域上的连续函数(因为在收敛域上都是一致连续的).

Example1

假设\(R = 1\),既然有一致连续性,若\(\sum a_n\)收敛,则极限存在有\(\lim_{ x \to 1 - 0 } f ( x ) = f ( 1 ) = \sum a_n\).然而这个结论反过来不成立,例如\(f ( x ) = \sum ( - x )^n = \frac{ 1 }{ 1 + x }\),容易见到极限为\(\frac{ 1 }{ 2 }\)可是\(f ( 1 )\)并不收敛.

上述结论能不能加点条件使得反之成立呢?我们下面证明若\(a_n = o ( \frac{ 1 }{ n } )\),若\(\lim_{ x \to 1 - 0 } f ( x ) = S\)存在,则\(\sum a_n = S\).

考虑取\(\sigma_n = \frac{ 1 }{ n } \sum_{ k = 0 }^n k | a_k |\),由Stolz定理知道\(\lim \sigma_n = \lim n | a_n | = 0\).取\(S_n = \sum_{ k = 1 }^n a_k\),我们要证明的就是当\(n \to \inf\)的时候\(| S - S_n |\)尽可能小.当\(x \in ( - 1 , 1 )\)的时候,注意到:

$$ \[\begin{aligned} S_n - S & = f ( x ) - S - \sum_{ k = n + 1 }^\infty a_k x^k + \sum_{ k = 0 }^n a_k ( 1 - x^k ) \\ & = f ( x ) - S - \sum_{ k = n + 1 }^\infty a_k x^k + \sum_{ k = 0 }^n a_k ( 1 - x ) ( 1 + x + \cdots + x^{ k - 1 } ) \\ & \leq f ( x ) - S - \sum_{ k = n + 1 }^\infty a_k x^k + ( 1 - x ) \sum_{ k = 0 }^n ka_k \\ \end{aligned}\]

$$

\(\forall \epsilon > 0\),取足够大的\(n\)使得\(\sigma_n < \frac{ \epsilon }{ 3 }\)而且使得\(| na_n | < \frac{ \epsilon }{ 3 }\)总成立,那么:

\[ | S_n - S | \leq | f ( x ) - S | + ( 1 - x ) n \sigma_n + \frac{ \epsilon }{ 3 n } \frac{ x^{ n + 1 } }{ 1 - x } \]

\(x = 1 - \frac{ 1 }{ n }\),即可得证.

如果加点单调性也可以.设\(a_n > 0\),如果\(f ( x ) = \sum_n a_n x^n\)满足\(f ( 1 - )\)存在,则\(\sum a_n = f ( 1 - )\).

这个结论与之前的一致收敛那里的单调性质完全相似.首先由\(\sum_n a_n \leq f ( 1 - )\)得到这个级数收敛,然后又可以放到\(\sum a_n x^n \leq \sum_n a_n\),让左边趋近一下得到\(f ( 1 - ) \leq \sum_n a_n\).

柯西和

\(\sum a_n = A , \sum b_n = B\),设\(c_n = \sum_{ k = 0 }^n a_{ n - k } b_k\),我们下面证明若\(\sum c_n\)收敛,则\(\sum c_n = AB\).

考虑设\(f ( x ) = \sum a_n x^n , g ( x ) = \sum b_n x^n\),则其收敛半径肯定\(\geq 1\),既然如此在任何内闭区间\([ - r , r ] \subseteq ( - 1 , 1 )\),\(f , g\)都在\([ - r , r ]\)上绝对一致收敛,既然如此我们就可以把这个乘积随便打乱顺序,得到\(f ( x ) g ( x ) = \sum c_n x^n , \forall x \in [ - r , r ]\).而我们又有\(\sum c_n\)收敛,既然如此\(\sum c_n = h ( 1 ) = \lim_{ x \to 1 - 0 } h ( x ) = ( \lim_{ x \to 1 - 0 } f ( x ) ) ( \lim_{ x \to 1 - 0 } g ( x ) ) = AB\),则搞定.

其中\(\sum c_n\)收敛这个条件是必须的,如果去掉后结论不成立,有如下反例:

\(a_n = b_n\)考虑对\(( 1 + x )^{ - \frac{ 1 }{ 2 } }\)做泰勒展开,得到\(f ( x ) = g ( x ) = \sum a_n x^n = \frac{ 1 }{ \sqrt{ 1 + x } }\)此时\(f ( 1 ) , g ( 1 )\)都收敛,原因是\(a_n = ( - 1 )^n \frac{ ( 2 n - 1 ) ! ! }{ 2^n n ! }\),用DA判法知道其收敛.然而\(f ( x ) g ( x ) = \frac{ 1 }{ 1 + x }\),\(c_n = ( - 1 )^n\),因此\(\sum c_n\)不收敛,这就完蛋了.

逐项微积分

既然幂级数在收敛域上一致收敛,那当然可以逐项积分.而且注意到\(\varlimsup \sqrt[n + 1]{ \frac{ | a_n | }{ n + 1 } } = \varlimsup \sqrt[n]{ | a_n | }\),原因是\(\lim \sqrt[n]{ n } = 1\),因此收敛半径不变,然而积分后,端点处有可能被包含入收敛域,原因是DA判法,原本的\(a_n x^n\)之和如果有界,配了一个多的下降\(\frac{ 1 }{ n }\)就会收敛,例如\(\sum \frac{ x^n }{ n }\).

同理,对于逐项求导也可以发现收敛半径不变.所以幂级数可以在收敛域上逐项积分任意多次,也可以在收敛区间内逐项求导任意多次.

Example1

\(\sum_{ n = 0 }^\infty \frac{ ( - 1 )^n }{ 3 n + 1 }\).

考虑:

$$ \[\begin{aligned} f ( x ) & = \sum_{ n = 0 }^\infty \frac{ ( - 1 )^n }{ 3 n + 1 } x^{ 3 n + 1 } \\ & = \sum_{ n = 0 }^\infty \int_0^x ( - 1 )^n t^{ 3 n } \mathrm{ d } t \\ \end{aligned}\]

$$

我们想让这里的求和和积分交换顺序对吧!那首先得规定\(x \in ( - 1 , 1 )\)而取不到\(1\),有:

\[ \begin{aligned} f ( x ) & = \sum_{ n = 0 }^\infty \int_0^x ( - 1 )^n t^{ 3 n } \mathrm{ d } t \\ & = \int_0^x \sum_{ n = 0 }^\infty ( - t )^{ 3 n } \mathrm{ d } t \\ & = \int_0^x \frac{ \mathrm{ d } t }{ 1 + t^3 } \end{aligned} \]

后面那个可以积出来,而且\(f ( x )\)\(( - 1 , 1 )\)上取值就是如此.而发现\(f ( x )\)\(1\)处收敛,因此拿这个积出来的结果极限逼近一下就行.

泰勒级数

对于一个\(f \in C^\infty\),考虑泰勒展开有:

\[ f ( x ) = \sum_{ k = 0 }^n \frac{ f^{ ( k ) } ( x_0 ) }{ k ! } ( x - x_0 )^k + r_n ( x ) \]

其中依照拉格朗日余项,\(r_n ( x ) = \frac{ f^{ ( n + 1 ) } ( \xi ) }{ ( n + 1 ) ! } ( x - x_0 )^{ n + 1 }\),若存在\(\delta > 0\),当\(x \in ( x_0 - \delta , x_0 + \delta )\)的时候,\(\lim_{ n \to \infty } r_n = 0\),则称该函数在\(x_0\)处解析,也就是可以用泰勒级数逼近它.

我们有一个命题:如果\(f ( x )\)\(x_0\)处解析,则其在\(x_0\)附近的一个小邻域上解析(证明可以参考Example15).因此解析的概念以拓宽到区间上,如果其在一个开区间\(I\)上解析,则称其\(\in C^\omega ( I )\).

而且我们还可以见到,如果\(f^{ ( n ) } ( x )\)一致有界(或者至少与\(n\)无关),则由于\(( x - x_0 )^n\)会被\(\frac{ 1 }{ ( n + 1 ) ! }\)控制住,所以其在\(\mathbb{ R }\)上都是解析的.所以\(\sin x , \cos x\)都是解析的,另外\(e^x , \ln x\)的导数大小与\(n\)无关,所以也解析.

\(f , g\)\(x_0\)处解析的时候,应当有\(f \pm g , fg , \frac{ f }{ g }\)都是解析的.而且如果\(f\)\(g ( x_0 )\)处解析,则\(f ( g ( x ) )\)也在\(x_0\)处解析.这个太难算了,我们承认这个事实好了,反正就是硬算.

Example1(广义二项式定理)

\(f ( x ) = ( 1 + x )^\alpha\)\(0\)处的解析性.

也就是要证明\(f ( x ) = ( 1 + x )^\alpha = \sum_{ n = 0 }^\infty \frac{ \alpha^{ \underline{ n } } }{ n ! } x^n\).

用比值法,观察到:

\[ \begin{aligned} & | \frac{ \binom{ \alpha }{ n } }{ \binom{ \alpha }{ n + 1 } } | \\ = & | \frac{ n + 1 }{ \alpha - n } | \to 1 \end{aligned} \]

所以右端收敛半径为\(1\).既然如此先搞定右端那个幂级数,设\(g ( x ) = \sum_{ n = 0 }^\infty \binom{ \alpha }{ n } x^n , x \in ( - 1 , 1 )\).观察到:

\[ \begin{aligned} g ' ( x ) & = \sum_{ n = 1 }^\infty n \binom{ \alpha }{ n } x^{ n - 1 } \\ ( 1 + x ) g ' ( x ) & = \sum_{ n = 1 }^\infty n \binom{ \alpha }{ n } x^{ n - 1 } + \sum_{ n = 1 }^\infty n \binom{ \alpha }{ n } x^{ n } \\ & = \alpha + \sum_{ n = 1 }^\infty \left ( n \binom{ \alpha }{ n } + ( n + 1 ) \binom{ \alpha }{ n + 1 } \right ) x^n \\ & = \alpha + \alpha \sum_{ n = 1 }^\infty \binom{ \alpha }{ n } x^n \\ & = \alpha g \end{aligned} \]

此时见到:

\[ \begin{aligned} & \left ( \frac{ g }{ ( 1 + x )^\alpha } \right ) ' \\ = & - \alpha ( 1 + x )^{ - \alpha - 1 } g + ( 1 + x )^{ - \alpha } g ' \\ = & ( 1 + x )^{ - \alpha - 1 } ( - \alpha g + ( 1 + x ) g ' ) \equiv 0 \end{aligned} \]

所以\(\frac{ g }{ ( 1 + x )^\alpha }\)是一常数,演算\(x = 0\)的部分就可以知道当\(x \in ( - 1 , 1 )\)的时候它俩相等.

最后再补一下端点,

\(\alpha > 0 , x = \pm 1\)的时候,下面直接证明它绝对收敛,也就是证明\(\sum | \binom{ \alpha }{ n } | < \inf\).,考虑拉贝判法:

\[ \begin{aligned} & n \left ( \frac{ | \binom{ \alpha }{ n } | }{ | \binom{ \alpha }{ n + 1 } | } - 1 \right ) \\ = & n ( \frac{ n + 1 }{ n - \alpha } - 1 ) \to 1 + \alpha > 0 \end{aligned} \]

所以此时收敛域是\([ - 1 , 1 ]\).

\(- 1 < \alpha < 0\)的时候,估一下发现:

\[ \begin{aligned} | \binom{ \alpha }{ n } | & = | ( 1 - \frac{ \alpha + 1 }{ 1 } ) \cdots ( 1 - \frac{ \alpha + 1 }{ n } ) | \\ & = e^{ \sum_k \ln | 1 - \frac{ 1 + \alpha }{ k } | } \\ & \approx e^{ - \sum_k \frac{ 1 + \alpha }{ k } } \\ & \approx \frac{ 1 }{ n^{ 1 + \alpha } } \end{aligned} \]

而且此时\(\binom{ \alpha }{ n }\)本身是个交错级数,所以在\(- 1\)处不收敛而在\(1\)处收敛.同理当\(\alpha \leq - 1\)的时候,\(| \binom{ \alpha }{ n } |\)并不趋向于\(0\)所以两端都不收敛.

Example2(反三角函数)

考虑由Example1,当\(| x | < 1\)的时候:

\[ ( 1 - x^2 )^{ - \frac{ 1 }{ 2 } } = 1 + \sum_{ n = 1 }^\infty \frac{ ( 2 n - 1 ) ! ! }{ ( 2 n ) ! ! } x^{ 2 n } \]

两遍逐项积分,有:

\[ \arcsin x = x + \sum_{ n = 1 }^\infty \frac{ ( 2 n - 1 ) ! ! }{ ( 2 n ) ! ! } \frac{ x^{ 2 n + 1 } }{ 2 n + 1 } \]

继续用拉贝判别法,注意到:

\[ n \left ( \frac{ a_n }{ a_{ n + 1 } } - 1 \right ) \to \frac{ 3 }{ 2 } \]

所以收敛.而且还可以发现这一下积分使得端点处也搞定了,所以上式对\([ - 1 , 1 ]\)都成立.

Example3(平方倒数和)

还可再整点活,令\(x = \sin t\)带入上式,得到:

$$ \[\begin{aligned} t & = \sin t + \sum_{ n = 1 }^\infty \frac{ ( 2 n - 1 ) ! ! }{ ( 2 n ) ! ! } \frac{ \sin^{ 2 n + 1 } t }{ 2 n + 1 } \\ \end{aligned}\]

$$

两遍在\([ 0 , \frac{ \pi }{ 2 } ]\)上积分,得到:

\[ \begin{aligned} \frac{ \pi^2 }{ 8 } & = 1 + \sum_{ n = 1 }^\infty \frac{ ( 2 n - 1 ) ! ! }{ ( 2 n ) ! ! ( 2 n + 1 ) } \frac{ ( 2 n ) ! ! }{ ( 2 n + 1 ) ! ! } \\ & = 1 + \sum_{ n = 1 }^\infty \frac{ 1 }{ ( 2 n + 1 )^2 } \\ & = \sum_{ n = 1 }^\infty \frac{ 1 }{ ( 2 n - 1 )^2 } \end{aligned} \]

所以奇数的平方和是\(\frac{ \pi^2 }{ 8 }\),那么:

\[ \begin{aligned} \sum_{ n = 1 }^\infty \frac{ 1 }{ n^2 } & = \frac{ \pi^2 }{ 8 } + \frac{ 1 }{ 4 } \sum_{ n = 1 }^\infty \frac{ 1 }{ n^2 } \\ \sum_{ n = 1 }^\infty \frac{ 1 }{ n^2 } & = \frac{ \pi^2 }{ 6 } \end{aligned} \]

Example4

\(c > 0\)的时候,求证存在多项式列\(\{ P_n ( x ) \} \rightrightarrows | x | , x \in [ - c , c ]\).

考虑:

\[ \begin{aligned} | x | & = ( x^2 )^{ \frac{ 1 }{ 2 } } \\ & = ( c^2 - ( c^2 - x^2 ) )^{ \frac{ 1 }{ 2 } } \\ & = c ( 1 - \left ( 1 - \frac{ x^2 }{ c^2 } \right ) )^{ \frac{ 1 }{ 2 } } \end{aligned} \]

由于\(1 - \frac{ x^2 }{ c^2 } \in [ 0 , 1 ] , \frac{ 1 }{ 2 } > 0\),只需要对此用广义二项式定理即可.

Example5

\(\int_0^\pi \frac{ \ln ( 1 + a \cos x ) }{ \cos x } \mathrm{ d } x\).

对着上面那个\(\ln\)做泰勒级数,自然有:

$$ \[\begin{aligned} & \int_0^\pi \frac{ \ln ( 1 + a \cos x ) }{ \cos x } \mathrm{ d } x \\ = & \int_0^\pi a + \sum_{ n = 1 }^\infty ( - 1 )^n \frac{ a^{ n + 1 } \cos^n x }{ n + 1 } \\ \end{aligned}\]

$$

而回忆到\(\int_0^\pi \cos^m x \mathrm{ d } x\)\(m\)是奇数的时候当然为\(0\),偶数的时候转化为\(\sin x\),答案是\(\frac{ ( m - 1 ) ! ! }{ m ! ! } \pi\).

所以原式变成:

\[ \begin{aligned} & \int_0^\pi a + \sum_{ n = 1 }^\infty ( - 1 )^n \frac{ a^{ n + 1 } \cos^n x }{ n + 1 } \\ = & \pi ( a + \sum_{ m = 1 }^\infty \frac{ ( 2 m - 1 ) ! ! }{ ( 2 m ) ! ! } \frac{ a^{ 2 m + 1 } }{ 2 m + 1 } ) \\ = & \pi \arcsin a \end{aligned} \]

Example6

\(S = \sum_{ n = 0 }^\infty \frac{ ( - 1 )^n ( n + 1 )^3 }{ n ! }\).

见到:

$$ \[\begin{aligned} & \sum_{ n = 0 }^\infty \frac{ ( - 1 )^n ( n + 1 )^3 }{ n ! } e^{ ( n + 1 ) x } \\ = & \sum_{ n = 0 }^\infty \frac{ ( - 1 )^n }{ n ! } ( e^{ ( n + 1 ) x } ) ' ' ' \\ \end{aligned}\]

$$

\(f ( x ) = \sum_{ n = 0 }^\infty \frac{ ( - 1 )^n }{ n ! } e^{ ( n + 1 ) x }\),则:

\[ \begin{aligned} f ( x ) & = \sum_{ n = 0 }^\infty \frac{ ( - 1 )^n }{ n ! } e^{ ( n + 1 ) x } \\ & = e^x \sum_{ n = 0 }^\infty \frac{ ( - e^x )^n }{ n ! } \\ & = e^{ x - e^x } \end{aligned} \]

则:

\[ \begin{aligned} f ' & = ( 1 - e^x ) f \\ f ' ' & = ( 1 - 3 e^x + e^{ 2 x } ) f \\ f ' ' ' & = ( - 3 e^x + 2 e^{ 2 x } ) f + ( 1 - e^x ) ( 1 - 3 e^x + e^{ 2 x } ) f \\ f ' ' ' ( 0 ) & = - f ( 0 ) = - \frac{ 1 }{ e } \end{aligned} \]

这就搞定.

Example7

\(\sum_{ n = 1 }^\infty \frac{ \cos ( nx ) }{ n }\).

\(t \in ( - 1 , 1 ]\),设:

$$ \[\begin{aligned} f ( t ) & = \sum_{ n = 1 }^\infty \frac{ \cos ( nx ) }{ n } t^n \\ f ' & = \sum_{ n = 1 }^\infty \cos ( nx ) t^{ n - 1 } \\ & = \Re \sum_{ n = 1 }^\infty t^{ n - 1 } e^{ inx } \\ & = \Re \frac{ e^{ ix } }{ 1 - te^{ ix } } \\ & = \Re \frac{ \cos x + i \sin x }{ 1 - t \cos x - it \sin x } \\ & = \Re \frac{ ( \cos x + i \sin x ) ( 1 - t \cos x + it \sin x ) }{ ( 1 - t \cos x )^2 + t^2 \sin^2 x } \\ & = \frac{ \cos x ( 1 - t \cos x ) - t \sin^2 x }{ ( 1 - t \cos x )^2 + t^2 \sin^2 x } \\ & = \frac{ \cos x - t }{ 1 - 2 t \cos x + t^2 } \\ \end{aligned}\]

$$

此时应当有:

\[ \begin{aligned} f ( t ) & = f ( 0 ) + \int_0^t f ' ( t ) \mathrm{ d } t \\ & = - \frac{ 1 }{ 2 } \ln ( 1 - 2 t \cos x + t^2 ) \end{aligned} \]

\(f ( 1 ) = - \ln 2 - \ln | \sin \frac{ x }{ 2 } |\),这就求出了原式.

Example8

考虑\(\zeta ( x ) = \sum_{ n = 1 }^\infty \frac{ 1 }{ n^x }\),有定理说:

\[ \zeta ( x ) = \frac{ 1 }{ x - 1 } + \sum_{ n = 0 }^\infty \frac{ ( - 1 )^n \gamma_n }{ n ! } ( x - 1 )^n \]

其中后半部分是整个复平面上的解析函数,并有:

\[ \gamma_n = \lim_{ m \to \infty } \left ( \sum_{ k = 1 }^m \frac{ ( \ln k )^n }{ k } - \frac{ ( \ln m )^{ n + 1 } }{ n + 1 } \right ) \]

Example9

\(S ( x ) = 1 + \sum_{ n = 1 }^\infty \frac{ ( 2 n - 1 ) ! ! }{ ( 2 n ) ! ! } x^n\),其中\(| x | < 1\).

容易见到其收敛半径是\(1\),考虑:

\[ \begin{aligned} S ' ( x ) & = \frac{ 1 }{ 2 } + \sum_{ n = 1 }^\infty \frac{ ( 2 n + 1 ) ! ! }{ ( 2 n + 2 ) ! ! } ( n + 1 ) x^n \\ 2 S ' ( x ) & = 1 + \sum_{ n = 1 }^\infty \frac{ ( 2 n + 1 ) ! ! }{ ( 2 n ) ! ! } x^{ n } \\ 2 xS ' ( x ) & = \sum_{ n = 1 }^\infty \frac{ ( 2 n - 1 ) ! ! }{ ( 2 n - 2 ) ! ! } x^n \\ 2 xS ' ( x ) & = \sum_{ n = 1 }^\infty \frac{ ( 2 n - 1 ) ! ! }{ ( 2 n ) ! ! } 2 nx^n \\ 2 S ' ( x ) - 2 xS ' ( x ) & = S ( x ) \\ \frac{ \mathrm{ d } x }{ 2 ( 1 - x ) } & = \frac{ \mathrm{ d } S ( x ) }{ S ( x ) } \\ - \frac{ 1 }{ 2 } \ln ( 1 - x ) & = \ln S ( x ) \\ S ( x ) & = \frac{ 1 }{ \sqrt{ 1 - x } } \end{aligned} \]

Example10

\(| x | < 1\),求\(S ( x ) = \sum_{ n = 0 }^\infty \frac{ ( - 1 )^n x^n }{ 2 n + 1 }\).

容易见到收敛半径为\(1\),令\(x = t^2\),有:

$$ \[\begin{aligned} S ( t^2 ) = \sum_{ n = 0 }^\infty ( - 1 )^n \frac{ 1 }{ t } \int_0^t u^{ 2 n } \mathrm{ d } u \\ = \frac{ 1 }{ t } \int_0^t \sum_{ n = 0 }^\infty ( - 1 )^n u^{ 2 n } \mathrm{ d } u \\ = \frac{ 1 }{ t } \int_0^t \frac{ \mathrm{ d } u }{ 1 + u^2 } \\ = \frac{ \arctan t }{ t } \\ \end{aligned}\]

$$

所以\(S ( x ) = \frac{ \arctan \sqrt{ x } }{ \sqrt{ x } }\).

Example11

\(\sum_{ n = 2 }^\infty \frac{ ( - 1 )^n }{ n^2 + n - 2 }\).

注意到:

\[ \begin{aligned} S ( x ) = \sum_{ n = 2 }^\infty \frac{ ( - 1 )^n x^{ n - 1 } }{ n^2 + n - 2 } \\ = \sum_{ n = 2 }^\infty \frac{ ( - 1 )^n x^{ n - 1 } }{ 3 } \left ( \frac{ 1 }{ n - 1 } - \frac{ 1 }{ n + 2 } \right ) \\ = \frac{ 1 }{ 3 } \sum_{ n = 2 }^\infty \frac{ ( - 1 )^n x^{ n - 1 } }{ n - 1 } - \frac{ 1 }{ 3 x^3 } \sum_{ n = 2 }^\infty \frac{ ( - 1 )^n x^{ n + 2 } }{ n + 2 } \\ = \frac{ 1 }{ 3 } \ln ( 1 + x ) - \frac{ 1 }{ 3 x^3 } \left ( - \ln ( 1 + x ) + x - \frac{ x^2 }{ 2 } + \frac{ x^3 }{ 3 } \right ) \end{aligned} \]

而注意到带入\(x = 1\)的时候\(S ( x )\)收敛,这就搞定了,带入\(x = 1\)就行.

Example12

\(\sum_{ n = 1 }^\infty \frac{ n }{ ( n + 1 ) ! }\).

\(S ( x ) = \sum_{ n = 0 }^\infty \frac{ ( n + 1 ) x^n }{ ( n + 2 ) ! }\),显然收敛,直接逐项积分.

\[ \begin{aligned} \int_0^x S ( t ) \mathrm{ d } t & = \sum_{ n = 0 }^\infty \frac{ x^{ n + 1 } }{ ( n + 2 ) ! } \\ & = \sum_{ n = 1 }^\infty \frac{ x^{ n } }{ ( n + 1 ) ! } \\ x ( \int_0^x S ( t ) \mathrm{ d } t + 1 ) & = e^x - 1 \\ S ( x ) & = \left ( \frac{ e^x - 1 }{ x } \right ) ' = \frac{ xe^x - e^x + 1 }{ x^2 } \end{aligned} \]

这就搞定了.

Example13

\(\int_0^\infty \frac{ x \mathrm{ d } x }{ e^{ 2 \pi x } - 1 }\).

注意到:

\[ \begin{aligned} \int_0^\infty \frac{ x \mathrm{ d } x }{ e^{ 2 \pi x } - 1 } \\ = \int_0^\infty \frac{ xe^{ - 2 \pi x } \mathrm{ d } x }{ 1 - e^{ - 2 \pi x } } \\ = \int_0^{ \infty } xe^{ - 2 \pi x } \sum_{ n = 0 }^\infty e^{ - 2 \pi n x } \mathrm{ d } x \\ = \sum_{ n = 0 }^\infty \int_0^{ + \infty } xe^{ - 2 \pi ( n + 1 ) x } \mathrm{ d } x \\ = \sum_{ n = 0 }^\infty \frac{ 1 }{ - 2 \pi ( n + 1 ) } \int_0^{ + \infty } x \mathrm{ d } e^{ - 2 \pi ( n + 1 ) x } \\ = \sum_{ n = 0 }^\infty \frac{ 1 }{ 2 \pi ( n + 1 ) } \int_0^{ + \infty } e^{ - 2 \pi ( n + 1 ) x } \mathrm{ d } x \\ = \sum_{ n = 0 }^\infty \frac{ 1 }{ 4 \pi^2 ( n + 1 )^2 } \\ = \frac{ 1 }{ 24 } \end{aligned} \]

其中中间的交换积分号和求和号是源于所有的部分和都可以小于等于\(g ( x )\),并且\(\int_0^{ \infty } g\)收敛.

Example14

\(\int_0^1 \frac{ \ln ( 1 + x ) }{ x } \mathrm{ d } x\).

直接展开对吧,注意到:

\[ \begin{aligned} & \int_0^1 \frac{ \ln ( 1 + x ) }{ x } \mathrm{ d } x \\ = & \int_0^1 \sum_{ n = 1 }^\infty \frac{ ( - 1 )^{ n - 1 } x^{ n - 1 } }{ n } \\ = & \sum_{ n = 1 }^\infty \int_0^1 \frac{ ( - 1 )^{ n - 1 } x^{ n - 1 } }{ n } \mathrm{ d } x \\ = & \sum_{ n = 1 }^\infty \frac{ ( - 1 )^{ n - 1 } }{ n^2 } \\ = & \sum_{ n = 1 }^\infty \frac{ 1 }{ ( 2 n - 1 )^2 } - \sum_{ n = 1 }^\infty \frac{ 1 }{ ( 2 n )^2 } \\ = & \sum_{ n = 1 }^\infty \frac{ 1 }{ n^2 } - 2 \sum_{ n = 1 }^\infty \frac{ 1 }{ ( 2 n )^2 } \\ = & \frac{ 1 }{ 2 } \sum_{ n = 1 }^\infty \frac{ 1 }{ n^2 } \\ = & \frac{ \pi^2 }{ 12 } \end{aligned} \]

Example15

\(I\)是开区间,\(f \in C^\infty ( I )\),求证\(f \in C^\omega ( I )\)当且仅当\(\forall x_0 \in I , \exists M , B , r > 0\),使得\(\forall | x - x_0 | < r , | f^{ ( n ) } ( x ) | \leq MB^n n !\).就是说对于区间内任何一个点,在它的小邻域处,任意阶导数都可以被和\(n\)有关的一个速率控制住.

充分性比较简单,考虑取\(S ( x ) = \sum \frac{ f^{ ( n ) } ( x_0 ) }{ n ! } ( x - x_0 )^n\)对其取\(| \sqrt[n]{ \frac{ f^{ ( n ) } ( x_0 ) }{ n ! } } | \leq \sqrt[n]{ MB^n } = \sqrt[n]{ M } B < + \infty\),所以总之收敛半径不为\(0\).那就总能取一个足够小的\(r < \frac{ 1 }{ B }\).此时用泰勒展开的拉格朗日余项:

\[ \begin{aligned} \left | f ( x ) - \sum_{ k = 0 }^n \frac{ f^{ ( k ) } ( x_0 ) }{ k ! } ( x - x_0 )^k \right | & = \left | \frac{ f^{ ( n + 1 ) } ( \xi ) }{ ( n + 1 ) ! } ( x - x_0 )^{ n + 1 } \right | \\ & \leq | B^{ n + 1 } ( x - x_0 )^{ n + 1 } M | \\ & \leq | ( Br )^{ n + 1 } M | \to 0 \end{aligned} \]

这就搞定.

接下来是必要性.考虑\(\varlimsup_{ n \to \infty } \sqrt[n]{ | \frac{ f^{ ( n ) } ( x_0 ) | }{ n ! } } = \frac{ 1 }{ R } > 0\),那就可以取\(0 < r < M < R\),存在一个\(N\),使得\(\forall n \geq N\)都有\(| f^{ ( n ) } ( x_0 ) | \leq n ! ( \frac{ 1 }{ M } )^n\).

接下来想要把这个性质挪到\(x_0\)周围小邻域上对吧.于此我们考虑先逼近后逐项求导:

\[ \begin{aligned} | f^{ ( n ) } ( x ) | & = | \sum_{ k = 0 }^\infty \frac{ f^{ ( n + k ) } ( x_0 ) }{ k ! } ( x - x_0 )^k | \\ & \leq \sum_{ k = 0 }^\infty \frac{ | f^{ ( n + k ) } ( x_0 ) | }{ k ! } | x - x_0 |^k \\ & \leq \sum_{ k = 0 }^\infty \frac{ ( n + k ) ! }{ k ! M^{ n + k } } r^k \\ & = \frac{ n ! }{ M^n } \sum_{ k = 0 }^\infty \frac{ ( n + k )^{ \underline{ k } } }{ k ! } ( \frac{ r }{ M } )^k \\ & = \frac{ n ! }{ M^n } \sum_{ k = 0 }^\infty \frac{ ( - n - 1 )^{ \underline{ k } } }{ k ! } ( \frac{ - r }{ M } )^k \\ & = \frac{ n ! }{ M^n } ( 1 - \frac{ r }{ M } )^{ - n - 1 } \\ & = Mn ! ( M - r )^{ - ( n + 1 ) } \end{aligned} \]

这就搞定了.

Example16

若非常数\(f\)\(( a , b )\)的每一点都解析,则其零点集在\(( a , b )\)内无聚点.

考虑如果一个点\(c \in ( a , b )\)\(f\)的聚点的话,那么\(c\)一定是\(f\)的任意阶导数的聚点.由于任意阶导数都是连续的,因此\(c\)处的任意阶导数都是\(0\).又因为\(f\)解析,所以\(c\)周围的一个小邻域必然全部为\(0\).既如此取最长的小邻域为\(( \alpha , \beta )\),下面我们证明\(( \alpha , \beta ) = ( a , b )\),不妨假设\(a \ne \alpha\),由于连续性得知\(f\)\([ \alpha , \beta )\)上取值为\(0\),然而这意味着\(\alpha\)必然也是零点集的聚点,因此它还可以继续往左延申一个小邻域,这就与\(a\)是最靠左的矛盾了.

不过这个做法不能推广到复平面上,原因是平面上的介值定理难搞一点啊.

提供另一种证明方法,考虑\(f\)\(( a , b )\)上的零点的聚点\(x_0\),如果\(x_0\)的任意阶导数都是\(0\)的话,那还是按照上面一样往外面扩就行了对吧.反之,设\(f ( x_0 ) = f^{ ( 1 ) } ( x_0 ) = \cdots = f^{ ( N - 1 ) } ( x_0 ) = 0 , f^{ ( N ) } ( x_0 ) \ne 0\),此时考虑\(f ( x ) = ( x - x_0 )^{ N + 1 } \sum_{ n = 0 }^\infty \frac{ f^{ ( N + n + 1 ) } }{ ( N + n + 1 ) ! } ( x - x_0 )^n\),不妨设\(g ( x ) = \sum_{ n = 0 }^\infty \frac{ f^{ ( N + n + 1 ) } }{ ( N + n + 1 ) ! } ( x - x_0 )^n\),容易发现\(g ( x_0 ) \ne 0\),既然如此,\(g\)肯定在\(x_0\)的一个小邻域(要与解析的那个邻域取交)上非\(0\),设为\(( x_0 - \delta , x_0 + \delta )\)上非零,可这样\(f ( x )\)\(( x_0 - \delta , x_0 ) \cup ( x_0 , x_0 + \delta )\)上必然非零,这与\(x_0\)是零点聚点矛盾了.

多项式逼近

如果对于函数\(f ( x ) : [ a , b ] \to \mathbb{ R }\),存在一个多项式列可以一致收敛到\(f ( x )\),则称其可以被多项式一致逼近.容易见到一个必要条件是\(f ( x ) \in C [ a , b ]\).

事实上我们有维尔斯特拉斯定理:有界闭区间上的连续函数可由多项式一致连续逼近.首先不妨假设\([ a , b ] = [ 0 , 1 ]\).下面给出两种证明:

其一是构造性证明,我们有Bernstein多项式:

\[ B_n ( f ) = \sum_{ p = 0 }^n \binom{ n }{ p } f ( \frac{ p }{ n } ) x^p ( 1 - x )^{ n - p } \]

这个多项式有很多性质,首先随便放缩一下就知道这个多项式在\([ 0 , 1 ]\)上有界,更具体地有\(\min f \leq B_n \leq \max f\),原因是:

\[ \begin{aligned} B_n ( f ) & \leq \sum_p \binom{ n }{ p } f ( \frac{ p }{ n } ) x^p ( 1 - x )^{ n - p } \\ & \leq ( \max f ) \sum_p \binom{ n }{ p } x^p ( 1 - x )^{ n - p } \\ & = \max f \end{aligned} \]

另一边同理.

其次有\(\deg ( B_n ) \leq n\).以及这个甚至是\(f\)的线性映射,或言\(B_n ( \alpha f + \beta g ) = \alpha B_n ( f ) + \beta B_n ( g )\).

\(r_p ( x ) = \binom{ n }{ p } x^p ( 1 - x )^{ n - p }\),注意到:

  1. \(\sum_p r_p ( x ) = 1\).

  2. \(\sum_p pr_p ( x ) = nx\).

  3. \(\sum_p p ( p - 1 ) r_p ( x ) = n ( n - 1 ) x^2\).

  4. \(\sum_p p^2 r_p ( x ) = n ( n - 1 ) x^2 + nx\).

  5. \(\sum_{ p = 0 }^n ( p - nx )^2 r_p ( x ) \leq \frac{ n }{ 4 }\).

前四条类似,以(3)为例,证明的话考虑对\(( x + y )^n = \sum_p \binom{ n }{ p } x^p y^{ n - p }\)两边对\(x\)求两次导数:

\[ n ( n - 1 ) x^2 ( x + y )^{ n - 2 } = \sum_p^n \binom{ n }{ p } p ( p - 1 ) x^p y^{ n - p } \]

带入\(y = 1 - x\)即可.

(5)的话也只需要计算,观察到:

\[ \begin{aligned} & \sum_{ p = 0 }^n ( p - nx )^2 r_p ( x ) \\ = & \sum_p p^2 r_p - 2 nx \sum_p pr_p + n^2 x^2 \sum r_p \\ = & n ( n - 1 ) x^2 + nx - 2 n^2 x^2 + n^2 x^2 \\ = & nx ( 1 - x ) \leq \frac{ n }{ 4 } \end{aligned} \]

我们见到:

$$ \[\begin{aligned} | B_n ( f ) - f | & = \left | \sum_{ p = 0 }^n \binom{ n }{ p } f ( \frac{ p }{ n } ) x^p ( 1 - x )^{ n - p } - \sum_{ p = 0 }^n \binom{ n }{ p } f ( x ) x^p ( 1 - x )^{ n - p } \right | \\ & \leq \sum_{ p = 0 }^n \binom{ n }{ p } | f ( \frac{ p }{ n } ) - f ( x ) | x^p ( 1 - x )^{ n - p } \\ \end{aligned}\]

$$

既然\(f ( x )\)闭区间上连续则有一致连续,\(\forall \epsilon > 0\),取\(\delta > 0\),使得只要\(| x - x ' | < \delta , | f ( x ) - f ( x ' ) | < \frac{ \epsilon }{ 2 }\),那有:

\[ \begin{aligned} | B_n ( f ) - f | & \leq \sum_{ p = 0 }^n \binom{ n }{ p } | f ( \frac{ p }{ n } ) - f ( x ) | x^p ( 1 - x )^{ n - p } \\ & = \sum_{ | \frac{ p }{ n } - x | < \delta }^n \binom{ n }{ p } | f ( \frac{ p }{ n } ) - f ( x ) | x^p ( 1 - x )^{ n - p } + \sum_{ | \frac{ p }{ n } - x | \geq \delta }^n \binom{ n }{ p } | f ( \frac{ p }{ n } ) - f ( x ) | x^p ( 1 - x )^{ n - p } \\ & \leq \frac{ \epsilon }{ 2 } + \frac{ 2 \max | f | }{ n^2 \delta^2 } \sum_{ p = 0 }^n ( p - nx )^2 r_p ( x ) \\ & \leq \frac{ \epsilon }{ 2 } + \frac{ \max | f | }{ 2 n \delta^2 } \end{aligned} \]

倒数第二步是由于当\(| \frac{ p }{ n } - x | \geq \delta\),所以\(\frac{ ( p - nx )^2 }{ n^2 \delta^2 } \geq 1\).

最后一步是因为当\(\epsilon\)确定的时候,\(\delta\)就已经确定了,然而\(n\)可以足够大,这就控制住了.

再给另一个存在性证明.回忆到\([ a , b ]\)上的连续函数组成的集合\(C [ a , b ]\)是一个完备线性空间.称\(A \subseteq C [ a , b ]\)是一个代数当且仅当\(\forall f , g \in A\),\(\forall c \in \mathbb{ R }\),\(f + g , fg , cf \in A\).容易见到如果\(P\)是一个有限项多项式,\(f \in A\),则\(P ( f ) \in A\).

在此基础上定义\(\bar{ A }\)\(A\)闭包,定义为:

\[ \bar{ A } = \{ f \in C [ a , b ] | \exists \{ f_n \} \in A , f_n \rightrightarrows f \} \]

容易见到\(A \subseteq \bar{ A }\).而且容易见到\(\bar{ A }\)肯定也是一个代数.而见到\(\overline{ ( \bar{ A } ) } = \bar{ A }\),原因是柯西列导出的已经是闭的了,无法再往外拓展.

回忆到绝对值函数可以由多项式函数逼近,所以如果\(f \in \bar{ A }\),则\(| f | \in \bar{ A }\).更进一步,如果\(f , g \in \bar{ A }\),由于\(\max ( f , g ) = \frac{ f + g }{ 2 } + \frac{ | f - g | }{ 2 }\),所以\(\max ( f , g ) \in \bar{ A }\),同理\(\min ( f , g ) \in \bar{ A }\).

我们有一个定理说:设\(A \subseteq C [ a , b ]\)是一个代数,并且\(f ( x ) = c \in A\).并且\(\forall x , y \in [ a , b ] , x \ne y , \exists f \in A , f ( x ) \ne f ( y )\)\(\bar{ A } = C [ a , b ]\).容易见到这个定理强于维尔斯特拉斯定理.这个定理叫Stone-Weierstrass定理.

下面我们来证明这个结论.

先搞一个引理:\(\forall x_1 , x_2 \in [ a , b ] , x_1 \ne x_2 , \forall \alpha , \beta \in \mathbb{ R }\),则\(\exists h \in A , h ( x_1 ) = \alpha , h ( x_2 ) = \beta\).

证明的话,考虑由已知\(\exists \varphi \in A , \varphi ( x_1 ) \ne \varphi ( x_2 )\).此时把这个函数给挪一下,取\(h ( x ) = \alpha + ( \beta - \alpha ) \frac{ \varphi ( x ) - \varphi ( x_1 ) }{ \varphi ( x_2 ) - \varphi ( x_1 ) }\).(其实这个应该是双传递性,但是我目前没看出如何用双传递性来解释证明过程.)

接下来考虑证明原定理,来证明\(\forall f \in C [ a , b ] , \forall n , \exists g_n \in \bar{ A } , | f ( x ) - g_n ( x ) | < \frac{ 1 }{ n }\),由于我们刚才的引理,\(\forall x , y \in [ a , b ] , \exists h_{ x , y } ( z ) \in A , h_{ x , y } ( x ) = f ( x ) , h_{ x , y } ( y ) = f ( y )\).这个函数由\(x , y\)所确定.

固定\(x\)不动,对\(\forall y \in [ a , b ]\),\(\exists \delta = \delta ( y )\),由于一致连续性,当\(z \in I_y = ( y - \delta , y + \delta )\)的时候,\(h_{ x , y } ( z ) < f ( z ) + \frac{ 1 }{ n }\).而这里的\(I_y\)构成了一个开覆盖(边界上可能需要挪一下,但反正能做到),用有限覆盖定理拿到有限个区间\(I_{ y_1 , } , \cdots , I_{ y_m }\)覆盖了\([ a , b ]\).此时取\(h_x ( z ) = \min \{ h_{ x , y_1 } , \cdots , h_{ x , y_m } \}\),见到\(h_x ( z ) < f ( z ) + \frac{ 1 }{ n } , \forall z \in [ a , b ]\).而且\(h_x ( x ) = f ( x )\).

既然\(h_x ( x ) = f ( x )\),考虑\(\exists \delta , I_x = ( x - \delta , x + \delta )\)使得\(h_x ( z ) > f ( z ) - \frac{ 1 }{ n } , \forall z \in I_x\).对此再做有限覆盖得到\(h_{ x_1 } , \cdots , h_{ x_l }\),取\(g_n = \max \{ h_{ x_1 } , \cdots , h_{ x_l } \}\).显然:

\[ f ( z ) - \frac{ 1 }{ n } < g_n ( z ) < f ( z ) + \frac{ 1 }{ n } \]

搞定了.

那么,这个多项式能不能再来点限制呢?比如说我不许在多项式里出现\(x^2\)项可以吗?也可以.考虑\(f \in C [ a , b ]\),则\(f ( x^{ \frac{ 1 }{ 3 } } ) \in C [ a^{ \frac{ 1 }{ 3 } } , b^{ \frac{ 1 }{ 3 } } ]\),所以存在一个多项式\(P ( x ) \rightrightarrows f ( x^{ \frac{ 1 }{ 3 } } )\),意味着\(P ( x^3 ) \rightrightarrows f ( x ) , x \in [ a , b ]\).而\(P ( x^3 )\)当然没有\(x^2\)项.

也就是说这些多项式很多都是浪费的.那么有没有一个非常厉害的结论能告诉我什么样的多项式可以呢?考虑在\([ 0 , 1 ]\)上,\(\mathrm{ Span } \{ 1 , x^{ \lambda_1 } , \cdots \}\)张成的多项式,其中\(0 < \lambda_1 < \lambda_2 < \cdots\),其中\(\lambda_n \to \infty\).注意这里不要求\(\lambda_i\)是整数,如果其闭包能张成\(C [ 0 , 1 ]\),当且仅当\(\sum \frac{ 1 }{ \lambda_i } = + \infty\).这被称为Muntz定理,(其一个更强的推广是去掉\(\lambda_n \to \infty\)的结论,取而代之的是需要满足\(\sum \frac{ \lambda_i }{ 1 + \lambda_i^2 } = + \infty\))

这个定理的必要性我们目前难以证明,先证明其充分性.

考虑\(\forall m \in \mathbb{ N }_+ \setminus \{ \lambda_i \}\),都可以定义一个函数列,其中\(Q_0 ( x ) = x^m , Q_n ( x ) = ( \lambda_n - m ) x^{ \lambda_n } \int_x^1 Q_{ n - 1 } ( t ) t^{ - 1 - \lambda_n } \mathrm{ d } t\).我们先证明\(Q_n\)一定长成\(x^m - \sum_{ i = 1 }^n a_{ n , i } x^{ \lambda_i }\)的形式.

数学归纳证明此结论,设\(Q_n = x^m - \sum_{ i = 1 }^n a_{ n , i } x^{ \lambda_i }\),来看\(Q_{ n + 1 }\):

$$ \[\begin{aligned} Q_{ n + 1 } ( x ) & = ( \lambda_{ n + 1 } - m ) x^{ \lambda_{ n + 1 } } \int_x^1 Q_{ n } ( t ) t^{ - 1 - \lambda_{ n + 1 } } \mathrm{ d } t \\ & = ( \lambda_{ n + 1 } - m ) x^{ \lambda_{ n + 1 } } \int_x^1 ( t^m - \sum_{ i = 1 }^n a_{ n , i } t^{ \lambda_i } ) t^{ - 1 - \lambda_{ n + 1 } } \mathrm{ d } t \\ \end{aligned}\]

$$

后面那部分直接积出来就是了,然后前面有一个\(\lambda_{ n + 1 }\),这样就搞定了.

下面定义一个函数的模长\(\Vert Q \Vert = \max_{ [ 0 , 1 ] } | Q ( x ) |\),此时:

\[ \begin{aligned} | Q_n ( x ) | & \leq | \lambda_n - m | x^{ \lambda_n } \Vert Q_{ n - 1 } \Vert \int_x^1 t^{ - 1 - \lambda_n } \mathrm{ d } t \\ & = | \lambda_n - m | x^{ \lambda_n } \cdot \Vert Q_{ n - 1 } \Vert \frac{ x^{ - \lambda_n } - 1 }{ \lambda_n } \\ & = | 1 - \frac{ m }{ \lambda_n } | \cdot \Vert Q_{ n - 1 } \Vert ( 1 - x^{ \lambda_n } ) \\ & \leq | 1 - \frac{ m }{ \lambda_n } | \cdot \Vert Q_{ n - 1 } \Vert \\ & \leq \prod_{ i = 1 }^n | 1 - \frac{ m }{ \lambda_i } | \end{aligned} \]

然而回忆到\(\sum \frac{ 1 }{ \lambda_i }\)发散.所以后面那个连乘积必然发散,但是容易见到\(m\)取死后,其从\(\lambda_i > m\)的时候就是单调递减的,那又发散必然知道其趋近于\(0\).所以\(\lim \Vert Q_n \Vert = 0\).那又回忆到\(Q_n = x^m - \sum_{ i = 1 }^n a_{ n , i } x^{ \lambda_i }\),这已经说明\(x^m\)可以被\(\{ x^{ \lambda_i } \}\)一致逼近,原命题充分性搞定.

现在来看固定在\(\lambda_i \in \mathbb{ N }_+\)的情形,能否给出一个充要条件呢?我们下面证明对于互异的\(\{ \lambda_i \} \in \mathbb{ N }_+\),\(C [ a , b ] = \overline{ \mathrm{ span } } \{ x^{ \lambda_i } , 1 \}\)的充要条件是:

  1. 如果\(0 \notin ( a , b )\),当\(\sum \frac{ 1 }{ \lambda_i } = + \infty\).

  2. 如果\(a < 0 < b\),要求\(\sum_{ \lambda_i \in \mathrm{ even } } \frac{ 1 }{ \lambda_i } = + \infty , \sum_{ \lambda_i \in \mathrm{ odd } } \frac{ 1 }{ \lambda_i } = + \infty\).

先证这个命题的充分性,对于\(0 \notin ( a , b )\),不妨设\(0 \leq a < b = 1\),容易发现此时的确满足\(\lim \lambda_n = + \infty\)而且\(\sum_i \frac{ 1 }{ \lambda_i } = + \infty\),这就搞定了.

对于\(a < 0 < b\),我们只要证明在\(C [ - 1 , 1 ]\)上的函数都可以被一致逼近即可对吧.考虑\(g_1 ( x ) = \frac{ f ( x ) + f ( - x ) }{ 2 }\)是其偶函数部分,自然可以被偶次的部分逼近(原因是只需要逼近\([ 0 , 1 ]\)上就可以延拓).反之亦然同理,\(g_2 ( x ) = \frac{ f ( x ) - f ( - x ) }{ 2 }\)也可以被奇数次的部分逼近并且延拓,这也就搞定.

回忆到如果一个函数如果在一个无穷区间上可以被有限次多项式一致逼近,用柯西准则做那个函数列就可以证明这个函数一定是一个多项式.下面我们来推广这个结论.

\(V\)是一个内积空间,其中\(g , f_1 , \cdots , f_n \in V\)是其中的\(n\)个向量,设\(E = \mathrm{ Span } \{ f_1 , \cdots , f_n \}\),回忆到\(g\)\(E\)的距离定义为:

\[ d = \min_{ p \in E } \Vert g - p \Vert = \sqrt{ \cfrac{ G ( g , f_1 , \cdots , f_n ) }{ G ( f_1 , \cdots , f_n ) } } \]

其中\(G ( f_1 , \cdots , f_n ) = \det | ( f_i | f_j ) |\).

而考虑取两列数列\(\{ \alpha_i \} , \{ \beta_j \}\),回忆到李文威考试题给出过:

\[ \det ( \frac{ 1 }{ \alpha_i + \beta_j } ) = \cfrac{ \prod_{ 1 \leq i < j \leq n } ( \alpha_j - \alpha_i ) ( \beta_j - \beta_i ) }{ \prod_{ 1 \leq i , j \leq n } ( \alpha_i + \beta_j ) } \]

又回忆到\(C [ 0 , 1 ]\)也是一个内积空间,可以定义\(( f | g ) = \int_0^1 fg \mathrm{ d } x\).容易见到\(( x^a | x^b ) = \frac{ 1 }{ a + b + 1 }\).现在我们就可以用上面的行列式硬算了.考虑取\(E = \mathrm{ span } \{ x^{ \lambda_1 } , \cdots , x^{ \lambda_n } \}\),取\(d = ( x^{ \lambda } , E )\),容易见到:

\[ d ( x^\lambda , E ) = \frac{ 1 }{ \sqrt{ 2 \lambda + 1 } } \prod_{ i = 1 }^n \left | \frac{ \lambda - \lambda_i }{ \lambda + \lambda_i + 1 } \right | \]

下面我们引进一个引理:

对于数列\(\{ \lambda_i \} > 0\)且单增,如果\(c = \inf_{ i \geq 1 } \{ \lambda_{ i + 1 } - \lambda_i \} > 0\),如果\(\sum_{ i = 1 }^\infty \frac{ 1 }{ \lambda_i } < \infty\),则\(\lim_{ m \to \infty } \frac{ 1 }{ \lambda_m } \sum_{ i = 1 , i \ne m }^\infty \ln \left | \frac{ \lambda_i + \lambda_m }{ \lambda_i - \lambda_m } \right | = 0\).

这个定理的详细证明较为麻烦,而且与主线无关,将在下述Example3处讲解.

考虑取\(P ( x ) \in \mathrm{ Span }_{ i \ne m } \{ x^{ \lambda_i } \}\),由于子空间只有有限项非零,所以\(\exists n\)使得\(P ( x ) \in E = \mathrm{ Span }_{ i \ne m , i \leq n } \{ x^{ \lambda_i } \}\),此时观察到:

$$ \[\begin{aligned} & d ( x^{ \lambda_m } , P ( x ) ) \\ \geq & d ( x^\lambda_m , E ) \\ = & \frac{ 1 }{ \sqrt{ 2 \lambda_m + 1 } } \prod_{ i = 1 , i \ne m }^n \left | \frac{ \lambda_m - \lambda_i }{ \lambda_m + \lambda_i + 1 } \right | \\ \geq & \frac{ 1 }{ \sqrt{ 2 \lambda_m + 1 } } \prod_{ i = 1 , i \ne m }^{ \infty } \left | \frac{ \lambda_m - \lambda_i }{ \lambda_m + \lambda_i + 1 } \right | \\ \end{aligned}\]

$$

由上述引理,我们知道最后那一项取\(\ln\)后是一个\(o ( \lambda_m )\)的东西,不妨将后面那一项记作\(e^{ - l_m \lambda_m }\),其中\(l_m > 0 , \lim_{ m \to \infty } l_m = 0\).

为了简化说明引进\(\lambda_0 = 0\),

再来一个引理:对\(\forall \epsilon > 0\),\(\exists C_\epsilon > 0\),满足\(\forall P ( x ) \in \mathrm{ Span }_{ i \geq 0 } \{ x^{ \lambda_i } \} , \lambda_0 = 0\),不妨设\(P ( x ) = \sum_{ i = 0 }^n a_i x^{ \lambda_i }\),我们有\(| a_m | \leq C_\epsilon ( 1 + \epsilon )^{ \lambda_m } \Vert P \Vert\).

注意到:

\[ \begin{aligned} \frac{ P ( x ) }{ a_m } & = x^{ \lambda_i } + \sum_{ i \leq n , i \ne m }^n \frac{ a_i }{ a_m } x^{ \lambda_m } \\ \frac{ \Vert P ( x ) \Vert }{ | a_m | } & \geq d ( x^{ \lambda_m } , E ) \geq e^{ - l_m \lambda_m } \\ | a_m | & \leq e^{ l_m \lambda_m } \Vert P ( x ) \Vert \end{aligned} \]

而当\(m\)充分大的时候,当然有\(e^{ l_m } \leq 1 + \epsilon\),这就证毕了.

万事俱备,下面我们来证明必要性:办法是使用反证法,假设\(f \in C [ 0 , 1 ]\),当\(\lambda_0 = 0 , \sum_{ i = 1 }^\infty \frac{ 1 }{ \lambda_i } < \infty\)时,并且\(P_n ( x ) = \sum_{ i = 0 }^n a_{ i , n } x^{ \lambda_i } \rightrightarrows f ( x )\).则当然也有\(\Vert P_n \Vert \to \Vert f \Vert\),那\(\Vert P_n \Vert\)就有界了,既然如此,\(a_{ i , n } \leq C_\epsilon ( 1 + \epsilon )^{ \lambda_i }\),也就是说所有的\(a_{ i , n }\)都是有界的.

我们想要求出一个子列\(\{ n_k \}\),使得\(\forall i , \lim_{ k \to \infty } a_{ i , n_k }\)收敛于某个数\(a_i\),方法是对角线法则,对于第一行其肯定存在收敛子列,取其第一个数为\(n_1\),对于第二行,在第一行对应下来的元素中肯定也有收敛子列,取其第一个元素作为\(n_2\),依次类推.这样我们就得到了一个新的函数列\(P_{ n_k } \to g ( x ) = \sum_{ i = 0 }^\infty a_i x^{ \lambda_i }\).此时考虑\(\varlimsup \sqrt[\lambda_i]{ | a_i | } \leq 1 + \epsilon\),因此\(g ( x )\)收敛半径\(\geq 1\).然而,\(P_{ n_k } \to f ( x )\),因此\(f ( x ) = g ( x )\).然而\(g ( x )\)的收敛半径\(\geq 1\),因此一般的函数当然不能被一致逼近.

另一个问题是如果\(a < 0 < b\)该怎么办,接下来假设\(\sum_{ \lambda_i \in \mathrm{ even } } \frac{ 1 }{ \lambda_i } < \infty\).放缩一下边界,我们下面来证明此时不能逼近\(C [ - 1 , 1 ]\)上的偶函数.

假设\(f \in C [ - 1 , 1 ]\)并且是偶函数,对于一列函数列,可以拆成偶函数\(g_n\)和奇函数\(h_n\)部分,前者只包含偶数次后者只包含奇数次.此时有\(g_n + h_n \rightrightarrows f\),由于是偶函数,换号得到\(g_n - h_n \rightrightarrows f\),这就必然得到\(g_n \rightrightarrows f\),但\(g_n\)并不能逼近所有的,这就矛盾了.

Example1

\(f ( x )\)在无穷区间上可以用多项式一致逼近,求证\(f\)为多项式.

考虑多项式列\(\{ P_n \}\)上有柯西准则,所以当\(N\)足够大的时候,\(\forall n , m \geq N\),\(\sup | P_n - P_m |\)足够小,然而由于无穷区间,如果\(\deg ( P_n - P_m ) > 0\)就完蛋了,所以从某一项开始,这个多项式列的两两之间一定之差一个常数.不妨干脆设\(P_n = P + c_n\)的形式,既然\(P_n\)收敛,那么\(c_n\)肯定收敛,设其收敛于\(c\),则\(f ( x ) = P + c\).

Example2

\(f \in C [ a , b ]\),\(\{ p_n \} \rightrightarrows f\),并且\(\{ p_n \}\)为次数一致有界的多项式列,求证\(f\)为多项式.

设次数上界为\(n\),一个想法是说我这些多项式是有限多个的,你直接拿切比雪夫多项式作为基,既然现在都是有限和的情况了,那在线性空间上收敛当然是在每一个基对应的系数都收敛,这就意味着\(f\)肯定是多项式.

Example3(Lemma)

对于数列\(\{ \lambda_i \} > 0\)且单增,如果\(c = \inf_{ i \geq 1 } \{ \lambda_{ i + 1 } - \lambda_i \} > 0\),如果\(\sum_{ i = 1 }^\infty \frac{ 1 }{ \lambda_i } < \infty\),则\(\lim_{ m \to \infty } \frac{ 1 }{ \lambda_m } \sum_{ i = 1 , i \ne m }^\infty \ln \left | \frac{ \lambda_i + \lambda_m }{ \lambda_i - \lambda_m } \right | = 0\).

考虑证明,由于每一项都是正的,因此我们分别证明后面的无穷和部分在\([ 1 , m - 1 ]\)\([ m + 1 , + \infty )\)上均为\(0\).

思路呼之欲出,将\(\lambda_i\)按照与\(\lambda_m\)的比例分为两段:任意取定常数\(\epsilon > 0\),下面开始分析.

设当\(i \geq N_1\)的时候有\(\lambda_i \geq ( 1 - \epsilon ) \lambda_m\)成立,考虑:

\[ \begin{aligned} & \frac{ 1 }{ \lambda_m } \sum_{ i = 1 }^{ N_1 - 1 } \ln ( 1 + \frac{ 2 \lambda_i }{ \lambda_m - \lambda_i } ) \\ \leq & \frac{ 1 }{ \lambda_m } \sum_{ i = 1 }^{ N_1 - 1 } \frac{ 2 \lambda_i }{ \lambda_m - \lambda_i } \\ = & \sum_{ i = 1 }^{ N_1 - 1 } \frac{ 2 \lambda_i }{ ( \lambda_m - \lambda_i ) \lambda_m } \\ = & 2 \sum_{ i = 1 }^{ N_1 - 1 } ( \frac{ 1 }{ \lambda_m - \lambda_i } - \frac{ 1 }{ \lambda_m } ) \\ \leq & 2 \sum_{ i = 1 }^{ N_1 - 1 } \frac{ 1 }{ \epsilon \lambda_m } - \frac{ 1 }{ \lambda_m } \\ = & \frac{ N_1 - 1 }{ \lambda_m } ( \frac{ 2 }{ \epsilon } - 1 ) \\ \leq & \frac{ m }{ \lambda_m } ( \frac{ 2 }{ \epsilon } - 1 ) \end{aligned} \]

然而注意到\(\{ \frac{ 1 }{ \lambda_m } \}\)单调递减,用柯西准则得到:

\[ \sum_{ k = m + 1 }^{ 3 m } \frac{ 1 }{ \lambda_k } \geq \frac{ m }{ \lambda_{ 2 m } } \]

所以得到\(\lim_{ m \to + \infty } \frac{ m }{ \lambda_m } \to 0\).

然后考虑设\(i > N_2\)时有\(( 1 + \epsilon ) \lambda_m \leq \lambda_i\),设\(( 1 + \epsilon ) = \frac{ 1 }{ 1 - \epsilon_2 }\),则\(\lambda_m \leq ( 1 - \epsilon_2 ) \lambda_i\)留神到:

$$ \[\begin{aligned} & \frac{ 1 }{ \lambda_m } \sum_{ i = N_2 + 1 }^{ + \infty } \ln ( 1 + \frac{ 2 \lambda_m }{ \lambda_i - \lambda_m } ) \\ \leq & \frac{ 1 }{ \lambda_m } \sum_{ i = N_2 + 1 }^{ + \infty } \frac{ 2 \lambda_m }{ \lambda_i - \lambda_m } \\ = & \sum_{ i = N_2 + 1 }^{ + \infty } \frac{ 2 }{ \lambda_i - \lambda_m } \\ \leq & \sum_{ i = N_2 + 1 }^{ + \infty } \frac{ 4 }{ \epsilon_2 \lambda_i } \\ \leq & \sum_{ i = m }^{ + \infty } \frac{ 4 }{ \epsilon_2 \lambda_i } \\ \end{aligned}\]

$$

由柯西准则就可以知道其趋近于\(0\).

由上面的分析见到如果预先取定\(\epsilon\),再移动\(m\),开头结尾两端都可以尽可能小对吧.最后我们要做的就是中间很靠近\(\lambda_m\)的两段了,考虑:

$$ \[\begin{aligned} & \frac{ 1 }{ \lambda_m } \sum_{ i = N_1 }^{ m - 1 } \ln ( \frac{ 2 \lambda_m }{ \lambda_m - \lambda_i } - 1 ) \\ \leq & \frac{ 1 }{ \lambda_m } \sum_{ i = N_1 }^{ m - 1 } \ln ( \frac{ 2 \lambda_m }{ c ( m - i ) } - 1 ) \\ \end{aligned}\]

$$

不妨设\(M = m - N_1\),上式变为:

$$ \[\begin{aligned} & \frac{ 1 }{ \lambda_m } \sum_{ i = N_1 }^{ m - 1 } \ln ( \frac{ 2 \lambda_m }{ c ( m - i ) } - 1 ) \\ = & \frac{ 1 }{ \lambda_m } \sum_{ i = 1 }^{ N } \ln ( \frac{ 2 \lambda_m }{ ic } - 1 ) \\ \leq & \frac{ 1 }{ \lambda_m } \sum_{ i = 1 }^{ N } \ln ( \frac{ 2 \lambda_m }{ ic } ) \\ \end{aligned}\]

$$

\[ \begin{aligned} & \frac{ 1 }{ \lambda_m } \sum_{ i = m + 1 }^{ N_2 } \ln ( 1 + \frac{ 2 \lambda_m }{ \lambda_i - \lambda_m } ) \\ \leq & \frac{ 1 }{ \lambda_m } \sum_{ i = m + 1 }^{ N_2 } \ln ( 1 + \frac{ 2 \lambda_m }{ c ( i - m ) } ) \\ \leq & \frac{ 1 }{ \lambda_m } \sum_{ i = m + 1 }^{ N_2 } \ln ( \frac{ 2 \lambda_m + cm }{ c ( i - m ) } ) \end{aligned} \]

然而\(\frac{ m }{ \lambda_m } \to 0\),于是后面的主要项仍是\(\ln ( \frac{ \lambda_m }{ ic } )\)形状,而考虑\(\max ( N_2 - m , m - N_1 ) \leq \frac{ \epsilon \lambda_m }{ c }\),接下来只要证明:

\[ \frac{ 1 }{ \lambda_m } \sum_{ i = 1 }^{ \frac{ \epsilon \lambda_m }{ c } } \ln ( \frac{ \lambda_m }{ ic } ) \to 0 \]

就做完了对吧,发现:

\[ \begin{aligned} \frac{ 1 }{ \lambda_m } \sum_{ i = 1 }^{ \frac{ \epsilon \lambda_m }{ c } } \ln ( \frac{ \lambda_m }{ ic } ) & = \frac{ 1 }{ \lambda_m } \sum_{ i = 1 }^{ \frac{ \epsilon \lambda_m }{ c } } \ln ( \lambda_m ) - \frac{ 1 }{ \lambda_m } \sum_{ i = 1 }^{ \frac{ \epsilon \lambda_m }{ c } } \ln ( ic ) \\ & = \frac{ \epsilon }{ c } \ln ( \frac{ \lambda_m }{ c } ) - \frac{ 1 }{ \lambda_m } \sum_{ i = 2 }^{ \frac{ \epsilon \lambda_m }{ c } } \ln ( i ) \\ & = \frac{ \epsilon }{ c } \ln ( \frac{ \lambda_m }{ c } ) - \frac{ 1 }{ \lambda_m } \sum_{ i = 2 }^{ \lfloor \frac{ \epsilon \lambda_m }{ c } \rfloor } \int_{ i - 1 }^{ i } \ln ( i ) \mathrm{ d t } \\ & \leq \frac{ \epsilon }{ c } \ln ( \frac{ \lambda_m }{ c } ) - \frac{ 1 }{ \lambda_m } \int_{ 1 }^{ \frac{ \epsilon \lambda_m }{ c } - 1 } \ln t \mathrm{ d t } \\ & = \frac{ \epsilon }{ c } \ln ( \frac{ \lambda_m }{ c } ) - \frac{ 1 }{ \lambda_m } \int_{ 1 }^{ \frac{ \epsilon \lambda_m }{ c } } \ln t \mathrm{ d t } + \frac{ 1 }{ \lambda_m } \int_{ \frac{ \epsilon \lambda_m }{ c } - 1 }^{ \frac{ \epsilon \lambda_m }{ c } } \ln t \mathrm{ d } t \\ & \leq \frac{ \epsilon }{ c } \ln ( \frac{ \lambda_m }{ c } ) - \frac{ 1 }{ \lambda_m } \int_{ 1 }^{ \frac{ \epsilon \lambda_m }{ c } } \ln t \mathrm{ d t } + \frac{ \ln ( \frac{ \epsilon \lambda_m }{ c } ) }{ \lambda_m } \\ & = \frac{ \epsilon }{ c } \ln ( \frac{ \lambda_m }{ c } ) + \frac{ \ln ( \frac{ \epsilon \lambda_m }{ c } ) }{ \lambda_m } - \frac{ 1 }{ \lambda_m } ( \frac{ \epsilon \lambda_m }{ c } \ln ( \frac{ \epsilon \lambda_m }{ c } ) - 1 ) \\ & = \frac{ \epsilon }{ c } \ln \epsilon + \frac{ 1 + \ln ( \frac{ \epsilon \lambda_m }{ c } ) }{ \lambda_m } \end{aligned} \]

由于\(\epsilon\)\(m\)之前决定,因此\(\lambda_m \to \infty\)的时候可以让后者趋近于\(0\),此时再让\(\epsilon \to 0\)可以让前者为\(0\),这就搞定了.

Example4(黎曼引理)

求证:\(f \in C [ a , b ]\),\(\lim_{ n \to \infty } \int_a^b f ( x ) \sin ( nx ) \mathrm{ d } x = 0\).

\(f \in C^1 [ a , b ]\)的时候,由于:

\[ \begin{aligned} & \int_a^b f ( x ) \sin ( nx ) \mathrm{ d } x \\ = & - \frac{ 1 }{ n } \int_a^b f \mathrm{ d } \cos ( nx ) \\ = & - \frac{ 1 }{ n } f \cos ( nx ) |_a^b + \frac{ 1 }{ n } \int_a^b \cos ( nx ) f ' \mathrm{ d } x \end{aligned} \]

两边取绝对值然后让\(n \to \infty\)就搞定.

既然如此,考虑当\(f \in C [ a , b ]\)的时候,用多项式逼近\(f\),有\(| f - P | < \epsilon\),当然:

\[ \begin{aligned} & \varlimsup_{ n \to \infty } | \int_a^b f \sin ( nx ) \mathrm{ d } x | \\ \leq & \varlimsup_{ n \to \infty } | \int_a^b | f - P | \sin ( nx ) \mathrm{ d } x | \\ \leq & \epsilon ( b - a ) \end{aligned} \]

Example5

\(f \in C [ a , b ]\),如果\(\forall n \in \mathbb{ N }\),\(\int_a^b f x^n \mathrm{ d } x = 0\),求证\(f \equiv 0\).

也就是任意多项式\(P\)都有\(\int_a^b fP \mathrm{ d } x = 0\).取\(P\)使得\(| P - f | < \epsilon\),于是:

\[ \begin{aligned} | \int_a^b f^2 \mathrm{ d } x | & = | \int_a^b fP \mathrm{ d } x + \int_a^b f ( f - P ) \mathrm{ d } x | \\ & = | \int_a^b f ( f - P ) \mathrm{ d } x | \\ & \leq \epsilon \int_a^b | f | \mathrm{ d } x \end{aligned} \]

所以\(\int_a^b f^2 \mathrm{ d } x = 0\)所以\(f \equiv 0\).

傅里叶级数

定义三角系为形如\(\{ 1 , \cos ( nx ) , \sin ( nx ) \}\)的集合,它们张成的线性空间中,也就是有限的线性组合\(\sum_{ k = 0 }^n a_k \cos ( kx ) + b_k \sin ( kx )\)称为\(n\)三角多项式.当\(n \to \infty\)的时候则称其为三角级数.容易见到\(f ( x ) \equiv f ( x + 2 \pi )\).

下面我们来证明三角系两两正交,只需检查:

  1. \(m \ne n\)的时候,\(\int_{ - \pi }^{ \pi } \cos ( mx ) \cos ( nx ) \mathrm{ d } x\).

  2. \(m \ne n\)的时候,\(\int_{ - \pi }^{ \pi } \sin ( mx ) \sin ( nx ) \mathrm{ d } x\).

  3. \(\forall n , m \in \mathbb{ Z }\),\(\int_{ - \pi }^{ \pi } \sin ( nx ) \cos ( mx ) \mathrm{ d } x = 0\).

  4. \(\int_{ - \pi }^{ \pi } \cos^2 ( nx ) \mathrm{ d x } = \int_{ - \pi }^{ \pi } \sin^2 ( nx ) \mathrm{ d x } = \pi\).

不妨设\(\frac{ a_0 }{ 2 } + \sum_{ 1 }^\infty a_k \cos ( kx ) + b_k \sin ( kx ) \rightrightarrows f ( x )\),假如\(f ( x )\)的确一致收敛到某个函数,我们实际上可以用\(f ( x )\)去反推系数,两边乘一些东西再积分应该见到:

  1. \(a_0 = \frac{ 1 }{ \pi } \int_{ - \pi }^{ \pi } f ( x ) \mathrm{ d } x\).

  2. \(a_k = \frac{ 1 }{ \pi } \int_{ - \pi }^{ \pi } f ( x ) \cos ( kx ) \mathrm{ d } x\).

  3. \(b_k = \frac{ 1 }{ \pi } \int_{ - \pi }^{ \pi } f ( x ) \sin ( kx ) \mathrm{ d } x\).

应该是显然见到的.

\(f\)\([ - \pi , \pi ]\)上绝对可积,也就是\(\int_{ - \pi }^\pi | f | \mathrm{ d } x < \infty\),那我们就可以按照上述方法拿到一个三角级数的系数,这个三角级数被称为\(f ( x )\)傅里叶级数或者傅里叶展开.注意我们这里其实还并没有说这个三角级数的确收敛到\(f ( x )\),而只能说我们可以如此由\(f ( x )\)构造出一个傅里叶级数.我们有时也将这样的函数记作\(f ( x ) \in F [ - \pi , \pi ]\),不妨干脆将\(f ( x )\)依照\(f ( x ) \equiv f ( x + 2 \pi )\)的条件延拓\(f ( x )\)定义(或者干脆要求\(f ( x )\)是以\(2 \pi\)为周期的函数),应当见到以下结论:

  1. \(\lim_{ n \to \infty } a_n = \lim_{ n \to \infty } b_n = 0\).

  2. \(a_n ( \alpha f + \beta g ) = \alpha a_n ( f ) + \beta a_n ( g )\).

  3. \(b_n ( \alpha f + \beta g ) = \alpha b_n ( f ) + \beta b_n ( g )\).

  4. 如果\(f ( x )\)是奇函数,则\(a_n ( f ) \equiv 0\).

  5. 如果\(f ( x )\)是偶函数,则\(b_n ( f ) \equiv 0\).

  6. \(f_h ( x ) = f ( x + h )\),则\(a_n ( f_h ) = a_n ( f ) \cos ( nh ) + b_n ( f ) \sin ( nh )\).

  7. \(f_h ( x ) = f ( x + h )\),则\(b_n ( f_h ) = b_n ( f ) \cos ( nh ) - a_n ( f ) \sin ( nh )\).

  8. 如果\(f ( x ) \equiv f ( x + \pi )\),则\(a_{ 2 n - 1 } ( f ) = b_{ 2 n - 1 } ( f )\).

  9. \(\alpha \in ( 0 , 1 ]\),若\(| f ( x ) - f ( y ) | \leq L | x - y |^\alpha , \forall x , y \in [ - \pi , \pi ]\),则\(a_n = b_n = O ( \frac{ 1 }{ n^\alpha } )\).

  10. \(f\)可导,\(f '\)绝对可积,则\(a_n = b_n = o ( \frac{ 1 }{ n } )\).

  11. \(f\)可导,\(f '\)绝对可积,则\(a_n ( f ) = - \frac{ b_n ( f ' ) }{ n }\).

  12. \(f\)可导,\(f '\)绝对可积,则\(b_n ( f ) = \frac{ a_n ( f ' ) }{ n }\).

  13. \(f\)可以导\(m\)次,而且\(f^{ ( m ) }\)绝对可积,则\(a_n = b_n = o ( \frac{ 1 }{ n^m } )\).

  14. \(f \in C ( \mathbb{ R } ) , f ( x + 2 \pi ) \equiv f ( x )\),则\(\forall \epsilon > 0\),则存在一列三角多项式一致逼近\(f\).

  15. \(f \in C ( \mathbb{ R } ) , f ( x + 2 \pi ) \equiv f ( x )\),若\(\forall n \geq 0 , a_n \equiv b_n \equiv 0\),则\(f \equiv 0\).

(1)是由于黎曼引理,我们前面已经用若干种方法反复证过了.

(2)(3)是积分线性的显然结果,(4)(5)只需带入定义即可发现.

(6)(7)的话当然是因为和差角公式.(8)的话根据(6)和(7)由于\(a_n ( f ) = a_n ( f_\pi ) = a_n ( f ) ( - 1 )^n\),这就搞定.

(9)的话,考虑:

\[ \begin{aligned} a_n & = \frac{ 1 }{ \pi } \int_{ - \pi }^{ \pi } f ( x ) \cos ( nx ) \mathrm{ d } x \\ & = \frac{ 1 }{ \pi } \int_{ - \pi - \frac{ \pi }{ n } }^{ \pi - \frac{ \pi }{ n } } f ( x + \frac{ \pi }{ n } ) \cos ( nt + \pi ) \mathrm{ d } x \\ & = - \frac{ 1 }{ \pi } \int_{ - \pi }^{ \pi } f ( x + \frac{ \pi }{ n } ) \cos ( nt ) \mathrm{ d } x \\ a_n & = \frac{ 1 }{ 2 \pi } \int_{ - \pi }^{ \pi } ( f ( x ) - f ( x + \frac{ \pi }{ n } ) ) \cos ( nx ) \mathrm{ d } x \\ | a_n | & \leq \frac{ 1 }{ 2 \pi } \int_{ - \pi }^{ \pi } L ( \frac{ \pi }{ n } )^\alpha \\ & = O ( 1 ) \frac{ 1 }{ n^\alpha } \end{aligned} \]

这就搞定.

至于(10)的话,\(a_n = b_n = O ( \frac{ 1 }{ n } )\)当然只是(9)的推论.那怎么证明是\(o ( \frac{ 1 }{ n } )\)的呢?考虑:

\[ \begin{aligned} a_n & = \frac{ 1 }{ \pi } \int_{ - \pi }^{ \pi } f \cos ( nx ) \mathrm{ d } x \\ & = \frac{ 1 }{ n \pi } \int_{ - \pi }^{ \pi } f \mathrm{ d } \sin ( nx ) \\ & = - \frac{ 1 }{ n \pi } \int_{ - \pi }^{ \pi } \sin ( nx ) f ' \mathrm{ d } x \\ & = o ( \frac{ 1 }{ n } ) \end{aligned} \]

上述过程也自然拿到了(11)和(12).

(13)的话也只需要由(11)和(12)拿到:

\[ | a_n ( f ) | + | b_n ( f ) | \leq \frac{ | a_n ( f^{ ( m ) } ) | + | b_n ( f^{ ( m ) } ) | }{ n^m } \]

其实还有一个推论是如果\(f\)\(2 \pi\)周期的解析函数,则\(| a_n ( f ) | , | b_n ( f ) | \leq Me^{ - nc }\).而且甚至说这个条件是充要的,如果趋向于零的速度确实为此,则\(f\)也的确是解析函数.可惜的是这个结论需要用到复分析的结果,不得不在此略过.

(14)的话,乍一看像是Stone-Weierstrass定理的另一则应用,直接观察Stone-Weierstrass定理的证明发现的确可以照搬到三角多项式上(因为难点只在\(f ( - \pi ) = f ( \pi )\),但原证明中分离的性质只用于贴合函数上的两个点),然而如果想要直接封装原定理拿过来的话的确难以处理\(f ( x ) \equiv f ( x + 2 \pi )\)的性质(其实可以从复平面绕过去).下面提供另一则证明:

先看当\(f ( x )\)是偶函数的时候,观察\(x \in [ 0 , \pi ]\),取\(y = \cos x\),见到\(f ( \arccos y ) \in C [ - 1 , 1 ]\).此时存在一个多项式\(P ( y ) = P ( \cos x )\)一致逼近\(f ( x )\),而\(P ( \cos x )\)当然是三角多项式.

考虑取\(g ( x ) = f ( x ) + f ( - x )\),则如上知道\(\forall \epsilon > 0\),存在三角多项式\(T_1 ( x )\)使得\(\forall x \in \mathbb{ R } , | g ( x ) - T_1 ( x ) | < \frac{ \epsilon }{ 2 }\).

再取\(\varphi ( x ) = ( f ( x ) - f ( - x ) ) \sin x\)当然也是偶函数,存在三角多项式\(T_2 ( x )\)使得\(\forall x \in \mathbb{ R } , | \varphi ( x ) - T_2 ( x ) | < \frac{ \epsilon }{ 2 }\).

既然如此,考虑取\(T_3 ( x ) = T_1 \sin^2 x + T_2 \sin x\),由上见到\(| 2 f ( x ) \sin^2 x - T_3 ( x ) | < \epsilon\),也就是说对于任何\(f ( x )\)都能找到如此一个\(T_3 ( x )\)满足条件.

既然如此,考虑对\(f ( x - \frac{ \pi }{ 2 } )\)做上述操作,也就是存在三角多项式\(T_4 ( x )\)满足:

\[ \begin{aligned} | 2 f ( x - \frac{ \pi }{ 2 } ) \sin^2 x - T_4 ( x ) | < \epsilon \\ | 2 f ( x ) \cos^2 x - T_4 ( x + \frac{ \pi }{ 2 } ) | < \epsilon \end{aligned} \]

既然如此,得到:\(| 2 f ( x ) - T_3 ( x ) - T_4 ( x + \frac{ \pi }{ 2 } ) | < 2 \epsilon\),这就搞定了.

对于(15),考虑找一列三角多项式一致逼近\(f ( x )\),由于\(f ( x )\)的傅里叶级数总是\(0\),所以对于三角多项式\(T_n\)来说一定有\(\int_{ - \pi }^{ \pi } f ( x ) T_n ( x ) \mathrm{ d } x \equiv 0\),既然如此考虑:

\[ \begin{aligned} \int_{ - \pi }^{ \pi } f^2 \mathrm{ d } x & = \int_{ - \pi }^\pi f ( f - T_n ) \mathrm{ d } x \\ & \leq \int_{ - \pi }^\pi | f | \cdot | f - T_n | \mathrm{ d } x \\ & \leq \epsilon \int_{ - \pi }^\pi | f | \mathrm{ d } x & \to 0 \end{aligned} \]

因此\(f \equiv 0\).这意味着连续函数的傅里叶展开是唯一的.

(15)的一则类似结果是,你可以从中看出\(\{ 1 , \sin ( nx ) , \cos ( nx ) \}\)三角系是缺一不可的,而不像多项式那样可以去掉很多.例如如果我们在其中去掉\(\sin x\)的话,那么\(\sin x\)本身就无法逼近,原因是反证法,如果能逼近,考虑一列三角多项式\(\{ T_n \}\)并且其中不含\(\sin x\),然而,由于三角系中两两正交,因此\(\forall T_n ,\)都有\(\int_{ - \pi }^{ \pi } T_n \sin x \mathrm{ d } x \equiv 0\),因此从(15)的证明过程就可以见到必然有\(\sin x \equiv 0\),这当然就出事了.

Example1

\(x \in [ - \pi , \pi ]\),考虑一列\(\{ b_n \}\)单调下降趋近于\(0\),那么根据DA判法当然有\(S ( x ) = \sum_{ n = 1 }^\infty b_n \sin ( nx )\)是逐点收敛的,假设收敛于\(f ( x )\).如果\(f ( x )\)的确是\([ - \pi , \pi ]\)上的绝对可积函数.求证:此时上述\(S ( x )\)的确是\(f ( x )\)的傅里叶级数.

容易见到\(f ( x )\)是奇函数,其傅里叶级数中的\(a_n \equiv 0\).此时不妨只看\(x \in [ 0 , \pi ]\)上的结果.

难点当然在于\(S ( x ) \to f\)并不一定是一致逼近,但应该观察到的是:

\[ | \sin ( mx ) \sum_{ k = 1 }^n \sin ( kx ) | \leq \left | \frac{ \sin ( mx ) }{ \sin \frac{ x }{ 2 } } \right | \leq \left | \frac{ mx }{ \frac{ x }{ \pi } } \right | = | m \pi | \]

所以这个一致有界,前面的\(| b_n |\)单调趋近于\(0\),DA判法告诉我们\(\sin ( mx ) S ( x )\)一致收敛,那逐项积分就证完了\(\int_{ - \pi }^{ \pi } g ( x ) \sin ( mx ) \mathrm{ d } x = \pi b_m\).

Example2

\(f ( x ) = \frac{ 1 - r^2 }{ 1 - 2 r \cos x + r^2 } , | r | < 1\)的傅里叶级数.

考虑在复数上做此操作,留神到:

\[ \begin{aligned} \frac{ 1 }{ 1 - z } & = \frac{ 1 - \bar{ z } }{ ( 1 - z ) ( 1 - \bar{ z } ) } \\ & = \frac{ 1 - \bar{ z } }{ 1 - 2 \Re z + | z |^2 } \\ & = \frac{ 1 - r \cos x + ir \sin x }{ 1 - 2 r \cos x + r^2 } \end{aligned} \]

所以\(2 \Re ( \frac{ 1 }{ 1 - z } ) - 1 = f ( x )\),然而:

$$ \[\begin{aligned} \frac{ 1 }{ 1 - z } & = \sum_{ n \geq 0 } z^n = \sum_{ n \geq 0 } r^n e^{ inx } \\ \Re ( \frac{ 1 }{ 1 - z } ) & = 1 + \sum_{ n \geq 1 } r^n \cos ( nx ) \\ \end{aligned}\]

$$

所以\(f ( x ) = 1 + \sum_{ n \geq 1 } 2 r^n \cos ( nx )\).

与原函数的收敛关系

做完以上操作后,我们来考虑这个傅里叶级数到底是否逼近于\(f ( x )\)本身,设\(S_n ( x ) = \frac{ a_0 }{ 2 } + \sum_{ k = 1 }^n ( a_k \cos ( kx ) + b_k \sin ( kx ) )\).此时考虑:

$$ \[\begin{aligned} S_n ( x_0 ) & = \frac{ a_0 }{ 2 } + \sum_{ k = 1 }^n \int_{ - \pi }^\pi f ( x ) ( \cos kx \cdot \cos kx_0 + \sin kx \cdot \sin kx_0 ) \mathrm{ d } x \\ & = \frac{ 1 }{ 2 \pi } \int_{ - \pi }^\pi f ( x ) \mathrm{ d } x + \sum_{ k = 1 }^n \int_{ - \pi }^\pi f ( x ) \cos k ( x - x_0 ) \mathrm{ d } x \\ & = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi f ( x ) \left ( \frac{ 1 }{ 2 } + \sum_{ k = 1 }^n \cos k ( x - x_0 ) \right ) \mathrm{ d } x \\ & = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi f ( x ) \frac{ \sin ( n + \frac{ 1 }{ 2 } ) ( x - x_0 ) }{ 2 \sin \frac{ x - x_0 }{ 2 } } \mathrm{ d } x \\ \end{aligned}\]

$$

不妨令迪利克雷核\(D_n ( x ) = \frac{ \sin ( n + \frac{ 1 }{ 2 } ) x }{ 2 \sin \frac{ x }{ 2 } } , \varphi ( x_0 , x ) = \frac{ f ( x_0 + x ) + f ( x_0 - x ) }{ 2 }\),应当见到\(\frac{ 1 }{ \pi } \int_{ - \pi }^\pi D_n ( x ) \mathrm{ d } x = 1\),则:

\[ \begin{aligned} S_n ( x_0 ) & = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi f ( x ) D_{ n } ( x - x_0 ) \mathrm{ d } x \\ & = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi f ( t + x_0 ) D_{ n } ( t ) \mathrm{ d } t \\ & = \frac{ 1 }{ \pi } \int_0^\pi ( f ( x_0 + t ) + f ( x_0 - t ) ) D_n ( t ) \mathrm{ d } t \\ & = \frac{ 2 }{ \pi } \int_0^\pi \varphi ( x_0 , t ) D_n ( t ) \mathrm{ d } t \end{aligned} \]

问题在于最后如何判断这个积分的收敛性,事实上可以找到若干个逼近的充分条件:

  1. 分段可导时候的情况

下面我们来证明:当\(f\)是Holder连续的时候,\(\lim_{ n \to \infty } S_n ( x ) \to f ( x )\).

我们有如下黎曼局部化引理:对\(\forall 0 < \delta < \pi\),都有\(\lim_{ n \to \infty } \left ( S_n ( x_0 ) - \frac{ 2 }{ \pi } \int_0^\delta \varphi ( x_0 , t ) \frac{ \sin ( n + \frac{ 1 }{ 2 } ) t }{ t } \mathrm{ d } t \right ) = 0\).

如何证明此呢?考虑:

$$ \[\begin{aligned} \frac{ \pi }{ 2 } S_n ( x_0 ) & = \int_0^\delta \varphi ( x_0 , t ) D_n ( t ) \mathrm{ d } t + \int_\delta^\pi \varphi ( x_0 , t ) D_n ( t ) \mathrm{ d } t \\ & = \int_0^\delta \varphi ( x_0 , t ) \frac{ \sin ( n + \frac{ 1 }{ 2 } ) t }{ t } \mathrm{ d } t + \int_0^\delta \varphi ( x_0 , t ) \frac{ t - 2 \sin \frac{ t }{ 2 } }{ 2 t \sin \frac{ t }{ 2 } } \sin ( n + \frac{ 1 }{ 2 } ) t \mathrm{ d } t \\ & + \int_\delta^\pi \frac{ \varphi ( x_0 , t ) }{ 2 \sin \frac{ t }{ 2 } } \sin ( n + \frac{ 1 }{ 2 } ) t \mathrm{ d } t \\ \end{aligned}\]

$$

留神到\(\frac{ t - 2 \sin \frac{ t }{ 2 } }{ 2 t \sin \frac{ t }{ 2 } }\)极限存在,因此其的确有界,对后面两项用黎曼引理就知道趋近于\(0\).

接下来我们还有一个引理:当\(\varphi \in R [ 0 , \delta ]\)的时候,如果\(\varphi ( 0 + )\)存在,并且\(\int_0^\delta \frac{ | \varphi ( t ) - \varphi ( 0 + ) | }{ t } < \infty\),则\(\lim_{ \lambda \to \infty } \int_0^\delta \varphi ( t ) \frac{ \sin \lambda t }{ t } \mathrm{ d } t = \frac{ \pi }{ 2 } \varphi ( 0 + )\).

于此证明,根据黎曼引理:

\[ \begin{aligned} \lim_{ \lambda \to \infty } \int_0^\delta \frac{ \varphi ( t ) - \varphi ( 0 + ) }{ t } \sin \lambda t \mathrm{ d } t & = 0 \\ \lim_{ \lambda \to \infty } \int_0^\delta \frac{ \varphi ( t ) }{ t } \sin \lambda t \mathrm{ d } t & = \lim_{ \lambda \to \infty } \int_0^\delta \frac{ \varphi ( 0 + ) }{ t } \sin \lambda t \mathrm{ d } t \\ & = \varphi ( 0 + ) \lim_{ \lambda \to \infty } \int_0^{ \lambda \delta } \frac{ \sin t }{ t } \mathrm{ d } t \\ & = \frac{ \pi }{ 2 } \varphi ( 0 + ) \end{aligned} \]

既然如此,当\(f\)是霍尔德连续,也就是\(\exists \alpha \in ( 0 , 1 ] , \exists C > 0\),使得\(| f ( x_0 + t ) - f ( x_0 ) | \leq C | t |^\alpha\),此时见到\(| \varphi ( x_0 , t ) - \varphi ( x_0 , 0 + ) | = O ( | t |^\alpha )\),用上述引理知道此时\(S_n ( x_0 ) \to f ( x_0 )\).

上述结论还可以得到一个更神秘的结论,我们上述引理只用到了在\(x_0\)附近的结果,那如果\(f\)\(x_0\)附近不连续呢?

假设\(f ( x_0 \pm 0 )\)均存在,我们可以定义广义导数,定义右广义导数为\(D_+ f ( x_0 ) = \lim_{ h \to 0 + } \frac{ f ( x_0 + h ) - f ( x_0 + 0 ) }{ h }\),同理定义左广义导数.

\(D_\pm f ( x_0 )\)存在的时候,考虑此时\(\frac{ | \varphi ( t ) - \varphi ( 0 + ) | }{ t }\)没有瑕点,那上述结论当然也就满足.

如果我们定义分段可导为除了若干个断点处的左右广义导数不相同,其余所有点的左右广义导数都存在.那上述结论也就满足.

  1. 分段单调时候的情况

我们有Jordan引理:设\(\varphi\)\([ 0 , \delta ]\)上单调,则\(\lim_{ \lambda \to \infty } \int_0^\delta \frac{ \varphi ( x ) }{ x } \sin ( \lambda x ) \mathrm{ d } x = \frac{ \pi }{ 2 } \varphi ( 0 + )\).

对Jordan引理的证明,不妨设\(\varphi\)单调递增,对\(\forall \epsilon > 0 , \exists 0 < \delta ' < \delta\),使得\(\forall t \in ( 0 , \delta ' ) , 0 \leq \varphi ( t ) - \varphi ( 0 + ) < \epsilon\).

不妨设\(| \int_0^t \frac{ \sin x }{ x } | \leq M , \forall t > 0\),考虑根据积分第二中值定理:

\[ \begin{aligned} & | \int_0^{ \delta ' } ( \varphi ( t ) - \varphi ( 0 + ) ) \frac{ \sin ( \lambda t ) }{ t } \mathrm{ d } t | \\ = & | ( \varphi ( \delta ' ) - \varphi ( 0 + ) ) \int_\xi^{ \delta ' } \frac{ \sin ( \lambda t ) }{ t } \mathrm{ d } t | \\ \leq & 2 M \epsilon \end{aligned} \]

而在\([ \delta ' , \delta ]\)上可以直接用黎曼引理这就搞定了.

如果\(\varphi\)是有限个单调函数的和,上述结论当然也成立了.所以该结论对有界变差函数是成立的.

因此,当\(f \in [ - \pi , \pi ]\)上逐段单调的时候,\(\varphi\)逐段是两个单调函数的差,那此时当然也有\(\lim_{ n \to \infty } S_n ( x ) = \frac{ f ( x + 0 ) + f ( x - 0 ) }{ 2 }\).

Example1

\(f ( x ) = \begin{cases}- 1 & x \in ( - \pi , 0 ) \\ 0 & x = 0 \lor x = - \pi \lor x = \pi \\ 1 & x \in ( 0 , \pi )\end{cases}\).

见到这的确是一个奇函数,直接求它的傅里叶级数,见到是:

\[ \frac{ 4 }{ \pi } \sum_{ n = 0 }^\infty \frac{ \sin ( 2 n + 1 ) x }{ 2 n + 1 } = \frac{ f ( x + 0 ) + f ( x - 0 ) }{ 2 } = f ( x ) \]

我们竟然得到了一个一个神秘级数,很牛.

而且这个三角级数在\(( 0 , \pi )\)上处处收敛到\(1\),这个性质在幂级数的时候是无法想象的,我们之前证明过了开区间上的非常值幂级数的零点集一定没有聚点.

Example2

\(f ( x ) = \begin{cases}\pi + x & x \in [ - \pi , 0 ) \\ \pi - x & x \in [ 0 , \pi )\end{cases}\),也就是一个锯齿状的小函数,当然分段单调了.由于是一个偶函数,积分得到\(a_n = \frac{ 2 }{ \pi } \int_0^\pi ( \pi - x ) \cos ( nx ) \mathrm{ d } x = \frac{ 2 }{ n^2 \pi } ( 1 - ( - 1 )^n )\).

这当然是个连续函数,那此时有:

\[ f ( x ) = \frac{ \pi }{ 2 } + \frac{ 4 }{ \pi } ( \sum_{ k = 0 }^\infty \frac{ \cos ( 2 k + 1 ) x }{ ( 2 k + 1 )^2 } ) \]

两边带入\(x = 0\)就知道\(\sum_{ k = 0 }^\infty \frac{ 1 }{ ( 2 k + 1 )^2 } = \frac{ \pi^2 }{ 8 }\).

还没完,用大M判别法容易检验这个式子两边是绝对一致收敛的,那我们两边逐项积分得到:

$$ \[\begin{aligned} \int_0^x f ( t ) \mathrm{ d } t & = \frac{ \pi }{ 2 } x + \frac{ 4 }{ \pi } \sum_{ k = 0 }^\infty \int_0^x \frac{ \cos ( 2 k + 1 ) t }{ ( 2 k + 1 )^2 } \mathrm{ d } t \\ & = \frac{ \pi }{ 2 } x + \frac{ 4 }{ \pi } \sum_{ k = 0 }^\infty \frac{ \sin ( 2 k + 1 ) t }{ ( 2 k + 1 )^3 } \\ \end{aligned}\]

$$

把左边的\(f\)积出来,设其为\(g ( x ) = \begin{cases}\pi x + \frac{ x^2 }{ 2 } & x \in [ - \pi , 0 ) \\ \pi x - \frac{ x^2 }{ 2 } & x \in [ 0 , \pi )\end{cases}\).那它的傅里叶展开就等于右边的东西(因为一致收敛).带入\(x = \frac{ \pi }{ 2 }\),可以得到\(\frac{ \pi^3 }{ 32 } = \sum_{ k = 0 }^\infty \frac{ ( - 1 )^k }{ ( 2 k + 1 )^3 }\).

那接下来还可以两边再积分对吧!过程我也懒得写了,总之能推出\(\sum_{ k = 0 }^\infty \frac{ 1 }{ ( 2 k + 1 )^4 } = \frac{ \pi^4 }{ 96 }\),可以得到\(\sum_{ k = 1 }^\infty \frac{ 1 }{ k^4 } = \frac{ \pi^4 }{ 90 }\).

所以总之,我们可以用上面的策略得到所有的\(\zeta ( 2 n )\).

Example3

考虑对\(\cos ( ax )\)\([ - \pi , \pi ]\)截取出来并延拓,然后对其作傅里叶展开,得到:

\[ \begin{aligned} \cos ( ax ) & = \frac{ \sin ( a \pi ) }{ a \pi } + \sum_{ n = 1 }^\infty \frac{ ( - 1 )^n 2 a }{ a^2 - n^2 } \frac{ \sin ( a \pi ) }{ \pi } \cos ( nx ) \\ \frac{ 1 }{ \sin ( a \pi ) } & = \frac{ 1 }{ a \pi } + \sum_{ n = 1 }^\infty \frac{ ( - 1 )^n 2 a \pi }{ ( a \pi )^2 - ( n \pi )^2 } \end{aligned} \]

\(z = a \pi\),得到:

\[ \frac{ 1 }{ \sin z } = \frac{ 1 }{ z } + \sum_{ n = 1 }^\infty ( - 1 )^n ( \frac{ 1 }{ z - n \pi } + \frac{ 1 }{ z + n \pi } ) \]

Example4

假设\(\int_{ - \infty }^{ + \infty } | f | \mathrm{ d } x < \infty\),且存在\(x_0 , \delta\),\(f ( x_0 \pm 0 )\)存在,使得以下二者其一成立:

  1. \(f\)\(( x_0 - \delta , x_0 + \delta )\)上是有界变差的.

  2. 积分\(\int_0^\delta \frac{ | f ( x_0 \pm t ) - f ( x_0 \pm 0 ) | }{ t } < \infty\).

则:

\[ \lim_{ \alpha \to \infty } \frac{ 1 }{ \pi } \int_{ - \infty }^{ + \infty } f ( x_0 + t ) \frac{ \sin ( \alpha t ) }{ t } \mathrm{ d } t = \frac{ 1 }{ 2 } ( f ( x_0 + 0 ) + f ( x_0 - 0 ) ) \]

只需要证明:

\[ \lim_{ \alpha \to \infty } \int_{ 0 }^\infty ( f ( x_0 + t ) - f ( x_0 + 0 ) ) \frac{ \sin ( \alpha t ) }{ t } \mathrm{ d } t = 0 \]

首先\([ 0 , + \infty )\)上,对于\([ 0 , \delta ]\)只需要正常做就行了.可是\(\frac{ f ( x_0 + t ) - f ( x_0 + 0 ) }{ t }\)\(( \delta , + \infty )\)上未必可积,这就有点难绷.开动脑筋,想起来既然这里有一个\(\mathbb{ R }\)上的绝对可积,那当然得用一用我们的柯西准则,考虑将后面拆成\(( \delta , M )\)\([ M , + \infty )\).如果我们能把后面的\([ M , + \infty )\)搞定,那中间那一段用黎曼引理就搞定了.

后面怎么做呢,简单放缩:

\[ \begin{aligned} & | \int_{ M }^\infty ( f ( x_0 + t ) - f ( x_0 + 0 ) ) \frac{ \sin ( \alpha t ) }{ t } \mathrm{ d } t | \\ \leq & | \int_{ M }^\infty f ( x_0 + t ) \frac{ \sin ( \alpha t ) }{ t } \mathrm{ d } t | + | \int_{ M }^\infty f ( x_0 + 0 ) \frac{ \sin ( \alpha t ) }{ t } \mathrm{ d } t | \\ \leq & \int_{ M }^\infty | f ( x_0 + t ) | \mathrm{ d } t + | f ( x_0 + 0 ) \int_{ M }^\infty \frac{ \sin ( \alpha t ) }{ t } \mathrm{ d } t | \\ \to & 0 \end{aligned} \]

这就搞定了.

一致收敛到原函数的情形

那此时该函数肯定连续,然而连续函数未必总能一致逼近,Example1给出了一个反例.

那么应该加如何条件呢?先证明一个加强版的黎曼引理:

\(g ( x )\)\([ A , B ]\)上的绝对可积函数,取\(S_p = \sup_{ a , b \in [ A , B ] } | \int_a^b g ( t ) \sin pt \mathrm{ d } t | + \sup_{ a , b \in [ A , B ] } | \int_a^b g ( t ) \cos pt \mathrm{ d } t |\),我们要证明\(\lim_{ p \to \infty } S_p = 0\).这个还并不显然,因为\(a , b\)是可以在\(p\)之后决定的.实际上这里就是为了拿到一个一致控制性,我们想让我们的黎曼引理是能一致控制住整个区间的,这样我们才能得到一致收敛的条件.

首先考虑\(\forall \epsilon > 0\),当\(g ( x ) \in R [ a , b ]\)的时候,可以先用连续函数逼近,再将连续函数变为多项式逼近.而当\(g ( x )\)有瑕点的时候,可以将瑕点逼掉.所以总能找到一个多项式\(f ( x )\)满足\(\int_A^B | g ( x ) - f ( x ) | \mathrm{ d } x < \frac{ \epsilon }{ 2 }\).然后考虑:

\[ \begin{aligned} \int_a^b f \sin ( pt ) \mathrm{ d } t & = \frac{ 1 }{ p } f \cos ( pt ) |_a^b + \frac{ 1 }{ p } \int_a^b \cos ( pt ) f ' \mathrm{ d } t \\ & \to 0 \end{aligned} \]

由此还可以再推出一个引理,\(\lim_{ p \to \infty } \sup_{ A \leq x_0 \pm a , x_0 \pm b \leq B } | \int_a^b g ( x_0 \pm t ) \cos ( pt ) \mathrm{ d } t | = 0\).原因是换元后用和差角公式拆开就行.

进一步推广,考虑\(\gamma ( t )\)\([ a , b ]\)上的有界变差函数,我们证明:\(\lim_{ p \to \infty } \sup_{ A \leq x_0 \pm a , x_0 \pm b \leq B } | \int_a^b g ( x_0 \pm t ) \gamma ( t ) \cos ( pt ) \mathrm{ d } t | = 0\).

不妨设\(\gamma ( t )\)单调递增,然后用积分第二中值定理就可以发现:

\[ \begin{aligned} & \int_a^b g ( x_0 \pm t ) \gamma ( t ) \sin ( pt ) \mathrm{ d } t \\ = & \gamma ( a ) \int_a^\xi g ( x_0 \pm t ) \sin ( pt ) \mathrm{ d } t + \gamma ( b ) \int_\xi^b g ( x_0 \pm t ) \sin ( pt ) \mathrm{ d } t \\ \to & 0 \end{aligned} \]

接下来设\(\varphi ( t ) = f ( x + t ) + f ( x - t ) - 2 f ( x )\),假设\(f\)\([ - \pi , \pi ]\)上的绝对可积函数,而且\(f\)限制在子区间\([ a , b ]\)上是连续的.我们有迪尼定理:若\(\forall \epsilon > 0 , \exists \delta > 0 , \sup_{ x \in [ a , b ] } \int_0^\delta \frac{ | \varphi ( t ) | }{ t } \mathrm{ d } t < \epsilon\),则其傅里叶级数\(S_n ( x )\)在区间\([ a , b ]\)上一致逼近\(f\).

考虑:

$$ \[\begin{aligned} S_n ( x ) - f ( x ) & = \frac{ 1 }{ \pi } \int_0^\pi \varphi ( t ) \frac{ \sin ( n + \frac{ 1 }{ 2 } ) t }{ 2 \sin \frac{ t }{ 2 } } \mathrm{ d } t \\ & = \frac{ 1 }{ \pi } ( \int_0^\delta + \int_\delta^\pi ) \varphi ( t ) \frac{ \sin ( n + \frac{ 1 }{ 2 } ) t }{ 2 \sin \frac{ t }{ 2 } } \mathrm{ d } t \\ \end{aligned}\]

$$

考虑前者:

\[ \begin{aligned} \int_0^\delta & \leq \frac{ 1 }{ \pi } \int_0^\delta \frac{ | \varphi ( t ) | }{ t } \frac{ \frac{ t }{ 2 } }{ \sin \frac{ t }{ 2 } } \mathrm{ d } t \\ & \leq \frac{ 1 }{ 2 } \int_0^\delta \frac{ | \varphi ( t ) | }{ t } \mathrm{ d } t \\ & < \frac{ \epsilon }{ 2 } \end{aligned} \]

至于后者,只需上述引理就搞定.

于是最后我们可以得到,如果\(f\)是Holder连续的时候,那对于任意的\([ a , b ]\),都一定有\(S_n \rightrightarrows f ( x )\).

而如果当\(f\)是有界变差的时候,此时考虑\(f\)几乎处处可导,而在其可导的地方当然由上面的结果就一致收敛了,所以可以知道这个函数列几乎处处一致收敛到\(f\).

然而容易检验如果一个连续函数列几乎处处一致收敛到一个连续函数,那当然它们就是一致收敛的关系.考虑反证,\(\forall \epsilon > 0\),设可导点集为\(A\),则\(\exists n , \sup_{ x \in A } ( f ( x ) - f_n ( x ) ) < \epsilon\).

假设不一致收敛,此时\(\exists x_0\)使得\(f ( x_0 ) - f_n ( x_0 ) > 4 \epsilon\).然而由于\(n\)已经定死,所以现在\(f\)\(f_n\)都是一致连续的,往旁边区间绕一下就行了.不管这个区间多小,由于\([ - \pi , \pi ] \setminus A\)是零测的,所以总有与\(A\)的交.

从上面也可以看到,只要一个连续函数几乎处处可导,那它的傅里叶级数就可以一致逼近它.

Example1

设:

\[ \begin{aligned} Q_{ m , n } & & = \sum_{ k = 1 }^n \frac{ \sin ( m + n - k ) x }{ k } - \sum_{ k = 1 }^n \frac{ \sin ( m + n + k ) x }{ k } \\ & & = - 2 \cos ( m + n ) x \sum_{ v = 1 } \frac{ \sin ( vx ) }{ v } \end{aligned} \]

容易检查这个函数是有界的,只需:

\[ \begin{aligned} \sum_{ v = 1 }^n \frac{ \sin vx }{ v } & & = \int_0^x \sum_{ v = 1 }^n \cos vt \mathrm{ d } t \\ & & = \int_0^x ( - \frac{ 1 }{ 2 } + \frac{ \sin ( n + \frac{ 1 }{ 2 } ) t }{ 2 \sin \frac{ t }{ 2 } } ) \\ & & = - \frac{ x }{ 2 } + \int_0^x ( \frac{ 1 }{ 2 \sin \frac{ t }{ 2 } } - \frac{ 1 }{ t } ) + \int_0^{ ( n + \frac{ 1 }{ 2 } ) x } \frac{ \sin t }{ t } \mathrm{ d } t \end{aligned} \]

这样用黎曼引理立刻见到其有界,存在常数\(C\)使得\(| \sum_{ v = 1 }^n \frac{ \sin vx }{ v } | \leq C\),那\(| Q_{ n , m } | \leq 2 C\)也有界.

定义\(m_k = n_k = 2^{ k^3 }\),取函数\(\varphi ( x ) = \sum_{ k = 1 }^\infty \frac{ 1 }{ k^2 } Q_{ m_k , n_k } ( x )\),既然\(Q_{ m_k , n_k }\)有界,根据大M判别法,这个东西当然一致收敛而且\(2 \pi\)周期连续.

既然如此,考察\(\varphi ( x )\)是奇函数,它的傅里叶展开的确就是上述形式(原因是连续函数有唯一傅里叶展开).

接下来考虑其波动考虑由于我们的\(m_k = n_k = 2^{ k^3 }\),所以其实这里很稀疏的,留神到:

\[ \begin{aligned} S_{ 2 n_k - 1 } ( x ) - S_{ n_k - 1 } ( x ) & = \frac{ 1 }{ k^2 } \left ( \sum_{ l = 1 }^{ n_k } \frac{ \sin ( 2 n_k - l ) x }{ l } \right ) \end{aligned} \]

接下来带入\(x = \frac{ \pi }{ 4 n_k }\),见到:

\[ \begin{aligned} ( S_{ 2 n_k - 1 } - S_{ n_k - 1 } ) ( \frac{ \pi }{ 4 n_k } ) & > \frac{ \sqrt{ 2 } }{ 2 } \frac{ 1 }{ k^2 } ( \sum_{ l = 1 }^{ n_k } \frac{ 1 }{ l } ) \\ & > \frac{ \sqrt{ 2 } }{ 2 } \frac{ 1 }{ k^2 } \ln n_k \\ & > \frac{ \sqrt{ 2 } \ln 2 }{ 2 } k \\ & \to \infty \end{aligned} \]

因此见到不一致收敛,很厉害!

Cesaro收敛

接下来我们引入Cesaro收敛的概念,回忆到Stolz定理给出若取定\(\sigma_n = \frac{ a_1 + \cdots + a_n }{ n }\),回忆到如果\(a_n \to a\),则\(\sigma_n \to a\),然而反之未必成立.因此,\(\sigma_n\)如果收敛的话,这是一个比\(a_n\)收敛弱的条件.

在傅里叶级数这里也引入这个概念,我们不再研究\(S_n ( x )\)的收敛性,而考虑\(\sigma_n ( x ) = \frac{ S_0 ( x ) + \cdots + S_n ( x ) }{ n + 1 }\)的收敛性.考虑:

$$ \[\begin{aligned} \sigma_n ( x ) & = \frac{ S_0 ( x ) + \cdots + S_n ( x ) }{ n + 1 } \\ & = \frac{ 1 }{ ( n + 1 ) \pi } \int_{ - \pi }^\pi f ( x + t ) \frac{ \sum_{ k = 0 }^n \sin ( k + \frac{ 1 }{ 2 } ) t }{ 2 \sin \frac{ t }{ 2 } } \mathrm{ d } t \\ & = \frac{ 1 }{ ( n + 1 ) \pi } \int_{ - \pi }^\pi f ( x + t ) \frac{ 1 - \cos ( n + 1 ) t }{ 2 \sin^2 \frac{ t }{ 2 } } \mathrm{ d } t \\ & = \frac{ 1 }{ ( n + 1 ) \pi } \int_{ - \pi }^\pi f ( x + t ) \frac{ \sin^2 ( \frac{ n + 1 }{ 2 } t ) }{ 2 \sin^2 \frac{ t }{ 2 } } \mathrm{ d } t \\ \end{aligned}\]

$$

设费叶核\(\phi_n ( t ) = \frac{ \sin^2 \frac{ n + 1 }{ 2 } t }{ 2 ( n + 1 ) \sin^2 \frac{ t }{ 2 } }\).容易见到\(\phi_n ( t ) = \phi_n ( - t )\),\(\phi ( 0 ) = \frac{ n + 1 }{ 2 }\),而且\(\frac{ 1 }{ \pi } \int_{ - \pi }^\pi \phi_n ( t ) \mathrm{ d } t = 1\),原因是\(\phi_n ( t )\)原本是个三角多项式,因此这里的积分只和其常数项有关,而常数项为\(\frac{ 1 }{ 2 }\).

现在我们说,当\(f ( x ) \equiv f ( x + 2 \pi )\),\(f\)\([ - \pi , \pi ]\)上绝对可积,并且\(f ( x_0 \pm 0 )\)极限存在,则\(\lim_{ n \to \infty } \sigma_n ( x_n ) = \frac{ f ( x_0 + 0 ) + f ( x_0 - 0 ) }{ 2 }\).进一步,如果\(f \in C ( \mathbb{ R } )\),则\(\sigma_n ( x ) \rightrightarrows f ( x )\).

考虑设\(I_n = \sigma_n ( x ) - \frac{ f ( x + 0 ) + f ( x - 0 ) }{ 2 }\),有:

\[ I_n = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi \phi_n ( t ) ( f ( x + t ) + f ( x - t ) - f ( x + 0 ) - f ( x - 0 ) ) \mathrm{ d } t \]

此时考虑\(f ( x \pm 0 )\)存在意味着\(\forall \epsilon > 0 , \exists \delta > 0\),使得当\(0 < t \leq \delta\)的时候,总有\(| f ( x \pm t ) - f ( x \pm 0 ) | < \frac{ \epsilon }{ 2 \pi }\),于是我们上面的\(I_n\)就可以拆成\(\int_0^\delta + \int_\delta^\pi\)两部分.

对于前者:

\[ \frac{ 1 }{ \pi } | \int_0^\delta | \leq \frac{ \epsilon }{ 2 \pi } \int_0^\pi \phi_n ( t ) \mathrm{ d } t < \frac{ \epsilon }{ 2 } \]

对于后者只要能控制\(\max_{ [ \delta , \pi ] } \phi_n ( t )\)就行,而这是显然的,因为当\(t \geq \delta\)的时候,分母就有下界了,让\(n \to \infty\)的时候当然趋近于\(0\).所以\(\lim_{ n \to \infty } I_n = 0\).

接下来的疑问是当\(f\)连续时为何一致收敛,这当然是因为\(f\)是一致连续的,那我上述唯一涉及\(x\)的地方,也就是当\(f ( x \pm t ) \to f ( x )\)的部分就可以被控制住,这就搞定了.

Cesaro收敛的另一个好处在于,当\(f ( x + 0 )\)\(f ( x - 0 )\)存在的时候,由于如果逐点收敛一定就能导出Cesaro收敛,因此,如果傅里叶级数在某一点处收敛,则它必然也在这一点处Cesaro收敛且收敛于同一个\(\frac{ f ( x + 0 ) + f ( x - 0 ) }{ 2 }\),换言之如果收敛则一定收敛于此.

平均收敛

考虑如果一列函数\(f_n\),如果\(\int | f_n - f | \to 0\)则我们称这列函数平均收敛\(f\).一个平均收敛的函数列可以处处点不收敛,一个逐点收敛的函数也可能并不平均收敛(因为积分不一定收敛).

考虑定义平方可积函数\(f\)为几乎处处连续而且只有有限个瑕点的\(f\)并且满足\(\int_{ - \pi }^\pi f^2 \mathrm{ d } x < \infty\).容易见到闭区间上的平方可积要强于绝对可积,原因正是柯西不等式:

\[ \int_{ - \pi }^\pi | f | \mathrm{ d } x \leq \sqrt{ ( \int_{ - \pi }^\pi f^2 \mathrm{ d } x ) ( \int_{ - \pi }^\pi 1 \mathrm{ d } x ) } \]

从而看到如果\(\int ( f_n - f )^2 \mathrm{ d } x \to 0\)则当然有\(\int | f_n - f | \mathrm{ d } x \to 0\),因此我们往往计算前者.

假设\(f\)是平方绝对可积的,考虑定义\(\mathcal{ F }_n\)\(n\)阶三角多项式组成的集合,设\(S_n\)\(f\)的傅里叶展开的前\(n\)项,我们有:

  1. \(\int_{ - \pi }^\pi ( f - S_n )^2 \mathrm{ d } x = \min_{ T_n \in \mathcal{ F }_n } \int_{ - \pi }^\pi ( f - T_n )^2 \mathrm{ d } x\).

  2. Bessel不等式:\(\frac{ a_0^2 }{ 2 } + \sum_{ n = 1 }^\infty ( a_n^2 + b_n^2 ) \leq \frac{ 1 }{ \pi } \int_{ - \pi }^\pi f^2 \mathrm{ d } x\).

  3. Parseval等式:\(\frac{ a_0^2 }{ 2 } + \sum_{ n = 1 }^\infty ( a_n^2 + b_n^2 ) = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi f^2 \mathrm{ d } x\).

  4. 广义Parseval等式:设\(f , g\)都平方可积,则\(\frac{ 1 }{ \pi } \int_{ - \pi }^\pi fg \mathrm{ d } x = \frac{ a_0 ( f ) a_0 ( g ) }{ 2 } + \sum_{ n = 1 }^\infty ( a_n ( f ) a_n ( g ) + b_n ( f ) b_n ( g ) )\).

先看(1)和(2),假设\(T_n = \frac{ A_0 }{ 2 } + \sum_{ k = 1 }^n A_k \cos ( kx ) + B_k \sin ( kx )\),考虑:

$$ \[\begin{aligned} & \int_{ - \pi }^\pi ( f - T_n )^2 \mathrm{ d } x \\ = & \int_{ - \pi }^\pi f^2 \mathrm{ d } x + \pi \left ( \frac{ A_0^2 }{ 2 } + \sum_{ k = 1 }^n ( A_k^2 + B_k^2 ) \right ) - 2 \pi ( A_0 \frac{ a_0 }{ 2 } + \sum_{ k = 1 }^n a_k A_k + b_k B_k ) \\ = & \int_{ - \pi }^\pi f^2 \mathrm{ d } x + \pi \left ( \frac{ ( A_0 - a_0 )^2 }{ 2 } + \sum_{ k = 1 }^n ( a_k - A_k )^2 + ( b_k - B_k )^2 \right ) - \pi \left ( \frac{ a_0^2 }{ 2 } + \sum_{ k = 1 }^n a_k^2 + b_k^2 \right ) \\ \geq & \int_{ - \pi }^\pi f^2 \mathrm{ d } x - \pi \left ( \frac{ a_0^2 }{ 2 } + \sum_{ k = 1 }^n a_k^2 + b_k^2 \right ) \\ \end{aligned}\]

$$

等号成立当且仅当\(A_k = a_k , B_k = b_k\),这样上述两者就都证毕.

再看(3),由(1)和(2),只需要证明对于平方可积函数总存在一列三角多项式\(T_n\)使得\(\lim_{ n \to \infty } \int_{ - \pi }^\pi ( f - T_n )^2 \mathrm{ d } x = 0\)即可.

\(f\)是黎曼可积的时候这里较为平凡,只需要先用连续函数\(g\)逼近\(f\),再用三角多项式逼近\(g\)即可.最终因为有\(( T - f )^2 \leq 2 ( T - g )^2 + 2 ( f - g )^2\)就行.顺便一提这个不等式还可以证明平方可积的函数的和差也一定是平方可积.

接下来要把瑕点给处理掉,由于平方可积,所以瑕点那里的积分会足够小,直接把那一段抹平成\(0\)就行.抹平了后的函数可以被逼近,而抹平带来的影响又很小,这就搞定了.

再看(4),对\(( f + g )\)\(( f - g )\)分别做Parseval等式,然后用它们一作差就能证明此结论.

关于Bessel不等式和Parseval等式,一个更好的理解是它体现了正交基上的操作,Bessel不等式说对于一组正交基我们总有\(\Vert u \Vert^2 \leq \sum_k ( u | e_k )^2\)成立.

Example1

求证:函数\(f , g\)\([ - \pi , \pi ]\)上黎曼可积,则它们的傅里叶级数相同的充分必要条件是\(\int_{ - \pi }^\pi | f - g | \mathrm{ d } x = 0\).

先证明充分性,比较显然:

\[ \begin{aligned} & | \int_{ - \pi }^\pi ( f - g ) \sin ( nx ) \mathrm{ d } x | \\ \leq & \int_{ - \pi }^\pi | f - g | \mathrm{ d } x \end{aligned} \]

再证必要性,也很显然,考虑如果傅里叶级数相同,则Parseval等式必有\(\int f^2 \mathrm{ d } x = \int g^2 \mathrm{ d } x = \int fg \mathrm{ d } x\),这说明\(\int ( f - g )^2 \mathrm{ d } x = 0\),立刻推出\(\int | f - g | \mathrm{ d } x = 0\).

Example2

求证:当\(b_n\)单调递减趋近于\(0\)的时候,如果\(\sum \frac{ b_n }{ n } < \infty\),则\(f ( x ) = \sum b_n \sin ( nx )\)\([ - \pi , \pi ]\)上绝对可积.

不妨设\(x \in [ - \pi , \pi ]\),首先考虑:

\[ \begin{aligned} & | \sum_{ k = n + 1 }^{ n + m } \sin ( kx ) | \\ = & | \frac{ \cos ( n + m + \frac{ 1 }{ 2 } ) - \cos ( n + \frac{ 1 }{ 2 } ) }{ 2 \sin \frac{ x }{ 2 } } | \\ \leq & \frac{ 1 }{ | \sin \frac{ x }{ 2 } | } \end{aligned} \]

此时考虑设\(S_m = \sum_{ k = n + 1 }^{ m } \sin ( kx )\),取\(x \in [ \frac{ \pi }{ n + 1 } , \frac{ \pi }{ n } ]\),用Abel变换立刻有:

\[ \begin{aligned} & | \sum_{ k = n + 1 }^{ n + m } b_k \sin ( kx ) | \\ = & | \sum_{ k = n + 1 }^{ n + m } b_k ( S_{ k } - S_{ k - 1 } ) | \\ = & | \sum_{ k = n + 1 }^{ n + m - 1 } ( b_{ k } - b_{ k + 1 } ) S_{ k } - b_{ n + 1 } S_{ n } + b_{ n + m } S_{ n + m } | \\ = & | \sum_{ k = n + 1 }^{ n + m - 1 } ( b_{ k } - b_{ k + 1 } ) S_{ k } + b_{ n + m } S_{ n + m } | \\ \leq & \frac{ b_n }{ | \sin \frac{ x }{ 2 } | } \\ \leq & \frac{ \pi }{ x } b_{ n + 1 } \\ \leq & ( n + 1 ) b_n \end{aligned} \]

这里已经和\(m\)没有关系了,既然如此考虑取\(B_n = \sum_{ k = 1 }^n b_k\),自然有:

$$ \[\begin{aligned} \int_0^\pi | f | \mathrm{ d x } & = \sum_{ n = 1 }^\infty \int_{ \frac{ \pi }{ n + 1 } }^{ \frac{ \pi }{ n } } | f | \mathrm{ d } x \\ & \leq \sum_{ n = 1 }^\infty \int_{ \frac{ \pi }{ n + 1 } }^{ \frac{ \pi }{ n } } ( B_n + ( n + 1 ) b_n ) \mathrm{ d } x \\ & = \sum_{ n = 1 }^\infty \frac{ \pi }{ n ( n + 1 ) } ( B_n + ( n + 1 ) b_n ) \\ \end{aligned}\]

$$

此时只需检验\(\sum \frac{ B_n }{ n ( n + 1 ) }\)收敛就行了对吧.这个比较平凡:

\[ \begin{aligned} \sum_{ n = 1 }^\infty \frac{ B_n }{ n ( n + 1 ) } & = \sum_{ n = 1 }^\infty \frac{ 1 }{ n ( n + 1 ) } \sum_{ k = 1 } b_k \\ & = \sum_{ k = 1 }^\infty b_k \sum_{ n = k }^\infty \frac{ 1 }{ n ( n + 1 ) } \\ & = \sum_{ k = 1 }^\infty \frac{ b_k }{ k } \\ & < \infty \end{aligned} \]

这就搞定了.

逐项积分

\(f\)绝对可积,其傅里叶级数为\(\frac{ a_0 }{ 2 } + \sum a_n \cos ( nx ) + b_n \sin ( nx )\),考虑取\(F ( x ) = \int_0^x ( f ( t ) - \frac{ a_0 }{ 2 } ) \mathrm{ d } t\),容易检查\(F ( x )\)是有界变差的,原因是\(\sum | F ( x_i ) - F ( x_{ i - 1 } ) | = \sum | \int_{ x_{ i - 1 } }^{ x_i } f ( t ) \mathrm{ d } t | \leq \int | f |\).

既然如此,它就会被它的傅里叶级数一致逼近,不妨记作\(F ( x ) = \frac{ A_0 }{ 2 } + \sum_{ n = 1 }^\infty A_n \cos ( nx ) + B_n \sin ( nx )\).

接下来考虑把这些系数都求出来,先令\(x = 0\)求出\(\frac{ A_0 }{ 2 } + \sum_{ n = 1 }^\infty A_n = 0\),当\(n \geq 1\)的时候,留神到:

\[ \begin{aligned} A_n & = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi F ( x ) \cos ( nx ) \mathrm{ d } x \\ & = \frac{ 1 }{ \pi } F ( x ) \frac{ \sin ( nx ) }{ n } |_{ - \pi }^\pi - \frac{ 1 }{ n \pi } \int_{ - \pi }^\pi f ( x ) \sin ( nx ) \mathrm{ d } x \\ & = - \frac{ b_n }{ n } \end{aligned} \]

注意这里用的分部积分是广义分部积分,我们曾经搞过.

同理\(B_n = \frac{ a_n }{ n }\),补一个\(x\)的傅里叶级数进去,于是我们见到:

\[ \int_0^x f ( t ) \mathrm{ d } t = \frac{ a_0 }{ 2 } x + \sum_{ n = 1 }^\infty a_n \int_0^x \cos ( nt ) \mathrm{ d } t + b_n \int_0^x \sin ( nt ) \mathrm{ d } t \]

也就是一个函数和傅里叶级数逐项积分后总相等.

逐项微分

\(f\)可导而且是\(2 \pi\)周期的,并且\(\int_{ - \pi }^\pi | f ' | \mathrm{ d } x < \infty\),那由逐项积分那里的结论,自然有\(a_0 ( f ' ) = 0 , a_n ( f ' ) = nb_n ( f ) , b_n ( f ' ) = - na_n ( f )\),也就是当:\(f = \frac{ a_0 }{ 2 } + \sum a_n \cos ( nx ) + b_n \sin ( nx )\),则\(f ' \sim \sum - na_n \sin ( nx ) + nb_n \cos ( nx )\).

收敛速度的估计

最后来分析一下它的收敛能力,不妨假设\(f\)\(2 \pi\)周期逐段可导函数,并且\(\int_{ - \pi }^{ \pi } ( f ' )^2 \mathrm{ d } x < \infty\),则\(\max | f ( x ) - S_n ( x ) | = o ( \frac{ 1 }{ \sqrt{ n } } )\),原因是由Parseval等式,有:

\[ \frac{ 1 }{ \pi } \int_{ - \pi }^\pi ( f ' )^2 \mathrm{ d } x = \frac{ a_0 ( f ' )^2 }{ 2 } + \sum_{ n = 1 }^\infty ( a_n ( f ' )^2 + b_n ( f ' )^2 ) \]

也就是后面这个级数收敛对吧,那柯西准则给出:

\[ \sum_{ k = n + 1 }^\infty ( a_k ( f ' )^2 + b_k ( f ' )^2 ) = o ( 1 ) \]

现在来看误差项:

\[ \begin{aligned} | f ( x ) - S_n ( x ) | & \leq | \sum_{ k = n + 1 }^\infty a_k ( f ) \cos ( kx ) + b_k ( f ) \sin ( kx ) | \\ & \leq \sum_{ k = n + 1 }^\infty | a_k ( f ) | + | b_k ( f ) | \\ & = \sum_{ k = n + 1 }^\infty \frac{ | a_k ( f ' ) | + | b_k ( f ' ) | }{ k } \\ & \leq \sqrt{ \sum_{ k = n + 1 }^\infty | a_k ( f ' )^2 | + | b_k ( f ' )^2 | } \sqrt{ \sum_{ k = n + 1 }^\infty \frac{ 1 }{ k^2 } } \\ & = o ( 1 ) \frac{ 1 }{ \sqrt{ n } } \end{aligned} \]

复数形式

考虑:

\[ \begin{aligned} f ( x ) & \sim \frac{ a_0 }{ 2 } + \sum a_n \cos ( nx ) + b_n \sin ( nx ) \\ & = \frac{ a_0 }{ 2 } + \sum a_n \frac{ e^{ inx } + e^{ - inx } }{ 2 } + \sum b_n \frac{ e^{ inx } - e^{ - inx } }{ 2 i } \\ & = \sum_{ n = - \infty }^\infty c_n e^{ inx } \end{aligned} \]

此时有\(c_n = \frac{ 1 }{ 2 \pi } \int_{ - \pi }^\pi f ( x ) e^{ - inx } \mathrm{ d } x\).

三角级数的唯一性问题

接下来来解决点看上去很平凡的问题,如果:

\[ \frac{ a_0 }{ 2 } + \sum_{ n = 1 }^\infty a_n \cos ( nx ) + b_n \sin ( nx ) = \frac{ \tilde{ a_0 } }{ 2 } + \sum_{ n = 1 }^\infty \tilde{ a_n } \cos ( nx ) + \tilde{ b_n } \sin ( nx ) \]

而且左右两端都收敛到某个函数.能否导出\(a_n = \tilde{ a_n } , b_n = \tilde{ b_n }\).注意这里并不能两遍乘个\(\cos ( nx )\)然后积分,因为未必可积.

我们下面可以证明,如果上面这种相等除了至多可数个点以外都成立,那就是同一个三角级数.当然只需要证明当:

\[ \frac{ a_0 }{ 2 } + \sum_{ n = 1 }^\infty a_n \cos ( nx ) + b_n \sin ( nx ) = 0 \]

至多除了一个可数集合\(E = \{ x_1 , x_2 , \cdots \}\)以外成立的时候有\(a_n = b_n = 0\)即可.

先来证明一个引理:此时\(\lim_{ n \to \infty } a_n = \lim_{ n \to \infty } b_n = 0\).这还并不显然,因为这个三角级数并不一定是傅里叶级数.

首先级数收敛,通项趋近于\(0\),首先设\(\rho_n = \sqrt{ a_n^2 + b_n^2 }\),则\(a_n \cos ( nx ) + b_n \sin ( nx ) = \rho_n \sin ( nx + \varphi_n )\).现在只需要证明\(\lim_{ n \to \infty } \rho_n = 0\).

反证,如果没有上述结论,则总存在一个无穷子列\(\{ \rho_{ n_k } \}_k\)大于某一个正常数\(c\),设其指标集合为\(F = \{ n_1 < n_2 < \cdots \}\).

现在考虑\([ 0 , 2 \pi ]\)上,找一个区间\(I_1 = [ l_1 , r_1 ]\)使得其不含有\(x_1\),由于\(F\)通项肯定趋近无穷大,总能找到一个\(m_1 \in F\),使得\(| [ m_1 l_1 , m_1 r_1 ] | = m_1 | I_1 | > 2 \pi\).既然它的区间长度足够大,那其中总有一个子区间\(J_1 \subseteq I_1\),使得\(\sin ( m_1 x + \varphi_{ m_1 } ) > \frac{ 1 }{ 2 }\)\(J_1\)上成立.那我当然可以再找一个子区间\(I_2 \subseteq J_1\)使得\(I_2\)中不含有\(x_2\),重复以上操作,这就是一个闭区间套.最后套出来了一个点\(w \notin E\),此时\(\sin ( m_k w + \varphi_{ m_k } ) > \frac{ 1 }{ 2 }\),自然有\(\varphi_{ m_k } \sin ( m_k w + \varphi_{ m_k } ) > \frac{ c }{ 2 }\),这立刻导出矛盾.

再来一个引理:假设\(F ( x ) \in C ( a , b )\),可数集合\(E \subseteq ( a , b )\).定义其二阶差分\(\Delta_h^2 F ( x ) = F ( x + 2 h ) + F ( x - 2 h ) - 2 F ( x )\).已知其广义二阶导数\(\delta^2 F = \varlimsup_{ h \to + 0 } \frac{ \Delta_h^2 F ( x ) }{ 4 h^2 } \geq 0 , \forall x \notin E\),而\(\varlimsup_{ h \to + 0 } \frac{ \Delta_h^2 F ( x ) }{ h } \geq 0 , \forall x \in E\).则结论是\(F ( x )\)是一个下凸函数.

这个结论的自然之处在于如果\(F ' ' ( x )\)存在,那\(F ( x + 2 h ) = F ( x ) + F ' ( x ) 2 h + \frac{ F ' ' ( x ) }{ 2 } ( 2 h )^2 + o ( h^2 )\)并且\(F ( x - 2 h ) = F ( x ) - F ' ( x ) 2 h + \frac{ F ' ' ( x ) }{ 2 } ( 2 h )^2 + o ( h^2 )\),所以上面那个\(\delta^2 F = F ' ' ( x )\),那如果它非负当然是下凸函数.

那如果\(F ' ' ( x )\)不存在呢?反证,假设\(F\)不凸,则一定存在一个子区间\(( \alpha , \beta ) \subseteq ( a , b )\),使得在这个区间上,\(F ( x )\)函数在\(( \alpha , \beta )\)这条弦之上(因为连续性,至少有三个点是违背三弦定理的,作一条弦后,函数有一些部分在上面有一些部分在下面,取某个恒在上面的子区间即可).

总之,我们找到了一个子区间\(( \alpha , \beta )\)使得:

\[ F ( x ) - \left ( \frac{ F ( \beta ) - F ( \alpha ) }{ \beta - \alpha } ( x - \alpha ) + F ( \alpha ) \right ) > 0 \]

接下来要推矛盾,分成两种情况:

第一种情况是\(\delta^2 F > 0\)的情形,考虑辅助函数\(G_\mu ( x ) = F ( x ) - ( \mu ( x - a ) + F ( \alpha ) )\),其中\(\mu = \frac{ F ( \beta ) - F ( \alpha ) }{ \beta - \alpha } + \epsilon\),也就是比原本那条弦的斜率稍微大了一点点,那只要\(\epsilon\)落在某个足够小的区间内,\(G_\mu ( x )\)仍然有大于零的部分.直接取\(G_\mu ( x_0 ( \mu ) ) = \max_{ [ \alpha , \beta ] } G_\mu\),此时观察到\(G_\mu\)\(F\)只差一个一次函数,它们作二阶差分后就相等了,然而,由于\(G_\mu ( x_0 ( \mu ) )\)取的是最大值,当\(h\)取足够小的时候,它的二阶差分一定小于等于\(0\),因此能导出\(x_0 ( \mu ) \in E\),并且同理能导出\(\varlimsup_{ h \to + 0 } \frac{ \Delta_h^2 F ( x_0 ( \mu ) ) }{ h } = 0\).从而导出:

\[ \varlimsup_{ h \to + 0 } \frac{ G_\mu ( x_0 ( \mu ) - 2 h ) - G_\mu ( x_0 ( \mu ) ) }{ h } = \varlimsup_{ h \to + 0 } \frac{ G_\mu ( x_0 ( \mu ) + 2 h ) - G_\mu ( x_0 ( \mu ) ) }{ h } = 0 \]

欸,你怎么变一阶差分了,那我的一次函数不就有用了么,必定有:

\[ \varlimsup_{ h \to + 0 } \frac{ F ( x_0 ( \mu ) - 2 h ) - F ( x_0 ( \mu ) ) }{ h } = 2 \mu \]

所以\(\mu \to x_0 ( \mu )\)为单射,这与\(x_0 ( \mu ) \in E\)矛盾.

那么等于\(0\)的情况呼之欲出了对吧,此时任意的\(n\)都可以做到\(F ( x ) + \frac{ x^2 }{ n }\)是凸的,随便搞个反证法就可以知道\(F ( x )\)必定是凸的.

最后来设\(F ( x ) = \frac{ a_0 }{ 4 } x^2 - \sum_{ n = 1 }^\infty \frac{ a_n \cos ( nx ) + b_n \sin ( nx ) }{ n^2 }\),由于\(a_n \to 0 , b_n \to 0\),所以这玩意用大M判别法知道绝对一致收敛,那就是一个连续函数.

此时计算:

$$ \[\begin{aligned} \Delta_h^2 F ( x ) & = \frac{ a_0 }{ 4 } ( ( x + 2 h )^2 + ( x - 2 h )^2 - 2 x^2 ) \\ & - \sum_{ n = 1 }^\infty \frac{ 1 }{ n^2 } ( a_n ( \cos ( n ( x + 2 h ) ) + \cos ( n ( x - 2 h ) ) - 2 \cos ( nx ) ) \\ & + b_n ( \sin ( n ( x + 2 h ) ) + \sin ( n ( x - 2 h ) ) - 2 \sin ( nx ) ) ) \\ \end{aligned}\]

$$

而此时对后面的部分用和差化积,留神到:

\[ \begin{aligned} & \cos ( n ( x + 2 h ) ) + \cos ( n ( x - 2 h ) ) - 2 \cos ( nx ) \\ = & 2 \cos ( nx ) \cos ( 2 nh ) - 2 \cos ( nx ) \\ = & 2 \cos ( nx ) ( \cos ( 2 nh ) - 1 ) \\ = & - 4 \cos ( nx ) \sin^2 ( nh ) \end{aligned} \]

于是:

\[ \frac{ \Delta_h^2 F ( x ) }{ 4 h^2 } = \frac{ a_0 }{ 2 } + \sum_{ n = 1 }^\infty ( a_n \cos ( nx ) + b_n \sin ( nx ) ) ( \frac{ \sin ( nh ) }{ nh } )^2 \]

乍一看已经要完事了对吧!很可惜并没有,因为这个\(n \to \infty\)了,我们还需要证明下面这个引理:当\(\sum_{ n = 1 }^\infty a_n = s\)收敛的时候,那么\(\lim_{ h \to 0 + } \sum_{ n = 1 }^\infty a_n ( \frac{ \sin ( nh ) }{ nh } )^2 = s\).

最难过的是这里的\(a_n\)不定号,我们可能第一反应是前部分可以让\(n \to \infty\)而后半部分可以直接抛掉,可在不定号的时候这一切都难以实现了.对于不定号项的求和,我们也许唯一的武器只有Abel变换.设\(a_0 = 0 , b_n ( h ) = ( \frac{ \sin ( nh ) }{ nh } )^2 , b_0 ( h ) = 1 , S_n = \sum_{ k = 1 }^n a_k\).立刻得到:

\[ \begin{aligned} \sum_{ n = 0 }^\infty a_n b_n ( h ) & = \sum_{ n = 1 }^\infty ( S_n - S_{ n - 1 } ) b_n ( h ) \\ & = \sum_{ n = 0 }^\infty S_n ( b_n ( h ) - b_{ n + 1 } ( h ) ) \end{aligned} \]

既然\(S_n\)收敛,不妨设\(| S_n | < M\),下面来估计:

$$ \[\begin{aligned} | b_{ n + 1 } ( h ) - b_{ n } ( h ) | & = | \int_{ nh }^{ ( n + 1 ) h } ( \frac{ \sin^2 t }{ t^2 } ) ' \mathrm{ d } t | \\ & \leq \int_{ nh }^{ ( n + 1 ) h } | \frac{ 2 \sin t ( \cos t - \frac{ \sin t }{ t } ) }{ t^2 } | \mathrm{ d } t \\ \sum | b_{ n + 1 } ( h ) - b_{ n } ( h ) | & \leq \int_{ 0 }^{ + \infty } | \frac{ 2 \sin t ( \cos t - \frac{ \sin t }{ t } ) }{ t^2 } | \mathrm{ d } t \\ \end{aligned}\]

$$

盯着这个积分,发现其在\(0\)附近极限存在(泰勒展开就能看到),而在无穷处其实就是\(O ( \frac{ 1 }{ t^2 } )\),所以这个积分存在,当然有\(\sum | b_{ n + 1 } ( h ) - b_{ n } ( h ) | \leq + \infty\),其实上面的过程就是在证明这个函数是有界变差的对吧!准备工作业已就绪,不妨设\(\varphi_n = b_n ( h ) - b_{ n + 1 } ( h )\),请看:

\[ \begin{aligned} & | \sum_{ n = 0 }^\infty a_n b_n ( h ) - s | \\ = & | \sum_{ n = 0 }^\infty ( s_n \varphi_n ( h ) - s \varphi_n ( h ) ) | \\ \leq & \sum_{ n = 0 }^N | S_n - s | \cdot | \varphi_n ( h ) | + \sum_{ n = N + 1 }^\infty | S_n - s | \cdot | \varphi_n ( h ) | \end{aligned} \]

只要取定足够大的\(N\)就可以使得\(| S_n - s | \to 0\),而在此时只要让\(h \to 0\)就可以让前半部分定死的\(\varphi_n ( h ) \to 0\),于是就搞定了.

从而我们可以看到上述引理的确成立了,进一步地两个上极限都等于\(0\),所以\(F ( x )\)的确是下凸函数,然而正是因为等于\(0\),所以\(- F ( x )\)也是下凸函数,所以\(F ( x )\)既是上凸,又是下凸,那它必然是一个一次函数.那\(a_0 = 0\)就是必然的了.既然\(a_0 = 0\),\(F ( x )\)就是一个\(2 \pi\)周期函数,所以它必然是常值函数.然而一个三角级数一致收敛到一个常值函数,这个三角级数本身必然是常值函数,所以\(a_n = b_n = 0\),这就搞定了.

傅里叶级数的最佳逼近性

下面我们想证明:傅里叶级数是最佳逼近,如果一个三角级数处处收敛到了一个黎曼可积函数,则这个三角级数就是这个函数的傅里叶级数.(事实上这个结论在绝对可积时也是对的,甚至可以有有限个点不收敛到它)

不妨设\(f \in R [ - \pi , \pi ]\),有界\(m \leq f \leq M\).三角级数\(\frac{ a_0 }{ 2 } + \sum a_n \cos ( nx ) + b_n \sin ( nx )\)逐点逼近于它本身.我们上面引入的也就是\(\delta^2 F ( x_0 ) = f ( x_0 )\).

来引入一个引理:如果\(\forall x_0 \in ( a , b ) , \delta^2 F = \lim_{ h \to + 0 } \frac{ \Delta_h^2 F }{ 4 h^2 } \in [ m , M ]\),则不加极限的情况,\(\forall x_0 \in ( a + h , b - h ) , h > 0 , \frac{ \Delta_h^2 F }{ 4 h^2 } \in [ m , M ]\).

我想这应该是平凡的,方向呼之欲出:使用介值定理.不过这里是二次函数,那我们就取定\(F ( x_0 ) , F ( x_0 \pm 2 h )\)三个点,过这三个点做一个二次函数.事实上这个二次函数就是\(\varphi ( x ) = F ( x_0 ) + ( x - x_0 ) \frac{ F ( x_0 + 2 h ) - F ( x_0 - 2 h ) }{ 4 h } + \frac{ ( x - x_0 )^2 }{ 2 } \frac{ \Delta_h^2 F ( x_0 ) }{ 4 h^2 }\).取\(g ( x ) = F ( x ) - \varphi ( x )\),则\(g ( x )\)会在\(x_0 , x_0 \pm 2 h\)取值为\(0\),并且其在\(( x_0 - 2 h , x_0 + 2 h )\)上肯定有一个最大值\(x_1\)和一个最小值\(x_2\),在前者的广义二阶导数\(\leq 0\)而后者\(\geq 0\),得到:

\[ \begin{aligned} \delta^2 F ( x_1 ) - \frac{ \Delta_h^2 F ( x_0 ) }{ 4 h^2 } & \leq 0 \leq \delta^2 F ( x_2 ) - \frac{ \Delta_h^2 F ( x_0 ) }{ 4 h^2 } \\ m & \leq \frac{ \Delta_h^2 F ( x_0 ) }{ 4 h^2 } \leq M \end{aligned} \]

现在我们就知道如何做了,回忆到:

\[ \frac{ \Delta_h^2 F ( x ) }{ 4 h^2 } = \frac{ a_0 }{ 2 } + \sum_{ n = 1 }^\infty ( a_n \cos ( nx ) + b_n \sin ( nx ) ) ( \frac{ \sin ( nh ) }{ nh } )^2 \]

当我不取\(h \to 0\)的时候这个两边可是一致收敛的.那右边肯定是前边的傅里叶级数,立刻有:

$$ \[\begin{aligned} a_n ( \frac{ \sin ( nh ) }{ nh } )^2 & = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi \frac{ \Delta_h^2 F ( x ) }{ 4 h^2 } \cos ( nx ) \mathrm{ d } x \\ b_n ( \frac{ \sin ( nh ) }{ nh } )^2 & = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi \frac{ \Delta_h^2 F ( x ) }{ 4 h^2 } \sin ( nx ) \mathrm{ d } x \\ \end{aligned}\]

$$

那我们自然有:

$$ \[\begin{aligned} a_n & = \lim_{ h \to + 0 } a_n ( \frac{ \sin ( nh ) }{ nh } )^2 \\ & = \lim_{ h \to + 0 } \frac{ 1 }{ \pi } \int_{ - \pi }^\pi \frac{ \Delta_h^2 F ( x ) }{ 4 h^2 } \cos ( nx ) \mathrm{ d } x \\ \end{aligned}\]

$$

然而此时\(\frac{ \Delta_h^2 F ( x ) }{ 4 h^2 } \in [ m , M ]\),后面积分那个东西有界.欸,取\(h = \frac{ 1 }{ n } \to 0\)可以拿到一个一致有界的函数列,这不是我们控制收敛定理么,交换顺序!

$$ \[\begin{aligned} a_n & = \lim_{ h \to + 0 } \frac{ 1 }{ \pi } \int_{ - \pi }^\pi \frac{ \Delta_h^2 F ( x ) }{ 4 h^2 } \cos ( nx ) \mathrm{ d } x \\ & = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi \lim_{ h \to + 0 } \frac{ \Delta_h^2 F ( x ) }{ 4 h^2 } \cos ( nx ) \mathrm{ d } x \\ & = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi f ( x ) \cos ( nx ) \mathrm{ d } x \\ \end{aligned}\]

$$

这就证毕了.

傅里叶级数不逐点收敛到自身的连续周期函数

定义\(C ( T )\)\(2 \pi\)周期连续函数组成的线性空间.此时定义\(\Vert f - g \Vert = \sup | f - g |\),其实也就是Banach空间对吧.有了范数定义距离,有了距离就可以有开闭集的概念.Baire纲定理告诉我们此时可数个开稠集的交集仍然是稠密集(不过未必是开集).

现在考虑\(f ( x )\)的傅里叶级数,取\(S_n ( f , x ) = \frac{ a_0 }{ 2 } + \sum_{ k = 1 }^n a_k \cos ( kx ) + b_k \sin ( kx )\),迪利克雷核的结论告诉我们\(S_n ( f , x ) = \frac{ 1 }{ \pi } \int_{ - \pi }^\pi f ( t ) D_n ( x - t ) \mathrm{ d } t\),其中\(D_n ( w ) = \frac{ \sin ( n + \frac{ 1 }{ 2 } ) w }{ 2 \sin \frac{ w }{ 2 } }\).

接下来定义\(\varphi_f ( x ) = \sup_{ n \geq 1 } | S_n ( f , x ) |\),取\(E_m ( x ) = \{ f \in C ( T ) | \varphi_f ( x ) > m \}\).下面我们来证明:\(E_m ( x )\)\(C ( T )\)的开稠子集.

是开集应该是自然的结论,因为当\(n , x\)定死的时候,\(S_n ( f , x )\)从定义看是连续地依赖于\(f\).如果\(f \in E_m ( x )\),则\(\exists n , | S_n ( f , x ) | > m\),那它周围当然有一个小邻域,使得其中的\(g\)都满足\(| S_n ( g , x ) | > m\)了,所以这肯定是开集.

接下来得证明它是稠集,定义\(g_n ( t ) = \begin{cases}1 & D_n ( t ) \geq 1 \\ - 1 & D_n ( t ) \leq - 1 \\ D_n ( t ) & \text{ otherwise }\end{cases}\).此时发现:

$$ \[\begin{aligned} & \frac{ 1 }{ \pi } \int_{ - \pi }^\pi g_n ( t ) D_n ( t ) \mathrm{ d } t \\ = & O ( 1 ) + \frac{ 1 }{ \pi } \int_{ - \pi }^\pi | D_n ( t ) | \mathrm{ d } t \\ \end{aligned}\]

$$

原因是\(| D_n ( t ) | \geq 1\)的部分二者相等,而不同的部分在有限区间上积分不会太大.

然而:

\[ \begin{aligned} & \frac{ 1 }{ \pi } \int_{ - \pi }^\pi | D_n ( t ) | \mathrm{ d } t \\ = & \frac{ 2 }{ \pi } \int_0^\pi | D_n ( t ) | \mathrm{ d } t \\ = & \frac{ 1 }{ \pi } \int_0^\pi | \frac{ \sin ( n + \frac{ 1 }{ 2 } ) t }{ 2 \sin \frac{ t }{ 2 } } | \mathrm{ d } t \\ > & \frac{ 1 }{ \pi } \int_0^\pi | \frac{ \sin ( n + \frac{ 1 }{ 2 } ) t }{ t } | \mathrm{ d } t \\ > & \frac{ 1 }{ \pi } \int_0^{ ( n + \frac{ 1 }{ 2 } ) \pi } \frac{ | \sin t | }{ t } \mathrm{ d } t \\ > & \frac{ 1 }{ \pi } \sum_{ k = 2 }^n \int_{ ( k - 1 ) \pi }^{ k \pi } \frac{ | \sin t | }{ t } \mathrm{ d } t \\ = & \sum_{ k = 2 }^n O ( 1 ) \frac{ 1 }{ k } \\ = & O ( \ln n ) \end{aligned} \]

接下来考虑取\(h_n = \frac{ g_n }{ \sqrt{ ln n } } \to 0\),则\(S_n ( h_n , x ) = O ( \sqrt{ \ln n } )\).此时设\(U_{ \epsilon } ( f ) = \{ g \in C ( T ) | \Vert f - g \Vert < \epsilon \}\),回忆到三角多项式可以一致逼近任何连续周期函数,所以存在三角多项式(有限项)\(T \in U_{ \frac{ \epsilon }{ 2 } } ( f )\).

\(r_n ( x ) = T + h_n\),由于\(h_n \to 0\),所以当\(n\)足够大的时候\(r_n ( x ) = g + h_n \in U_\epsilon ( f )\).此时\(S_n ( r_n , x ) = S_n ( T , x ) + S_n ( h_n , x )\),但是\(T\)是有限项三角多项式,所以\(S_n ( r_n , x ) = O ( 1 ) + O ( \sqrt{ \ln n } ) \to \infty\).这就搞定了,那此时\(r_n \in E_m ( x )\)而且在\(f\)的邻域里.所以这个集合是稠密的.

接下来取\(E_x = \bigcap_{ m = 1 }^\infty E_m ( x )\),容易发现\(E_x\)中的所有函数在\(x\)这一点的傅里叶级数竟然都无界,我可以干脆取\(E = \bigcap_{ x \in \mathbb{ Q } } E_x\),则这里面存在一个函数,这个函数的傅里叶级数在任意有理点处发散.

其实还可以更牛,取\(F_m ( f ) = \{ x \in \mathbb{ R } | \varphi_f ( x ) > m \}\),这显然是个开集.取\(F_f = \bigcap_{ n = 1 }^\infty F_n\),这就是可数个开集的交.而且从上面的论证可以发现\(\mathbb{ Q } \subseteq F_f\),可是这里的\(\mathbb{ Q }\)是稠密的,所以\(F_f\)必然也是稠密的,那它就是可数个开稠集的交,有结论说可数个开稠集的交一定是不可数集合.

然而,还有结论说一个周期连续函数的傅里叶级数其实几乎处处收敛于本身.

Example1

\(f ( x )\)\(2 \pi\)周期连续函数,设\(M_n = \max_{ x \in [ - \pi , \pi ] } | S_n ( x ) |\),求证:\(\lim_{ n \to \infty } \frac{ M_n }{ \ln n } = 0\).

不妨设\(M_f = \max f\),考虑\(| S_n ( x ) | \leq | S_n ( x ) - f | + M_f\),而后者是个死数,除以\(\ln n\)后当然趋近于\(0\).

现在只需要看前者,然而:

\[ \begin{aligned} S_n ( x ) - f & = \frac{ 1 }{ \pi } \int_{ 0 }^\pi ( f ( x + t ) + f ( x - t ) - 2 f ( x ) ) D_n ( t ) \mathrm{ d } t \\ & = \frac{ 1 }{ \pi } \int_{ 0 }^\delta ( f ( x + t ) + f ( x - t ) - 2 f ( x ) ) D_n ( t ) \mathrm{ d } t \end{aligned} \]

而回忆到\(\int_0^\pi | D_n ( t ) | = O ( \ln n )\),由一致连续性前半部分显然可以决定一个\(\delta\)是前者\(< \epsilon\),这就搞定了.

反悔贪心

扫描线

第一题

https://www.luogu.com.cn/problem/P6940

首先发现,从上往下扫行,然后对于每个右下角匹配一个列最近的左上角是最优秀的.所以拿set维护上述过程.

第二题

https://www.luogu.com.cn/problem/P3268

这题比较厉害,直接扫,然后维护每个圆当前与这条线的两个交点,注意到这些交点的顺序是固定的,于是可以拿set维护.

二分图HALL定理

第一题

https://www.luogu.com.cn/problem/AT_arc076_d

根据Hall定理,我们只要找到一个子集的人,使得人数与它们的区间的并所包含的椅子数量之差最大,这个最大值就是答案.而它们区间的并显然是同样类型的区间,也就是中间扣去一段.考虑枚举中间扣去的那一段是啥,就可以快速算答案.这玩意可以扫描线维护.

第二题

https://www.luogu.com.cn/problem/CF981F

一眼丁真,鉴定为二分+Hall定理.

这题真正的难点在于如何check.考虑我们现在有了若干个区间\([ l , r ]\),每个整数点上都有一个人.然后要check.那就必须满足\(r_j - l_i \geq j - i\),这意味着\(r_j - j \geq l_i - i\),然后就做完了.

第三题

https://www.luogu.com.cn/problem/P3488

比较简单,考虑如果最后找的若干个区间是分开的,那它们必然其中有一个区间自己就不合法.因此找到这个区间就行,然后每个位置减去\(k\),用线段树维护区间小子段和判断加上\(k \times d\)是否小于\(0\).

第四题

https://www.luogu.com.cn/problem/CF103E

这题比较厉害啊.首先猜到要用网络流.

然后注意到选的集合\(=\)选的数字等价于不选的集合\(+\)选的数字\(= n\).考虑最小割.先将边权全部取反,这样变成求最大权值,

然后集合连权值加上一个极大值\(M\),单点连极大值\(M\).这样割掉一个单点意味着选这个单点,割掉一个集合意味着不选这个集合.由于存在完美匹配,因此一定会跑出答案.

第五题

https://www.luogu.com.cn/problem/AT_arc106_e

首先答案显然不会超过\(2 nk\),考虑二分,这样每一天会有哪些人来就知道了.然后对着上面的信息做高维前缀和就可以知道对于一个人的集合,它会来哪些天.这样就可以check.

第六题

https://www.luogu.com.cn/problem/AT_agc037_d

考虑最后\(C \rightarrow D\)显然需要把该放的位置归位,这样我们的\(a\)里面存的完全可以是它应该在第几行这个信息.

再考虑\(B \rightarrow C\),显然只需要保证每列的\(a\)互不相同,这一步就可以满足上面的要求.

于是,\(A \rightarrow B\)只需要保证每列的\(a\)互不相同.这个可以使用网络流实现.

那么,如何证明一定有解呢?这是一张正则二分图,根据Hall定理推论,一定存在完美匹配.

第七题

https://www.luogu.com.cn/problem/AT_agc029_f

这题好牛啊.发现如果几个集合的并的点数过少,那么一定无解.因为怎么连都会连出环来.这直接将整个题的思路引向Hall定理.

考虑直接做二分图匹配.左边是点右边是集合,然后连边.

那么根据Hall定理一定存在\(n - 1\)的匹配,并且恰好有一个点没被匹配到.我们干脆删掉这个点,最后再加回来.事实上理论上来说我删掉哪个点都应该存在完美匹配,我们先只删一个.然后从\(r\)开始不断dfs找到一条遍历所有边的交错树,对着交错树构造就行.

第八题

https://www.luogu.com.cn/problem/CF1519F

首先注意到,只要任意一个宝箱集合需要的钥匙集合的权值大于等于自己,那Bob就输了.这类似Hall定理.我们把钥匙和宝箱都拆点,然后判断拆点后的图是否存在完美匹配.求完美匹配可以使用状压.

轮廓线dp

这个板块好像没啥说的,因为思维难度远低于代码难度.而且思路都比较直接.

放一下我做的题.

第一题

https://www.luogu.com.cn/problem/P5056

第二题

https://www.luogu.com.cn/problem/P2289

第五题

https://www.luogu.com.cn/problem/P3886

第六题

https://www.luogu.com.cn/problem/P1933

广义串并联图

第一题

https://www.luogu.com.cn/problem/P6790

比较简单,首先这个图这么简单,那它大概率是个广义串并联图.感性理解一下,\(n \geq 4\)的时候肯定是存在度数较小的边的,并且你在合并的过程中它也一直是仙人掌+至多一条边的形状.

然后简单做做.

第二题

https://www.luogu.com.cn/problem/P8426

ps:本题选入笔记:图论-广义串并联图/三度化-Example2.

广义串并联图的一个很重要的思想是:我们通过一些手段改变这个图的形态为一个好做的形态,但是答案又和原图相同.

在这个思想的指导下,我们考虑这个题能否进行三度化.不过注意起点和终点简单特判一下,别把他们给删了.这样我们最后如果得到了一个只有起点和终点的图,那就一定是no.

然后如果没有只得到起点和终点呢?对最短路图建DAG,考虑如果\(S\)\(T\)在一个点双中,我们找到两个点\(u , v\),使得\(u \rightarrow v\),并且\(u\)的出度至少是\(2\),\(v\)的入度至少是\(2\),显然只要找到就做完了.现在的问题就在于为啥这条边一定存在.这个考虑找一个入度至少为\(2\)的点\(v\),找到它的入点\(u\),如果\(u\)的出度不是\(2\),那么\(u\)也是一个入度至少为\(2\)的点.这样往前推一定至少能推到一个点(因为不可能\(S\)贡献了俩入度).

如何保证\(S , T\)在一个点双中呢?其实只需要添加一条边\(( S , T , dis_{ S \rightarrow T } )\)就行了.显然加了后不会对答案产生影响.然后不在\(S , T\)这个边双内的点也没有用了.

第三题

https://loj.ac/p/3076

这题没啥好说的,小E的集训队论文讲的很清楚.简单来说就是用三度化求出一棵决策树,然后做动态dp.

动态规划第一期

第一题

https://www.luogu.com.cn/problem/CF1810G

ps:本题选入笔记:动态规划-动态规划的优化-反向操作-Example1.

其实这题有一个很自然的容斥做法,但我们先略过.

一般而言先考虑对于每个\(k\)暴力做.那怎么维护最大前缀和这个东西呢?如果我们从左往右扫,其实是很难维护的.因为我们无法接受加一维以维护它.更进一步为什么无法维护呢?因为你新加一个元素,它是不会影响前面的前缀和的,只会影响一个.这导致你的取\(\max\)操作很艰难.但如果!我把这个dp反过来,我设\(f_{ i , j }\)表示从后往前dp到\(i\),当前的最大前缀和是多少,这个dp的转移极其简单:

\[ P \times f_{ i , j } \rightarrow f_{ i - 1 , \max \{ 0 , j + a_{ i - 1 } \} } \]

最后在\(f_{ 1 , j }\)处乘上\(h_j\).

但是这样是\(O ( n^3 )\)的,怎么办呢?

考虑把这个dp反过来!我们设\(g_{ i , j }\)表示如果初始只有\(f_{ i , j } = 1\),dp到最后的答案是多少.于是只需要:

$$ \[\begin{aligned} P \times g_{ i - 1 , \max \{ 0 , j + a_{ i - 1 } \} } & \rightarrow g_{ i , j } \\ \end{aligned}\]

$$

我认真考虑过这个\(P\)应该乘在哪边.实际上确实应该在左边.原因比较简单,因为答案是一串乘法,你不能把这些\(P\)变成除法.但还有一个问题是,为什么反向的时候没有把这些反向呢?

原因是这类型dp比较特殊,我们要算的其实是一个类似DAG路径上的信息,因此边权无需改变.

回来简单提下容斥做法,其实是有一个自然的想法是只要这个序列中出现过前缀和为\(x\)的位置,我们就加上一个\(h_x - h_{ x - 1 }\).然后我们要统计的是出现过的,因此用容斥把这个条件删了就行.

第二题

https://www.luogu.com.cn/problem/AT_agc061_c

这题纯容斥,首先考虑找到一种统计答案序列而非操作序列的方式:一般而言会选择建立某种双射.考虑一个答案序列可以怎么被操作到:或者说,对于一个答案序列,判断它能否操作到.

注意到序列中第一个元素,肯定是选择左端点比较合理.因为这样它对后面的限制要少一些.那么其实双射方式就呼之欲出了:就是从左往右扫,能取左端点就取左端点.我们就可以对这个操作序列进行计数.

这个操作序列怎么计数呢?考虑这个序列满足啥条件:其实就是能选左边的就不会选右边的,那也就是不可能出现一个空的区间,这个区间没有任何数字.对着这个条件容斥即可.

第三题

https://www.luogu.com.cn/problem/AT_arc134_e

这题见过两次了.大概是按部就班一点一点去找条件.

至于考试怎么办,考试打表啊!

下面抄一下演算纸上的结论,注意这些判定条件的优先级从前往后:

  1. 如果序列全\(1\),显然后手获胜.

  2. 如果序列不是全\(1\)并且存在奇数,选择\(m = 2\),先手获胜.

  3. 如果序列全\(2\),显然后手获胜.

  4. 如果序列全是偶数并且不全是\(4\)的倍数,取\(m = 4\)转化为(3),先手获胜.

  5. 如果序列全是\(4\)的倍数,考虑取\(m = 3\),如果序列中只有\(\bmod 3 = 1\)或者只有\(\bmod 3 = 2\)的数字,显然先手获胜.不然,如果同时存在,考虑先手取\(m = 12\),序列中就会只剩下\(\{ 4 , 8 \}\).此时如果后手取一个奇数,显然会剩下奇数,根据(2)先手获胜;如果后手取一个偶数,讨论一下全部的偶数,都是先手获胜.

综上,除非所有的数字都是\(12\)的倍数,不然后手获胜当且仅当序列是\(\{ 1 \} , \{ 2 \} , \{ 4 , 8 \}\).

如果所有的数字都是\(12\)的倍数,最多只有\(16\)个,状压即可.

第四题

https://www.luogu.com.cn/problem/AT_abc290_h

显然对于猫来说,它的\(d\)(定义为左右狗的数量之差,对于狗同理)是一个从左到右先减少再增加的东西.因此一个\(O ( n^4 )\)的dp是简单设计的,也就是\(f_{ i , j , k , l }\)表示目前用了\(i\)只猫,有\(j\)只放在前面,\(i - j\)只放在后面,狗同理.

这个怎么优化呢?我们仔细思考,如果要放,是不是最好放的平均一点.因此引出一个结论:那就是一定存在一个分界点,使得左右猫的数量相同,狗的数量也相同.你可能会好奇\(n , m\)都是奇数怎么办,这种情况下会把中间的两个点当作分界点.如果\(n + m\)是奇数就找中间的那个点,不然就找中间的那个空格.

这个是怎么证明的呢?我们考虑对于猫来说,先找到能平分猫的分界点.然后考虑这个点左右两侧的狗的数量是否相同(这里先假设狗的数量是偶数,奇数是同理的,只是要多说几步).我们选择狗多的那一边,把这边最靠近分界线的那只狗恰好移过分界线.注意到这样一定更优秀.

那么上面的结论证明了啥呢?证明了整个序列一定可以分成两部分(左右两部分).这有什么用?这去掉了前两维.具体来讲,对于一部分,如果可以填某只猫或某只狗二者之一,一定选择权值较小的先填,这样的话这一对的贡献就会少一些.其实就是把权值转化为每个序列中每一对的贡献.于是这个结论就是对的,我们可以把猫狗放在一起排序来处理第一维.复杂度\(O ( n^3 )\).

测完样例发现一个问题啊,上面那个结论还真不能简单地拓展到奇数.因为会出现权值相等的情况.对于偶数来讲,权值相等是无所谓的.但是奇数不行.因此我们选择如果\(n\)是奇数,就挑出最大的那只强行放在中间,\(m\)同理.

但是,这题被爆标了.存在\(O ( n \log n )\)的做法:

注意到,\(\sum d\)总是一样的.因为这个猫前面的狗会因为它而贡献\(1\),然后这个猫和后面的狗也会贡献\(1\).于是考虑从大到小开始放,优先放中间.然后先把狗堆一边,猫堆另一边,堆不动了再放对边,这样就是满足让\(a\)较大的\(d\)较小.

第五题

https://www.luogu.com.cn/problem/P9338

首先能划分就一定需要是一个合法括号序列.同时这意味着一定可以划分出\(N\)个合法的序列.

也就是说,我们其实只在乎这个序列最少能划分出多少,并且判断这个数字是否小于等于\(K\).那么如何求这个数字呢?

考虑第一个\(B\),它一定会和它左边的某个\(A\)配对,不妨设它左边有\(i\)\(A\),那么最好的办法显然是这\(i\)\(A\)和后面紧接着的\(i\)\(B\)合并成一个序列.这是为什么呢?因为第一个\(B\)需要配对,因此它需要在一个序列中,把它删掉后后面的一个\(B\)也需要配对,而此时它前面的\(A\)其实都是等价的,于是选择最早的那个,以此类推.

然后题解开始变魔术了.设\(f [ x ]\)表示第\(x\)\(B\)前有多少个\(A\),那我们做的实际上就是\(x = 1\),然后不断做\(x : = f [ x ] + 1\)直到\(x > n\).发现这样其实顺便把合法括号序列那个条件一起满足了,因为如果不合法一定会跳跳跳跳跳然后死循环.

那么我们的交换操作实际上是啥呢?首先不可能交换两个相同的,那实际上就是给一个\(f \pm 1\),实际上显然不可能给一个\(f\)减一.

但是这样会出现一个问题是,我们其实并不能选择任意一个\(f\)进行更改.那怎么办呢?事实上,只要过程中满足\(\forall 1 < i \leq n , f_i \geq f_{ i - 1 }\),那我们的修改就一定可以实现.因为这等价于把后面的一个\(A\)挪前面去了.这样我们一开始进行操作使得整个序列满足\(f_i \geq i\).

于是就有了一个\(O ( n^3 )\)的dp,即设\(dp_{ i , k }\)表示跳到\(i\)跳了\(k\)步的最小花费,每次跳到\(j\)的话要求把\([ i , n ]\)上的所有\(f\)\(j - 1\)\(\max\).

仔细观察上面的过程,不难发现答案关于\(k\)是凸的,用wqs二分去掉第二维,于是现在就有了一个\(O ( n^2 \log n )\)的一维dp.

不妨设\(sum_x\)表示\(f_i \leq x\)\(f_i\)之和,\(cnt_x\)表示这样的\(f_i\)的个数,再设\(pre_i\)\(f\)的前缀和.由于\(f_i \geq i\),不难发现:

\[ \begin{aligned} dp_i & = dp_j + \\ ( i - 1 ) ( cnt_{ i - 1 } - j + 1 ) - sum_{ i - 1 } + pre_{ j - 1 } - val \end{aligned} \]

其中\(val\)是wqs二分出来的惩罚量.然后如果能选前面的\(i\)尽量选靠前的.再就是dp过程中需要记录跳了几步,但是不作为dp的维度而是内容.

显然可以斜率优化,于是复杂度\(O ( n \log n )\).

第六题

考虑Hall定理,设最后的盒子是\(x_1 , x_2 , \cdots , x_k\),将它们从大到小排序,那么合法当且仅当:

  1. \(\sum x = \sum a\).

  2. \(\forall k , \sum_{ i = 1 }^k x_i \leq \sum_{ i = 1 }^n \min \{ k , a_i \}\).

为啥是这个方向的Hall定理呢?因为我们肯定要对\(x\)做一个背包的问题,这个时候肯定是对后面那一个已知的操作会比较好.

然后就直接dp.把\(b\)从大到小排序,\(f_{ i , j , k }\)表示当前考虑前\(i\)\(b\),选了\(j\)个,和为\(k\)是否可行,用bitset优化一下得到\(O ( \frac{ mS^2 }{ w } )\)的算法.

但是实际上,考虑到\(m\)其实是\(\sqrt{ S }\)级别的,再注意到dp的过程中,\(j \leq \frac{ S }{ b_i }\),因此\(\sum max_j = O ( S \log S )\),所以这个算法是\(O ( \frac{ S^2 \log S }{ w } )\)的.

实现可以使用滚动数组.然后压位的话要压掉最后一维.

dp的话是下面这样的:

\[ \begin{aligned} dp_{ i , j , k } & \rightarrow dp_{ i + 1 , j , k } \\ dp_{ i , j , k } & \rightarrow dp_{ i , j + 1 , k + b_i } \end{aligned} \]

算的时候记得删掉过大的\(k\).

看到这种dp可能第一反应是考虑能不能交换dp状态和dp值,但是这个哪一维状态也不是和状态是单调的.

至于构造方案,暴力用堆一个一个做.

组合数学

第一题

https://www.luogu.com.cn/problem/AT_jsc2019_qual_f

比较牛.首先千万要看清楚不是每个点的值在\([ L , R ]\)之间而是和在\([ L , R ]\)之间!

然后考虑后者怎么做.注意到如果是第\(M\)大等于第\(M + 1\)大的话,中间那一段会是一段连续的,这个特别难搞.所以我们考虑求第\(M\)大不等于第\(M + 1\)大,这样前\(M\)个和后\(N - M\)个数字其实就分开了.而且因为前后没有相等的数字,我们很容易把它们乱序合并起来.

因此接下来的关键在于把前后分开,假设\(a_M = x\),那么前\(M\)个数字大于等于\(x\),后\(M\)个数字小于\(x\).不妨假设此时全局和为\(s\),那我们如何解决这个问题呢?

首先较大的那几个可以隔板法做,较小的那几个是个经典容斥:枚举有几个大于等于\(x\)的,这个数量不会超过\(\frac{ R }{ x }\),然后剩下的暴力隔板.

写式子之前考虑上面那个\(s\)怎么办,总不能暴力枚举,其实写出来也可以用二项式技巧去掉,但是更重要的是,为啥你不转化成和在\([ 0 , R ]\)的答案减去和在\([ 0 , L - 1 ]\)的答案呢?这下做完了.

于是我们只考虑限制是\([ 0 , R ]\).

这个时候我还在想要把左右两边分开求答案然后卷起来,但是这样还是避免不了枚举一边的和.事实上,我们可以把二者放在一起做容斥.下面式子会给出一个显式的表达.另外就是,有一个很大的问题在于我们如何钦定\(a_M = x\),这一点其实是难以做到的.但我们可以钦定\(a_M \geq x , a_{ M + 1 } < x\),然后再减去\(a_M \geq x + 1 , a_{ M + 1 } < x\).为了方便,我们不妨设\(a_M \geq x , a_{ M + 1 } \leq y\)的答案是\(f ( x , y )\),然后我们要求的就是\(\sum_{ x } f ( x , x - 1 ) - f ( x + 1 , x - 1 )\).

接下来写一下\(f ( x , y )\)的式子:

\[ f ( x , y ) = \sum_{ i = 0 } \binom{ N - M }{ i } ( - 1 )^i \binom{ R - Mx - i ( y + 1 ) + N }{ N } \]

乍一看不太能算,实际上注意到\(R - Mx - i ( y + 1 ) \geq 0\),由于\(x , y\)同级别,这意味着\(i\)大致是\(\frac{ R }{ x }\)级别的.于是就是一个调和级数复杂度.

第二题/第三题

https://www.luogu.com.cn/problem/CF1264D2

直接做的hard version.

首先我们发现,不妨我们最后取出来的串一定是个\(( ( ( \cdots ) ) )\)这样的结构.再进一步,我们找到这个结构在原串上的分界点,设其左侧有\(s_l\)\((\),右侧有\(s_r\)\()\),那么这个串的长度一定形如\(\min \{ s_l , s_r \}\),由于随着分界点的右移,\(s_l\)增大,\(s_r\)减小,因此一定是它俩相等的时候最优秀.

于是我们考虑枚举分界点,对于每个分界点枚举答案.不妨设左侧有\(a_l\)个问号,总共有\(a\)个问问号,答案显然是:

\[ \begin{aligned} & \sum_{ k } k \binom{ a_l }{ k - s_l } \binom{ a - a_l }{ k - s_r } \\ = & \sum_{ k } ( k - s_l ) \binom{ a_l }{ k - s_l } \binom{ a - a_l }{ k - s_r } + \sum_{ k } s_l \binom{ a_l }{ k - s_l } \binom{ a - a_l }{ k - s_r } \\ = & a_l \sum_{ k } \binom{ a_l - 1 }{ k - s_l - 1 } \binom{ a - a_l }{ k - s_r } + s_l \sum_{ k } \binom{ a_l }{ k - s_l } \binom{ a - a_l }{ k - s_r } \\ = & a_l \sum_{ k } \binom{ a_l - 1 }{ a_l - k + s_l } \binom{ a - a_l }{ k - s_r } + s_l \sum_{ k } \binom{ a_l }{ a_l - k + s_l } \binom{ a - a_l }{ k - s_r } \\ = & a_l \binom{ a - 1 }{ a_l + s_l - s_r } + s_l \binom{ a }{ a_l + s_l - s_r } \end{aligned} \]

不过这里有个问题啊,那就是\(a = 0\)怎么办,扩域的二项式我其实是不太会算的.于是我特判了\(a = 0\).

第四题

https://www.luogu.com.cn/problem/AT_arc146_e

由于相同值域相互间有限制,不妨考虑值域那一维扫一下.

进一步地,我们考虑维护若干个上升的直线,然后每次可以选择把两条直线并起来成为一个峰,或者凭空分裂出两条直线作为一个谷.维护直线数量并且从下往上扫就可以了.

但是你注意一个问题,我们是不能先分裂出两条直线,再把它俩合并起来的.考虑能不能设计一点自适应的东西.当前的直线数量一定是偶数,然后我们每隔一个判断是否要合并,或者直接在一半的空位置上判断是否要分裂就行.更具体地,我们设\(f_{ i , j }\)表示当前有\(j\)个位置能放\(i\)的答案.显然\(j = b_i\),所以这一维看上去是没用的.

但是我们仔细想一想,我们要维护若干条折线.这些折线是有左右端点的,我们需要做的就是要么加入一条折线,要么合并两条折线,这两个操作都会带来一个空位置.而一条不操作的折线会带来两个空位置.其实相当于每个操作减少了一个空位置.不过有一个问题啊,我们只能通过\(b_i\)得知有多少个空位置,却不知道有多少条折线.事实上空位置数量=折线端点数量+操作次数.也就是说,和dp关系比较大的是折线数量,但我们只能推测出空位置数量.这下这下了.

但是但是但是,我们写一个\(O ( n^2 )\)的dp,\(f_{ i , j , 0 / 1 , 0 / 1 }\)表示当前做到\(i\),有\(j\)条折线,左端点是否已经选定,右端点是否已经选定.为啥要记录后两维呢?因为这不是环,这是一个排列,最左侧端点和最右侧端点是有可能直接停步的.因此我们还得讨论这个.说实话有点麻烦,所以我们先忽略左右端点,假设它们一直延伸.不妨设\(k = cnt_{ merge } - cnt_{ split }\),自然有\(k = 2 j - b_i\).不放在设\(w = cnt_{ split } , cnt_{ merge } = k + w\),再设\(F ( n , m )\)为将\(n\)个无编号球放到\(m\)个有编号盒子(盒子可空)的方案数,不难发现\(F ( n , m ) = \binom{ n + m - 1 }{ m - 1 }\).那我们有:

$$ \[\begin{aligned} f_{ i - 1 , j } \sum_{ w \geq 0 } \binom{ j - 1 }{ k + w } F ( w , j - w - k + 1 ) & \rightarrow f_{ i , j - k } \\ f_{ i - 1 , j } \sum_{ w } \binom{ j - 1 }{ k + w } \binom{ j - k }{ j - w - k } & \rightarrow f_{ i , j - k } \\ f_{ i - 1 , j } \binom{ 2 j - k - 1 }{ j } & \rightarrow f_{ i , j - k } \\ \end{aligned}\]

$$

用范德蒙德卷积的时候一定要注意,这个东西是扩域后的二项式,因此一定要在意一下枚举量是否取遍整数,这里是发现如果\(w < 0\),那么后面那个组合数一定是\(0\).

原本其实很怕这个转移,因为觉得很麻烦,但其实写出来就不麻烦了.甚至加两维也是好做的,我们不妨设后两维的和为\(t\),就是几个端点是挂的,我们仍然有:

\[ \begin{aligned} b_i & = 2 ( j - k ) + cnt_{ merge } - cnt_{ split } - t + \Delta t \\ k & = 2 j - t + \Delta t - b_i \end{aligned} \]

其中\(\Delta t\)是决定在这里停步的端点数量,\(t\)是停步后的端点数量,\(j - k\)是做完选择后,在\(i\)处的折线数量,两个\(cnt\)都是在做选择的过程中所做的merge和split的抉择数量.这样我们就完成了转移.

没完没完,差点就寄了.如果左右端点没有确认,那么我们是可以在左边或者右边split的.令\(t ' = t - \Delta t\),于是重推一下式子:

$$ \[\begin{aligned} f_{ i - 1 , j } \sum_{ w \geq 0 } \binom{ j - 1 }{ k + w } F ( w , j - w - k + 1 - t ' ) & \rightarrow f_{ i , j - k } \\ f_{ i - 1 , j } \sum_{ w } \binom{ j - 1 }{ k + w } \binom{ j - k - t ' }{ j - w - k - t ' } & \rightarrow f_{ i , j - k } \\ f_{ i - 1 , j } \binom{ 2 j - k - 1 - t ' }{ j - t ' } & \rightarrow f_{ i , j - k } \\ f_{ i - 1 , j } \binom{ b_i - 1 }{ j - t ' } & \rightarrow f_{ i , j - k } \\ \end{aligned}\]

$$

这一步步是怎么加上去的呢?实际上是按照先merge,再slipt,再stop来做的.因为split一定要放在最后,防止split了一个stop的点或者split在了一个merge好了的区间中.

但是这个转移是\(O ( n \sum b )\)的,咋办呢?我们本着先冷静再冷静始终冷静的想法,去考虑一下\(j\)的取值:不难发现在上面的操作过程中,基本都是一个\(j\)对应一个\(j - k\),只有在\(t\)变化的时候才会增加一个状态,这意味着\(O ( \sum cnt_t ) = O ( \sum cnt_j )\),因此总空间是\(O ( n )\)的,于是时间也是\(O ( n )\)的,拿map维护一下这个dp就行,时间退化至\(O ( n \log n )\).

再有一个细节就是组合数怎么办,哦,\(b\)这么小,那没事了.

第五题

https://www.luogu.com.cn/problem/P6276

首先显然不会破坏环的形态.也就是说,你把所有置换环的长度求出来然后求lcm就是一个排列的阶.这直接启发我们对于每个质数分开求贡献.

更进一步地,我们发现只要排列中有\(p^k\)的倍数,我们就直接贡献一个\(p\)作为答案.因此我们枚举\(q = p^k\)并统计有多少个排列至少有长度为\(q\)的倍数的环.这都至少了,直接容斥就行,我们设当前有\(i\)个点,自然有:

\[ \begin{aligned} f_{ i } & = \sum_{ q | k } - f_{ i - k , j - 1 } \binom{ i - 1 }{ k - 1 } ( k - 1 ) ! \\ & = \sum_{ q | k } -{ ( i - 1 ) }^{ \underline{ k - 1 } } f_{ i - k , j - 1 } \end{aligned} \]

\(\sum_{ q | i } - f_i \times ( n - i ) ! \times \binom{ n }{ i }\)就是答案.这样复杂度是\(O ( \sum ( \frac{ n }{ q } )^2 ) = O ( n^2 )\),事实上要更少,因为你发现我们只会对某个\(q = p^k\)做这个东西.

另外由于模数不确定,我们还要对着每个\(i\)预处理下降幂,有点难蚌的.

第六题

https://www.luogu.com.cn/problem/AT_agc060_d

ps:本题选入笔记:常见套路-组合意义-Example3.

这题听了三遍,直接抄笔记.

不妨设\(C_p = \{ i | p_i > p_{ i + 1 } , 1 \leq i < n \}\).

用一下组合意义,注意到答案等于:

\[ \sum_{ S } ( \sum_{ p } [ S = C_p ] )^2 \]

中间那个地方看上去是经典的计数容斥,我们对着它做容斥:

\[ \sum_{ S } ( \sum_{ p } [ S = C_p ] )^2 = \sum_{ S } ( \sum_{ S \subseteq T } \sum_{ p } ( - 1 )^{ | T | - | S | } [ T \subseteq C_p ] )^2 \]

这个咋做呢?我们考虑用组合意义展开:

\[ \begin{aligned} & \sum_{ S } ( \sum_{ S \subseteq T } \sum_{ p } ( - 1 )^{ | T | - | S | } [ T \subseteq C_p ] )^2 \\ = & \sum_{ S } \sum_{ S \subseteq T_1 , T_2 } ( - 1 )^{ | T_1 | + | T_2 | } ( \sum_{ p } [ T_1 \subseteq C_p ] ) ( \sum_p [ T_2 \subseteq C_p ] ) \end{aligned} \]

注意到\(S\)屁用没有,直接交换枚举顺序.

\[ \begin{aligned} & \sum_{ S } \sum_{ S \subseteq T_1 , T_2 } ( - 1 )^{ | T_1 | + | T_2 | } ( \sum_{ p } [ T_1 \subseteq C_p ] ) ( \sum_p [ T_2 \subseteq C_p ] ) \\ = & \sum_{ T_1 , T_2 } 2^{ | T_1 \cap T_2 | } ( - 1 )^{ | T_1 | + | T_2 | } ( \sum_{ p } [ T_1 \subseteq C_p ] ) ( \sum_p [ T_2 \subseteq C_p ] ) \end{aligned} \]

考虑\(( \sum_{ p } [ T_1 \subseteq C_p ] )\)怎么求,注意到这等价于所有\(T_1\)中的位置全都被钦定为\(>\),而其他位置任意,如果我们设所有以大于号连接的部分的长度为\(l_1 , l_2 , . . . , l_k\),那么这里的答案就是\(n ! \prod_{ i = 1 }^k \frac{ 1 }{ l_i ! }\).

但我们很快发现了难点:\(2^{ | T_1 \cap T_2 | }\)这个东西是难求的,怎么办呢?

我们考虑一下这个东西的意义:其实也就是在\(T_1\)\(T_2\)中都是\(>\)的位置,这个好像不太好求,因为\(>\)是很平常的,但如果取补集就不一样了,取补集后意味着都是任意的位置的数量,而我们上面已经发现了:如果有一个位置对前后两个数字的约束是独立的,那我们可以把前后两个位置拆开.于是我们有:

\[ \begin{aligned} & \sum_{ T_1 , T_2 } 2^{ | T_1 \cap T_2 | } ( - 1 )^{ | T_1 | + | T_2 | } ( \sum_{ p } [ T_1 \subseteq C_p ] ) ( \sum_p [ T_2 \subseteq C_p ] ) \\ = & \sum_{ T_1 , T_2 } 2^{ ( ( n - 1 ) - | T_1 \cup T_2 | ) - ( n - 1 ) } ( - 2 )^{ | T_1 | + | T_2 | } ( \sum_{ p } [ T_1 \subseteq C_p ] ) ( \sum_p [ T_2 \subseteq C_p ] ) \\ = & 2^{ 1 - n } ( n ! )^2 \sum_{ T_1 } ( ( - 2 )^{ | T_1 | } \frac{ 1 }{ \prod l_{ 1 , i } ! } ) \sum_{ T_2 } ( ( - 2 )^{ | T_2 | } \frac{ 1 }{ \prod l_{ 2 , i } ! } ) 2^{ n - 1 - | T_1 \cup T_2 | } \end{aligned} \]

其中\(n - 1 - | T_1 \cup T_2 |\)意味着均不在\(T_1\)\(T_2\)中的位置的数量.为了给每一段连续的\(>\)都分配权值,我们进行一个细小的修改:

\[ 2^{ - 1 - n } ( n ! )^2 \sum_{ T_1 } ( ( - 2 )^{ | T_1 | + 1 } \frac{ 1 }{ \prod l_{ 1 , i } ! } ) \sum_{ T_2 } ( ( - 2 )^{ | T_2 | + 1 } \frac{ 1 }{ \prod l_{ 2 , i } ! } ) 2^{ n - 1 - | T_1 \cup T_2 | } \]

写到这里应该就能发现,接下来必然要对\(n - 1 - | T_1 \cup T_2 |\)做整体操作.那我们再这么搞可能就很难受,我们采取这样的方式:对\(T_1\)\(T_2\)求补集,这样它们的含义就变成了除了集合中的元素,剩下的全部被钦定为了\(>\),我们自然有:

$$ \[\begin{gathered} 2^{ 1 + n } ( n ! )^2 \sum_{ T_1 } ( \frac{ 1 }{ ( - 2 )^{ | T_1 | + 1 } } \frac{ 1 }{ \prod l_{ 1 , i } ! } ) \sum_{ T_2 } ( \frac{ 1 }{ ( - 2 )^{ | T_2 | + 1 } } \frac{ 1 }{ \prod l_{ 2 , i } ! } ) 2^{ | T_1 \cap T_2 | } \\ \end{gathered}\]

$$

这里已经很显然了,我们大概要做一个不断加段的做法,那此时\(| T_1 \cap T_2 |\)这个限制就显得尤其强,如果只是\(S \subseteq T_1 , T_2\)就会好做很多:我们可以钦定\(S\)作为分界线,然后把两边的东西卷起来.因此我们暴力拆开后面的式子:

$$ \[\begin{aligned} & 2^{ 1 + n } ( n ! )^2 \sum_{ T_1 } ( \frac{ 1 }{ ( - 2 )^{ | T_1 | + 1 } } \frac{ 1 }{ \prod l_{ 1 , i } ! } ) \sum_{ T_2 } ( \frac{ 1 }{ ( - 2 )^{ | T_2 | + 1 } } \frac{ 1 }{ \prod l_{ 2 , i } ! } ) 2^{ | T_1 \cap T_2 | } \\ = & 2^{ 1 + n } ( n ! )^2 \sum_{ S } \sum_{ S \subseteq T_1 } ( \frac{ 1 }{ ( - 2 )^{ | T_1 | + 1 } } \frac{ 1 }{ \prod l_{ 1 , i } ! } ) \sum_{ S \subseteq T_2 } ( \frac{ 1 }{ ( - 2 )^{ | T_2 | + 1 } } \frac{ 1 }{ \prod l_{ 2 , i } ! } ) \\ \end{aligned}\]

$$

\(f ( T ) = \sum_{ S \subseteq T } ( \frac{ 1 }{ ( - 2 )^{ | T | + 1 } } \frac{ 1 }{ \prod l_{ 2 , i } ! } ) \\\),则原式即:

\[ 2^{ 1 + n } ( n ! )^2 \sum_{ S } ( \sum_{ S \subseteq T } f ( T ) )^2 \]

考虑下面这个东西怎么求:

\[ \sum_{ S } ( \sum_{ S \subseteq T } f ( T ) )^2 \]

注意到,如果我们把每一段(\([ T_i , T_{ i + 1 } )\))的贡献求和,那么\(f ( T )\)相当于这些和乘起来,那么\(( \sum_{ S \subseteq T } f ( T ) )^2\)就是这些和的平方乘起来.换句话说,我们自然有\(ans_n = \sum_{ m } ans_{ n - m } g^2_{ m }\),其中\(g_m\)表示长度为\(m\)的一段的贡献之和.而\(g_{ n } = \sum_m g_{ n - m } \frac{ 1 }{ - 2 m ! }\).二者都可以使用分治FFT或多项式求逆解决.更进一步地,\(h_i = \frac{ 1 }{ - 2 i ! } , G = \frac{ 1 }{ 1 - H } , F = \frac{ 1 }{ 1 - G }\).

这题还有一个做法:tyy的变魔术做法.

还是容斥,考虑将\(( > , > )\)容斥掉,这样我们有若干种对:\(2 ( < , < ) , 1 ( e , e ) , - ( e , < ) , - ( < , e )\),然后我们发现两个序列联系得太紧了,我们考虑分配系数:\(< \rightarrow \sqrt{ 2 }\),\(e \rightarrow - \frac{ 1 }{ \sqrt{ 2 } }\),但是这样发现\(( e , e )\)算错了,你把剩下的补上就行.你会发现这个式子和上面我们推的是等价的,但是变魔术.

第七题

https://www.luogu.com.cn/problem/CF1188E

首先发现肯定不可能所有颜色都点过,那么至少有一个颜色没点过.

然后呢?考虑操作序列和答案序列是否一一对应,事实上确实是这样,因为至少有一个颜色没点过,因此可以找到下降最多的那个颜色,这样就知道了总共操作过程.然后由每个颜色减少的次数,就可以知道每种颜色操作的次数.接下来就只需要对于每种操作次数判断是否能在全程非负的前提下做完.

一个显然的必要条件是,不妨设\(l_i\)为第\(i\)种颜色操作次数,\(a_i + l_i k \geq \sum l\).但是操作过程中有可能有负数,这个怎么办呢?注意到为了让\(a\)不变负数,我们必须要让它在\(a_i + 1\)时刻前完成至少一次操作,在\(a_i + k + 1\)时刻前完成至少两次操作……

注意到只需要满足第一个条件就行,因为后面的条件只需要把当前所有需要做的人排个序,挨个做.显然就一定会满足条件.根据Hall定理,从前往后判断每一时刻是不是能填满前面的每个人,并将它和\(\max a\)\(\min\)得到\(maxt\),这就是\(\sum l\)的最大值.不难发现只要\(\sum l \leq maxt\)就一定有解.枚举\(t\)计算每个\(a\)需要的次数,剩下的次数随意分配,注意要保证\(\min l = 0\),要减去\(\min l \geq 1\)的情况.

事实上啊,只要我们得知了前一个要求条件然后枚举\(t\)就行,时刻维护着复杂度就对,根本不用管后面的东西.

二项式反演

第一题

https://www.luogu.com.cn/problem/P1595

弱智题.

第二题

https://darkbzoj.cc/problem/4665

直接容斥,用dp出前\(i\)个人,钦定\(j\)个人拿到了自己的糖果的方案数.然后容斥起来就行.

第三题

https://www.luogu.com.cn/problem/P4859

ps:本题选入笔记:容斥与反演-容斥-Example3.

首先可以用dp+双指针得到\(f_i\)表示勒令\(i\)对满足条件的方案数.把\(k\)的定义改为恰好\(k\)对满足条件的显然是同强度的.

我们接下来仍然考虑容斥,首先,我们需要找出全集\(U\),以及刻画\(U\)中元素的\(P_i\)(条件).

等一下,这个好像不好刻画?

我们先回归一下容斥的本质:考虑每个元素的贡献.注意到恰好\(a\)对的方案会被恰好\(b\)对的方案计算\(\binom{ b }{ a }\)次.我们再考虑一种方式理解容斥:我们一步一步把正确的答案消出来:简单来说,我第一步让所有恰好为\(k\)的方案贡献为\(1\),其它的可能也有贡献,但我们忽略他们.第二步让所有恰好为\(k + 1\)的方案贡献为\(0\),第三步以此类推.于是这个题,我们考虑也这么做:这样第一步令\(ans = f_k\),第二步除去其中被多算的\(k + 1\),这一步令\(ans - = \binom{ k + 1 }{ k } f_{ k + 1 }\).这个时候,我们再考虑\(k + 2\)的贡献:它将在\(f_k\)时贡献\(\binom{ k + 2 }{ k }\)次,在\(f_{ k + 1 }\)时贡献\(- \binom{ k + 2 }{ k + 1 } \binom{ k + 1 }{ k } = - \binom{ k + 2 }{ k } \binom{ 2 }{ 1 }\)次,那它现在的贡献还有:\(- \binom{ k + 2 }{ k }\)次.以此类推,可以得到\(ans = \sum_{ i = k }^n f_i ( - 1 )^{ i - k } \binom{ i }{ k }\).

等一下,这也太麻烦了,就不能从集合的角度分析嘛?

冷静一下,如果我们要做容斥,我们必须考虑每个元素单独的贡献,但是在这个题中,每个元素并没有单独的贡献,而是整个集合需要满足性质才能贡献.也就是说,我们无法分析每个\(P_i\).而考虑集合就需要将集合分类,从而使用二项式反演.

换句话说,这个定义在集合上的函数并不满足可加性.

换句话说,我们要用容斥,就一定要刻画\(P_i\),因为只有这个时候,我们才能通过分析满不满足\(P_i\)的解集的交并来实现.

再换句话说,大部分的所谓的容斥其实都和集合没啥关系,我们做容斥就是需要逐个考虑贡献,把它们贡献全都杀成\(1 / 0\)就行.

第四题

https://darkbzoj.cc/problem/2839

简单二项式反演.(埋下伏笔)

第五题

https://codeforces.com/gym/101933/problem/K

考虑如果用小于等于\(k\)种是好计算的(设为\(f_k\)),显然\(f_k = k ( k - 1 )^{ n - 1 }\),对着做二项式反演.

一开始想直接拿\(f_k - f_{ k - 1 }\),实际上不行,因为颜色之间是有区别的.

第六题

https://www.luogu.com.cn/problem/P6478

这个题面真你妈逆天.

发现我们要求恰好\(k\)个,自然的想法是想到钦定\(k\)个,不妨假设钦定\(k\)个的答案是\(f_k\),自然有:

\[ \begin{aligned} f_k & = \sum_{ i = k }^n \binom{ i }{ k } ans_i \\ ans_k & = \sum_{ i = k }^n \binom{ i }{ k } ( - 1 )^{ i - k } f_i \end{aligned} \]

至于\(f\)怎么求,你直接dp,设\(dp_{ i , j }\)表示当前在\(i\),子树内部选了\(j\)对祖先后代,那我们就知道目前子树内还有多少可以和\(i\)配对.合并是个树形背包.

第七题

https://www.luogu.com.cn/problem/CF1228E

ps:本题选入笔记:容斥与反演-反演-二项式反演-Example3.

不妨设至多有\(i\)\(j\)列最小值为\(1\)的答案是\(f_{ i , j }\),恰好有\(i\)\(j\)列最小值为\(1\)的答案是\(g_{ i , j }\),注意到:

\[ f_{ n , m } = \sum_{ i = 0 }^n \binom{ n }{ i } \sum_{ j = 0 }^m \binom{ m }{ j } g_{ i , j } \]

\(h_{ n , m } = \sum_{ j = 0 }^m \binom{ m }{ j } g_{ n , j } \\\),则\(f_{ n , m } = \sum_{ i = 0 }^n \binom{ n }{ i } h_{ i , m } \\\),而\(f_{ n , m } = k^{ nm } ( k - 1 )^{ NM - nm }\).做两次二项式反演得到\(g\).

写到这里发现一个问题(其实是我发现问题后把上面原本写错的给改了),为啥\(f_{ n , m } \ne \binom{ N }{ n } \binom{ M }{ m } k^{ nm } ( k - 1 )^{ NM - nm }\)呢?我们写成子集反演形式看看:

$$ \[\begin{aligned} f_{ S , T } & = \sum_{ s \subseteq S } \sum_{ t \subseteq T } g_{ s , t } \\ f_{ S , T } & = \sum_{ s \subseteq S } h_{ s , T } \\ h_{ S , T } & = \sum_{ t \subseteq T } g_{ S , t } \\ \end{aligned}\]

$$

做子集反演:

\[ \begin{aligned} f_{ S , T } & = k^{ | S | \times | T | } ( k - 1 )^{ NM - | S | | T | } \\ h_{ S , T } & = \sum_{ s \subseteq S } ( - 1 )^{ | s | - | S | } f_{ s , T } \\ g_{ S , T } & = \sum_{ t \subseteq T } ( - 1 )^{ | t | - | T | } h_{ S , t } \end{aligned} \]

把集合改成集合大小就可以发现问题所在:

换句话说,\(g_{ n , m }\)本身就包含了所有\(| S | = n , | T | = m\)的情况的和,并且在组合数\(\binom{ m }{ j }\)那里就找到了唯一确定的\(f_{ s , t }\),因此\(f_{ n , m }\)是唯一确定的.这意味着这里\(f\)\(n , m\)并非集合之和,而是已经确定的集合的大小.

啥?这和我平常接触的二项式反演不一样啊?不说别的,第四题(BZOJ2839)的式子是这样的:

\[ \begin{aligned} f_i & = 2^{ 2^{ n - i } } \binom{ n }{ i } \\ f_k & = \sum_{ i = k }^n \binom{ i }{ k } g_i \\ g_k & = \sum_{ i = k }^n ( - 1 )^{ i - k } \binom{ i }{ k } f_i \end{aligned} \]

冷静一下,二项式反演的公式肯定没错,那也就一定是下面这几句出现了问题:

\[ f_{ n , m } = \sum_{ i = 0 }^n \binom{ n }{ i } \sum_{ j = 0 }^m \binom{ m }{ j } g_{ i , j } \]

这个问题其实非常显然,我们的\(g_{ i , j }\)定义为所有\(| S | = i , | T | = j\)的答案之和.\(f\)也是这么定义的,那这个式子就是错的,应该写成:

\[ f_{ n , m } = \sum_{ i = 0 }^n \binom{ N - i }{ n - i } \sum_{ j = 0 }^m \binom{ M - j }{ m - j } g_{ i , j } \]

这样才是在不确定的那些行列中选择组合数,而不是在确定的那些行列中选.

但这样又有一个问题,就是这个题的特殊性,这个题要求\(g_{ N , M }\),那此时\(g\)怎么定义不应该是一样的吗?

当然不一样,二项式反演讲究统一性,所有的定义必须遵循一个统一的原则,不然如果什么样子的函数都能反演,那一般的反演就不是一个需要解方程才能完成的东西了.

回到第四题,再看一遍这个式子:

$$ \[\begin{aligned} f_k & = \sum_{ i = k }^n \binom{ i }{ k } g_i \\ \end{aligned}\]

$$

这个定义式就非常良性,\(g\)是已知的集合,\(f\)是未知的集合.我们乘上组合数就可以得到对于\(f\)来说已知的集合.因此这个就非常正确.

回到这个题上,为什么我们最后把\(f\)的定义改成\(f_{ n , m } = k^{ nm } ( k - 1 )^{ NM - nm }\)就对了呢?

再看看这个式子:

\[ f_{ n , m } = \sum_{ i = 0 }^n \binom{ n }{ i } \sum_{ j = 0 }^m \binom{ m }{ j } g_{ i , j } \]

这个式子的右边在干这样一件事:那就是在已知\(n\)\(m\)列的集合的前提下,从中选出\(i\)\(j\)列并求\(g\).那么你从哪知道的\(n\)\(m\)列呢?你得组合数啊!

所以,实际上的\(f\)是这样的:

\[ \begin{aligned} f_{ n , m } & = \binom{ N }{ n } \binom{ M }{ m } \sum_{ i = 0 }^n \binom{ n }{ i } \sum_{ j = 0 }^m \binom{ m }{ j } g_{ i , j } \\ f_{ n , m } & = \binom{ N }{ n } \binom{ M }{ m } k^{ nm } ( k - 1 )^{ NM - nm } \end{aligned} \]

好麻烦啊,能不能避免这种需要进一步思考集合意义的问题呢?

考虑二项式反演的第二个形式:

$$ \[\begin{aligned} f ( n ) & = \sum_{ k = n }^N C_n^k g ( k ) \Leftrightarrow g ( n ) = \sum_{ k = n }^N ( - 1 )^{ k - n } C_n^k f ( k ) \\ \end{aligned}\]

$$

不难发现这个式子无论怎么写,前后都一定是从已知集合中选东西.绝对不会出现上面的问题.

因此,我们重新写一下这个题的相关式子,考虑直接正难则反,设\(f '_{ i , j }\)为至少有\(i\)\(j\)列不满足条件的方案数,自然有\(f '_{ i , j } = f_{ N - i , M - j }\).你发现此时一定有:

\[ f '_{ n , m } = \sum_{ i = n }^N \binom{ i }{ n } \sum_{ j = m }^M \binom{ j }{ m } g '_{ i , j } \]

最后答案就是\(g '_{ 0 , 0 }\).

第八题

https://www.luogu.com.cn/problem/CF997C

和上一题差不多,不妨设\(g_{ n , m }\)表示恰好有\(n\)\(m\)列同色的答案,\(f_{ i , j }\)为钦定\(i\)\(j\)列同色的答案,自然有:

\[ g_{ n , m } = \sum_{ i = n }^N ( - 1 )^{ i - n } \binom{ N }{ i } \binom{ i }{ n } \sum_{ j = m }^N ( - 1 )^{ j - m } \binom{ N }{ j } \binom{ j }{ m } f_{ i , j } \]

可以求出\(g_{ 0 , 0 }\)然后再拿全集减一下.

我们求一下\(g_{ 0 , 0 }\):

\[ g_{ 0 , 0 } = \sum_{ i = 0 }^N ( - 1 )^{ i } \binom{ N }{ i } \sum_{ j = 0 }^N ( - 1 )^{ j } \binom{ N }{ j } f_{ i , j } \]

注意到\([ i = 0 \lor j = 0 ]\)的时候算的挺特殊的,因此先把那些算掉,我们就只需要算下面这个东西:

\[ 3 \sum_{ i = 1 }^N ( - 1 )^{ i } \binom{ N }{ i } \sum_{ j = 1 }^N ( - 1 )^{ j } \binom{ N }{ j } 3^{ ( N - i ) ( N - j ) } \]

看后面那一块:

\[ \begin{aligned} & \sum_{ j = 1 }^N ( - 1 )^{ j } \binom{ N }{ j }{ ( 3^{ ( N - i ) } ) }^{ ( N - j ) } \\ = & ( - 1 )^{ [ N \ne 0 \pmod{ 2 } ] } \sum_{ j = 1 }^N ( - 1 )^{ N - j } \binom{ N }{ N - j }{ ( 3^{ ( N - i ) } ) }^{ ( N - j ) } \end{aligned} \]

再看后面那一块:

\[ \begin{aligned} & \sum_{ j = 1 }^N ( - 1 )^{ N - j } \binom{ N }{ N - j }{ ( 3^{ ( N - i ) } ) }^{ ( N - j ) } \\ = & \sum_{ j = 0 }^{ N - 1 } ( - 1 )^j \binom{ N }{ j }{ ( 3^{ N - i } ) }^{ j } \\ = & \sum_{ j = 0 }^{ N } ( - 1 )^j \binom{ N }{ j }{ ( 3^{ N - i } ) }^{ j } - ( - 1 )^N{ ( 3^{ N - i } ) }^N \\ = & ( 1 - 3^{ N - i } )^N - ( - 1 )^N{ ( 3^{ N - i } ) }^N \end{aligned} \]

这样就做完了.

第九题

https://www.luogu.com.cn/problem/P4491

直接二项式反演:

\[ \begin{aligned} f_k & = \sum_{ i = k }^{ m } ( - 1 )^{ i - k } \binom{ m }{ i } \binom{ i }{ k } \binom{ n }{ iS } \frac{ ( iS ) ! }{ ( S ! )^i } ( m - i )^{ n - iS } \\ & = \sum_{ i = k }^{ m } ( - 1 )^{ i - k } \frac{ m ! }{ ( m - i ) ! } \frac{ 1 }{ k ! ( i - k ) ! } \frac{ n ! }{ ( n - iS ) ! } \frac{ 1 }{ ( S ! )^i } ( m - i )^{ n - iS } \end{aligned} \]

\(tag = m ! n !\),自然有:

\[ \frac{ k ! f_k }{ tag } = \sum_{ i = k }^m \frac{ ( - 1 )^{ i - k } }{ ( i - k ) ! } \frac{ ( m - i )^{ n - iS } }{ ( m - i ) ! ( n - iS ) ! ( S ! )^i } \]

注意到枚举量即\(i , k , i - k\),是一个卷积的形式,更进一步地,我们设\(F_k = \frac{ k ! f_k }{ tag } , g_{ i } = \frac{ ( - 1 )^i }{ i ! } , h_i = \frac{ ( m - i )^{ n - iS } }{ ( m - i ) ! ( n - iS ) ! ( S ! )^i } \\\).自然有:

\[ F_k = g_{ i - k } h_i \]

再设\(g_k = G_{ m - k } , G_k = g_{ m - k }\),自然有:

\[ F_k = G_{ m - i + k } h_i \]

ntt即可.

第十题/第十一题

https://www.luogu.com.cn/problem/P4931

ps:本题选入笔记:多项式与生成函数-生成函数-求微分方程

二项式反演:

\[ \begin{aligned} ans_k & = \sum_{ i = k }^n ( - 1 )^{ i - k } \binom{ i }{ k } \binom{ n }{ i } \binom{ n }{ i } i ! ( 2 n - 2 i ) ! 2^i \\ & = \sum_{ i = k }^n ( - 1 )^{ i - k } \frac{ 1 }{ k ! ( i - k ) ! } \frac{ n ! }{ ( n - i ) ! } \frac{ n ! }{ ( n - i ) ! } ( 2 n - 2 i ) ! 2^i \\ & = ( n ! )^2 \frac{ 2^k }{ k ! } \sum_{ i = k }^n ( - 1 )^{ i - k } \frac{ 1 }{ ( i - k ) ! } \binom{ 2 n - 2 i }{ n - i } 2^{ i - k } \\ & = ( n ! )^2 \frac{ 2^k }{ k ! } \sum_{ i = 0 }^{ n } \frac{ ( - 2 )^{ i } }{ i ! } \binom{ 2 n - 2 i }{ n - i } \end{aligned} \]

注意到后者只与\(n - k\)有关,不妨设其为\(f_{ n } = \sum_{ i = 0 }^{ n } \frac{ ( - 2 )^{ i } }{ i ! } \binom{ 2 n - 2 i }{ n - i }\),预处理一下就可以做到\(O ( n^2 + nT )\).

加强版咋做?我们继续看看式子:

\[ \begin{aligned} ans & = ( n ! )^2 \frac{ 2^k }{ k ! } f_{ n - k } \\ f_{ n } & = \sum_{ i = 0 }^{ n } \frac{ ( - 2 )^{ i } }{ i ! } \binom{ 2 n - 2 i }{ n - i } \end{aligned} \]

注意到\(f\)是一个卷积的形式,设其生成函数为\(F_n\),\(g_n = \frac{ ( - 2 )^n }{ n ! } , h_n = \binom{ 2 n }{ n }\),我们自然有\(F = GH\).

考虑\(G\)\(H\)的生成函数形式,先看\(G\),显然用泰勒展开:

\[ G = \sum_{ n \geq 0 } \frac{ ( - 2 x )^n }{ n ! } = e^{ - 2 x } \]

再看\(H\),是一个类似卡特兰数的生成函数,有:

\[ H = \frac{ 1 }{ \sqrt{ 1 - 4 x } } \]

这下简单了,答案是:

\[ ( n ! )^2 \frac{ 2^k }{ k ! } [ x^{ n - k } ] \frac{ e^{ - 2 x } }{ \sqrt{ 1 - 4 x } } \]

现在看\(F\),平方一下有:

\[ ( 1 - 4 x ) F^2 = e^{ - 4 x } \]

两边求导:

$$ \[\begin{aligned} - 4 F^2 + ( 1 - 4 x ) 2 F \times F ' & = - 4 e^{ - 4 x } \\ - 4 F^2 + ( 1 - 4 x ) 2 F \times F ' & = - 4 ( 1 - 4 x ) F^2 \\ ( 2 - 8 x ) F ' & = 16 xF \\ \end{aligned}\]

$$

得到了一个线性递推形式,更进一步地:

\[ \begin{aligned} 2 ( i + 1 ) f_{ i + 1 } - 8 if_i & = 16 f_{ i - 1 } \\ if_i & = 4 ( i - 1 ) f_{ i - 1 } + 8 f_{ i - 2 } \end{aligned} \]

技术总结一下:其实就是你想要得到一个递推式,然后注意到这玩意要写成微分方程的形式,所以开始往那边凑.

第十二题

https://www.luogu.com.cn/problem/P5339

简单题,不妨设当前这个序列中不同颜色的分别有\(a , b , c , d\)个(区别于题面中的\(A , B , C , D\)),自然有:

\[ \begin{aligned} ans & = \sum_{ k = 0 }^n ( - 1 )^k \binom{ k }{ 0 } \binom{ n - 3 k }{ k } \frac{ ( n - 4 k ) ! }{ ( a - k ) ! ( b - k ) ! ( c - k ) ! ( d - k ) ! } \\ & = \sum_{ k = 0 }^n ( - 1 )^k \binom{ n - 3 k }{ k } \frac{ ( n - 4 k ) ! }{ ( a - k ) ! ( b - k ) ! ( c - k ) ! ( d - k ) ! } \end{aligned} \]

然后对最后那个东西做背包就行.

第十三题

https://www.luogu.com.cn/problem/P5400

字符串算法

第一题

https://www.luogu.com.cn/problem/P7114

调和级数加哈希,简单题,场切了.

第二题

https://www.luogu.com.cn/problem/P3526

注意到一个事实:如果这个字符串存在长度为\(k\)的周期,等价于存在长度为\(len - k\)的border,证明是显然的.

考虑从小周期开始向大周期确定,首先可以用KMP求出所有前缀的最大border,然后就可以得到整个字符串的所有border.换句话说,我们实际上是在一步一步确定整个字符串的若干前缀的最大border.

考虑border理论,设\(q\)为最小周期,如果\(2 q \leq n\),也就是原串能写成\(tt \cdots t '\)的形式.我们不妨先求\(tt '\)对应的答案,然后在前面拼\(t\).根据\(\leq \frac{ n }{ 2 }\)的border构成等差序列的结论,这样显然是正确的.

如果\(2 q > n\),此时必定有\(s = tat\),其中\(t\)是border.考虑递归求解\(t\),然后就只需要找到一个\(a\)满足条件,最小的\(a\)是全\(0\),能放的话肯定放,不然我们就放一个\(0 \cdots 01\).

为什么这样一定是对的呢?我们考虑什么时候全\(0\)不合法:

  1. 新增一个长度\(l\)的border,\(l \leq | t | + | a |\):考虑\(l\)的最后一段是一段全\(0\),也就必然意味着\(t\)的最后一段是全\(0\),这么不断推下去就可以说明整个序列都是全\(0\),此时放上\(0 \cdots 01\)必定合法.

  2. 新增一个长度\(l\)的border,\(l > | t | + | a |\):不妨设当前的\(l\)是最大的那个(最小的无意义,因为需要保证\(| l | > | t |\)),此时最短周期必然是\(d = 2 | t | + | a | - l\).由于\(| t | + | a |\)也是周期并且二者之和\(\leq n\),因此必然有\(d | ( | t | + | a | )\).把\(ta\)按照\(d\)长度划分.如果\(d \geq | a |\)必有该串是全\(0\)串,不然考虑此时\(d = | b | + | a |\),\(b\)\(t\)的一段后缀.考虑此时的周期必然\(< | b | + | a |\),首先不可能等于,如果大于的话可以平移一格.不妨假设周期比\(| b | - | a |\)少了\(w\),那么此时必定有\(b\)的前\(w\)个字符是\(0\),但是由于\(0 \cdots 01\)后面第一个\(b\)也往前平移了\(w\)格,因此它的第\(w\)个字符必定是\(1\),这就保证了\(0 \cdots 0 1\)必定合法.

第三题

https://www.luogu.com.cn/problem/P6623

考虑怎么维护所有点权值\(+ 1\)后的结果.一个自然的想法是,如果前\([ 0 , k - 1 ]\)位都是\(1\),或者说\(v \equiv - 1 \pmod{ 2^k }\),那加一后会让第\(k\)位取反.所以我们设\(t_{ i , j , k }\)表示\(i\)的子树内,\(\bmod 2^k\)的结果为\(j\)的权值的数量.发现这个非常容易维护,用启发式合并可以做到\(O ( n \log^2 n )\).

考虑这个权值的变化其实比较有规律,因为是树上的距离的差.我们考虑把距离这个东西做树上差分,设\(v_i = c_i + dis ( i , 1 )\),我们要找到子树内部满足条件的其实就是在找满足:

\[ \begin{aligned} v_i - dis ( x , 1 ) - 1 & \equiv - 1 \pmod{ 2^k } \\ v_i & \equiv dis ( x , 1 ) \pmod{ 2^k } \end{aligned} \]

也就是说我们每次对这个桶中要找的元素很固定,用一下colorful tree的trick可以做到\(O ( n \log n )\).

然后然后,这题还有一个无脑做法是,我们倒着建01trie,这样\(+ 1\)后可以快速更新.

第四题

https://www.luogu.com.cn/problem/CF1535F

我一开始第一反应是对\(n \times len \leq 2 \times 10^5\)这玩意根号分治,但是麻烦得很.

我们来看我当时想的根号分治部分:首先枚举两个字符串然后判断是好做的.我们来看\(n\)很大,\(len\)较小的时候:此时枚举某个串的后缀,并同时枚举其前缀,然后前缀相同的若干个字符是一个trie上的子树,dfn是一个区间,后缀同理,这样就是一个二维数点问题.

冷静看一下上面的过程,你需要判断中间那一段\([ l + 1 , r - 1 ]\)是否是单调不降的序列.那如果我们枚举\(r\),然后直接看满足单调不降的序列最靠左的\(l\)是谁,再看\([ 1 , l ] \cup [ r , n ]\)相同,这样不就直接做完了嘛?总之,先按照字符不同分类,再按照字典序排序,然后枚举\(r\),二分找LCP满足条件的区间,和trie上dfn区间构成一个二维数点,总复杂度\(O ( n \times len \log len )\).

第五题

https://www.luogu.com.cn/problem/P3311

简单题,ACAM上做数位dp.

第六题

https://www.luogu.com.cn/problem/CF1437G

首先肯定可以fail树上树剖,这个做法一眼秒.

然后我看题解发现这个题也可以colorful tree.大概就是你先离线,然后维护时间维的答案,那么所有的修改操作就可以改成将时间在\([ l , r ]\)这段的字数答案取\(\max\).这个是一个二维的问题.

但是,我们按照colorful tree的思路去搞,每次dfs到一个点的时候,把答案加入线段树,在返回的时候撤销.注意colorful tree其实不用撤销,因为它的信息满足可减性,这题不行.然后就实现了单\(\log\)做法.可以使用吉司机,但是没必要,因为查询是单点查询,在每个节点上标记永久化然后一路取\(\min\)就行.

总结一下上面的这个东西是啥啊,就是说,你发现我们查询的内容是到根的一条链的最大值,这个还挺难做的,因为这条链不满足什么区间的性质,但是子树满足,因此想到了我们可以把操作改成对子树取\(\min\).但是这个操作不满足可减性,难以消去.

如果不满足可删除性,我们一般要想想它是不是满足可撤销性,显然是满足的.因此自然想到了colorful tree.

第七题

https://www.luogu.com.cn/problem/CF1483F

这题可能比较像lxl当时讲的那个支配对问题.我们考虑合法的\(( i , j )\)的数量的一个上界.一个自然的发现是,考虑先把所有的串按照长度排个序,然后对于较长的串,去找较小的串是否和它满足条件,一个自然的观察是,对于这个较长的串的每个位置\(i\),最多只有一个串是满足条件的\([ 1 , i ]\)的后缀.因为如果有多个后缀可以选取最长的那个(注意当\(i = len\)的时候要选次长的那个,最长的是这个串本身),于是合法的\(( i , j )\)数量只有\(\sum len\)个.首先这些\(( i , j )\)是有重复的,不过去重很简单.我们现在需要判定是否统计上了\(( i , j )\)\(( k , j )\)使得\(i\)\(k\)的子串,\(k\)\(j\)的子串.不难发现如果有这种情况出现,必然是因为\(k\)\(j\)中的出现位置在某一个\(i\)之后,但是\(k\)中又出现了\(i\),因此它的左端点必然在\(i\)之前.我们维护一个单调栈,每次弹出左端点比当前左端点靠右的那些点,这些一定不会贡献答案.

我本来以为这样就做完了,实际上没有,上面的过程出了什么问题呢?我们确实能删掉所有的\(( i , j )\)使得存在\(( k , j )\)满足\(i\)\(k\)的子串,并且\(i\)不是\(k\)的后缀.但是如果是后缀的话我们是有可能删不掉的.

这个问题怎么解决呢?考虑这种事情会发生当且仅当\(i\)所代表的ACAM的节点是\(k\)的父亲.于是我们用树状数组维护这个东西,具体来说,从大到小判断\(i\)是否合法,并且在这个点上\(+ 1\),用树状数组统计子树内部是否有点就行.注意即使被弹出栈的那些字符串,也需要在这个过程中删去它所有的后缀.

第八题

https://www.luogu.com.cn/problem/CF1110H

考虑一个暴力的想法是,这个\([ l , r ]\)的限制条件其实等价于要求\([ l , r ]\)内的所有数字作为子串出现的次数加起来.把所有的这些字符串全部扔进ACAM,然后对着它dp.不妨设\(dp_{ i , j }\)表示当前走到\(i\)节点,然后后面还可以填\(j\)个位置的答案,自然有:

\[ dp_{ i , j } = \max \{ dp_{ son , j - 1 } \} + cnt_i \]

其中\(cnt_i\)表示\(i\)节点是多少子串的endn,构造方案是简单的.

考虑如何优化,注意到dp部分看上去挺优秀的,难搞的是ACAM的建树.我们不能把所有数字全扔进去.这种区间信息看上去就是如果走到当前,后面全填\(0\)或者后面全填\(9\)都能满足条件,那我们就开摆.更具体地来说,我们发现当前的最靠前的那一位没有用了:以它为开头的一定可以找到一个答案(其实因为填的数位).所以我们直接跳fail把那一位跳掉.

如果说的再形象一点的话就是,我们插入的过程其实很废,对于一些特定的前缀\(x\),它的子树内部会形成一个满十叉树.这个是我们无法接受的.来考虑这个东西怎么办,我们一路dfs到叶子后肯定要跳fail,根据ACAM的建树过程,这等价于跳到\(x\)的fail,因此其实就等价于把\(x\)这一位(或者后面的几位)跳掉.

但是,如果你顺着这个思路想,你开始逐渐剥掉满十叉树,然后一点一点搞,你会做的巨他妈复杂.

我们完全没有必要只在满十叉树的时候才跳跃.换句话说,如果后面填\(len \in [ l , r ]\)长度的字符串全部合法,我们就在这里统计答案,然后继续跳son而不是fail.

我们考虑既然这里填\(len \in [ l , r ]\)都可以,那填\(l - 1\)的长度或者填\(r + 1\)的长度就不一定能全部合法了.只有后面几位填的满足某种条件才能合法.但是你注意啊,我们并不在左端点统计答案,而是在这个串填到某一位(可能是最后一位),然后后面都可以随便填的时候,才统计这里的答案,不一定跳fail.而我们跳fail的时候,会删去若干个前缀字符,这些答案会随着fail链一路传过来.还有一个问题是,如果我们跳fail跳到了被删去的虚拟节点怎么办?这种情况压根不会有贡献:这个被删去的虚拟节点的贡献会被传到它的某个祖先上,然后早早地贡献掉.我们跳到的fail应该是第一个不是虚拟节点的位置.因此这里也不会被更新答案.

这样整个题就是简单的了.

第九题

https://www.luogu.com.cn/problem/P4218

首先有一个\(O ( n^2 )\)的暴力是,我们暴力在\(SAM\)上跑一遍所有的串.我们考虑怎么优化这个东西.

树上路径,想到点分治,我们考虑对于一个分治中心\(x\),求出所有经过它的路径.这个怎么求呢?我们考虑先求出所有\(u \rightarrow x\)的路径,以及所有\(x \rightarrow v\)的路径,假设前者的终点为\(p\),后者的起点为\(p\),那我们可以在\(p\)节点统计答案.但是发现\(u \rightarrow x\)这个东西需要往前加字符,不过这个好做,首先往前加字符等价于在parent tree上跳儿子,而所有的儿子前面的第一个字符肯定是不同的,我们处理出\(son_{ x , c }\)表示在\(x\)这个节点,往前加一个字符\(c\)会到哪个节点.当然这个你实在不行把串反过来也行.

以及为了不让\(u\)\(v\)在同一棵子树内,我们需要对其做容斥.不难发现每次操作和每次容斥的复杂度都是\(O ( m + size )\)的.总复杂度\(O ( n \log n + nm )\),好像不太行.

冷静一下,我们把\(siz\)较小的那些拿上面的暴力处理掉,这样就只有\(siz\)较大的那些会有用了.这个复杂度怎么证明呢?我们考虑点分树.不妨假设它是一棵二叉树(其它的情况是类似的).

考虑将它的第\(B\)层以下的树全部暴力,这里一共有\(2^{ B }\)棵树,每棵复杂度是\(O ( 2^{ 2 ( \log n - B ) } )\)的.

它的第\(B\)层以上的跑上面的点分树,这里一共有\(2^B\)个节点,每个节点要跑一次\(O ( n + m )\)的做法.

平衡一下复杂度,设\(B = \frac{ \log n }{ 2 }\),此时复杂度\(O ( ( n + m ) \sqrt{ n } )\).

动态规划第二期

第一题

https://www.luogu.com.cn/problem/P9318

不合法的情况如此方便,因为两边直接独立了,因此直接考虑二项式反演,设\(f_k\)表示恰好有\(k\)个裂缝,\(g_k\)表示钦定有\(k\)个裂缝,自然有:

\[ \begin{aligned} g_k & = \sum_{ i = k }^w \binom{ i }{ k } f_i \\ f_k & = \sum_{ i = k }^w \binom{ i }{ k } ( - 1 )^{ i - k } g_i \\ ans & = f_0 = \sum_{ i = 0 }^w ( - 1 )^{ i } g_i \end{aligned} \]

考虑设一个高为\(h\),长为\(k\)的段随便填的方案数,显然就是每一层都随便填的方案数,也就是\(w_k = ( F_k )^h ( w_0 = 0 )\),其中\(F_k\)是斐波那契数列的第\(k\)项,那么\(g_i\)就是这玩意做卷积.更具体地,我们设\(g_{ i , j }\)表示目前长度为\(j\),分成了\(i\)段的答案,自然有:

\[ \begin{aligned} g_{ i , j } & = \sum_{ k < j } g_{ i - 1 , k } w_{ j - k } \\ G_i & = W^i \end{aligned} \]

这个生成函数形式其实没啥用,因为模数是\(10^9 + 7\).上述dp的复杂度是\(O ( n^3 )\)的.

冷静一下不要魔怔,我们考虑别二项式反演,直接补集转化,这样就只需要知道最靠前的裂缝.换句话说,我们设\(f_i\)表示当前考虑到前\(i\)列,然后没有裂缝的方案数,不难发现\(f_n = w_n - \sum_{ k = 1 }^{ n - 1 } f_k w_{ n - k }\).这样就是\(O ( w^2 )\)的.

冷静一下,注意到\(wh\)有限制,因此复杂度应该要和\(wh\)有关,考虑对于一个联通的块的答案,你的最右侧一定不是平的,应该是有凹凸的.我们设\(f_{ i , j }\)表示当前dp完了前\(i\)列,在第\(i + 1\)列凸出来了\(j\)个位置.转移的话考虑凹的位置填什么,如果填\(2\)就往后再凸一格,如果填\(1\)就没啥事.具体地:

\[ f_{ n , m } \binom{ h - m }{ k } \rightarrow f_{ n + 1 , k } , k \in [ 0 , h - m ] \]

这个dp的复杂度为\(O ( wh^2 )\).注意到这两个dp的复杂度不同,于是分治,不妨设\(N = wh\),

第一个dp的复杂度是\(O ( \frac{ N^2 }{ h^2 } )\),第二个dp的复杂度是\(O ( Nh )\),当\(h \leq N^{ \frac{ 1 }{ 3 } }\)的时候使用第二个dp,不然使用第一个,复杂度\(O ( N^{ \frac{ 4 }{ 3 } } )\).

第二题

https://www.luogu.com.cn/problem/CF1250D

最重要的观察在于,这题等价于保留最多的区间,使得若其中某两个区间有交,那么它们必定颜色相同,但是同时需要满足一些形如某个区间只能染某种颜色的限制条件.原因很简单,首先原题的意思自然是找到染色方式,使得满足与其有交的区间颜色必定和它相同.那么对于一个满足条件的区间,如果与它有交的区间不满足条件,我们把那个区间删了这个区间也不会不满足条件.于是合法的不会变成不合法,接下来需要说明不合法的不会变成合法.首先是原本已经确定了颜色的区间,这个限制好做.然后是如果一个区间没有确定颜色,那它不能被包括在多个确定了的区间.这等价于,我们对于与右端点相交的所有无色区间全部作为新的右端点来更新.这样后面选的时候就不会错误更新右端点了.

或者我们换一个更清晰的描述,我们现在想要得到一些极长的段,使得这些段两两不交,并且与这些段相交的区间都是一个颜色.那么被完全包含在这个段内的区间显然就是答案,我们要最大化这个.

然后上面形成若干限制条件,但是这个在下面的dp中是好处理的.不过有个细节是,如果有两个相邻的连续段(不一定紧邻)的颜色相同,那么我们上一个区间的后面拖着的无色区间是不必对此产生影响的.这怎么办呢?特判一下同色.

这样的dp就很好设计了,更具体地,设\(f_{ r , k }\)表示目前\([ 1 , r ]\),包含\(r\)的那个区间颜色是\(k\),最多能保留多少个区间.自然有:

\[ [ l , r ] = k \Rightarrow f_{ r , k } \leftarrow cnt_{ l , r , k } + \max_{ i = 0 }^{ l - 1 } f_{ i , k ' } \]

\(g_{ i } = \max_{ k } f_{ i , k }\),我们有:

\[ [ l , r ] = k \Rightarrow f_{ r , k } \leftarrow cnt_{ l , r , k } + \max_{ i = 0 }^{ l - 1 } g_{ i } \]

对于\(g_i\)做前缀\(\max\),这样就只需要枚举\(r , k\).复杂度\(O ( n^2 c )\).

第三题

https://www.luogu.com.cn/problem/CF1158F

考虑如何判断一个串的密度,不妨设它密度为\(P\),我们从左往右找到第一个位置,使得前缀的密度为\(1\),那么显然这个位置的后缀的密度是\(P - 1\),如果小了,那么这个第一个位置所代表的那个数字开头的子序列就不全.如果多了,那显然可以构造出密度至少为\(P + 1\)的子序列.由上面这个描述,我们发现一个密度为\(P\)的序列一定可以分成\(P\)个子段,使得每个子段都出现了\([ 1 , c ]\)中所有的数字.更进一步地,我们如果不是划分,那么\(P\)中一定存在\(P\)个互不相交的子段,使得每个子段都出现了\([ 1 , c ]\)中所有的数字并且每个子段最后的那个元素只出现了一次.顺便我们还可以发现\(p \leq \frac{ n }{ c }\).

由上面,我们可以发现一个状压dp,也就是设\(dp_{ i , j , S }\)表示当前走到\(i\),前面的密度为\(j\),然后如果在后面全出现了\(S\)中的数字,那么密度会变大\(1\).这样给出了一个\(\frac{ n^2 }{ c } 2^c\)的做法.

质数感觉不太行啊,考虑考虑dp,上面的形式看上去就很好dp,设\(dp_{ i , j }\)表示当前在\(i\)然后密度是\(j\)的方案数,再设\(f_{ l , r }\)表示在\([ l , r ]\)中选出一个子序列,\(r\)必选且\(a_r\)只出现了一次的方案数.不妨设\(T_i\)表示\(i\)在这个区间出现的次数,不难发现\(f_{ l , r } = \prod_{ i \ne a_r } ( 2^{ T_i } - 1 )\).这个只需要枚举\(l\)\(r\)就可以\(O ( n^2 )\)算.自然有转移:

\[ dp_{ i , j } = \sum_{ k < i } dp_{ k , j - 1 } f_{ k + 1 , i } \]

不过吧这么转移有一个小问题,那就是我们的\(dp_{ i , j }\)必须是最后一段以\(i\)结尾.那么我们最后统计答案还要算上最后的那一段没有选出\([ 1 , c ]\)的答案.不过这个也好算.

但是还有一个方式,那就是从后往前dp,然后每次放这么一段,对dp取一个后缀和来转移.

总之,这个dp的复杂度是\(O ( \frac{ n^3 }{ c } )\)的.取\(c = \log n\)为两个复杂度的边界,这样总复杂度是\(O ( n^2 \log n )\).

第四题

https://www.luogu.com.cn/problem/CF1175G

显然设\(f_{ i , j }\)为前\(j\)个划分了\(i\)段,自然有:

\[ f_{ i , j } = \min_{ k < j } \{ f_{ i - 1 , k } + ( j - k ) \max_{ l = k + 1 }^j a_l \} \]

第一反应是决策单调性,可惜没有.

不过后面那个形式很简单,我们暴力一点维护这个东西.用单调栈维护出当前哪些后缀的最大值相等,不妨记这个最大值为\(m\).我们改成刷表更新:

\[ f_{ i - 1 , k } + ( j - k ) \max_{ l = k + 1 }^j a_l \rightarrow f_{ i , j } \]

对于每层\(i\)从左往右扫\(k\),然后维护单调栈,然后对于每个点,它对右边的贡献在\(\max_{ l = k + 1 }^j a_l\)不变的情况下,就是一条稳定的一次函数.但是这样还有一个问题,就是我们如何快速求出一个区间的所有的直线.这个的话,我们考虑对于不同的\(\max_{ l = k + 1 }^j a_l\),求出最小的\(f_{ i - 1 , k } - k \max_{ l = k + 1 }^j a_l\),这相当于一个凸包,然后用斜率为\(m\)的直线来切点.然后合并两个凸包可以启发式合并,用链表维护队列.

第五题

https://www.luogu.com.cn/problem/P9312

首先观察到我们可以限制手上的灯笼能照亮的海拔是一段区间,因为我们可以先选择不断扩张,而不是提前买,等到了需要用的时候再买就行.

一个自然的想法是\(f_{ s , l , r }\)表示以\(s\)为起点,当前能走到的海拔高度是\([ l , r ]\).为什么需要记录\(s\)呢?因为可能有不同的区间走出来的海拔高度都是\([ l , r ]\).那我们设\(f_{ l , r }\)为当前海拔最低的那个灯编号是\(l\),最高的那个编号是\(r\).然后我们要知道的就是\(f_{ s , s }\).然后按照区间从大到小dp.这样有一个\(O ( k^3 )\)的做法.

考虑如何优化,不妨假设当前新买的灯笼是第\(u\)个,那么我们分情况讨论一下:

  1. \(f_{ i , u } + c_u \rightarrow f_{ i , j }\).这种情况需要保证\(u\)能买的地方在\(i , j\)的控制区域里,并且需要满足\(u\)的区间和\(i , j\)的区间是相交的.这种情况上也就是需要\(u\)的下界小于等于\(j\)的上界.这个比较好处理,我们从大到小枚举\(j\),等\(f_{ i , u }\)不合法的时候把它删了就是了.

  2. \(f_{ u , u } + c_u \rightarrow f_{ i , j }\).和上面是类似的.

也就是说,我们现在唯一最需要搞定的就是怎么让\(u\)能买的地方在\(i , j\)的控制区域里,不难发现这是一个看上去比较典的线段树维护dp.

事实上有一种更简单的写法,不妨设\(L , R\)为实际控制的海拔范围,\(S , T\)为实际控制的山峰范围,我们先把转移仔细写一下:

  1. \(f_{ l , u } + c_u \rightarrow f_{ l , r } ( R_u > R_r \geq L_u \land u \in [ S_l , T_r ] )\).

  2. \(f_{ u , r } + c_u \rightarrow f_{ l , r } ( L_u < L_l \leq R_u \land u \in [ S_l , T_r ] )\).

  3. \(f_{ u , u } + c_u \rightarrow f_{ l , r } ( L_u < L_l \leq R_u \land R_u > R_r \geq L_u \land u \in [ S_l , T_r ] )\).

按照\(L\)从小到大枚举,按照\(R\)从大到小枚举,那上面的所有转移都是无后效性的.

注意到第三种转移没有意义,我们可以直接改写成:

  1. \(\min \{ f_{ l , u } , f_{ u , u } \} + c_u \rightarrow f_{ l , r } ( R_u > R_r \geq L_u \land u \in [ S_l , T_r ] )\).

  2. \(\min \{ f_{ u , r } , f_{ u , u } \} + c_u \rightarrow f_{ l , r } ( L_u < L_l \leq R_u \land u \in [ S_l , T_r ] )\).

原因在于,我们其实只想要让\(u\)\(l , r\)所代表的区间相交,这个比较重要,其它的都不重要.就算转移是错误的,那样转移一定不优秀.

此刻对于(1)我们想知道的就是固定\(l\)的情况下,按照\(R\)从大到小枚举的贡献,以及对称情况,不难发现这个用堆也是能做的.也就是在\(l\)相同的前提下,如果\(R_i < R_j < R_k\),如果\(k\)不能贡献到\(j\),那么\(k\)必然不能贡献到\(i\),这就保证了堆的正确性.

第六题

https://www.luogu.com.cn/problem/P8294

毛估估的话就是设\(f_{ x , s , t }\)表示在断开\(x\)到父亲这条边时,\(x\)的值来自子树内的点\(s\),然后从父亲换下来的值将要去子树内的\(t\).不难发现\(( x , s , t )\)合法当且仅当\(x = lca ( s , t )\),这样状态数就是\(O ( n^2 )\)的.

来细细写一写转移:

首先,如果\(cnt_{ son } = 0\),显然\(f_{ x , x , x } = d_x\).

如果\(cnt_{ son } = 1\),不妨设其儿子是\(u\),不难发现此时必有\(s_x = x \lor t_x = x\),讨论一下:

\(s_x = x\),那么之间换出去就行,然后因为要一路换下去:

\[ f_{ x , x , t_x } \leftarrow f_{ u , s_u , t_x } + d_x \]

反之,那么要先把\(s_x\)换到\(x\)这里,然后再换出去,此时有:

\[ f_{ x , s_x , x } \leftarrow f_{ u , s_x , t_u } + d_x + d_{ s_x } ( dep_{ s_x } - dep_{ x } ) \]

注意到上述复杂度均为\(O ( n^2 )\).因为枚举一下\(( s_u , t_x )\)\(( s_x , t_u )\)就可以确定\(u\),而\(x\)\(u\)的父亲,自然也可以确定.

这个式子已经给了我们启发了,剩下的类似.有时间再补这个题吧,太精神污染了.

数据结构

第一题

https://www.luogu.com.cn/problem/CF1648D

不妨设\(f_i\)表示从\(( 1 , 1 )\)走到\(( 2 , i )\)的最大收益,显然求出这个后再拼一下第三行的后缀和就是答案.我们枚举覆盖\(( 2 , i )\)的区间是\(k\),此时必然需要满足\(l_k \leq i \leq r_k\).

不妨设\(sum\)表示每一行的前缀和,\(sufsum\)表示第三行的后缀和,注意到转移:

\[ \begin{aligned} - c_k + \max_{ l_k - 1 \leq j < i \leq r_k } \{ f_j \} & \rightarrow f_i \\ - c_k + \max_{ l_k \leq j \leq i \leq r_k } \{ sum_{ 1 , j } - sum_{ 2 , j - 1 } \} & \rightarrow f_i \end{aligned} \]

这个东西即使我们枚举\(k , i\),然后数据结构优化\(j\)来转移它也是艰难的.那咋办呢?我们考虑我们枚举\(k\)的原因是,我们需要保证\(i \leq r_k\).如果我们钦点\(i = r_k\),那我们上面的枚举就只有一维了.也就是需要保证\(i\)右边的点一定走不到,这样我们上面的转移仍然是正确的.至于计算答案,一个反应是把这个\(f\)做一下后缀\(\max\).但其实不对!因为你往后多走点可能多吃到了一点\(a\).

那么怎么处理这个东西呢?考虑如果当前选的这个区间不是最后一个区间,那我从后面的\(r\)走到前面的一个\(i\)再拐到第三行去,显然只会有第二行的一段和的差别,我们把这个差别统计进去就行.但是如果只开了一个区间,也就是从第一行拐下来没到结尾直接拐下第三行了,那么第一行的贡献也要减去.我们可以把\(f_{ i }\)改成\(f_{ i , 0 / 1 }\)来解决这种问题.

于是吧,我们就有了下面这个转移:

\[ \begin{aligned} - c_k + \max_{ l_k - 1 \leq j < r_k } \{ f_{ j , 0 } , f_{ j , 1 } \} & \rightarrow f_{ r_k , 1 } \\ - c_k + \max_{ l_k \leq j \leq r_k } \{ sum_{ 1 , j } - sum_{ 2 , j - 1 } \} & \rightarrow f_{ r_k , 0 } \end{aligned} \]

然后怎么贡献答案呢?首先你不能往左走太多,至少不能超过最后选的那个区间.事实上我们发现最后一定只有一个区间的右端点超过了拐点.因为选择的所有区间一定没有包含关系,而右端点可以对拐点取\(\min\).因此我们枚举当前最靠右的那个区间\(k\),以及最后拐到第三行的点\(i\),自然有:

\[ \begin{aligned} - c_k + \max_{ l_k - 1 \leq j < r_k } \{ f_{ j , 0 } , f_{ j , 1 } \} + \max_{ j < i \leq r_k } \{ sum_{ 2 , i } + sufsum_{ i } \} & \rightarrow ans \\ - c_k + \max_{ l_k \leq j \leq i \leq r_k } \{ sum_{ 1 , j } - sum_{ 2 , j - 1 } + sum_{ 2 , i } + sufsum_i \} & \rightarrow ans \end{aligned} \]

要统计所有\(j < i\)或者\(j \leq i\)的点对的答案在线段树上都是好做的.

第二题

https://www.luogu.com.cn/problem/P9371

考虑如何判断\(x\)是否是这个区间的中位数:我们把大于\(x\)的记作\(1\),小于\(x\)的记作\(- 1\),\(x\)记作\(0\),如果区间和的绝对值小于等于\(x\)的出现次数,那么\(x\)满足条件.

我们先扫值域,这样修改每个点的取值的总复杂度均摊.对于每一个权值\(v\),枚举权值是\(v\)的一个点作为这个区间中最靠左的\(v\),然后考虑找到最大的右端点使得合法,而由于确定了最靠左的\(v\),我们其实是不在乎这个区间左端点是啥的,只要包含这个点就行,不妨设这个点为\(l\).

接下来在每个点记录以这个点的为结尾的所有后缀和(要求左端点小于等于\(l\))的集合.不难发现,这个集合一定是一段区间,因为每个值只有可能是\(\pm 1\)\(0\).于是我们要维护的就是这些点的最大后缀和以及最小后缀和,然后判断这个值与\(x\)的大小关系.用线段树维护这两个东西的\(\max\)\(\min\),能往右跳就往右跳.

有个细节是我们需要保证这些后缀和的左端点小于等于\(l\),这其实等价于直接求\(l\)这里的最小后缀和以及最大后缀和,然后在每个点上只需要存这个点与\(l\)这段区间和即可,这个在\(l\)的移动过程中是好维护的.

至于最大后缀和的合并是简单的.

写起来发现上面那个东西其实不太好搞啊,我们考虑改改描述,上面等价于将每个区间改成最小后缀和\(- x\)出现次数,以及最大后缀和\(+ x\)出现次数,然后只需要判断这个区间是否包含\(0\).好像还是不太好做???

冷静一下,注意到相邻两个位置的最大后缀和相差不超过\(1\),这意味着我们可以维护一段区间的所有区间的并,这必定还是一个区间.然后判断这个并是否包含\(0\),这个就方便线段树上二分了.至于我们的修改操作,无非是以下几种操作:

  1. 对于每个\(l\)以及它的一对后缀和,在线段树上找到最靠右的一个叶子使得这个区间在加上这对后缀和更改后包含\(0\).

  2. 在更改当前处理的值\(v\)的时候,将所有点的值恢复为前缀和.

  3. 在更改当前处理的值\(v\)的时候,将某些点的值置为\(- 1\),将某些点的值置为\(0\).

显然都好做.

第三题

https://www.luogu.com.cn/problem/P7220

ps:本题选入笔记:常见套路-二进制分组-Example1

先考虑没有插入怎么做,注意到所有的线会扫出一个空白区域:这个空白区域由一条折线围成,而所有的点都在折线外或在折线上,更进一步地,在折线外的点没有动,就是初始位置.

这启发我们分开维护,每次扫线的时候更新折线,把该扔进来的扔进来,由于折线上的点\(( x , y )\),随着\(x\)的增大\(y\)不增,因此是简单维护的,用一下平衡树就行.

问题在于如何维护插入点.考虑求出所有能影响到一个询问的区间,把它们扔到线段树上,然后就可以用线段树分治维护这个东西.具体来说,我们在线段树上dfs,每次遇到一个区间,把该搞得全部搞完,然后这个点的位置就留在这里了,在后面dfs到其它的区间后再改.

第四题

https://www.luogu.com.cn/problem/P9168

场上写了\(48 pts\),简单来说就是对于每个\(m\),从下往上合并,然后当某一个时刻某棵子树内人数大于子树大小,就把最菜的那几个给删了.根据Hall定理,这样做显然是正确的.

接下来看怎么优化,首先第一反应肯定是线段树分治,这样我们只需要做加入和撤销,就不需要做删除了.撤销总是好做的.

那么只有加入怎么做呢?这个点能造成的影响无非是以下几种:

  1. 它被加入,没有别的点被删除.

  2. 它被加入,另一个点被删除.

  3. 它没有被加入.

注意到(1)发生当且仅当这个点到根的路径上没有节点是满节点,这个判一下就行.

然后考虑(2),(3),淘汰必然会发生,并且必定是在离插入点最近的那个满的祖先.

这样的话我们需要实现的就是两件事:

  1. 对于一个点,找到离他最近的满的祖先.

  2. 查询子树内部点的最小值.

  3. 支持在点上插入和删除.

这三个操作显然都可以用树剖维护.算上线段树分治,这样就是\(O ( n \log^3 n )\).

不过吧,我们需要说明一件事情:那就是为啥选择子树内最小的那个点一定是优秀的.我们可以简单举个例子来反对这个直觉:如果有两个点权值相同,一个点是另一个点的祖先,那显然选择祖先会优秀一点,因为这个祖先对下面子树的限制要小一些.

我们可以这么干:我们在一开始那个暴力中这么规定:每次满员了之后,删掉权值最小的,权值相同的则按照编号删.对于一个子树\(x\),假设它所有儿子的子树都合法了,并且它需要删,此时:

  1. 如果我们之前想删的那个点已经死了,那就完事了.

  2. 如果我们之前想删的那个点没死,注意到我们接下来插入的点一定排序比当时想删它的时候只大不小,那此时必然还要删掉它.

第五题

https://www.luogu.com.cn/problem/CF464E

之前做过,就是最短路.但是我们要实现高精度加法和高精度比较大小,注意到加上一个\(2^x\)在二进制上的体现是某段\(1\)变成\(0\),某一个\(0\)变成\(1\),这个可以用主席树实现.

第六题

https://www.luogu.com.cn/problem/CF1801E

简单题,考虑暴力显然是直接大力并查集,而并查集的操作其实是不多的:一次有用的并查集操作必定是会让连通块个数减少\(1\),因此操作均摊.于是考虑二分+哈希找到第一个有用的并查集操作.这就必然要求我们快速求出一条路径的哈希值.考虑哈希是可以差分的,因此处理每个点到根的哈希值(注意要维护两个方向)即可.每改变一个点就把子树内全部更改一下,这样就做完了.使用启发式合并可以做到\(O ( n \log^2 n )\).

不过发现这个过程只有区间加法和单点查询,可以使用树状数组.

然后就卡了一晚上常数.事实上这题存在二进制分组做法:我们发现我们要做的无非是将两段直上直下的序列,然后定义它们对应数字相等.我们可以将一个点到它的\(2^k\)级祖先所形成的这么一段拆成一段,这样就可以直接倍增然后处理.

第七题

https://www.luogu.com.cn/problem/CF702F

典典典.考虑维护人的平衡树,然后每次check一个衬衫.注意到它会把大于等于它的人给减去这个值.我们考虑将这个splay分裂开来,然后对大于等于它的那些点打个减法tag,再与小于它的那个分裂出去的树合并起来.但是splay无法支持快速合并两棵无大小关系的树(ye不能启发式合并,因为以后还要裂开),我们考虑当前衬衫的价格是\(v\),将所有人分成\([ 0 , v ) , [ v , 2 v ) , [ 2 v , + \infty )\),三个部分,第一个部分不用管,第二个部分减去\(v\)后变成第一个部分,我们把它们暴力插入第一个部分.第三个部分直接打tag并合并,由于第二个部分的暴力插入会使得权值减半,因此总复杂度\(O ( n \log^2 n )\).

第八题

https://www.luogu.com.cn/problem/P6072

考虑对于每一条边,求出以这条边为界限,两边的最大值然后加起来,显然就是答案.

还有一点是,一条路径\(x - y\)的权值可以表示为\(dep_x \oplus dep_y\),这就启发我们用01trie维护最大异或值.

现在相当于求出\(f_x\)表示\(x\)的子树内的答案,再求出\(g_x\)表示\(x\)的子树外的答案.这个怎么求呢?首先\(f_x\)可以启发式合并01trie.

对于\(g_x\),也很好做.你考虑求出全局最大的那条路径,显然只要分割点不在这条路径上,就会选取它.反之的话,就是两条路径往下dfs,这个直接暴力做01trie就是\(O ( n \log w )\).

做到这里我们冷静一下看看\(f\),注意到只有临近上面我们说的那条链的\(f\),或者是就在这条链上的\(f\).我们只需要求出这些\(f\),因为再往下也没啥用,这样就能让总复杂度变成\(O ( n \log w )\).

图论

第一题

https://www.luogu.com.cn/problem/P4768

典中典,求kruskal重构树,以及\(1\)到所有点的最短路即可.

第二题

https://www.luogu.com.cn/problem/CF1408G

首先你需要发现,一个点集内部的边全部小于它与外界相连的边,那么如果我们从小到大加边,那么必然有一个时刻是这个点集成为了一个和外界分离的团.因此,考虑从小到大加边,并考虑kruskal重构树的结构,我们就可以将这个过程展现在树上.并且这个过程等价于区间合并.因此我们的问题转化为了有若干区间,选取若干不交的区间覆盖全集的方案数,简单的.

第三题

https://www.luogu.com.cn/problem/P9167

我们设题面中的\(t\)座城市是关键城市,根据题面,断掉这\(t\)座城市之间的边,会使得图分裂成若干个大小相差至多为\(k\)的连通块.我们不妨认为在一个连通块中,关键城市控制着里面的所有点,那么被不同城市控制的点一定没有边相连.如果此时图是树的话我们已经做完了,无非是要在树上划分点集.反之,我们考虑dfs树,维护出点双意义下的\(dfn , low\).注意到一个连通块必定在dfs树上也是连通块.

那么一个点能作为关键点,当且仅当它在dfs树上的某些子树所组成的城市都被控制,这个可以通过\(low\)来判断.枚举连通块大小,并设\(dp_{ i , j }\)表示\(i\)子树上部还有\(j\)个城市没决定被控制,这样就可以dp.注意到第二维有用的信息不多,这样就可以优化到\(O ( n \sqrt{ n } )\).

第四题

https://www.luogu.com.cn/problem/P9170

先看Bob,先把\(| T | = 1\)的选了,然后删掉.不断做这个过程直到所有的\(| T | = 2\),此时将这两个点之间连一条边,那就会形成一张图.对于每个连通块,若\(| E | > | V |\),则必然无解.其它的情况必然有解,这就解决了第一个问题.

不过其实没必要删\(| T | = 1\),直接连自环就行.

对于Alice,考虑以下几种情况:

  1. \(| S \land T | = 0\),显然Alice选啥都没用.

  2. \(| S \land T | = 1\),此时Alice必然选那个和Bob有交的.

  3. \(| S \land T | = 2\),此时Alice可以选择其中一个.

这样的话,Alice就已经确定了一些东西,而不确定另一些东西.Alice必然是要让Bob能选的最小情况最大,我们考虑再讨论一下:

  1. \(| E | = | V |\),此时连通块是一个基环树.那么除了环以外的点一定都选好了.如果是自环那么怎么选都行.反之,环上有两种选择方式(就是一个点会在哪条边上被选).考虑对于两种方式,Alice已经确定必选的数量分别是\(c_1 , c_2\),而Alice现在还可以选的个数是\(c\),我们也就是要选取\(i\),最大化\(\min \{ c_1 + i , c_2 + c - i \}\),显然取\(c_1 + i = c_2 + c - i , i = \lfloor \frac{ c_2 + c - c_1 }{ 2 } \rfloor\),注意如果\(i\)要对\(0\)\(\max\),对\(c\)\(\min\).

  2. \(| E | = | V | - 1\),此时连通块是一棵树,并且有一个点不会被选择.不妨设\(f_i\)表示\(i\)这个点不会被选的方案数,那Alice对于一条边的定向,会让这条边其中一侧的子树的\(f\)整体\(+ 1\).这个看上去极其熟悉.典中典套路是,考虑两条边选择使得\(V_1 , V_2\)分别加了\(1\),如果\(V_1 \cap V_2 = \emptyset\),同时取反这两条边的选择,一定不劣.于是选择的边会让加\(1\)的点集两两有交.枚举交集中的一个点\(x\),则所有边的选择全部确定:每条边都选择深度较低的那个点.仔细考虑此时,Bob的最优选择是啥.如果Bob选择了一个点\(y\),那么\(f_y\)显然是\(f_x\)减去\(x\)\(y\)的路径上Alice能选的数量加上Alice只有一种选择,并且在这里为反向选择的数量.我们要最大化这个东西,也就是最小化\(x\)\(y\)的路径上Alice能选的数量,其实也就是最小化一棵树的深度,这个是方便dp的.

第五题

https://www.luogu.com.cn/problem/CF235D

这个形式看上去极其复杂,考虑简单化一下:我们考虑对当前图选一个分治中心,对答案的贡献是\(| G |\),不难发现,这相当于每个点贡献了一次.进一步地,这等价于对于每个点,判断它会在多少个点作为分治重心的时候,仍然在那个点所在的连通块中.

如果原图是树,这等价于对于\(u , v\),\(u\)\(( u , v )\)路径上第一个被删除的点的概率,这等价于\(\frac{ 1 }{ len }\).这样树的情况就做完了.

考虑基环树怎么做:如果两个点\(( u , v )\)之间路径唯一,那上面做的显然还是对的.反之,我们有公式\(P ( A \lor B ) = P ( A ) + P ( B ) - P ( A \land B )\),因此你把这两条路径求出来,加起来,减去它们同时发生的概率即可.注意同时发生的概率不是\(P ( A ) P ( B )\),因为这两件事不独立,事实上应该是这两条路径的点集并的大小分之一.

第六题

https://www.luogu.com.cn/problem/P4429

如果图不连通可以对于每个块分开考虑,下面只考虑图连通的情况:

显然,如果图不是二分图一定无解.

其次,我们注意到孤立点和一度点一定都可以删去,前者显然,后者是因为与它相邻的那个点的颜色如果确定,那它一定有一种和它选不一样的方法.这样当前所有点的度数\(\geq 2\).

接下来,青鱼说得好,我们把很多比较能看出来有解的情况判掉,剩下的就是无解.

  1. 偶环一定有解.

如果偶环上的颜色全都一样,那直接二分图染色.不然,一定存在相邻的两个点\(x , y\)使得\(x\)有一种颜色,\(y\)没有,直接让\(x\)染这种颜色,\(x - y\)这条边就没用了,断掉,然后顺着\(x\)平推过去,一定有解.

妈的,剩下的不会了,先咕着.

第七题

https://www.luogu.com.cn/problem/CF1672G

发现个事情:如果当前所有行和所有列的异或值都是\(0\),那么我们可以每次选取四个点然后点击,这样这四个点会改变,而其它点都不改变,从左上开始一直点相邻的四个点,这样最后左上角的\(( n - 1 ) ( m - 1 )\)的矩阵就全空,而由于每行每列\(1\)的个数都是偶数,这个过程不改变这个性质,因此最后一定全图是空的.

而由于最后的状态是全空,因此在变化过程中总有一个时刻使得每行每列异或值为\(0\).

考虑异或的过程,如果\(n\)是偶数,那么这么一次异或会使得除了一列以外的所有列都异或上\(1\).如果\(n\)是奇数,则会使得全局异或上\(1\).

现在我们来讨论一下\(n , m\)的奇偶性(对称情况可以反转,不讨论):

  1. \(n , m\)均为偶数.只考虑第一行,从第二列开始,如果当前这一列和第一列不一样就把它操作掉.这样最后所有列的异或值都相同.如果最后是全\(1\),我们把第一行轮着点一遍,这样每一列都被点了\(m - 1\)次,而行的奇偶性不变.也就是说,此时无论怎么填都是有解的.行再一样做

  2. \(n\)是奇数,\(m\)是偶数.此时必须要求所有列的异或值相同.每一行如何做可以(1)一样使得每一行异或值都是\(0\).枚举所有列是\(0\)还是是\(1\),留一个?来调整,剩下的?随便选.

  3. 都是奇数,此时要求所有行和所有列的奇偶性分别相同.枚举这四种奇偶性情况,然后将\(?\)看成连在横坐标和纵坐标之间的边.那也就相当于确定了每个点的度数,然后问有多少种选边方式.典中典.对于每个连通块,求出一棵生成树,然后剩下的边随便选,用生成树一路调整上去.注意这要求所有点的度数之和是偶数,也就是至少得是一张合法的图.

第八题

https://www.luogu.com.cn/problem/AT_arc117_f

考虑求出前缀和,此时要满足条件,不妨设全局和为\(x\),此时必然有:

\[ \begin{aligned} \forall 0 & \leq i < n , s_{ i + n } - s_i \geq a_i \\ \forall n & \leq i < 2 n , x - ( s_{ i } - s_{ i - n } ) \geq a_i , s_i - s_{ i - n } \leq x - a_i \\ \forall 0 & \leq i < 2 n , s_i \leq s_{ i + 1 } \end{aligned} \]

注意上面的限制条件限制住了\(s_{ i + n } - s_{ i }\)的上下界,我们不妨设它的上下界分别为\(l\)\(r\).但是这俩需要知道\(x\)才能求出来,于是不妨二分\(x\).

贪心地构造,考虑每次要求\(s_{ i + n }\)尽可能地小,于是如果\(l_i \leq s_{ i - 1 + n } - s_{ i - 1 } \leq r_i\),我们就继承前面的答案.反之,如果\(l_i > s_{ i - 1 + n } - s_{ i - 1 }\),我们就提升\(s_{ i + n } = s_{ i - 1 } + l_i\),\(r\)同理.这样走到最后一定是最小的,只需要满足\(s_{ n - 1 } \leq s_n \land s_{ 2 n - 1 } \leq x\)即可.

但是你发现个事情,我们前面一直在保证\(s\)尽可能小,却没有保证\(s_{ n - 1 } \leq s_n\).我们怎么处理这里的\(s_n\)呢?考虑再次二分,每次找到最小的\(s_n\)满足前一个条件.那我们就需要说明两件事情:

  1. 满足前一个条件的\(s_n\)满足单调性.

  2. \(s_n\)越小,越有可能满足第二个条件.

先来说(2),这个比较显然.因为如果\(s_n\)在前面较小不满足的话,我们可以在后面某个地方给提升得大一点,显然由于\(s_n\)的提升比较自由,这个是可以做到的.

再来看(1),如果一个\(s_n\)满足条件,我们把这个\(s_n\)增大\(1\).考虑将前面的所有\(s_{ 0 \cdots n - 1 }\)全部提升\(1\),这样所有的差都不变,因此仍然满足条件.

冷静总结一下这个题,其实就是我们首先要发现很多可二分的性质:

  1. \(s_{ 2 n }\)可二分.

这个是显然的,放更多显然不会更劣.但是我们要在这个基础上找到一种方法,使得如果当前二分的值合法,一定能构造出一组答案.我们发现如果没有\(s_{ n } \geq s_{ n - 1 }\)这个限制,一切都是好做的:因为我们可以贪心地使得当前的\(s\)最小.

  1. \(s_n\)可二分.

这个是怎么发现的呢?因为我们发现我们勒令\(s_n\)是啥,似乎对这个贪心过程没有啥影响.如果\(s_n\)过小,上面的贪心过程就会在\(s_n \geq s_{ n - 1 }\)这里判出错.如果\(s_n\)过大,则会在\(s_{ 2 n - 1 } \leq s_{ 2 n }\)上判错.这意味着\(s_n\)可能需要是一个区间才合法.接下来就是去证明它确实是一个区间是合法的,并且证明我们的贪心过程能在这个贪心过程中正确地check.

线性代数

第一题

https://www.luogu.com.cn/problem/P1224

首先显然的一点是,我们把它搞成一个矩阵\(A\),然后拿\(A \times A^T\).注意到如果最后的答案矩阵存在\(0\)就有解,这个解就是\(B_{ i , j } = 0\)的那对\(( i , j )\).到这里已经可以猜到,这题不是什么正经题,应该要搞一些随机化东西.

想起来之前那个经典判断\(A \times B = C\)的题,就是随机几个向量然后乘起来.这个我们想想能不能类似做.

先考虑\(k = 2\),如果\(A \times A^T\)是全\(1\)矩阵,那么我们随机一个向量去乘它,得到的向量每一位必然都是这个向量所有数字之和.不难发现如果这个向量每一位差别足够大就可以check,这就提供了一个\(O ( nd )\)的做法,不过我们实现肯定造不出差别足够大的向量,因此可以多check几次.然后如果第\(i\)行不满足条件,一定存在一组\(( i , j )\)作为答案,枚举\(j\)即可.

再考虑\(k = 3\),这个有点难搞.实际上是一个牛逼发现:\(1^2 \equiv 2^2 \equiv 1 \pmod{ 3 }\).因此我们考虑将\(B\)矩阵的每一位平方后与一个向量相乘.考虑\(\sum_{ j } B_{ i , j }^2 r_j = \sum_{ j } B_{ i , j } r_j B^T_{ j , i }\),考虑构造矩阵\(R\),使得\(R_{ i , i } = r_i , R_{ i , j } = 0 , i \ne j\),不难发现\(( BR )_{ i , j } = B_{ i , j } R_{ j , j }\),于是\(( BRB^T )_{ i , i } = \sum_{ j } B_{ i , j } R_{ j , j } B^T_{ j , i }\).接下来我们只要check \(BRB^T\)的对角线即可.然后\(B^T = ( AA^T )^T ={ A^T }^T A^T = AA^T\).于是有:

\[ BRB^T = AA^T RAA^T \]

考虑\(A\)是一个\(n \times d\)的矩阵,\(A^T\)是一个\(d \times n\)的矩阵.不妨假设我们已经算出了\(A^T RA\),那这里是好算的,因为\(( ABC )_{ i , i } = \sum_{ j , k } A_{ i , k } B_{ k , j } C_{ j , i }\),这里可以\(O ( nd^2 )\)地check每一个位置.

那我们现在面临的问题就是如何去求出来\(A^T RA\).注意到\(RA\)是一个\(n \times d\)的矩阵,因此如果知道\(RA\),\(A^T ( RA )\)是好求的.我们现在需要求出\(RA\).由于\(R\)是对角线矩阵,\(( RA )_{ i , j } = R_{ i , i } A_{ i , j }\),这样就可以\(O ( nd )\)求.

第二题

https://www.luogu.com.cn/problem/P6772

典中典,首先如果是边权的话有个经典dp:设\(dp_{ i , x }\)表示当前经过了\(i\)条边,目前在\(x\)点的最优答案,自然有转移:

\[ dp_{ i , x } = \max \{ dp_{ i - 1 , y } + val_{ y \rightarrow x } \} \]

这是一个经典的\(\{ \max , + \}\)矩阵,可以矩阵加速.

这个题不是边权,但是点权可以改成入边的边权,只不过起点需要特判.

还有一个问题是边权不是\(1\),拆边的话复杂度太高,考虑拆点,每个点拆成五个,然后只有最后一个点才会连出边,剩下的按照距离出边的距离连到前面的点.

至于美食节,一个想法是直接矩阵加速到那一天,然后把对应的点加上美食节的权值,继续做完每个美食节即可.但这样复杂度是\(O ( kN^3 \log T )\)的.

冷静一下,预处理出矩阵的二的次幂,这样就是\(O ( kN^2 \log T + N^3 \log T )\).

第三题

https://www.luogu.com.cn/problem/P6125

简单题,建ACAM,然后对于每个人求答案.枚举每个人,对于每个点,设\(p_i\)为以它为起点,最后这个人胜利的概率,做高斯消元即可.

第四题

https://www.luogu.com.cn/problem/P3706

ps:本题选入笔记:概率与期望-概率生成函数-Example3.

把上面的东西给形式化一下,不妨设\(g_i\)表示进行了\(i\)步还未结束的概率,\(f_{ k , i }\)为进行了\(i\)步恰好第\(k\)个人胜利的概率,\(F , G\)是它们的生成函数,我们自然有:

  1. \(1 + xG ( x ) = \sum_k F_k ( x ) + G ( x )\).

  2. \(( \frac{ 1 }{ 2 } x )^L G ( x ) = \sum_{ j = 1 }^n F_j ( x ) \sum_{ i = 0 }^{ L - 1 } ( \frac{ 1 }{ 2 } x )^i [ A_k^{ ( L - i ) } ={ A_j }_{ ( L - i ) } ]\).

第一个式子的用处在于带入\(x = 1\),发现\(\sum_{ k } F_k ( 1 ) = 1\).

把(2)化简一下,有:

\[ \begin{aligned} x^L G ( x ) & = \sum_{ j = 1 }^n F_j ( x ) \sum_{ i = 0 }^{ L - 1 } ( \frac{ 1 }{ 2 } x )^{ i - L } [ A_k^{ ( L - i ) } ={ A_j }_{ ( L - i ) } ] \\ x^L G ( x ) & = \sum_{ j = 1 }^n F_j ( x ) \sum_{ i = 1 }^{ L } ( \frac{ 1 }{ 2 } x )^{ - i } [ A_k^{ ( i ) } ={ A_j }_{ ( i ) } ] \end{aligned} \]

带入\(x = 1\),有:

\[ G ( 1 ) = \sum_{ j = 1 }^n F_j ( 1 ) \sum_{ i = 1 }^{ L } 2^i [ A_k^{ ( i ) } ={ A_j }_{ ( i ) } ] \]

不难发现对于不同的\(k\),(2)的右边不同,而左边一定相同,这样就给出了\(n\)个等式,算上(1)一共有\(n + 1\)个等式,可以算出\(G ( 1 ) , F_{ 1 \cdots n } ( 1 )\)\(n + 1\)个未知数.

第五题

https://www.luogu.com.cn/problem/P3292

首先第一反应是树剖+线段树上合并线性基,轻松做到\(O ( q \log^2 n \log^2 v )\).

但是过不太去!注意到\(n\)要小一点,考虑离线点分治.记录下从分治中心到每个点的线性基,这样只需要做\(q\)次线性基合并,复杂度是\(O ( q \log^2 v + n \log n \log v )\).

不过如果你做过CF1100F,那这题就是上个树.

第六题

https://www.luogu.com.cn/problem/P4151

典中典,注意到一个值异或两遍就会没掉.我们考虑随便求一条\(S \rightarrow T\)的路径,然后再求出来所有的环上的异或值.我们发现我们可以走到一个简单环上,走一圈再原路返回,这样答案只会异或上简单环的异或值.对这个东西用线性基就行.

至于这个东西的正确性,首先考虑\(S \rightarrow T\)唯一的情况,这样的话你如果要扩展就必须走环.不然,则\(S \rightarrow T\)有边在环上,只要溜达一圈就行.

接下来的问题在于找简单环.我们直接dfs,就可以找到一部分环.但是其实是没有找到全部的环的.但是没关系,在dfs的过程中,dfs树不可能有横插边,也就是所有找到的的环不在树上的边一定是反走边.而没有找到的环可能是若干个反走边拼起来的.这必然意味着它可以由那些反走边所代表的环拼起来:原因比较简单,考虑从上往下遍历这个没找到的环,那么每条边一定被经过了两次:下去一次,上来一次.

第七题

https://www.luogu.com.cn/problem/P6178

板子题

第八题

https://www.luogu.com.cn/problem/P4455

板子题

第九题

https://www.luogu.com.cn/problem/P4336

简单题,无脑矩阵树定理+容斥.复杂度\(O ( 2^n n^3 )\).

第十题

https://www.luogu.com.cn/problem/P5807

板子题

第十一题

https://www.luogu.com.cn/problem/CF917D

一眼二项式反演.不妨设\(f_i\)表示钦定\(i\)条边已经选上了的答案.显然:

\[ ans_k = \sum_{ i \geq k } ( - 1 )^{ i - k } \binom{ i }{ k } f_i \]

对于\(f_i\),考虑Prufer序列的推论:\(k\)个大小分别为\(s_1 , s_2 , \cdots , s_k\)的连通块,任意加边使得连通块成树的方案数是\(n^{ k - 2 } \prod s\).于是考虑dp,不妨设\(dp_{ x , i , j }\)表示当前\(x\)为根的子树内部,当前\(x\)所在连通块的大小是\(i\)的方案数,这样可以做到\(O ( n^3 )\).

看了看题解发现可以做到\(O ( n^2 )\).简单来说就是考虑\(\prod s\)的组合意义,是在每个连通块内选一个点的方案数.那我们可以用\(f_{ i , j , 0 / 1 }\)表示当前\(i\)子树内选了\(j\)个点,然后\(i\)所在连通块内是否选点了的方案数.

计算几何

第一题

https://www.luogu.com.cn/problem/P2742

板子题.

第二题

https://www.luogu.com.cn/problem/P3829

简单题,注意到圆弧之和一定是一个圆,因此把角上的四个点拿出来做凸包即可.

第三题

https://www.luogu.com.cn/problem/P4196

板子题.

第四题

https://www.luogu.com.cn/problem/P3256

板子题.甚至

第五题/第六题/第七题

https://www.luogu.com.cn/problem/P1742

https://www.luogu.com.cn/problem/P2533

https://www.luogu.com.cn/problem/P4288

三个题全是一样的.

大概是这么做的啊,就是说我们增量构造,每次对于前\(i\)个点的最小覆盖圆,考虑\(i + 1\)个点在不在圆上.如果在就忽略,不在的话,那它必然是新圆的一个卡着边的点.考虑再找到另两个卡着边的点,我们暴力枚举这两个点.并且计算出所有的圆,挑选面积最大的那个.事实上,可以直接每次更新圆,直到这个圆包含了前\(i + 1\)个点,显然总会遇到,然后之后就不会更新这个圆了.

这个写法导致了复杂度正确.具体来说,考虑一个点成为卡着圆边界的点的概率是\(\frac{ 3 }{ n }\),这三层循环的调用次数分别是:

\[ \begin{aligned} T_3 ( n ) & = O ( n ) \\ T_2 ( n ) & = O ( n ) + \sum_{ i = 1 }^n \frac{ 3 }{ i } T_3 ( i ) \\ T_1 ( n ) & = O ( n ) + \sum_{ i = 1 }^n \frac{ 3 }{ i } T_2 ( n ) \end{aligned} \]

显然\(T_1 ( n ) = O ( n )\).

第九题

https://www.luogu.com.cn/problem/P2287

枚举三个点,然后判断这三个点所在平面是否是三维凸包的一个面.注意四点共面就完蛋了,因此每个点加上一个随机扰动量.这个量首先得在eps范围内显著体现出来,其次还不能对答案影响太大.这个题是直接给了一个小于\(10^{ - 10 }\)的扰动量,然后因为没有判相等操作,直接用了c++的浮点数比较.

第十题

https://www.luogu.com.cn/problem/P1452

板子题.

第十一题

https://www.luogu.com.cn/problem/P6247

板子题.

第十二题

https://www.luogu.com.cn/problem/P3187

旋转卡壳的时候维护三个边界就行.

网络流建图

第一题

https://www.luogu.com.cn/problem/CF103E

Hall引理的时候做过.

第二题

https://www.luogu.com.cn/problem/CF311E

发现变\(0\)\(1\)这个操作可逆,不妨先把所有位置都变成\(1\).

接下来考虑把若干个\(1\)变成\(0\).不难发现:一个全\(0\)的要求合法\(\Rightarrow\)所有包含位置都是\(0\)$所 有 包 含 位 置 都 不 是\(1\)$包含这些的全\(1\)要求不合法.这是一个最大权闭合子图问题.

第三题

https://www.luogu.com.cn/problem/CF884F

直接费用流,考虑左边每个点是字母,然后连到右边的点上,拆一下点保证对应的位置不会有相同字母.

第四题

https://www.luogu.com.cn/problem/CF802C

牛逼题,考虑我们不好搞这个丢弃的东西,因为你也不知道你留下来的是谁.因此我们考虑如果一本书不在当天丢弃,那就一定会对下本书产生贡献,我们把它当成将书卖出.

也就是说,考虑将每一天建点,上面这个过程保证了我们每一天的书都会买,这就保证了最大流量.

将每一天建点并以流量为\(k - 1\)的边相连(因为下一天必须买书),然后如果这本书要留着,就在前一天卖掉.

但是这样需要保证,我们卖书的时候必定在前面没有丢弃这本书,拆点维护,用一个点同时维护当天丢弃和卖书两种操作即可.

点数是\(2 n\)的,边数有拆点的\(n\)条,连接相邻两天的\(n\)条,卖出的和丢弃的共\(2 n\)条,这样总共是\(4 n\)条边.

第五题

https://www.luogu.com.cn/problem/CF786E

一眼最小割,然后线段树+树剖优化建图.注意这样是\(O ( n \log^2 n )\)的建图,我们把树剖跳topn的过程建一个点,这样就是\(O ( n \log n )\)的建图.

考虑点数,原图有\(n\)个点,线段树是\(2 n\)个点,树剖只会贡献\(n\)个点,点数是\(4 n\)的.

考虑边数,注意到一个点会连\(2 \log n\)条边到树剖上,在最后一下会连\(\log n\)个点到线段树上,因此总边数是\(2 n + 3 m \log n \leq 10^6\),但是显然远远跑不满.

第六题

https://www.luogu.com.cn/problem/CF1139E

第一反应是二分答案,然后拿网络流二分图匹配check,这样复杂度是\(O ( n^2 \sqrt{ n } \log n )\)的.

事实上注意删人后答案只减不增,因此复杂度\(O ( n^2 \sqrt{ n } )\).

但是这样过不去,考虑把删除改成增加,这样就可以在残留网络上跑,然后就能过了.

第七题

https://www.luogu.com.cn/problem/CF1061E

考虑每个问题,其实是形如要保证子树内有一定数量的点不能选.也就是这个限制要和修建港口抢城市.

但是不同的限制可能限制了同一城市,我们发现深度更浅的那个限制数量可以减去深度较深的限制数量,毕竟较深的满足较浅的也就满足了.

但是这个思路建图好像有点不太对.因为两个树的港口是通用的,那考虑让一个限制是入,另一个限制是出.换句话说,让一个限制被源点流,另一个限制流向汇点,中间是树节点,源点连出去的边有一个权值,跑费用流.

注意到每个点只会被连一次,因此边数大概是\(2 n\)级别,点数是\(3 n\)级别.

总之这种网络流题,主要还是要考虑谁连着源点,谁连着汇点.这个题我一开始以为是限制连源点,然后城市连汇点,发现做不了,那就两种限制分别连源点和汇点.

交互题练习

第一题

https://www.luogu.com.cn/problem/P5875

这是广义串并联图嘛?好像显然不是.

但是仍然有性质,如果没有点权的话,注意到(1)一定会选新加入的点,(3)也一定会选新加入的点,(2)则一定要么两者都选要么都不选.

现在有点权,考虑把新加入的点删了,不妨设新加入的点为\(i\),主持人为\(x\),自然有:

  1. \(a_i \rightarrow ans , a_x : = \max \{ 0 , a_x - a_i \}\).

  2. \(a_x : = a_x + a_i\).

  3. \(a_x : = \max \{ a_x , a_i \}\).

不难发现每一步操作做完后,答案都不会改变.

第二题

https://www.luogu.com.cn/problem/P3641

牛逼题.

考虑答案最小是什么,根据鸽笼原理,显然是\(B = \lceil \frac{ a_n - a_1 }{ n - 1 } \rceil\).

所以我们按照值域每\(B\)长度分块,然后考虑答案不可能出现在块内,也就是块内的点对不可能贡献答案,答案只有可能由上一个数字(也就是上一个查询到的\(mx\))和当前块的\(mn\)贡献.这样一开始的贡献是\(n + 1\),中间问了\(n - 1\)次,总共涉及到了\(n - 2\)个数字,这样就做完了.

第三题

https://www.luogu.com.cn/problem/P3777

Sub1

minValue是好求的,我们考虑选取\(\{ 1 , 0 , \cdots , 0 \}\),这样的话对手必然放弃一个,被放弃的那个就是最小的.

Sub2

一个显然的想法是,如果我们一开始全选\(1\),那么对手一定会选取\([ 51 , 100 ]\)中的所有数字.

然后呢?我们接下来考虑继续在\([ 51 , 100 ]\)这些数字中找到最大的.我们肯定要让它们全选\(2\),这样对方可能会放弃一些这个区间中较小的数字,然后去选取\([ 1 , 50 ]\)中较大的一些.持续这个过程,发现正好需要四次操作.

Sub3

考虑结合sub1和sub2,我们不妨询问\(\{ x , x , 0 , 0 , \cdots \}\),这样直觉上总是存在一个\(x\)使得前两个数字有一个被放弃.

事实上也确实.考虑前两个数字中较小的那一个,设为\(v\),当\(\sum_{ i = x }^{ 2 x } i = \frac{ 3 x ( x + 1 ) }{ 2 } \geq v\)的时候,显然它就会被放弃,对于这个最小的\(x\),会发现两个数字中较大的那个(设为\(w )\)一定不会被放弃,因为如果它被放弃了,一定是因为\(w \leq x - 1\),而我们知道\(\frac{ ( 3 x - 3 ) x }{ 2 } < v < w \leq x - 1\),又因为\(x \geq 1\),因此显然不成立.

二分这个\(x\),由于\(v_{ \max } = 99\),发现\(x \in [ 1 , 8 ]\),直接二分需要四次.

然后有个牛逼做法是,考虑每个\(x\)能控制一个区间的\(v\),发现\(x = 7\)的那个区间全部被覆盖了两次,因此不用选取\(x = 7\).

Sub4

这个简单,不难发现只需要在\(B_i = B_j = 100\),那么对手就必然需要在这两者中选一个留下来,这样我们就可以比较任意两个位置的大小,使用stable_sort即可.

Sub5

一种想法是sub4+sub3,但过不去.

冷静思考,注意到sub2,我们其实是知道了某些位置在哪个权值区间的.对着这个分治下去,这样实现了划分区间的功能,按理说应该是会有\(2 n - 1\)个节点.

冷静一下,\(l = r\)的叶子节点是不用计算的,因此刚好玩了\(n - 1\)次.

现在唯一的问题是,我们怎么找到一个\(w\),使得这个区间内我都选\(w\)后,然后这个区间一定会被划分呢?考虑\(sub 3\)告诉我们如果\(r - l + 1 \leq 12\)一定有解,考虑\(( r , 100 ]\)的数字肯定要被选,那对方只剩下\(r\)个石子,不妨直接令\(w = \lfloor \frac{ r }{ r - l + 1 } \rfloor + 1\),注意到这个区间一定选不满.并且由于\(r - l + 1 > 12\),因此你会发现前面即使全选了也有剩余.

实际的写法选择了直接枚举\(w\),然后判断是否合法.

第四题

https://www.luogu.com.cn/problem/P4373

这怎么做!考虑分块.(这谁想得到啊)

不妨设\(f_i\)表示\([ i , i + k - 1 ]\)的最小值,我们先求出来\(f_{ 0 } , f_{ B } , f_{ 2 B } , \cdots\)的值.这个怎么求呢?考虑一个值什么时候有用:如果它比队列末尾优秀肯定有用,不然只有它是\(B\)的倍数,它才有可能有用.我们只去维护这两种情况,就可以做到\(O ( \sqrt{ n } )\)的空间.

然后考虑剩下的\(( iB , ( i + 1 ) B )\)这些答案怎么求.不难发现这些的\(f\)一定大于等于\(f_{ iB }\)并且小于等于\(f_{ ( i + 1 ) B }\).如果直接对这个做单调队列空间还是不足,但我们发现做单调队列的时候,会被弹出的只有\([ f_{ iB } , ( i + 1 ) B )\)这些数字,剩下的只要右端点卡到它,就一定不会被弹出.因此只需要对前面这个东西做单调队列,直到做到\(f_{ ( i + 1 ) B }\)出现,那我们就停下来,把前面该输出的答案全部输出.

第五题

https://www.luogu.com.cn/problem/P5473

考虑异或能实现的是判断奇偶性,具体来说,我们很容易判断一个点到一个集合内部点的奇偶性.考虑这样其实已经能\(O ( n )\)找到一个点了:我们每修改一个前缀,然后check所有不在这个前缀内的点,这样就可以知道它俩是有边的.

这个过程能不能二分呢?好像不能,那我们随机化.

换句话说,我们random_shuffle一下序列,然后分治,每次把左侧的点全部点亮,然后看右侧的点有没有发生变化.如果发生了,则说明左侧的点到右侧的点的边的数量是奇数,递归下去处理,就可以至少连一条边,把这条边删了继续做.

然后发现这么写有个\(L_c = 0\)\(B\)包过不去啊,那个包可以考虑我们对于一个点\(x\),二分\([ 0 , x - 1 ]\)中谁是它的父亲.不难发现如果把\([ 0 , k ]\)这个前缀全部modify掉,并且它父亲在里面,那它当前状态一定是\(1\).用整体二分解决这个问题.

第六题

https://www.luogu.com.cn/problem/P6541

考虑动态点分树.每次找到一对点\(x , y\),\(x\)已知,\(y\)未知,然后explore(x,y).如果得到的是未知的点,那就不断操作直到得到\(y\).

反之,考虑得到了\(z\),由于\(z\)已知,因此\(z\)在我们的点分树上.不妨从\(z\)暴力向上跳到\(x\),这样就可以知道\(y\)\(x\)的哪个方向,往那个方向的点分树儿子走一步即可.

至于动态点分树怎么做,替罪羊重构即可.

至于链,我们每次随机一个没有搞定的点,走过去即可.期望的错误次数是\(O ( \log n )\)的.

模拟退火

第一题

https://www.luogu.com.cn/problem/P2503

考虑如果要求有序划分,可以直接写一个dp.

因此我们考虑每次交换几个位置,然后当成有序的跑dp,用这个来模拟退火.

第二题

https://www.luogu.com.cn/problem/P2538

随机交换两个城市的状态即可.如果为了复杂度更好一点可以要求交换的城市状态必然不同.

第三题

https://www.luogu.com.cn/problem/P5544

这题退火退半天退不出来,但是爬山直接过了.

这是为啥呢?原因在于,这题我们既然要对坐标进行跳跃,很有可能大部分坐标的答案都是\(0\).这就必然导致了我们一开始可能跳到了很远的地方,但是由于一直是\(0\),因此不断地跳过去.很难蚌.

而爬山不会有这种问题.

有没有什么改良的方式?一种是改变估价函数,通过精细实现估价函数导致其估价为连续实数函数,这样退火的效果就会好很多.

总的来说,退火失败的地方在于它一开始跳跃得太远了.而由于前几次操作我们跳出去的概率很大,因此极难得到答案.对于这种跳跃性不确定的题,反而你发现爬山不会拘束于局部最优解,而是会跳出去的.这也就是爬山在这题表现极其良好的原因.

有没有什么更优秀的方式呢?我们考虑先爬几次山,爬到一个好地方,然后以这个位置开始退火往旁边跳.

第五题

https://www.luogu.com.cn/problem/P7218

考虑一个显然的贪心是,直接枚举每个\(W\),能放就放.

考虑把一开始所有能放的\(W\)全拿出来作为一个操作序列,然后用模拟退火打乱.

第六题

https://www.luogu.com.cn/problem/CF1105E

不妨考虑满足某个人要求,就一定要在一段时间内全是它的id.也就是说如果两个人都抢了一段时间,那这两个人不能同时选择.

这也就是一个最大团问题,模拟退火解决一下.

KMP

Example1(zr23省选第一轮集训day5b)

必须提一下的是,能用KMP的前提是可以比较两个字符串是否相等,不一定是比较两个字母相等.只要能比较两个字符串是否相等,并且已知\(A = B\)能快速判断是否有\(A + a = B + b\),那么就可以使用KMP.并不要求\(A = B\)并且\(a = b\)才有\(A + a = B + b\).

因此,我们取\(p\)的置换\(q\),然后找到所有和\(q\)的大小关系一样的区间即可,要证明这是个等价关系,然后就可以上KMP了.

Example2(NOI2014 动物园)

自然的想法是先求border数组,然后每次暴力跳border直到当前前后缀不重叠.根据border的定义显然是对的.但这样复杂度不对.

另一个想法是我们能不能在做KMP的时候,直接判掉当前长度是否超过,如果超过就放弃呢?也不对,因为这样往前跳也会用到这个border数组,但往前跳有可能跳的很少.

因此我们先求border,再第二遍做KMP,用另一个数组,但是往前跳的时候用border跳,其他情况正常做就行.

border理论

定理

定理1

\(s\)的某个border长度为\(k\)等价于\(| s | - k\)\(s\)的周期.

证明显然.

定理2(周期引理)

弱周期引理:如果\(p , q\)\(s\)的周期且\(p + q \leq | s |\),那么\(\gcd ( p , q )\)\(s\)的周期.

考虑分开两面证明,不妨设\(p > q , r = p - q\),先证明\(\forall i > q , s_i = s_{ i + r }\),事实上\(s_i = s_{ i - q } = s_{ i - q + p } = s_{ i + r }\).再考虑证明\(i \leq | s | - p , s_i = s_{ i + r }\),事实上\(s_i = s_{ i + p } = s_{ i + p - q } = s_{ i + r }\).

由于\(p + q \leq | s |\),因此上面那个证明对所有\(i\)成立,由此得证.

强周期引理:如果\(p , q\)\(s\)的周期且\(p + q - \gcd ( p , q ) \leq | s |\),那么\(\gcd ( p , q )\)\(s\)的周期.

这个有一个生成函数证明.简单来说我们不妨设长度为\(p\)的那个周期的生成函数为\(P ( z )\),它是一个\(p - 1\)次的生成函数.同理定义\(Q ( z )\).不妨设\(S_p ( z ) = \frac{ P ( z ) }{ 1 - z^p }\),同理定义\(S_q ( z )\).

如果我们能说明\(S_p ( z ) = S_q ( z )\),由于这两个都是无穷项,由欧几里得算法立刻得到\(\gcd ( p , q )\)是其周期.考虑:

\[ \begin{aligned} & S_p ( z ) - S_q ( z ) \\ = & \frac{ P ( z ) }{ 1 - z^p } - \frac{ Q ( z ) }{ 1 - z^q } \\ = & \frac{ 1 - z^g }{ ( 1 - z^p ) ( 1 - z^q ) } ( \frac{ 1 - z^q }{ 1 - z^g } P ( z ) - \frac{ 1 - z^p }{ 1 - z^g } Q ( z ) ) \end{aligned} \]

此时注意到括号里面的那个东西的次数有限,设其为\(H ( z )\),不难发现\(H ( z )\)的次数是\(p + q - g - 1\).若\(H ( z ) \ne 0\),又因为\(\frac{ 1 - z^g }{ ( 1 - z^p ) ( 1 - z^q ) }\)的常数项不为\(0\),因此\(\exists 0 \leq k \leq p + q - g - 1 , [ z^k ] ( S_p ( z ) - S_q ( z ) ) \ne 0\),但根据假设,\(\forall 0 \leq k \leq n - 1 \leq p + q - g - 1\),应该有\([ z^k ] ( S_p ( z ) - S_q ( z ) ) = 0\),因此\(H ( z ) = 0\),因此\(S_p ( z ) = S_q ( z )\).

定理3

\(S\)\(T\)的前缀,且\(T\)有周期\(a\),\(S\)有整周期\(b\),\(b | a , | S | \geq a\),则\(T\)有周期\(b\).证明显然.

定理4

\(2 | S | \geq | T |\),则\(S\)\(T\)中的匹配位置必为等差序列.

证明考虑WPL就行.

定理5

\(S\)的长度大于等于\(\frac{ n }{ 2 }\)的border长度构成一个等差序列.

不妨设最长的border长度为\(n - p\),还有一个border长度是\(n - q\),\(q > p\),那么必有长度为\(n - \gcd ( p , q )\)的border.注意到\(n - p\)是最长的border,则\(\gcd ( p , q ) \geq p\),\(p | q\).

定理6

一个串的所有border按照长度排序后,可以被划分成\(O ( \log n )\)个等差序列.

首先,将该串的长度\(\geq \frac{ n }{ 2 }\)的border拿出作为一个等差序列.考虑这些中长度最小的\(T\).

再考虑最小循环节\(d\),如果\(d \leq \frac{ n }{ 4 }\),那么不断减小一定有\(| T | \leq \frac{ 3 }{ 4 } n\).反之则最长border本身就\(\leq \frac{ 3 }{ 4 } n\),于是剩下的border都是\(T\)的border.这样就证明了\(O ( \log n )\),事实上更紧凑的界是\(\lceil \log_2 | S | \rceil\),不会证.

Example

Example1([POI2011]OKR-Periodicity)

注意到一个事实:如果这个字符串存在长度为\(k\)的周期,等价于存在长度为\(len - k\)的border,证明是显然的.

考虑从小周期开始向大周期确定,首先可以用KMP求出所有前缀的最大border,然后就可以得到整个字符串的所有border.换句话说,我们实际上是在一步一步确定整个字符串的若干前缀的最大border.

考虑border理论,设\(q\)为最小周期,如果\(2 q < n\),也就是原串能写成\(tt \cdots t '\)的形式.我们不妨先求\(tt '\)对应的答案,然后在前面拼\(t\).根据\(\leq \frac{ n }{ 2 }\)的border构成等差序列的结论,这样显然是正确的.

如果\(2 q \geq n\),此时必定有\(s = tat\),其中\(t\)是border.考虑递归求解\(t\),然后就只需要找到一个\(a\)满足条件,最小的\(a\)是全\(0\),能放的话肯定放,不然我们就放一个\(0 \cdots 01\).

为什么这样一定是对的呢?我们考虑什么时候全\(0\)不合法:

  1. 新增一个长度\(l\)的border,\(l \leq | t | + | a |\):考虑\(l\)的最后一段是一段全\(0\),也就必然意味着\(t\)的最后一段是全\(0\),这么不断推下去就可以说明整个序列都是全\(0\),此时放上\(0 \cdots 01\)必定合法.

  2. 新增一个长度\(l\)的border,\(l > | t | + | a |\):不妨设当前的\(l\)是最大的那个(最小的无意义,因为需要保证\(| l | > | t |\)),此时最短周期必然是\(d = 2 | t | + | a | - l\).由于\(| t | + | a |\)也是周期并且二者之和\(\leq n\),因此必然有\(d | ( | t | + | a | )\).把\(ta\)按照\(d\)长度划分.如果\(d \geq | a |\)必有该串是全\(0\)串,不然考虑此时\(d = | b | + | a |\),\(b\)\(t\)的一段后缀.考虑此时的周期必然\(< | b | + | a |\),首先不可能等于,如果大于的话可以平移一格.不妨假设周期比\(| b | - | a |\)少了\(w\),那么此时必定有\(b\)的前\(w\)个字符是\(0\),但是由于\(0 \cdots 01\)后面第一个\(b\)也往前平移了\(w\)格,因此它的第\(w\)个字符必定是\(1\),这就保证了\(0 \cdots 0 1\)必定合法.

SA

Example1

给定一个长度为\(n\)的字符串,要从中从左往右选出若干段不相交的子串,使得选出的这些串中,每个串都是上一个串的严格子串.求最多能选出多少段.\(n \leq 5 \times 10^5\).

不难发现一定有一组答案每段的长度是\(k , k - 1 , \cdots , 2 , 1\),我们不妨把串反过来,这样就是\(1 , 2 , \cdots , k - 1 , k\).这样就可以设计一个简单的dp是\(f_{ i , j }\)表示以\(i\)结尾,\(i\)这段长度为\(j\)是否可行,发现单调性后把dp状态扔进值里,\(f_i\)表示以\(i\)结尾的最大长度是多少,这样用SA做lcp就可以实现\(O ( n^2 )\).仔细观察转移过程,我们可以二分答案,然后用主席树+SA判断答案是否可行.复杂度\(O ( n \log^2 n )\).

那么怎么优化呢?我们考虑类似height的证明:\(f_i \leq f_{ i - 1 } + 1\),原因很简单,如果\(f_i > f_{ i - 1 } + 1\),那么我们把\(f_i\)那个序列的末尾字符全部删掉,自然得到了一个以\(i - 1\)结尾,长度为\(f_i - 1 > f_{ i - 1 }\)的串,于是就可以类似height那样去掉二分,很厉害.

ACAM

用于对于每个文本串的前缀,求出它以哪些模式串为后缀.

Example1(uoj772企鹅游戏)

考虑一个暴力:建出\(s\)的AC自动机,然后我们记录fail树结构,然后把\(t\)放上去跑,每次暴力向上跳fail树上的匹配节点,这样的复杂度就是\(O ( \sum 匹 配 节 点 个 数 )\).

但是这个复杂度是正确的.

为啥呢?首先对于任意节点,它在fail树上的祖先中匹配节点个数不可能超过\(O ( \sqrt{ L } )\)个,这是个自然根号,因此复杂度至少是\(O ( L \sqrt{ L } )\).

但还没完,考虑所有长度小于等于\(B\)的模式串,他们会被匹配\(O ( B | t | )\)次.对于所有长度大于\(B\)的模式串,考虑只有长度大于\(B\)的文本串会匹配到他们,于是复杂度\(O ( \frac{ L^2 }{ B^2 } )\),\(B = L^{ \frac{ 1 }{ 3 } }\)得到\(O ( L^{ \frac{ 4 }{ 3 } } )\).

Example2(loj3396 novel)

offline.

PAM

引理

  1. 本质不同回文串最多只有\(n\)个.

证明:考虑类似manacher,每次将\(S \rightarrow S + c\),新产生的回文串一定是\(S + c\)的最长回文后缀.

算法

回文自动机由转移边和fail树构成,经过一条转移边的影响是在前后均添加一个该字符,一个状态在fail树上指向它的最长回文border.

我们记录两个根:长度为\(- 1\)的奇根和长度为\(0\)的偶根,偶根的失配指针指向奇根.

增量构造,每次加入个新字符,然后在fail树上跳祖先直到\(s_i = s_{ i - len - 1 }\).

继续跳这个节点,直到又遇到一个位置,那这个位置就是当前节点的fail指针所指向的点.这个操作是\(O ( n )\)的,因为这个fail指针只有一个永远不会访问,另外的都会访问至少一次,在访问的时候就会均摊掉求的时候往上跳的复杂度,因为深度直接减去这玩意了.

SAM

  1. \(endpos ( T )\)表示子串\(T\)\(S\)中出现位置的末尾集合,特别地,我们设\(endpos ( \emptyset ) = \{ 1 , \cdots , | S | - 1 , | S | \}\).

  2. 若两个不同的子串的\(endpos\)相等,则称它们为一个\(endpos\)等价类.

下面开始证明引理:

引理

  1. 字符串\(s\)的两个非空子串\(u\)\(w\)\(endpos\)相同(假设\(| u | \leq | w |\)),当且仅当字符串\(u\)\(s\)中的每次出现,都是以\(w\)后缀的形式存在.

  2. 字符串\(s\)的两个非空子串\(u\)\(w\)\(endpos\)集合的交为空(假设\(| u | \leq | w |\)),当且仅当字符串\(u\)不是\(w\)的后缀.

  3. 字符串\(s\)的两个非空子串\(u\)\(w\)\(endpos\)集合的交为\(endpos ( w )\)(假设\(| u | \leq | w |\)),当且仅当字符串\(u\)\(w\)的后缀.

证明都是显然的.

  1. 对于一个\(endpos\)等价类中的子串\(u\),要么\(u\)是这个等价类中最短的子串,要么存在一个子串\(w\)\(| w | + 1 = | u |\),\(w\)\(u\)的后缀

由前面的引理,容易证明.

  1. 对于一个\(endpos\)等价类中最短的子串\(w\),不妨设\(v\)\(w\)去掉最前面的元素后得到的子串,那么\(v\)在另一个\(endpos\)等价类中,我们将\(endpos ( w ) \rightarrow endpos ( v )\),记\(link ( w ) = v\)\(fa ( w ) = v\),这就是后缀链接link,这些关系构成树.

首先除了\(\emptyset\),每个\(w\)的出度都是\(1\),而我们发现所有的子串都会以\(\emptyset\)作为祖先,这就证明了连通性.

  1. \(endpos\)等价类的数量有\(O ( n )\)个.

考虑后缀链接树,显然一个点的\(endpos\)集合包含它的所有儿子的\(endpos\)集合的并,并且它所有儿子的\(endpos\)集合两两无交,这等价于一个合并的过程.

约定

  1. \(longest ( v )\)\(v\)这个\(endpos\)等价类中最长的一个字符串,记\(len ( v )\)为它的长度.类似地定义\(shortest ( v )\)\(minlen ( v )\),不难发现\(minlen ( v ) = len ( fa ( v ) ) + 1\).每个节点的子串数量也就是\(len ( v ) - len ( fa ( v ) )\).

  2. \(siz ( v )\)\(v\)这个\(endpos\)等价类的\(endpos\)集合的大小.

算法

先来捋一下整个过程:整个SAM分为两部分:

第一部分:后缀链接树(parent tree).

它的信息由下文中的fa记录.对于每一个节点:它对应一个endpos等价类,因此它拥有一个父亲节点,也就是后缀链接link指向的节点.同时它拥有一个len,表示这个endpos等价类中最长的子串的长度.

第二部分:trie图.

它的信息由下文中的son记录,表示一个endpos(设为x)通过一条trie边走到另一个endpos(设为y),不难发现x中的所有endpos+1所形成的集合包含y.我们注意这一点后,会发现只要从\(\emptyset\)所代表的节点不断地走trie边,最后走到的节点的对应长度的子串就是我们想要的子串.这也意味着我们要保证对应长度的子串一定在走到节点的子串集合中.另外有个结论是trie图的边数是\(O ( n )\)的.这必然要求走trie走到的那个节点的\(len\)的长度的区间包含了这个节点的\(len\)的长度的区间\(+ 1\).

也就是说,走trie边的过程是不断在字符串后面添加字符的过程,而走link的过程是不断在字符串前面删去字符串的过程(当然,反向link自然是不断在字符串前面加上另一个字符串集合的过程).

下面给出构造代码.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
struct SAM{
int fa;
int son[27];
int len,siz;
}tr[MAXN<<1|1];
int cntp=1,las=1;
int End[MAXN];
inline void add_c(int c,int i){
int x=++cntp;
End[i]=x;tr[x].siz=1;//新建一个endpos={i}
//End[i]存的是前缀[1,i]的结束位置,由于我们当前正在插入i,自然是x.
int prex=las;
las=cntp;
//las存储的是当前的终止节点,其实也就是End[i],我们每次要找到上一次的终止节点,根据它来操作.
tr[x].len=tr[prex].len+1;
for(;prex&&tr[prex].son[c]==0;prex=tr[prex].fa)tr[prex].son[c]=x;
//考虑当前的串:[1,i-1]+'c',如果前面存在一个endpos集合包含[j,i-1](这个集合可能是空子串所在的集合)并且它存在一条'c'边,那么就存在这么一个子串[j,i-1]+'c',它的endpos应该是{i}这个集合的祖先.
//如果在判断[j,i-1]的时候,发现[j,i-1]+'c'在原串中不存在,那么我们就直接连过来.可以发现在这个跳跃的过程中就是不断探索当前x的shortest的过程.
if(!prex){
//说明一直到最后都没有找到字母c,这也意味着c在前面根本没出现过,于是endpos={i}的等价类是[1,i],[2,i],...,[i,i],所以父亲设为1.
tr[x].fa=1;
return ;
}
int y=tr[prex].son[c];
//考虑这里的prex到底是什么意义,它意味着我们找到了一个最长的[j,i-1]的子串所在的endpos集合,并且[j,i-1]+'c'这个子串在原串存在,这也意味着[j,i-1]+'c'这个子串所在的endpos集合必然真包含{i},而这个子串的长度是tr[prex].len+1.
if(tr[y].len==tr[prex].len+1){
//如果y这个节点的长度恰好也是tr[prex].len+1,那么必然意味着[j,i]这个子串完全就在y这里,而[j-1,i]这些子串不在y这里,但被y表示的endpos集合包含.
tr[x].fa=y;
}
else {
//反之,这里y这个节点的endpos集合就可以分成两部分了:第一部分的endpos集合在加入[j,i]这个子串后不变:因为它们的长度都大于tr[prex].len+1,它们必然不可能存在一个endpos是i.而第二部分,其实也只包含一个子串:就是长度等于tr[prex].len+1的子串,它的endpos集合必然是第一部分的endpos集合并上{i},根据我们上面所发现的parent tree的本质是合并endpos集合的性质,它应该是第一部分以及{i}的父亲(也就是这两部分合并的结果),我们把第二部分拿出来单独建点.
int fay=++cntp;
tr[fay]=tr[y];
tr[fay].len=tr[prex].len+1;
tr[y].fa=tr[x].fa=fay;
for(;prex&&tr[prex].son[c]==y;prex=tr[prex].fa)tr[prex].son[c]=fay;
//注意单独建点后,原本指向y的trie边要改向.这是为什么呢?考虑当前这条边是什么意义:它必然指向一个endpos集合要包含{i}的点,因为这样才能保证trie图的性质.此时指向y的点就不能是包含{i-1}的点了.
}
return ;
}
int que[MAXN<<1],l,r;
int ind[MAXn<<1];
inline void work_siz(){//通过一次拓扑排序处理出siz
l=1,r=0;
for(int i=1;i<=cnt;++i){
++ind[tr[i].fa];
}
for(int i=1;i<=cnt;++i){
if(ind[i]==0)que[++r]=i;
}
while(l<=r){
int x=que[l];++l;
tr[tr[x].fa].siz+=tr[x].siz;
--ind[tr[x].fa];
if(ind[tr[x].fa]==0)que[++r]=tr[x].fa;
}
return ;
}

其实还是省掉了很多说明:比如这里的复杂度证明以及边数证明,但是我们咕了吧.

应用

检查字符串是否出现

从根开始跳trie边就行.

不同子串个数

显然是\(\sum len_i - len_{ fa_i }\).

例题

Example1

给出一个长度为\(n\)的小写字母串,你需要计算有多少对非空字符串\(( A , B )\)满足:

  1. \(AB\)是原串的子串.

  2. 每次\(A\)在原串中作为子串出现后,要么紧跟着出现一个子串\(B\),要么\(A\)后面放不下一个子串\(B\).

两个字符串被认为是不同的当且仅当他们在某个位置上字母不同,\(| S | \leq 2 \times 10^5\).

首先,我们考虑确定\(( AB , A )\)这个二元组,对反串建立SAM,我们自然有:

  1. \(AB\)的endpos集合是\(A\)的endpos集合的后缀.

  2. \(A\)的endpos集合中存在的最大的不存在于\(AB\)的endpos集合的endpos的大小小于\(| AB |\).

看到这里你可能有疑问:为啥要建立反串.因为不建立反串的话\(( AB , B )\)的endpos可能根本没啥区别,这个很难处理\(A\).SAM最强大的武器还是在于它能快速处理endpos.

那么接下来我们要在SAM上判断这两件事,我们需要一些更方便判断的条件.首先一个自然的发现是,\(A\)的最大的endpos必然也是\(AB\)的最大的endpos,我们进行一个类似重链剖分的操作:将每个点的重儿子设为它所有儿子中最大的endpos最大的那个.不难发现此时的\(A\)\(AB\)必然在同一条重链上,且\(A\)\(AB\)的祖先.不过显然这并不能保证一定是后缀,我们开始补条件,直到补到它充要:另一个显然的条件是,设\(mx_v\)表示节点\(v\)的轻儿子中最大的endpos最大是多少,那么\(A\)\(AB\)间的所有\(mx\)的最大值就是\(A\)的endpos集合中存在的最大的不存在于\(AB\)的endpos集合的endpos的大小,它需要小于\(| AB |\).进一步发现这个数字必然需要小于\(AB\)的endpos的集合中最小的那个(不然就不是后缀),这被包含于小于\(| AB |\)这个条件.

接下来就拆重链,写单调栈就行.

高数基础补档

复数相关

棣莫弗定理:\(( cos \theta + i \sin \theta )^n = \cos ( n \theta ) + i \sin ( n \theta )\).

欧拉公式:\(e^{ i \pi } = - 1\).

也就是\(e^{ 2 i \pi } = 1\),同时又有\(e^{ i \theta } = cos \theta + i · sin \theta\),证明直接使用泰勒展开.

单位根:对于\(x^n = 1\),我们会有\(n\)个根,设第\(k\)个根为\(\omega_n^k\).那么我们有:\(\omega_n^k = e^{ 2 \pi \frac{ k }{ n } i } = cos ( 2 \pi \frac{ k }{ n } ) + i · sin ( 2 \pi \frac{ k }{ n } )\).

单位根有以下性质:

  1. 折半引理:\(\omega_{ 2 n }^{ 2 k } = \omega_n^k \\\),由我们上面推导的通项公式即可证明.

  2. 消去引理:\(\omega_n^{ k + \frac{ n }{ 2 } } = - \omega_n^k \\\),同样使用通项,运用三角恒等变换可证明.

分圆多项式

上复平面,设\(S_k = ( \cos \frac{ 2 k \pi }{ n } , \sin \frac{ 2 k \pi }{ n } )\),也就是\(z_k = \cos \frac{ 2 k \pi }{ n } + i \sin \frac{ 2 k \pi }{ n }\)是方程\(z^n - 1 = 0\)的复根.我们把这个方程写开:

\[ z^n - 1 = ( z - 1 ) ( z^{ n - 1 } + z^{ n - 2 } + \cdots + 1 ) = 0 \]

不难发现\(z = 1\)是平凡解.

我们不妨定义\(f ( x ) = \prod_{ k = 1 }^n ( 1 + X^k ) = \sum_{ k \geq 0 } a_k X^k\),事实上我们有:

\[ \begin{aligned} \frac{ 1 }{ n } \sum_{ j = 1 }^n f ( \omega_n^j ) & = \frac{ 1 }{ n } \sum_{ j = 1 }^n \sum_{ k \geq 0 } a_k \omega^{ kj }_n \\ & = \frac{ 1 }{ n } \sum_{ k \geq 0 } a_k \sum_{ j = 1 }^n \omega_{ n }^{ kj } \\ & = \sum_{ j \geq 0 } a_{ jn } + \frac{ 1 }{ n } \sum_{ k \geq 0 , n \nmid k } a_k \frac{ 1 - \omega^{ nj }_n }{ 1 - \omega^{ k }_n } \omega_{ n }^j \\ & = \sum_{ j \geq 0 } a_{ jn } \end{aligned} \]

事实上,我们令\(d = \frac{ n }{ \gcd ( j , n ) }\),容易发现\(f ( \omega_n^j ) = ( \prod_{ k = 1 }^d ( 1 + \omega_n^{ kj } ) )^{ \frac{ n }{ d } }\),又容易发现\(n | jd\).

接下来观察\(X^d - 1 = \prod_{ k = 1 }^d ( X - \omega_{ n }^{ kj } )\),带入\(X = - 1\)得到\(f ( \omega_n^j ) = \begin{cases}2^{ \frac{ n }{ d } } & d \in \text{ odd } \\ 0 & d \in \text{ even }\end{cases}\).

接下来考虑拿到\(\sum_{ j } a_{ jn }\),只需求\(\frac{ 1 }{ n } \sum_{ j = 1 }^n f ( \omega_n^j ) = \frac{ 1 }{ n } \sum_{ d \in \text{ odd } , \gcd ( j , n ) = \frac{ n }{ d } } 2^{ \frac{ n }{ d } } = \frac{ 1 }{ n } \sum_{ d \in \text{ odd } } \varphi ( d ) 2^{ \frac{ n }{ d } }\).

Example(尺规做正n边形问题)

碰瓷高斯问题.

一步一步来.根据尺规作图理论:尺规作图只可以实现\(+ , - , \times , \div , \sqrt[2]{ }\)五种操作.而对于正\(n\)边形,显然只要我们能将\(\cos \frac{ 2 \pi }{ n }\)用只含上述五种操作和若干整数表示出来,那就一定可行.

正五边形问题

观察正五边形在复平面上的图像,注意到有两对点互为共轭复数,我们令:

\[ \begin{aligned} \sigma_1 & = z_1 + z_4 \\ \sigma_2 & = z_2 + z_3 \end{aligned} \]

不难验证:

\[ \begin{aligned} \sigma_1 + \sigma_2 & = - 1 \\ \sigma_1 \sigma_2 & = - 1 \end{aligned} \]

可以求出复合条件的解,将\(z\)带入又有:

\[ \begin{aligned} \sigma_1 & = 2 \cos \frac{ 2 \pi }{ 5 } \\ \sigma_2 & = 2 \cos \frac{ 4 \pi }{ 5 } \end{aligned} \]

于是我们显然可以求得.

正七边形

类似正五边形,最后会导出三次方程:根中含有三次根号,因此不行.

正n边形

要解决正17边形,只需要解决正n边形,然后令n=17即可.

你问我咋想到的下面的证明?问高斯去.

下面其实用到了ntt知识,但我懒得扔下面了.

先假设\(n \in \mathrm{ prime }\),我们用\(p\)代替\(n\).

我们有\(z_1 = \cos \frac{ 2 \pi }{ p } + i \sin \frac{ 2 \pi }{ p }\),由于其它的\(z\)都可以表示成它的幂,因此我们记\(\varepsilon = z_1\).

我们现在想要这么分组:

\[ \sigma_{ k + 1 } = \sum_{ 1 \leq l \leq p - 1 , f ( l , k ) = 1 } \varepsilon^l \]

泰勒展开

\(f ( x ) = g ( x ) = f ( x_0 ) + \sum_{ k \geq 1 } \frac{ f^{ ( k ) } ( x_0 ) }{ k ! } ( x - x_0 )^k \\\).\(x_0 = 0\)的时候是麦克劳林级数.

麦克劳林展开是生成函数的基础,我们所谓的生成函数的封闭形式其实就是麦克劳林展开的逆运算(可能也不能完全等价,但笔者能力不够,暂且这么理解).

多项式

多项式基础

点值表示法和系数表示法

代数基本定理:一个\(n - 1\)次方程在复数域上有且只有\(n - 1\)个根.

定理:一个\(n - 1\)次多项式在\(n\)个不同点的取值唯一确定了该多项式.

证明:考虑反证法,假设命题不成立,则存在两个\(n - 1\)次多项式\(A ( x )\)\(B ( x )\)且有\(\forall i \in [ 0 , n - 1 ] , A ( x_i ) = B ( x_i ) \\\).

\(C ( x ) = A ( x ) - B ( x )\),那么\(C ( x )\)至多是一个\(n - 1\)次多项式且\(\forall i \in [ 0 , n - 1 ] , C ( x_i ) = 0 \\\),也就是\(C ( x )\)\(n\)个根,与代数基本定理不符合.

由上面的内容,多项式有点值表示法和系数表示法两种:

系数表示法:\(A ( x ) = \sum_{ i = 0 }^{ n - 1 } a_i x^i \\\).

点值表示法:\(y_i = \sum_{ j = 0 }^{ n - 1 } a_j x_i^j \\\).

已知多项式点值表示法求系数表示法的过程被称为插值.

拉格朗日插值

构造多项式\(\sum_{ i = 0 }^{ n - 1 } y_i ( \prod_{ j = 0 \land j \ne i }^{ n - 1 } \frac{ x - x_j }{ x_i - x_j } ) \\\).显然当\(x = x_i\)时,该多项式的答案为\(y_i\).

另外,如果\(x_i = i\),不难发现这个式子可以写成:

\[ \begin{aligned} & \sum_{ i = 1 }^{ n } y_i ( \prod_{ j = 1 \land j \ne i }^{ n } \frac{ x - x_j }{ x_i - x_j } ) \\ \\ = & \sum_{ i = 1 }^n y_i ( \prod_{ j = 1 \land j \ne i }^n \cfrac{ x - j }{ i - j } ) \\ = & \sum_{ i = 1 }^n y_i ( - 1 )^{ n - i } ( \cfrac{ 1 }{ ( i - 1 ) ! ( n - i ) ! } \prod_{ j = 1 , j \ne i }^{ n } ( x - j ) ) \end{aligned} \]

多项式运算

考虑两个多项式相乘,如果我们已知他们的点值表示法,显然可以直接相乘.

这为我们提供了一种思路:先将系数表示法转化为点值表示法,进行相乘之后再转化回系数表示法.

这引出以FFT为代表的多项式乘法,并拓展到了多种多项式运算.

多项式乘法

快速傅里叶变换(FFT)
DFT

\(n\)次单位根(默认\(n\)是二的整次幂,如果少了的话补零,设\(n = 2^w\))分别带入\(A ( x )\)得到点值向量\(A ( \omega_n^k ) \\\).

如果朴素带入,复杂度显然不可接受.

考虑:

$$ \[\begin{aligned} A ( x ) & = \sum_{ i = 0 }^{ n - 1 } a_i x^i \\ & = \sum_{ i = 2 k , k \in \mathbb{ N } }^{ n - 2 } a_i x^i + \sum_{ i = 2 k + 1 , k \in \mathbb{ N } }^{ n - 1 } a_i x^i \\ & = \sum_{ i = 2 k , k \in \mathbb{ N } }^{ n - 2 } a_i x^{ 2 k } + x \sum_{ i = 2 k + 1 , k \in \mathbb{ N } }^{ n - 1 } a_i x^{ 2 k } \\ \end{aligned}\]

$$

A_2(x)=_{i=2k+1,k}{n-1}a_ix{k}\\(, 那 么\)A(x)=A_1(x2)+xA_2(x2)\

接下来分类讨论:

\(\forall 0 \leq k \leq \frac{ n }{ 2 } - 1 , k \in \mathbb{ N } \\\),我们有:

$$ \[\begin{aligned} A ( \omega_n^k ) & = A_1 ( \omega_n^{ 2 k } ) + \omega_n^k A_2 ( \omega_n^{ 2 k } ) \\ \end{aligned}\]

$$

根据折半引理:

$$ \[\begin{aligned} A ( \omega_n^k ) & = A_1 ( \omega_{ \frac{ n }{ 2 } }^k ) + \omega_n^k A_2 ( \omega^k_{ \frac{ n }{ 2 } } ) \\ \end{aligned}\]

$$

这样我们处理完了前半部分.

\(\forall \frac{ n }{ 2 } \leq k + \frac{ n }{ 2 } \leq n - 1 , k \in \mathbb{ N } \\\),我们有:

$$ \[\begin{aligned} A ( \omega_n^{ k + \frac{ n }{ 2 } } ) & = A_1 ( \omega_n^{ 2 k + n } ) + \omega_n^{ k + \frac{ n }{ 2 } } A_2 ( \omega_n^{ 2 k + n } ) \\ \end{aligned}\]

$$

根据消去引理:

$$ \[\begin{aligned} A ( \omega_n^{ k + \frac{ n }{ 2 } } ) & = A_1 ( \omega_{ \frac{ n }{ 2 } }^k ) - \omega_n^k A_2 ( \omega_{ \frac{ n }{ 2 } }^k ) \\ \end{aligned}\]

$$

综上,我们可以递归处理\(A_1\)\(A_2\),然后合并得到\(A\)的答案,可以分治.

IDFT

\(A ( \omega_n^k ) = d_k \\\),构造多项式\(F ( x ) = \sum_{ i = 0 }^{ n - 1 } d_i x^i \\\).

我们求出\(F ( x )\)的点值表示,设\(c_k = F ( \omega_n^{ - k } ) \\\),也即:

$$ \[\begin{aligned} c_k & = \sum_{ i = 0 }^{ n - 1 } d_i ( \omega_n^{ - k } )^i \\ & = \sum_{ i = 0 }^{ n - 1 } ( \sum_{ j = 0 }^{ n - 1 } a_j ( \omega_n^i )^j ) ( \omega_n^{ - k } )^i \\ & = \sum_{ j = 0 }^{ n - 1 } a_j \sum_{ i = 0 }^{ n - 1 } ( \omega_n^i )^{ j - k } \\ \end{aligned}\]

$$

\(j = k\)时,显然\(\sum_{ i = 0 }^{ n - 1 } ( \omega_n^i )^{ j - k } = n \\\).

否则根据等比数列求和公式,\(\sum_{ i = 0 }^{ n - 1 } ( \omega_n^i )^{ j - k } = \frac{ \omega^0_n [ ( \omega_n^{ j - k } )^n - 1 ] }{ \omega_n^{ j - k } - 1 } = 0 \\\).

所以\(\sum_{ i = 0 }^{ n - 1 } ( \omega_n^i )^{ j - k } = n [ j = k ] \\\).

那么我们有

a_k=\

写法

递归写法显然.

递归过程中,第\(k\)层相当于在根据数在第\(k\)位的二进制数是\(1\)还是\(0\)来分类.那显然可以求出最后一层的数组,然后向上合并.

(没找到fft的代码,懒得写了,直接用的ntt的,注意快速幂要处理幂为负数的情况).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
inline void init_rev(int limit,int k){
rev[0]=0;
for(int i=1;i<limit;++i){
rev[i]=(rev[i>>1]>>1)|((i&1)<<(k-1));
}
return ;
}
inline void ntt(int limit,ll *a,ll t){//DFT:t=1;IDFT:t=-1
for(int i=0;i<limit;++i){
if(i<rev[i])std::swap(a[i],a[rev[i]]);
}
for(int mid=1;mid<limit;mid=mid<<1){
int n=mid<<1;
ll wn=mpow(gn,t*(mod-1)/n);
for(int i=0;i<limit;i+=n){
ll w=1;
for(int k=0;k<mid;++k,w=w*wn%mod){
ll wakn=w*a[i+k+mid]%mod;
ll ak=a[i+k];
a[i+k]=ak+wakn;Mod(a[i+k]);
a[i+k+mid]=ak-wakn+mod;Mod(a[i+k+mid]);
}
}
}
if(t==-1){
ll inv=mpow(limit,-1);
for(int i=0;i<limit;++i){
a[i]=a[i]*inv%mod;
}
}
return ;
}
快速数论变换(NTT)

由于FFT中的单位根会产生精度误差,因此在膜\(998244353\)意义下,通常会选择NTT来进行多项式乘法.

NTT与FFT的运算过程基本相同,证明过程基本相同,唯一不同的是将单位根改为了原根.

根据上面FFT的证明过程,我们知道,设原根为\(g\),\(g_n = g^{ \frac{ p - 1 }{ n } } \\\),只需要证明原根满足以下条件,就可以进行变换:

  1. \(g_n^n = g_n^0 = 1\)\(\forall 0 \leq i < j < n , g_n^i \ne g_n^j\),证明由原根的性质.

  2. 折半引理:\(g_{ 2 n }^{ 2 k } = g_{ n }^k\),证明显然.

  3. 消去引理:\(g_{ n }^{ k + \frac{ n }{ 2 } } = - g^k_n \\\).由于\(g^{ \frac{ p - 1 }{ 2 } } = - 1\),该结论显然成立.

由上我们证明了,我们完全可以使用\(g_n\)代替\(\omega_n\)进行变换.

另外,注意到\(998244352 = 2^{ 23 } \times 7 \times 17 \\\),而\(2^{ 23 } \approx 8 \times 10^6 \\\).因而,当\(n \leq 8 \times 10^6\)的时候,\(g_n\)可以直接求出.这也是为什么大部分NTT题目都使用\(998244353\)作为模数的原因.

范德蒙德矩阵理解

范德蒙德矩阵形如:

\[ \begin{bmatrix} 1 & \alpha_1 & \cdots & \alpha_1^{ n - 1 } \\ 1 & \alpha_2 & \cdots & \alpha_2^{ n - 1 } \\ \vdots & \vdots & \ddots & \vdots \\ 1 & \alpha_m & \cdots & \alpha_m^{ n - 1 } \end{bmatrix} \in \mathbb{ R }^{ m \times n } \]

如果取单位根,我们有:

\[ \begin{bmatrix} 1 & 1 & \cdots & 1 \\ 1 & \omega_n^1 & \cdots & \omega_2^{ n - 1 } \\ \vdots & \vdots & \ddots & \vdots \\ 1 & \omega_n^{ n - 1 } & \cdots & \omega_n^{ ( n - 1 )^2 } \end{bmatrix} \in \mathbb{ R }^{ n \times n } \]

这就是我们在做FFT(一个线性变换)的时候的变换矩阵.所以我们有:

\[ \begin{bmatrix} 1 & 1 & \cdots & 1 \\ 1 & \omega_n^1 & \cdots & \omega_2^{ n - 1 } \\ \vdots & \vdots & \ddots & \vdots \\ 1 & \omega_n^{ n - 1 } & \cdots & \omega_n^{ ( n - 1 )^2 } \end{bmatrix}^{ - 1 } = \frac{ 1 }{ n } \begin{bmatrix} 1 & 1 & \cdots & 1 \\ 1 & \omega_n^{ - 1 } & \cdots & \omega_2^{ - ( n - 1 ) } \\ \vdots & \vdots & \ddots & \vdots \\ 1 & \omega_n^{ - ( n - 1 ) } & \cdots & \omega_n^{ - ( n - 1 )^2 } \end{bmatrix} \]

分治FFT

给定\(g ( x )\)\(f ( 0 )\),求\(f ( x ) = \sum_{ y = 1 }^x f ( x - y ) g ( y )\),答案对\(998244353\)取膜.

考虑分治,假如我们已经知道了\(f ( x ) , x \in [ 1 , \frac{ n }{ 2 } ]\).那我们可以计算出这段部分对\(f ( y ) , y \in [ \frac{ n }{ 2 } + 1 , n ]\)的贡献.

这显然是一个卷积的形式,我们直接计算\(f\)\(g\)的乘积并贡献上去.

多项式求逆

对于多项式\(P ( x )\),找到\(Q ( x )\)使得\(Q ( x ) P ( x ) \equiv 1 \pmod{ x^{ n } } \\\).显然\(Q ( x )\)是唯一的.

首先不妨设\(n = 2^k \\\).

如果我们已知\(P ( x ) Q_{ k - 1 } ( x ) \equiv 1 \pmod{ x^{ 2^{ k - 1 } } } \\\),同时肯定有\(P ( x ) Q_{ k } ( x ) \equiv 1 \pmod{ x^{ 2^{ k - 1 } } } \\\),相减得到\(Q_k ( x ) - Q_{ k - 1 } ( x ) \equiv 0 \pmod{ x^{ 2^{ k - 1 } } } \\\).

两边平方:

$$ \[\begin{aligned} Q_k^2 ( x ) + Q^2_{ k - 1 } ( x ) - 2 Q_k ( x ) Q_{ k - 1 } ( x ) & \equiv 0 \pmod{ x^{ 2^k } } \\ \end{aligned}\]

$$

两边乘一下\(P ( x )\):

$$ \[\begin{aligned} Q_k ( x ) - 2 Q_{ k - 1 } ( x ) + P ( x ) Q_{ k - 1 }^2 ( x ) & \equiv 0 \pmod{ x^n } \\ Q_k ( x ) & \equiv 2 Q_{ k - 1 } ( x ) - P ( x ) Q_{ k - 1 }^2 ( x ) \pmod{ x^n } \\ \end{aligned}\]

$$

根据主定理,这么做复杂度是\(O ( n \log_2 n )\)的.

同时,多项式求逆可以解决上面提到的分治FFT.我们注意到分治FFT的条件等价于:

\[ \begin{aligned} F ( x ) & \equiv F ( x ) G ( x ) + f_0 \pmod{ x^{ n + 1 } } \\ F ( x ) & = \frac{ f ( 0 ) }{ 1 - G ( x ) } \pmod{ x^{ n + 1 } } \end{aligned} \]

于是可以直接做多项式求逆.

多项式除法

对于\(n\)次多项式\(F ( x )\)\(m\)次多项式\(G ( x )\),找到\(Q ( x ) , R ( x )\)使得\(F ( x ) = G ( x ) Q ( x ) + R ( x ) \\\).

考虑对于\(n\)次多项式\(F ( x )\),令\(F_R ( x ) = x^n F ( \cfrac{ 1 }{ x } )\),如果设\(f_i\)为其\(x^i\)项前的系数,不难发现\(f_R ( i ) = f ( n - i )\).

那么我们有:

\[ \begin{aligned} F ( x ) & = G ( x ) Q ( x ) + R ( x ) \\ F ( \cfrac{ 1 }{ x } ) & = G ( \cfrac{ 1 }{ x } ) Q ( \cfrac{ 1 }{ x } ) + R ( \cfrac{ 1 }{ x } ) \\ x^n F ( \cfrac{ 1 }{ x } ) & = x^m G ( \cfrac{ 1 }{ x } ) x^{ n - m } Q ( \cfrac{ 1 }{ x } ) + x^{ n - m + 1 } x^{ m - 1 } R ( \cfrac{ 1 }{ x } ) \\ F_R ( x ) & = G_R ( x ) Q_R ( x ) + x^{ n - m + 1 } R_R ( x ) \\ F_R ( x ) & \equiv G_R ( x ) Q_R ( x ) \pmod{ x^{ n - m + 1 } } \\ Q_R ( x ) & \equiv F_R ( x ) G_R^{ - 1 } ( x ) \pmod{ x^{ n - m + 1 } } \end{aligned} \]

于是只要做一遍多项式求逆即可求得\(Q ( x )\),再做一遍相减既可以得到\(R ( x )\).

多项式ln

给出\(n - 1\)次多项式\(A ( x )\),求一个多项式\(B ( x )\),满足\(B ( x ) \equiv \ln A ( x )\).

我们有:

$$ \[\begin{aligned} B ( x ) & \equiv \ln A ( x ) \pmod{ x^n } \\ B ' ( x ) & \equiv \cfrac{ A ' ( x ) }{ A ( x ) } \pmod{ nx^{ n - 1 } } \\ B ( x ) & \equiv \int \cfrac{ A ' ( x ) }{ A ( x ) } dx \pmod{ x^n } \\ \end{aligned}\]

$$

另外,考虑中间求导的过程中,其实模数也要相应发生变化,但是由于模数是从更高次变低,而最后积分的时候又要变回来,所以可以直接忽略变化.

定理:在模意义下当且仅当\([ x^0 ] f ( x ) = 1\)的时候,\(f ( x )\)有对数多项式.

我们对最后再做一步:

$$ \[\begin{aligned} B ( x ) & \equiv \int_0^x \cfrac{ A ' ( t ) }{ A ( t ) } dt + B ( 0 ) \pmod{ x^n } \\ \end{aligned}\]

$$

首先\(B ( 0 ) = \ln A ( 0 ) = \ln a_0\),如果\(a_0 \in \mathbb{ Q } \land a_0 \ne 1\),则\(B ( 0 ) \notin \mathbb{ Q }\),因此不能放到模意义下,自然不存在对数多项式.

\([ x^0 ] f ( x ) = 1\)的时候,\(B ( 0 ) = 0\),因此可以直接求出答案.

牛顿迭代

给定多项式\(G ( x )\),求一个多项式\(F ( x )\)满足\(G ( F ( x ) ) \equiv 0 \pmod{ x^n }\).

首先\(n = 1\)的时候,也就是求\(G ( F ( x ) ) \equiv 0 \pmod{ x }\).这个要根据具体题目具体分析求出.

假设我们已经求出了在\(\bmod x^{ \lceil \frac{ n }{ 2 } \rceil }\)意义下的答案\(F_0 ( x )\),我们考虑在\(F_0 ( x )\)处做泰勒展开:

$$ \[\begin{aligned} G ( F ( x ) ) & = \sum_{ k = 0 }^{ + \infty } \frac{ G^{ ( k ) } ( F_0 ( x ) ) }{ k ! } ( F ( x ) - F_0 ( x ) )^k \equiv 0 \pmod{ x^n } \\ \end{aligned}\]

$$

考虑\(F ( x ) - F_0 ( x )\),由于\(F_0 ( x ) \equiv F ( x ) \pmod{ x^{ \lceil \frac{ n }{ 2 } \rceil } }\),因此,因此\(( F ( x ) - F_0 ( x ) )^2 \equiv 0 \pmod{ x^n }\).

于是我们有:

\[ \begin{aligned} \sum_{ k = 0 }^{ + \infty } \frac{ G^{ ( k ) } ( F_0 ( x ) ) }{ k ! } ( F ( x ) - F_0 ( x ) )^k & \equiv 0 \pmod{ x^n } \\ G ( F_0 ( x ) ) + G ' ( F_0 ( x ) ) ( F ( x ) - F_0 ( x ) ) & \equiv 0 \pmod{ x^n } \\ F ( x ) & \equiv F_0 ( x ) - \frac{ G ( F_0 ( x ) ) }{ G ' ( F_0 ( x ) ) } \pmod{ x^n } \end{aligned} \]

牛顿迭代可以用来证明多项式求逆的式子同样正确.

多项式开方

给定\(h ( x )\),设\(g ( f ( x ) ) = f^2 ( x ) - h ( x )\),求零点.

根据牛顿迭代,有:

\[ f ( x ) \equiv f_0 ( x ) - \frac{ f^2 ( x ) - h ( x ) }{ 2 f_0 ( x ) } \equiv \frac{ f^2 ( x ) + h ( x ) }{ 2 f_0 ( x ) } \pmod{ x^n } \]

还没完,用牛顿迭代前一定要求\(g ( a ) \equiv 0 \pmod{ x^n }\)的解,也就是\([ x^0 ] h ( x )\)的开根,用二次剩余算.

多项式exp

给定\(h ( x )\),设\(g ( f ( x ) ) = \ln f ( x ) - h ( x )\),求零点.

根据牛顿迭代,有:

\[ \begin{aligned} f ( x ) & \equiv f_0 ( x ) - \frac{ \ln f_0 ( x ) - h ( x ) }{ \frac{ 1 }{ f_0 ( x ) } } \pmod{ x^n } \\ & \equiv f_0 ( x ) ( 1 - \ln f_0 ( x ) + h ( x ) ) \pmod{ x^n } \end{aligned} \]

还没完,还需要求\(g ( a ) \equiv 0 \pmod{ x^n }\)的解,注意到存在\(\exp\)当且仅当\([ x^0 ] g ( x ) \equiv 0\),此时\(f ( x ) \equiv 1 \pmod{ x }\).

多项式快速幂

\(\ln\)后求\(\exp\)即可,唯一的问题是为什么指数可以对\(p\)取膜.

我们有一个结论:

\[ f ( x^p ) \equiv f ( x )^p \pmod{ p } \]

这个结论很简单,注意到\(( a + b )^p \equiv a^p + b^p \pmod{ p }\)即可.

而又由于\(n < p\),因此\(f ( x )^p \equiv f ( 0 ) \pmod{ p }\),通常取\(f ( 0 ) = 1\),于是就可以直接对\(p\)取膜.

多项式运算全家桶(重载运算符版)

我们必须指出的一点是,虽然重载运算符很好看,但是大部分情况下还是需要指针传参.例如在这里,由于做\(\exp\)的时候的直接数组传参,会导致\(\exp\)的复杂度退化到\(O ( n \log^2 n )\).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include<algorithm>
#include<cstring>
#include<cstdio>
#define ll long long
#define qwq 300007
const int mod=998244353;
const int gn=3;
int n;
int rev[qwq];
ll inv[qwq];
struct poly{
ll x[qwq];
int limit,k;
}a;
inline void Mod(ll &x){
if(x>=mod)x-=mod;
if(x<0)x+=mod;
return ;
}
inline ll mpow(ll x,ll k){
if(k<0)k+=mod-1;
ll ans=1;
for(;k;k=k>>1,x=x*x%mod){
if(k&1)ans=ans*x%mod;
}
return ans;
}
inline ll get_inv(int x){
if(x>qwq-7)return mpow(x,mod-2);
if(inv[x])return inv[x];
else return inv[x]=mpow(x,mod-2);
}
inline void init_rev(int limit,int k){
for(int i=1;i<limit;++i){
rev[i]=(rev[i>>1]>>1)|((i&1)<<(k-1));
}
return ;
}
inline void ntt(poly *a,int t){
init_rev((a->limit),(a->k));
for(int i=0;i<(a->limit);++i){
if(rev[i]>i)std::swap(a->x[i],a->x[rev[i]]);
}
for(int mid=1;mid<(a->limit);mid=mid<<1){
int n=mid<<1;
ll wn=mpow(gn,t*(mod-1)/n);
for(int i=0;i<(a->limit);i+=n){
ll w=1;
for(int k=0;k<mid;++k,w=w*wn%mod){
ll wakn=w*(a->x[i+k+mid])%mod;
ll ak=(a->x[i+k]);
a->x[i+k]=ak+wakn;Mod(a->x[i+k]);
a->x[i+k+mid]=ak-wakn;Mod(a->x[i+k+mid]);
}
}
}
if(t==-1){
ll inv=get_inv(a->limit);
for(int i=0;i<a->limit;++i){
a->x[i]=(a->x[i])*inv%mod;
}
}
return ;
}
inline poly operator %(poly x,int k){//对x^{2^k}取膜
for(int i=(1<<k);i<x.limit;++i)x.x[i]=0;
x.k=k;
x.limit=1<<k;
return x;
}
inline poly operator +(poly x,poly y){
x.limit=std::max(x.limit,y.limit);
x.k=std::max(x.k,y.k);
for(int i=0;i<x.limit;++i){
x.x[i]+=y.x[i];Mod(x.x[i]);
}
return x;
}
inline poly operator -(poly x,poly y){
x.limit=std::max(x.limit,y.limit);
x.k=std::max(x.k,y.k);
for(int i=0;i<x.limit;++i){
x.x[i]-=y.x[i];Mod(x.x[i]);
}
return x;
}
inline poly operator*(ll x,poly y){
for(int i=0;i<y.limit;++i){
y.x[i]=x*y.x[i]%mod;
}
return y;
}
inline poly operator *(poly x,poly y){
x.limit=std::max(x.limit,y.limit)<<1;
x.k=std::max(x.k,y.k)+1;
y.limit=x.limit;y.k=x.k;
ntt(&x,1);ntt(&y,1);
for(int i=0;i<x.limit;++i){
x.x[i]=x.x[i]*y.x[i]%mod;
}
ntt(&x,-1);
return x;
}
poly q_inv,tmp_inv;
inline poly invpoly(poly x){
for(int i=0;i<(x.limit<<1);++i){
q_inv.x[i]=tmp_inv.x[i]=0;
}
q_inv.x[0]=mpow(x.x[0],-1);q_inv.limit=1,q_inv.k=0;
for(int lim=2,k=1;lim<=x.limit;lim=lim<<1,++k){
for(int i=0;i<lim;++i){
tmp_inv.x[i]=x.x[i];
}
tmp_inv.limit=q_inv.limit=lim;
tmp_inv.k=q_inv.k=k;
q_inv=2ll*q_inv-q_inv*q_inv%k*tmp_inv%k;
}
q_inv.limit=x.limit;q_inv.k=x.k;
return q_inv;
}
inline poly operator /(poly x,poly y){
int lim=x.limit,k=x.k;
x=x*invpoly(y);
for(int i=lim;i<x.limit;++i){
x.x[i]=0;
}
x.limit=lim,x.k=k;
return x;
}
inline poly Dpoly(poly x){//求导
for(int i=1;i<x.limit;++i){
x.x[i-1]=x.x[i]*i%mod;
x.x[i]=0;
}
return x;
}
inline poly Spoly(poly x){//积分
for(int i=x.limit-1;i>=0;--i){
x.x[i+1]=x.x[i]*get_inv(i+1)%mod;
x.x[i]=0;
}
return x;
}
inline poly lnpoly(poly x){
if(x.x[0]!=1);//无解
return Spoly(Dpoly(x)/x);
}
poly q_exp,tmp_exp;
inline poly exppoly(poly x){
if(x.x[0]!=0);//无解
for(int i=0;i<(x.limit<<1);++i){
q_exp.x[i]=tmp_exp.x[i]=0;
}
q_exp.x[0]=1;
for(int lim=2,k=1;lim<=x.limit;lim=lim<<1,++k){
for(int i=0;i<lim;++i)tmp_exp.x[i]=x.x[i];
tmp_exp.limit=q_exp.limit=lim;
tmp_exp.k=q_exp.k=k;
q_exp=(q_exp+q_exp*(tmp_exp-lnpoly(q_exp)))%k;
}
return q_exp;
}
poly q_sqrt,tmp_sqrt;
inline poly sqrtpoly(poly x){
if(x.x[0]!=1);//如果不是1要做二次剩余
q_sqrt.x[0]=1;
for(int lim=2,k=1;lim<=x.limit;lim=lim<<1,++k){
for(int i=0;i<lim;++i)tmp_sqrt.x[i]=x.x[i];
tmp_sqrt.limit=q_sqrt.limit=lim;
tmp_sqrt.k=q_sqrt.k=k;
q_sqrt=(q_sqrt*q_sqrt%k+tmp_sqrt)/(2ll*q_sqrt)%k;
}
return q_sqrt;
}
inline poly powpoly(poly x,ll k){
if(x.x[0]!=1);//无解
x=k*lnpoly(x);
return exppoly(x);
}

集合幂级数

集合幂级数形如\(\sum_{ i = 0 }^{ 2^n - 1 } a_i x^i\),其中二进制数\(i\)表示\(\{ 1 , 2 , . . . , n \}\)的一个子集,用\(| i |\)表示该子集大小,等价于对二进制使用的popcount函数.

下述级数如无特别说明均为集合幂级数.

与/或卷积

高维前缀和:\(c_i = \sum_{ j \subseteq i } a_j \\\).

高维后缀和:\(c_i = \sum_{ j \supseteq i } a_j \\\).

上述过程又称快速莫比乌斯变换(FMT).

1
2
3
4
5
6
for(int i=0;i<n;i++)
for(int j=0;j<(1<<n);j++)
if(j&(1<<i)) a[j]+=a[j^(1<<i)];//高维前缀和
for(int i=0;i<n;i++)
for(int j=0;j<(1<<n);j++)
if(j&(1<<i)) a[j^(1<<i)]+=a[j];//高维后缀和

或卷积:\(c_i = \sum_{ j } \sum_{ k } [ j \lor k = i ] a_j b_k \\\).

与卷积:\(c_i = \sum_{ j } \sum_{ k } [ j \land k = i ] a_j b_k \\\).

二者求法类似,考虑如何求\(a\)\(b\)的或卷积:

引理:

\(j , k \subseteq i\),则\(j \lor k \subseteq i\),逆命题同样成立.

\(j , k \supseteq i\),则\(j \land k \supseteq i\),逆命题同样成立.

\(a , b , c\)的高维前缀和分别为\(A , B , C\),我们有:

$$ \[\begin{aligned} A_i B_i & = ( \sum_{ j \subseteq i } a_j ) ( \sum_{ k \subseteq i } b_k ) \\ & = \sum_{ j , k \subseteq i } a_i b_k \\ & = \sum_{ k \lor j \subseteq i } a_i b_k \\ & = C_i \\ \end{aligned}\]

$$

现在考虑已知\(C\)\(c\),本质上是一个反演.注意到\(\sum_{ r \subseteq p } ( - 1 )^{ | r | } = \sum_{ k = 0 }^{ | p | } C_{ | p | }^k ( - 1 )^k = [ p = 0 ] \\\),我们有:

$$ \[\begin{aligned} c ( p ) & = \sum_{ q \subseteq p } [ p - q = 0 ] c ( q ) \\ & = \sum_{ q \subseteq p } \sum_{ r \subseteq ( p - q ) } ( - 1 )^{ | r | } c ( q ) \\ & = \sum_{ r \subseteq p } ( - 1 )^{ | r | } \sum_{ q \subseteq ( p - r ) } c ( q ) \\ & = \sum_{ r \subseteq p } ( - 1 )^{ r } C ( p - r ) \\ & = \sum_{ r \subseteq p } ( - 1 )^{ | p | - | r | } C ( r ) \\ \end{aligned}\]

$$

于是有\(c ( S ) = \sum_{ T \subseteq S } ( - 1 )^{ | S | - | T | } C ( T ) \\\)(实际上就是个差分的过程).

因而做两遍高维前缀和再反推回去即可,复杂度\(O ( 2^n n )\).

与卷积即改为高维后缀和.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
inline void FWT_and(ll *a,ll t,int limit){//FWT:t=1;IFWT:t=-1
for(int mid=1;mid<limit;mid=mid<<1){
int n=mid<<1;
for(int j=0;j<limit;j+=n){
for(int k=0;k<mid;++k){
a[j+k]+=t*a[j+k+mid]%mod;
Mod(a[j+k]);
}
}
}
return ;
}

inline void FWT_or(ll *a,ll t,int limit){//FWT:t=1;IFWT:t=-1
for(int mid=1;mid<limit;mid=mid<<1){
int n=mid<<1;
for(int j=0;j<limit;j+=n){
for(int k=0;k<mid;++k){
a[j+k+mid]+=t*a[j+k]%mod;
Mod(a[j+k+mid]);
}
}
}
return ;
}

异或卷积

异或卷积:\(c_i = \sum_j \sum_k [ j \oplus k = i ] a_j b_k \\\).

引理:\(( i \oplus j ) \land k = ( i \land k ) \oplus ( j \land k )\).

证明的话考虑如果\(k = 0\),二者显然相等;当\(k = 1\)的时候,左右都等价于\(( i \oplus j )\).

快速沃尔什变换(FWT):

定义集合幂级数\(FWT ( a )\),满足\(FWT ( a )_i = \sum_{ j = 0 }^{ 2^n - 1 } ( - 1 )^{ | i \land j | } a_j \\\).

那么有:

$$ \[\begin{aligned} FWT ( c )_i & = \sum_{ j = 0 }^{ 2^n - 1 } ( - 1 )^{ | i \land j | } c_j \\ & = \sum_{ j = 0 }^{ 2^n - 1 } ( - 1 )^{ | i \land j | } \sum_{ k = 0 }^{ 2^n - 1 } \sum_{ l = 0 }^{ 2^n - 1 } [ k \oplus l = j ] a_k b_l \\ & = \sum_{ k = 0 }^{ 2^n - 1 } \sum_{ l = 0 }^{ 2^n - 1 } ( - 1 )^{ | ( k \oplus l ) \land i | } a_k b_l \\ & = \sum_{ k = 0 }^{ 2^n - 1 } \sum_{ l = 0 }^{ 2^n - 1 } ( - 1 )^{ | k \land i | } a_k ( - 1 )^{ | l \land i | } b_l \\ & = FWT ( a )_i FWT ( b )_i \\ \end{aligned}\]

$$

时间复杂度\(O ( 2^n n )\).

逆运算的话考虑实现过程,反向就行.不过可以把过程中乘上的\(\frac{ 1 }{ 2 }\)都提出来乘到最后.

FMT可以看作是FWT在解决与/或卷积时的特例.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
inline void FWT_xor(ll *a,ll t,int limit){//FWT:t=1;IFWT:t=-1
for(int mid=1;mid<limit;mid=mid<<1){
int n=mid<<1;
for(int j=0;j<limit;j+=n){
for(int k=0;k<mid;++k){
ll x=a[j+k],y=a[j+k+mid];
a[j+k]=x+y;Mod(a[j+k]);
a[j+k+mid]=x-y;Mod(a[j+k+mid]);
}
}
}
if(t==-1){
ll inv=mpow(limit,mod-2);
for(int i=0;i<limit;++i)a[i]=a[i]*inv%mod;
}
return ;
}

快速沃尔什变换

线性代数角度

我们来重定义一下所谓的FWT.

首先类比FFT,我们希望存在一个线性变换\(FWT\),使得

  1. \(c_i = \sum_{ j \oplus k } a_j b_k\),则\(FWT ( c ) = FWT ( a ) FWT ( b )\).

  2. 这个线性变换是可逆的.

  3. 做这个线性变换和其逆变换的复杂度都可以接受.

我们设\(FWT ( A )_i = \sum_{ j } w ( i , j ) A_j\),我们想要做的就是构造一组满足上述条件的\(w\).

考虑:

\[ \begin{aligned} FWT ( C )_i & = FWT ( A )_i FWT ( B )_i \\ \sum_{ j } w ( i , j ) C_j & = \sum_{ j , k } w ( i , j ) w ( i , k ) A_j B_k \end{aligned} \]

再考虑:

\[ \begin{aligned} C & = A * B \\ C_i & = \sum_{ k \oplus l = i } A_k B_l \\ \sum_{ j } w ( i , j ) C_j & = \sum_j w ( i , j ) \sum_{ k \oplus l = j } A_k B_l \\ \sum_{ j , k } w ( i , j ) w ( i , k ) A_j B_k & = \sum_j w ( i , j ) \sum_{ k \oplus l = j } A_k B_l \\ \sum_{ j , k } w ( i , j ) w ( i , k ) A_j B_k & = \sum_{ j , k } A_j B_k w ( i , j \oplus k ) \end{aligned} \]

比较两边系数,有\(w ( i , j ) w ( i , k ) = w ( i , j \oplus k )\).只要满足这个条件,我们就能构造出一组满足条件(1)的线性变换.如果这个线性变换对应的矩阵可逆,那么就满足了条件(2).

而由于\(\oplus\)是集合的运算,我们可以对二进制分开考虑.换句话说,如果\(a = \sum_{ i = 0 } a_i 2^i , b = \sum_{ i = 0 } b_i 2^i\),那么\(w ( a , b ) = \prod_{ i = 0 } w ( a_i , b_i )\)一定是满足条件的.

这样我们就可以只求一个\(2 \times 2\)的线性变换矩阵就好.我们接下来将对三种常见的基础位运算(\(\lor , \land , xor ( \oplus )\))分别讨论这个矩阵.我们先来解决第三个问题:如何快速求出\(FWT ( a )\)呢?

考虑和FFT一样折半,令\(i_0\)\(i\)的最高位是否是\(1\),\(i '\)\(i\)去掉最高位后的二进制数字,令\(n = 2^m\)我们有:

\[ \begin{aligned} FWT ( A )_i & = \sum_{ j = 0 }^{ 2^m - 1 } w ( i , j ) A_j \\ & = \sum_{ j = 0 }^{ 2^{ m - 1 } - 1 } w ( i , j ) A_j + \sum_{ j = 2^{ m - 1 } }^{ 2^m - 1 } w ( i , j ) A_j \\ & = w ( i_0 , 0 ) \sum_{ j = 0 }^{ 2^{ m - 1 } - 1 } w ( i ' , j ' ) A_j + w ( i_0 , 1 ) \sum_{ j = 2^{ m - 1 } }^{ 2^m - 1 } w ( i ' , j ' ) A_j \end{aligned} \]

这样就实现了规模减半,复杂度\(O ( mn )\).

下面我们设FWT的变换矩阵为\(\begin{bmatrix}w ( 0 , 0 ) & w ( 0 , 1 ) \\ w ( 1 , 0 ) & w ( 1 , 1 )\end{bmatrix}\).顺便一提,不难发现,最后对整体做的矩阵是这个矩阵的克罗内多积.

或卷积

取矩阵\(\begin{bmatrix}1 & 0 \\ 1 & 1\end{bmatrix}\).其逆矩阵为\(\begin{bmatrix}1 & 0 \\ - 1 & 1\end{bmatrix}\).

与卷积

取矩阵\(\begin{bmatrix}1 & 1 \\ 0 & 1\end{bmatrix}\).其逆矩阵为\(\begin{bmatrix}1 & - 1 \\ 0 & 1\end{bmatrix}\).

异或卷积

取矩阵\(\begin{bmatrix}1 & 1 \\ 1 & - 1\end{bmatrix}\).其逆矩阵为\(\begin{bmatrix}\frac{ 1 }{ 2 } & \frac{ 1 }{ 2 } \\ \frac{ 1 }{ 2 } & - \frac{ 1 }{ 2 }\end{bmatrix}\).

生成函数角度

我们再从生成函数角度理解一下FWT.

我们重新定义幂乘法:\(x^S x^T = x^{ S \oplus T }\),显然幂乘法该满足的性质它都满足.

观察FWT的式子:

\[ \begin{aligned} FWT ( A )_S & = \sum_{ T = 0 }^{ 2^n - 1 } ( - 1 )^{ | S \land T | } a_T \\ IFWT ( A )_S & = \frac{ 1 }{ 2^n } FWT ( A )_S \end{aligned} \]

这等价于:

\[ \begin{aligned} [ x^S ] FWT ( A ) & = \sum_{ T = 0 }^{ 2^n - 1 } ( - 1 )^{ | S \land T | } a_T \\ [ x^S ] IFWT ( A ) & = [ x^S ] \frac{ 1 }{ 2^n } FWT ( A ) \end{aligned} \]

子集卷积

子集卷积:\(c_i = \sum_{ j } \sum_{ k } [ j \land k = \emptyset , j \lor k = i ] a_j b_k \\\).

意识到该卷积与或卷积的差别在于:或卷积会多累加一些\([ j \land k \ne \emptyset ]\)的答案,而\([ j \land k = \phi , j \lor k = i ] = [ | j | + | k | = | i | , j \lor k = i ] \\\).

因而可以将原集合按照元素个数分组做FMT,然后再\(n^2\)次结合,并做IFMT,最终将结果累计,复杂度\(O ( 2^n n^2 )\).

集合占位幂级数

其实就是设\(g_{ i , j } = z^i f_j\),然后做卷积(类似子集卷积).

Example

Example1([AGC034F] RNG and XOR)

\(f_i ( n )\)表示操作\(n\)次后第一次变成\(i\)的概率,\(g_i ( n )\)表示操作\(n\)次后变成\(i\)的概率.\(F , G\)分别是其生成函数.

注意到\(G_i = F_i G_0 , F_i = \frac{ G_i }{ G_0 }\),而\(F_i ' ( 1 )\)就是期望.接下来的问题在于如何求\(G\).

接下来涉及到的东西就很本质了,我们一开始先把\(a_i \rightarrow \frac{ a_i }{ \sum a }\),然后做\(A = FWT ( a )\),注意这里\(A_0 = \sum a = 1\),FWT自身有很好的性质:\(a = \frac{ 1 }{ 2^N } FWT ( A )\).我们做\(n\)次操作后得到的概率数组也就是\(\frac{ 1 }{ 2^N } FWT ( A^n )\).展开FWT的式子,自然有:

\[ \begin{aligned} g_i ( n ) & = \sum_{ j = 0 }^{ 2^N - 1 } ( - 1 )^{ | i \land j | } A_j^n x^n \\ G_i & = \sum_{ j = 0 }^{ 2^N - 1 } ( - 1 )^{ | i \land j | } \frac{ 1 }{ 1 - A_j x } \\ F_i & = \frac{ G_i }{ G_0 } \\ F_i ' & = \frac{ G_i ' G_0 - G_0 ' G_i }{ G_0^2 } \\ & = \frac{ ( \sum_{ j = 0 }^{ 2^N - 1 } ( - 1 )^{ | i \land j | } \frac{ A_j }{ ( 1 - A_j x )^2 } ) ( \sum_{ j = 0 }^{ 2^N - 1 } \frac{ 1 }{ 1 - A_j x } ) - ( \sum_{ j = 0 }^{ 2^N - 1 } \frac{ A_j }{ ( 1 - A_j x )^2 } ) ( \sum_{ j = 0 }^{ 2^N - 1 } ( - 1 )^{ | i \land j | } \frac{ 1 }{ 1 - A_j x } ) }{ ( \sum_{ j = 0 }^{ 2^N - 1 } \frac{ 1 }{ 1 - A_j x } )^2 } \end{aligned} \]

(我草这个式子太顶级了)

但是我们冷静一下,这个题与普通生成函数不同的地方在于,我们要求\(F '_i ( 1 )\),因此我们直接把\(x = 1\)带入算一算就好.不过由于\(A_0 = 1\),我们必须要解决分母为\(0\)的情况,解决的方法是分母乘上\(( 1 - x )\),这样就消掉了\(j = 0\)的项,同时分子由于是减法可以抵消一下.

然后大概做做吧,感觉太顶级了.

Example2([QOJ5089]环覆盖)

合法显然当且仅当每个点度数为偶数,考虑直接拿一个二进制数将每个点度数奇偶性压起来,如果选中一条边\(u \leftrightarrow v\)就异或上\(( 2^u + 2^v )\).最后要求这个二进制数是\(0\).我们用一个二元组\(( a , F )\)表示在集合幂级数上异或上\(a\),在多项式上乘上\(F\).显然一条边是\(( 0 , 1 ) + ( 2^u + 2^v , x )\).注意到这是可以定义乘法运算和标量乘法运算的,也就能做FWT,而且在做FWT的时候要么乘上\(1 + x\)要么乘上\(1 - x\),做完FWT得到的每一个\(FWT_i\)一定形如\(( 1 + x )^k ( 1 - x )^{ m - k }\),做IFWT的时候直接求\(\frac{ 1 }{ 2^N } \sum ( 1 + x )^k ( 1 - x )^{ m - k }\)即可.

仔细想想这个过程:有一句名言是只要看到生成函数就一定存在分配律,这里也是一样的,由于存在一种选择:选不选这条边,因此这里也就有了两种情况:\(( 0 , 1 )\)\(( 2^u + 2^v , x )\),分开两种情况就实现了FWT.

问题在于对于每个\(i\)\(k\),也就是对于每个\(i\)求有多少条边满足\(| i \land ( 2^u + 2^v ) | = 1\),也就是求有多少条边一段链接在了\(i\)的内部,另一端连接在了外部,这个补集转化一下,做高维前缀和.

Example3(CF1034E Little C Loves 3 III)

仍然是子集卷积,转化为\(c_i = \sum_{ j } \sum_{ k } [ | j | + | k | = | i | , j \lor k = i ] a_j b_k \\\).然后我们将\(a_j\)乘上\(4^j\),将\(b_k\)乘上\(4^k\),最后把\(c_i\)除去\(4^i\)\(4\)取膜就行.

还有个用到FWT的本质的矩阵做法,大概是手推矩阵然后再手推求逆.

Example4(CF1336E2 Chiori and Doll Picking)

先考虑easy version.首先求出线性基,如果线性基的大小\(k\)比较小,我们可以直接\(2^k\)枚举一下.而如果线性基较大,我们先消成最简线性基,然后主元位置有多少个\(1\)取决于选了多少个元素,其他位置共有\(m - k\)个,可以直接状压进状态.这样复杂度就是\(O ( \min \{ 2^k , m^2 2^{ m - k } \} )\).

那么我们怎么优化呢?首先\(k\)较大的时候有点难做,我们看看能不能优化到\(2^{ m - k }\).

考虑设\(f_i^c = [ | i | = c ]\),将线性基能做出的线性空间设为\(A\),\(A_S = 1\)当且仅当线性基能异或出\(S\)(最后再把那些废元素贡献到答案里).那么\(popcount = c\)的答案就是\(IFWT ( FWT ( F ) FWT ( A ) )_0\).考虑\(IFWT_0 = \frac{ 1 }{ 2^m } \sum_{ i = 0 }^{ 2^m - 1 } FWT ( F )_i FWT ( A )_i\),问题在于这个东西好像也不好做.

然后接下来开始一波顶级操作(下面的操作全部基于行向量+行操作):

引理1:\(FWT ( A )\)要么是\(2^k\),要么是\(0\).

考虑:

\[ A * A = A \times 2^k \]

这句是为啥呢?因为对于右边的每一个数字\(x\)和左边的一个数字\(y\),如果它们都在线性基中,一定存在一个数字\(z\)满足\(y \oplus z = x\),不然就是\(0\).

于是我们有:

\[ \begin{aligned} FWT ( A )_i \cdot FWT ( A )_i & = FWT ( A )_i \times 2^k \\ FWT ( A )_i & = 0 \lor 2^k \end{aligned} \]

引理2:\(FWT ( A )_i = 2^k \Leftrightarrow \forall x , A_x \ne 0 , | i \land x | \equiv 0 \pmod{ 2 }\).

直接展开上面的式子,用\(\sum_{ S \subseteq T } ( - 1 )^{ | S | } = [ T = \emptyset ]\).

引理3:\(FWT ( A )\)中值为\(2^k\)的位置构成一个线性基.

只需要证明封闭性就好,注意到如果\(i\)满足条件,\(j\)满足条件,一开始做FWT时我们已经注意到:\(( i \oplus j ) \land x = ( i \land x ) \oplus ( j \land x )\).于是这个引理也显然成立.

引理4:\(FWT ( A )\)中值为\(2^k\)的位置构成的线性基的大小是\(m - k\).

设这些位置构成的空间是\(B\),\(B_S = 1\)当且仅当\(S\)在这个空间中.我们有:

\[ \begin{aligned} FWT ( A ) & = B \times 2^k \\ A & = IFWT ( B ) \times 2^k \end{aligned} \]

注意到\(a_0 = 1\),也就是\(\frac{ 2^k }{ 2^m } \sum b = 1 , \sum b = 2^{ m - k }\),这就证明了引理.

引理5:将\(A\)的线性基对应的矩阵从前往后消成最简,\(B\)的线性基对应的矩阵从后往前消成最简,上\(A\)\(B\)拼成一个\(m \times m\)的矩阵,那么这个矩阵关于主对角线对称.

首先根据\(rank ( A ) + rank ( B ) = k + m - k = m\)可以知道主对角线一定全是\(1\),然后我们任取\(A\)中的一个基\(x\)\(B\)中的一个基\(y\),应该有\(| x \land y | \equiv 0 \pmod{ 2 }\).不难发现此时必定对称(画个图,不对称的话考虑主元对他俩的贡献就不是偶数了).

通过这个引理可以由\(A\)得知\(B\)长什么样.

引理6:\(FWT ( F^c )_i\)只和\(| i |\)有关.

因为\(F^c_i\)只和\(| i |\)有关,这里考虑一下对称性就可以.因此设\(w_{ d }^c = FWT ( F^c )_i , | i | = d\).

然后注意到\(w_d^c = \sum_{ i = 0 }^{ 2^m - 1 } ( - 1 )^{ | i \land ( 2^d - 1 ) | } [ | i | = c ]\).组合意义展开一下:

\[ w_d^c = \sum_{ j = 0 }^{ d } ( - 1 )^{ j } \binom{ d }{ j } \binom{ m - d }{ c - j } \]

接下来怎么做呢?令\(g_d = \sum_{ i = 0 }^{ 2^m - 1 } [ A_i = 1 ] [ | i | = d ]\),这里可以\(O ( 2^{ m - k } )\),然后乘起来就行了.

太顶级了吧.

Example5(CF 1326F2)

首先发现”如果没有边那么是\(0\)“这个限制太强了,如果我们能改为”如果是\(0\),那么可有边可无边”的话,整个序列就会被\(1\)的段分成若干两两无关的链.显然这是一步或卷积,这样我们就只需要求后者.如果设\(g_{ len , S }\)表示长度为\(len\),一段长度为\(len - 1\)的连续的\(1\)对应的集合是\(S\)的方案数,不难发现我们最后只需要做一个类似子集卷积的东西就行(前面的每个段会自动在后面放个\(0\)).

但是还没完,题目让我们求每一个,我们不难发现我们这样划分之后答案只取决于链的长度的可重集合,而本质不同的集合的数量很少,直接枚举就行.

Example6(qoj5019)

首先可以类似数位dp设计一个\(dp_{ i , S }\)表示目前dp到了第\(i\)位,然后前面的\(limit\)\(S\).接下来分类讨论当前的最大值限制是\(1\)还是\(0\).

这个题知道题解其实没什么难的,但是这个题告诉了我们:FWT作为一种线性变换,它是可以和其它线性变换一起做的,也就是说你是可以将其中的若干位做FWT,剩下若干位做其它的东西的.

生成函数

普通生成函数(OGF)

概念

我们定义一个幂级数形如\(A ( z ) = \sum_{ k \geq 0 } a_k z^k\),并使\([ z^n ] A ( z ) = a_n\).则称\(A ( z )\)\(\langle a_0 , a_1 , . . . \rangle\)的生成函数.

运算

  1. \(\alpha A ( z ) + \beta B ( z ) = \sum_{ n \geq 0 } ( \alpha f_n + \beta g_n ) z^n\).

  2. \(z^m A ( z ) = \sum_{ n \geq 0 } g_{ n } z^{ n + m } = \sum_{ n \geq m } g_{ n - m } z^n\).

  3. \(A ( cz ) = \sum_{ n \geq 0 } c^n f_n z^n\).

  4. \(A ' ( z ) = \sum_{ n \geq 1 } ig_i z^{ i - 1 }\).

  5. \(\int A ( z ) dz = \sum_{ n \geq 0 } \cfrac{ 1 }{ n + 1 } g_n z^{ n + 1 }\).

  6. \(A ( z ) B ( z ) = \sum_{ n \geq 0 } ( \sum_{ k = 0 }^n f_k g_{ n - k } ) z^n\).

  7. \(\cfrac{ 1 }{ 1 - z } A ( z ) = \sum_{ n \geq 0 } ( \sum_{ k = 0 }^n g_k ) z^n\).

常见序列生成函数

  1. \(\cfrac{ 1 }{ 1 - z } = \sum_{ k \geq 0 } z^k \\\),\(\cfrac{ 1 }{ 1 - cz } = \sum_{ k \geq 0 } c^k z^k \\\).

证明显然.

  1. \(( 1 + z )^r = \sum_{ k \geq 0 } \binom{ r }{ k } z^k \\\),\(( 1 - z )^r = \sum_{ k \geq 0 } ( - 1 )^k \binom{ r }{ k } z^k \\\).

证明根据二项式定理.

  1. \(\cfrac{ 1 }{ 1 - z^m } = \sum_{ n \geq 0 } [ n | m ] z^n \\\).

证明显然.

  1. \(\cfrac{ 1 }{ ( 1 - z )^{ n + 1 } } = \sum_{ k \geq 0 } \binom{ n + k }{ n } z^k , n \in \mathbb{ N } \\\),\(\cfrac{ z^n }{ ( 1 - z )^{ n + 1 } } = \sum_{ k \geq 0 } \binom{ k }{ n } z^k , n \in \mathbb{ N } \\\)

直接使用二项式定理展开\(( 1 - z )^{ - n - 1 }\),可以得到:

\[ ( 1 - z )^{ - n - 1 } = \sum_{ k \geq 0 } ( - 1 )^k \binom{ - n - 1 }{ k } z^k \]

反转上指标并使用对称恒等式得到上式.此外上式还有两个特殊形式:

\[ \begin{aligned} \cfrac{ 1 }{ ( 1 - z )^2 } & = \sum_{ n \geq 0 } ( n + 1 ) z^n \\ \cfrac{ z }{ ( 1 - z )^2 } & = \sum_{ n \geq 0 } nz^n \end{aligned} \]

根据\(( 1 )\)求导即可得到此式.

  1. \(e^z = \sum_{ k \geq 0 } \cfrac{ z^k }{ k ! } \\\).

  2. \(\ln ( \cfrac{ 1 }{ 1 - z } ) = \sum_{ n \geq 1 } \cfrac{ 1 }{ n } z^n\).

  3. \(\ln ( 1 + z ) = \sum_{ k \geq 0 } ( - 1 )^k \cfrac{ z^{ k + 1 } }{ k + 1 } \\\).

可以使用积分或泰勒展开证明.

  1. \(\frac{ 1 - \sqrt{ 1 - 4 x } }{ 2 x } = \sum_{ k \geq 0 } \frac{ \binom{ 2 k }{ k } }{ k + 1 } x^k\).

也即卡特兰数\(C_k\)的生成函数,证明考虑:

\[ xC^2 + 1 = C \]

然后得到两个根,带入\(x = 0\)舍掉一个.

指数生成函数(EGF)

https://zhuanlan.zhihu.com/p/53079223

序列\(\{ a \}\)的指数生成函数定义为形式幂级数\(\hat F ( x ) = \sum a_n \frac{ x^n }{ n ! }\).注意\([ x^n ] \hat F ( x ) = a_n\).

基本运算

我们有:

\[ \begin{aligned} \hat F ( x ) \hat G ( x ) & = \sum_{ j \geq 0 } a_j \frac{ x^j }{ j ! } \sum_{ k \geq 0 } b_k \frac{ x^k }{ k ! } \\ & = \sum_{ k \geq 0 } x^k \sum_{ j = 0 }^k a_j b_{ k - j } \frac{ k ! }{ j ! ( k - j ) ! } \frac{ 1 }{ k ! } \\ & = \sum_{ k \geq 0 } \frac{ x^k }{ k ! } \sum_{ j = 0 }^k a_j b_{ k - j } \binom{ k }{ j } \end{aligned} \]

\(\langle \sum_{ i = 0 }^n \binom{ n }{ i } a_i b_{ n - i } \rangle\)的EFG.

注意到有一个特例是\(x \hat F ( x )\)就是\(\langle \binom{ n }{ n - 1 } a_i \rangle\)的EGF.

封闭式

  1. \(e^x = \sum_{ k \geq 0 } \frac{ x^k }{ k ! }\)

直接泰勒展开就可以得到

  1. \(e^{ px } = \sum_{ k \geq 0 } p^k \frac{ x^k }{ k ! }\)

换元后可以得到.一个经典特例是\(e^{ - x } = \sum_{ k \geq 0 } ( - 1 )^k \frac{ x^k }{ k ! }\).

  1. \(\frac{ e^x + e^{ - x } }{ 2 } = \sum_{ k \geq 0 } [ 2 | k ] \frac{ x^k }{ k ! }\).

显然.

  1. \(( 1 + x )^n = \sum_{ k \geq 0 } n^{ \underline{ k } } \frac{ x^k }{ k ! }\).

做二项式定理就显然了.

  1. \(\ln ( 1 + x ) = \sum_{ k \geq 1 } ( - 1 )^{ k - 1 } ( k - 1 ) ! \frac{ x^k }{ k ! }\).

  2. \(\ln ( 1 - x ) = \sum_{ k \geq 1 } ( k - 1 ) ! \frac{ x^k }{ k ! }\).

都可以通过泰勒展开证明.

EXP的组合意义

我们设\(F_k ( n )\)\(n\)个有标号元素划分成\(k\)个非空无序集合的情况,\(f_i\)\(i\)个元素组成一个集合的时候,其上特定组合结构的数量(就是一个一个只和\(| S |\)有关的定义在集合上的函数),有:

\[ F_k ( n ) = \frac{ n ! }{ k ! } \sum_{ \sum_{ i = 1 }^k a_i = n } \prod_{ j = 1 }^k \frac{ f_{ a_j } }{ a_j ! } \]

\(\hat{ F } ( x ) = \sum_{ n \geq 0 } f_n \frac{ x^n }{ n ! }\),再设:

\[ \begin{aligned} \hat G_k ( x ) & = \sum_{ n \geq 0 } F_k ( n ) \frac{ x^n }{ n ! } \\ & = \sum_{ n \geq 0 } x^n \frac{ 1 }{ k ! } \sum_{ \sum_{ i = 1 }^k a_i = n } \prod_{ j = 1 }^k \frac{ f_{ a_j } }{ a_j ! } \\ & = \sum_{ n \geq 0 } \frac{ 1 }{ k ! } \sum_{ \sum_{ i = 1 }^k a_i = n } \prod_{ j = 1 }^k \frac{ f_{ a_j } x^{ a_j } }{ a_j ! } \\ & = \frac{ 1 }{ k ! } \hat F^k ( x ) \end{aligned} \]

\[ \sum_{ k \geq 0 } \hat G_k ( x ) = \exp \hat F ( x ) \]

或者直接递推:

$$ \[\begin{aligned} F_k ( x ) & = \sum_{ i = 1 }^{ n - k + 1 } \binom{ n }{ i } F_{ k - 1 } ( n - i ) f_i \frac{ 1 }{ k } \\ \end{aligned}\]

$$

\[ \begin{aligned} \hat G_k ( x ) & = \sum_{ n \geq 0 } \frac{ x^n }{ n ! } F_k ( n ) \\ & = \sum_{ n \geq 0 } \frac{ x^n }{ n ! } \sum_{ i = 1 }^{ n - k + 1 } \binom{ n }{ i } F_{ k - 1 } ( n - i ) f_i \frac{ 1 }{ k } \\ & = \frac{ 1 }{ k } \sum_{ n \geq 0 } \frac{ x^n }{ n ! } \sum_{ i = 1 }^{ n - k + 1 } \binom{ n }{ i } F_{ k - 1 } ( n - i ) f_i \\ & = \frac{ 1 }{ k } \hat G_{ k - 1 } ( x ) \hat F ( x ) \\ & = \frac{ 1 }{ k ! } \hat F^k ( x ) \end{aligned} \]

简而言之,\([ x^n ] \hat F ( x )\)是将\(n\)个有标号的元素放到同一个无序集合的方案数,而\([ x^n ] \exp \hat F ( x )\)是将\(n\)个有标号的元素分成若干个无编号的非空无序集合的方案数.

Example

Example1(POJ3734)

对于红黄色砖块,其选取方案为\(\{ 1 , 0 , 1 , 0 , \cdots \}\),对应的EGF是\(\frac{ e^x + e^{ - x } }{ 2 }\).

对于蓝绿色砖块,选取方案是\(e^x\).

乘起来有:

\[ \begin{aligned} \hat F ( x ) & = ( \frac{ e^x + e^{ - x } }{ 2 } )^2 e^{ 2 x } \\ & = \frac{ ( e^{ 2 x } + 2 + e^{ - 2 x } ) e^{ 2 x } }{ 4 } \\ & = \frac{ e^{ 4 x } + 2 e^{ 2 x } + 1 }{ 4 } \\ & = \frac{ 1 }{ 4 } + \sum_{ k \geq 0 } \frac{ 4^i + 2^{ i + 1 } }{ 4 } \frac{ x^i }{ i ! } \end{aligned} \]

于是有\([ x^n ] \hat F ( x ) = 4^{ n - 1 } + 2^{ n - 1 }\).

Example2(圆排列)

长度为\(n\)的排列数的指数生成函数是\(\hat P ( x ) = \sum_{ n \geq 0 } \frac{ n ! x^n }{ n ! } = \frac{ 1 }{ 1 - x }\).

长度为\(n\)的圆排列的指数生成函数是\(\hat Q ( x ) = \sum_{ n \geq 0 } \frac{ ( n - 1 ) ! x^n }{ n ! } = \frac{ x^n }{ n } = - \ln ( 1 - x ) = \ln \frac{ 1 }{ 1 - x }\).

于是有\(\exp \hat Q ( x ) = \hat P ( x )\).

这个怎么理解呢?考虑一个排列可以分成若干个置换环,而一个集合能形成的置换环数量显然就是圆排列.

Example3(错排数)

从置换环的角度考虑,错排是指置换环中不存在自环的排列,也就是说不存在长度为\(1\)的置换环,其EGF显然是\(\sum_{ n \geq 2 } \frac{ x^n }{ n } = - \ln ( 1 - x ) - x\),错排数的EGF对其取\(\exp\)即可.

Example4(点带编号无向连通图计数)

考虑如果\(n\)个点带编号的无向连通图的EGF是\(\hat F ( x )\),那么\(n\)个点带标号无向图的EGF就是\(\exp \hat F ( x )\),后者直接计数,前者对后者做一次\(\ln\)就好.

Example5(不动点计数)

求有多少个映射\(f : \{ 1 , 2 , \cdots , n \} \mapsto \{ 1 , 2 , \cdots , n \}\)满足\(f \circ f \circ \cdots \circ f\)(共\(k\)\(f\))\(= f \circ f \circ \cdots \circ f\)(共\(k - 1\)\(f\)).

考虑将\(i \rightarrow f_i\),这等价于对深度不超过\(k\)的基环树(环的长度为\(1\))计数,等价于对深度不超过\(k\)的有根树计数.注意到删去根节点后等价于对深度不超过\(k - 1\)的有根树计数,因此\(\hat F_k ( x ) = x \exp \hat F_{ k - 1 } ( x )\).

Example6([CF891E]Lust)

假设\(k\)次操作后\(a_i\)减少了\(b_i\),实际上要求的就是\(\prod_{ i = 1 }^n a_i - \prod_{ i = 1 }^n ( a_i - b_i )\).

考虑对所有情况下的\(\prod_{ i = 1 }^n ( a_i - b_i )\)求和,注意到\(k\)次操作,使得\(i\)出现\(b_i\)次的方案数是\(\frac{ k ! }{ \prod_{ i = 1 }^n b_i ! }\).直接设\(a_j\)的EGF是

\[ \begin{aligned} \hat F_{ j } ( x ) & = \sum_{ i \geq 0 } ( a_j - i ) \frac{ x^i }{ i ! } \\ & = \sum_{ i \geq 0 } a_j \frac{ x^i }{ i ! } - \sum_{ i \geq 1 } \frac{ x^i }{ ( i - 1 ) ! } \\ & = a_j e^x - xe^x = ( a_j - x ) e^x \end{aligned} \]

答案就是\([ x^k ] \prod_{ j = 1 }^n \hat F_j ( x )\).

Example7

狄利克雷生成函数(DGF)

对于序列\(f_n\),定义其DGF为\(\tilde{ F } ( x ) = \sum_{ i \geq 1 } \frac{ f_i }{ i^x }\).注意到若\(f\)是积性函数,那么\(\tilde{ F } ( x ) = \prod_{ p \in \mathrm{ prime } } \sum_{ i \geq 0 } \frac{ f_{ p^i } }{ p^{ ix } } \\\).

基本运算

对于两个序列\(f , g\),其DGF之积对应的是两者的狄利克雷卷积序列的DGF:

\[ \begin{aligned} \tilde{ F } ( x ) \tilde{ G } ( x ) & = \sum_{ i } \sum_{ j } \frac{ f ( i ) g ( j ) }{ ( ij )^x } \\ & = \sum_{ i } \frac{ 1 }{ i^x } \sum_{ d | i } f ( d ) g ( \frac{ i }{ d } ) \end{aligned} \]

封闭式

  1. \(\epsilon ( x ) = [ x = 1 ]\).

显然为\(\tilde{ E } ( x ) = 1\).

  1. \(I ( x ) = 1\).

其封闭式是黎曼函数\(\zeta ( x )\),事实上,我们有:

\[ \begin{aligned} \zeta ( x ) & = \prod_{ i \geq 1 } \frac{ 1 }{ i^x } \\ & = \prod_{ p \in \mathrm{ prime } } \sum_{ i \geq 0 } \frac{ 1 }{ p^{ ix } } \\ & = \prod_{ p \in \mathrm{ prime } } \frac{ 1 }{ 1 - p^{ - x } } \end{aligned} \]

  1. \(\mu ( n )\).

其DGF为\(\tilde{ M } ( x ) = \prod_{ p \in \mathrm{ prime } } ( 1 - p^{ - x } )\).注意到\(\zeta ( x ) \tilde{ M } ( x ) = 1 , \tilde{ M } ( x ) = \frac{ 1 }{ \zeta ( x ) }\).

  1. \(id ( n ) = n\).

\(\tilde{ ID } ( n ) = \prod_{ i \geq 1 } \frac{ i }{ i^x } = \prod_{ i \geq 1 } \frac{ 1 }{ i^{ x - 1 } } = \zeta ( x - 1 )\).

  1. \(I_k ( n ) = n^k\).

\[ \tilde{ I_k } ( x ) = \prod_{ i \geq 1 } \frac{ 1 }{ i^{ x - k } } = \zeta ( x - k ) \]

  1. \(\varphi ( n )\).

注意到:

\[ \begin{aligned} \tilde{ \Phi } ( x ) & = \prod_{ p \in \mathrm{ prime } } ( 1 + \frac{ p - 1 }{ p^x } + \frac{ p ( p - 1 ) }{ p^{ 2 x } } + \cdots ) \\ & = \prod_{ p \in \mathrm{ prime } } \frac{ 1 - p^{ - x } }{ 1 - p^{ 1 - x } } \\ & = \tilde{ \Phi } ( x ) = \frac{ \zeta ( x - 1 ) }{ \zeta ( x ) } \end{aligned} \]

也注意到\(\tilde{ \Phi } ( x ) I ( x ) = \zeta ( x - 1 ) = \tilde{ ID } ( x )\).

  1. \(\sigma_k ( n ) = \sum_{ d | n } d^k\).

注意到\(\sigma_k ( n ) = I_k ( n ) * I_0 ( n )\),也就是说\(\tilde{ S } ( x ) = \zeta ( x - k ) \zeta ( x )\).

  1. \(u ( n ) = | \mu ( n ) |\).

\(\tilde{ u } ( n ) = \frac{ \zeta ( n ) }{ \zeta ( 2 n ) }\).

Example

Example1(luoguP3768)

考虑对于\(f ( n ) = n^2 \varphi ( n )\)构造积性函数\(g ( n ) , h ( n )\)使得\(f * g = h\).

注意到:

\[ \begin{aligned} \tilde{ F } ( x ) & = \prod_{ p \in \mathrm{ prime } } ( 1 + \sum_{ k \geq 1 } \frac{ p^{ 3 k - 1 } ( p - 1 ) }{ p^{ kx } } ) \\ & = \prod_{ p \in \mathrm{ prime } } \frac{ 1 - p^{ 2 - x } }{ 1 - p^{ 3 - x } } = \frac{ \zeta ( x - 3 ) }{ \zeta ( x - 2 ) } \end{aligned} \]

也就是\(f * I_2 = I_3\).

阶乘的扩展定义

对于复数的阶乘,我们通常定义:

\[ \cfrac{ 1 }{ z ! } = \lim_{ n \rightarrow + \infin } \binom{ n + z }{ z } n^{ - z } \]

同时我们定义\(\Gamma ( z + 1 ) = z !\),有:\(( - z ) ! \Gamma ( z ) = \cfrac{ \pi }{ \sin ( \pi z ) }\).

这样我们还可以定义广义阶乘幂:

\[ \begin{aligned} z^{ \underline{ w } } & = \cfrac{ z ! }{ ( z - w ) ! } \\ z^{ \overline{ w } } & = \cfrac{ \Gamma ( z + w ) }{ \Gamma ( z ) } \end{aligned} \]

通过以上我们还可以有二项式系数的定义:

\[ \binom{ z }{ w } = \lim_{ \zeta \rightarrow z , \omega \rightarrow w } \cfrac{ \zeta ! }{ \omega ! ( \zeta - \omega ) ! } \]

超几何级数

超几何函数

我们定义超几何函数\(F ( a_1 , . . . , a_m ; b_1 , . . . b_n ; z ) = F \left ( \begin{array}{ r | } a_1 , . . . , a_m \\ b_1 , . . . , b_n\end{array} z \right ) = \sum_{ k \geq 0 } \cfrac{ z^k \prod_{ i = 1 }^m a_i^{ \overline{ k } } }{ k ! \prod_{ i = 1 }^n b_i^{ \overline{ k } } }\).

许多生成函数都可以写成超几何函数的形式.

值得一提的是,如果我们直接定义类似\(\cfrac{ 0 }{ 0 } = 1\)之类的式子,可以发现当\(z = 0\)时任意超几何函数总是\(= 1\).

值得一提的是,我们通常直接忽略超几何函数中的任何特殊情况,例如分母为\(0\)或者哪里出现了正无穷.如同生成函数中我们不关心式子带入一个数后是否收敛而只关心是否两边存在一种对应的转化.如果你想去探究超几何函数中的各种情况,那请去翻那本巨大的、黑糊糊的、作者默认你精通高等数学的、你在第五章看到的恒等式作者在第七章才给出证明的《具体数学》,而不是看我这个弱智写的笔记.笔者看这一段的时候已经被作者的”严谨”态度整疯了.该证明的一拖再拖不该证明的可以一句话带过的逼逼逼逼.仿佛这本书就是写给那些已经会了所有东西只是来使自己已经学会的东西更加体系化的以及拿来查阅各种恒等式的工具书.

特殊的超几何函数

合流超几何函数

我们通常把形如\(M ( a ; b ; z ) = F \left ( \begin{array}{ r | } a \\ b\end{array} z \right ) = \sum_{ k \geq 0 } \cfrac{ z^k a^{ \overline{ k } } }{ b^{ \overline{ k } } k ! }\)的函数称为合流超几何函数.

不难发现我们有:

\[ F \left ( \begin{array} { r | } 1 \\ 1 \end{array} z \right ) = e^z \]

也即常见生成函数中的\(( 6 )\).

高斯超几何函数

我们把形如\(F \left ( \begin{array}{ r | } a , b \\ c\end{array} z \right ) = \sum_{ k \geq 0 } \cfrac{ z^k a^{ \overline{ k } } b^{ \overline{ k } } }{ c^{ \overline{ k } } k ! }\)的函数称为高斯超几何函数.

下面是几种常见的高斯超几何函数形式:

  1. \(F \left ( \begin{array}{ r | } 1 , 1 \\ 1\end{array} z \right ) = \cfrac{ 1 }{ 1 - z }\).

即常见生成函数\(( 1 )\).

  1. \(F \left ( \begin{array}{ r | } - a , 1 \\ 1\end{array} - z \right ) = ( 1 + z )^a\).

即常见生成函数\(( 2 )\).

  1. \(F \left ( \begin{array}{ r | } a , 1 \\ 1\end{array} z \right ) = \cfrac{ 1 }{ ( 1 - z )^a }\).

即常见生成函数\(( 4 )\).

  1. \(F \left ( \begin{array}{ r | } 1 , 1 \\ 2\end{array} - z \right ) = \cfrac{ \ln ( 1 + z ) }{ z }\).

即常见生成函数\(( 7 )\).

超几何级数的应用

我们先考虑改写超几何级数的形式:

\(F \left ( \begin{array}{ r | } a_1 , . . . , a_m \\ b_1 , . . . , b_n\end{array} z \right ) = \sum_{ k \geq 0 } t_k , t_k = \cfrac{ z^k \prod_{ i = 1 }^m a_i^{ \overline{ k } } }{ k ! \prod_{ i = 1 }^n b_i^{ \overline{ k } } }\).

不难发现\(t_0 = 1\),而:

\[ \begin{aligned} \cfrac{ t_{ k + 1 } }{ t_k } & = \cfrac{ z^{ k + 1 } }{ z^k } \cfrac{ k ! }{ ( k + 1 ) ! } \cfrac{ \prod_{ i = 1 }^m a_i^{ \overline{ k + 1 } } }{ \prod_{ i = 1 }^m a_i^{ \overline{ k } } } \cfrac{ \prod_{ i = 1 }^n b_i^{ \overline{ k } } }{ \prod_{ i = 1 }^n b_i^{ \overline{ k + 1 } } } \\ & = \cfrac{ \prod_{ i = 1 }^m ( k + a_i ) }{ \prod_{ i = 1 }^n ( k + b_i ) } \cfrac{ z }{ k + 1 } \end{aligned} \]

换句话说,\(\cfrac{ t_{ k + 1 } }{ t_k }\)是关于\(k\)的一个有理函数.而根据代数基本定理,任意\(k\)的有理函数在\(\mathbb{ C }\)内都可以分解为以上的形式(如果缺少\(k + 1\)项则需要上下同时乘以\(k + 1\)以补上).

换句话说,对于一个无穷级数\(\sum_{ k \geq 0 } t_k\),我们先将\(\cfrac{ t_{ k + 1 } }{ t_k }\)表示回超几何函数,设为\(F\).

那么有:\(\sum_{ k \geq 0 } t_k = t_0 F\).

好,接下来请把脑子扔了,不要纠结某一个公式按理来说只能作用于正整数而在这里直接将它套在了复数域上.你只需要知道数学家非常厉害通过扩展一些东西的定义(大部分是阶乘和\(\Gamma\)函数的定义)来使这些公式全部成立.But who cares,只要我们能用就行了.我又不是数竞人,这些麻烦的要死我直观上根本无法接受的定义交给数竞老哥证明得了.反正信竞更多依赖离散数学,大不了我们直接默认所有的数都是自然数.

Example

求证:\(\sum_{ k \leq n } \binom{ r + k }{ k } = \binom{ r + n + 1 }{ n } \Leftrightarrow F \left ( \begin{array}{ r | } 1 , - n \\ - n - r\end{array} 1 \right ) = \cfrac{ r + n + 1 }{ r + 1 } , n \in \mathbb{ N } \\\).

首先考虑:

\[ \sum_{ k \leq n } \binom{ r + k }{ k } = \sum_{ k \geq 0 } \binom{ r + n - k }{ n - k } \]

有了这个无穷级数,我们可以直接将二项式系数用阶乘形式展开,于是得到:

\[ \binom{ r + n }{ n } F \left ( \begin{array} { r | } 1 , - n \\ - n - r \end{array} 1 \right ) = \binom{ r + n + 1 }{ n } \]

两边同时除以\(\binom{ r + n }{ n }\)得到上式.

二项式系数与超几何函数

通过范德蒙德卷积,不难验证:

\[ F \left ( \begin{array} { r | } a , b \\ c \end{array} 1 \right ) = \cfrac{ \Gamma ( c - a - b ) \Gamma ( c ) }{ \Gamma ( c - a ) \Gamma ( c - b ) } , - b \in \mathbb{ N } \]

这个公式的一个特例是:

$$ \[\begin{aligned} F \left ( \begin{array} { r | } a , - n \\ c \end{array} 1 \right ) & = \cfrac{ ( c - a )^{ \overline{ n } } }{ c^{ \overline{ n } } } = \cfrac{ ( a - c )^{ \underline{ n } } }{ ( - c )^{ \underline{ n } } } , n \in \mathbb{ N } \\ \sum_{ k \geq 0 } \cfrac{ a^{ \overline{ k } } ( - n )^{ \overline{ k } } }{ c^{ \overline{ k } } k ! } & = \cfrac{ ( c - a )^{ \overline{ n } } }{ c^{ \overline{ n } } } = \cfrac{ ( a - c )^{ \underline{ n } } }{ ( - c )^{ \underline{ n } } } , n \in \mathbb{ N } \\ \end{aligned}\]

$$

这个公式几乎囊括了所有的基本二项式求和公式:上指标求和,平行求和,范德蒙德卷积……几乎只要是我们推出的由两个及以下项的乘积求和的二项式系数相关的式子都可以使用这个式子.

那么如果我们要三项相乘或更多,我们有Saalschütz恒等式:

$$ \[\begin{aligned} F \left ( \begin{array} { r | } a , b , - n \\ c , a + b - n - c + 1 \end{array} 1 \right ) & = \cfrac{ ( c - a )^{ \overline{ n } } ( c - b )^{ \overline{ n } } }{ c^{ \overline{ n } } ( c - a - b )^{ \overline{ n } } } = \cfrac{ ( a - c )^{ \underline{ n } } ( b - c )^{ \underline{ n } } }{ ( - c )^{ \underline{ n } } ( a + b - c )^{ \overline{ n } } } , n \in \mathbb{ N } \\ \end{aligned}\]

$$

事实上,《具体数学》上给出了大量的超几何级数的应用以及各种技巧,但是笔者的智商已经理解不了接下来的内容了.考虑到大部分时候上述两个超几何级数恒等式已经足够解决绝大部分问题,如果考到更加困难的求和技巧,笔者相信别人也不会做,于是笔者决定摆烂.

求微分方程

Example1(luogu4931)

二项式反演:

\[ \begin{aligned} ans_k & = \sum_{ i = k }^n ( - 1 )^{ i - k } \binom{ i }{ k } \binom{ n }{ i } \binom{ n }{ i } i ! ( 2 n - 2 i ) ! 2^i \\ & = \sum_{ i = k }^n ( - 1 )^{ i - k } \frac{ 1 }{ k ! ( i - k ) ! } \frac{ n ! }{ ( n - i ) ! } \frac{ n ! }{ ( n - i ) ! } ( 2 n - 2 i ) ! 2^i \\ & = ( n ! )^2 \frac{ 2^k }{ k ! } \sum_{ i = k }^n ( - 1 )^{ i - k } \frac{ 1 }{ ( i - k ) ! } \binom{ 2 n - 2 i }{ n - i } 2^{ i - k } \\ & = ( n ! )^2 \frac{ 2^k }{ k ! } \sum_{ i = 0 }^{ n } \frac{ ( - 2 )^{ i } }{ i ! } \binom{ 2 n - 2 i }{ n - i } \end{aligned} \]

注意到后者只与\(n - k\)有关,不妨设其为\(f_{ n } = \sum_{ i = 0 }^{ n } \frac{ ( - 2 )^{ i } }{ i ! } \binom{ 2 n - 2 i }{ n - i }\),预处理一下就可以做到\(O ( n^2 + nT )\).

加强版咋做?我们继续看看式子:

\[ \begin{aligned} ans & = ( n ! )^2 \frac{ 2^k }{ k ! } f_{ n - k } \\ f_{ n } & = \sum_{ i = 0 }^{ n } \frac{ ( - 2 )^{ i } }{ i ! } \binom{ 2 n - 2 i }{ n - i } \end{aligned} \]

注意到\(f\)是一个卷积的形式,设其生成函数为\(F_n\),\(g_n = \frac{ ( - 2 )^n }{ n ! } , h_n = \binom{ 2 n }{ n }\),我们自然有\(F = GH\).

考虑\(G\)\(H\)的生成函数形式,先看\(G\),显然用泰勒展开:

\[ G = \sum_{ n \geq 0 } \frac{ ( - 2 x )^n }{ n ! } = e^{ - 2 x } \]

再看\(H\),是卡特兰数的生成函数,有:

\[ H = \frac{ 1 }{ \sqrt{ 1 - 4 x } } \]

这下简单了,答案是:

\[ ( n ! )^2 \frac{ 2^k }{ k ! } [ x^{ n - k } ] \frac{ e^{ - 2 x } }{ \sqrt{ 1 - 4 x } } \]

现在看\(F\),平方一下有:

\[ ( 1 - 4 x ) F^2 = e^{ - 4 x } \]

两边求导:

$$ \[\begin{aligned} - 4 F^2 + ( 1 - 4 x ) 2 F \times F ' & = - 4 e^{ - 4 x } \\ - 4 F^2 + ( 1 - 4 x ) 2 F \times F ' & = - 4 ( 1 - 4 x ) F^2 \\ ( 2 - 8 x ) F ' & = 16 xF \\ \end{aligned}\]

$$

得到了一个线性递推形式,更进一步地:

\[ \begin{aligned} 2 ( i + 1 ) f_{ i + 1 } - 8 if_i & = 16 f_{ i - 1 } \\ if_i & = 4 ( i - 1 ) f_{ i - 1 } + 8 f_{ i - 2 } \end{aligned} \]

技术总结一下:其实就是你想要得到一个递推式,然后注意到这玩意要写成微分方程的形式,所以开始往那边凑.

生成函数的应用

求解递归关系

我们假设已经有了\(R ( z ) = \sum_{ k \geq 0 } g_k z^k\),并且\(R ( z ) = \cfrac{ P ( z ) }{ Q ( z ) }\),其中\(P ( z )\)\(Q ( z )\)都是多项式,我们想要找到一种方式求解\([ z^n ] R ( z )\).

考虑有理函数\(S ( z ) = \sum_{ k = 1 }^m \cfrac{ a_k }{ 1 - \rho_k z } \\\),不难发现\([ z^n ] S ( z ) = \sum_{ k = 1 }^m a_k \rho_k^n \\\).

那么可以证明,只要\(Q ( z ) = 0\)无重根并且无零根,那么就存在一组系数满足\(S ( z ) = R ( z )\).

我们这么定义”反射”运算,若\(Q ( z ) = \sum_{ k = 0 }^m q_k z^k \\\),则其反射多项式为\(Q^R ( z ) = \sum_{ k = 0 }^m q_k z^{ m - k } \\\).

\(Q ( z ) = q_0 \prod_{ k = 1 }^m ( 1 - \rho_k z )\),则显然有\(Q^R ( z ) = q_0 \prod_{ k = 1 }^m ( z - \rho_k ) \\\).

那么显然这里求出来的这组数\(\rho\)就是\(S ( z )\)中的那组\(\rho\).

而我们有\(a_k = \cfrac{ - \rho_k P ( \cfrac{ 1 }{ \rho_k } ) }{ Q ' ( \rho_k ) }\).

Example1

已知\(n ! = \sum_{ k } \binom{ n }{ k } g_{ n - k } , n \in \mathbb{ N } \\\),求\(g_n\).

首先两边同时除以\(n !\)并将组合数用阶乘形式展开,我们有:

\[ 1 = \sum_{ k } \cfrac{ g_{ n - k } }{ k ! ( n - k ) ! } . \]

如果我们令\(D ( z ) = \sum_{ k \geq 0 } \cfrac{ g_{ k } }{ k ! } z^k\),则有:

\[ \begin{aligned} \cfrac{ 1 }{ 1 - z } & = e^z D ( z ) \\ D ( z ) & = \cfrac{ 1 }{ 1 - z } e^{ - z } \\ D ( z ) & = ( \sum_{ k \geq 0 } z^k ) ( \sum_{ k \geq 0 } ( - 1 )^k \cfrac{ z^k }{ k ! } ) \\ [ z^n ] D ( z ) & = \sum_{ k = 0 }^n \cfrac{ ( - 1 )^k }{ k ! } \end{aligned} \]

于是\(g_n = n ! \sum_{ k = 0 }^n \cfrac{ ( - 1 )^k }{ k ! } \\\).

Example2([QOJ5169] 夹娃娃)

首先设\(F_i ( x )\)为第\(i\)家的生成函数,这个是显然可以快速预处理出来的.令\(M = 520\).

问题在于每次询问的时候求出答案呢?

这里有一个套路:我们在一开始就暴力做点值,最后拿拉格朗日插值求答案.中间大概把能预处理的都预处理一下.最后的问题在于:

第一,预处理点值的时候,一共有\(n\)个多项式,最高次数是\(M\),因此一共要插入\(nM\)个值,又要处理每个后缀,复杂度来到\(O ( n^2 M^3 )\).这个问题是好解决的.我们只需要在带入点值的时候做一个后缀继承一类的东西,复杂度就可以来到\(O ( n^2 M^2 )\).

第二,询问的时候需要找到所有对应的点值并暴力乘起来,复杂度来到\(O ( n^2 Mq )\).但\(n\)如此小,我们可以用指数级别的复杂度来优化,我们考虑预处理一下\(2^n\)的答案,复杂度来到\(O ( nM 2^n q )\).但是这个更不太行.那怎么办呢?我们把这个指数级别的东西分块一下.预处理复杂度来到\(O ( \frac{ n }{ B } B 2^B MnM )\),单次询问复杂度来到\(O ( \frac{ n }{ B } Mnq )\).但这个预处理复杂度好像还是有点艰难.不过注意到如果做一个剪枝优化:如果总共的喜欢的店的个数乘以\(k\)要大于\(m\),就直接输出\(0\).预处理的时候块内部也做一个剪枝,然后发现就能过了(牛逼).

第三,拉格朗日插值的时候需要\(O ( ( nM )^2 q )\)的复杂度,不过由于点值可以自己控制,这个复杂度可以轻松降到\(O ( nMq )\).

Example3([十二省联考 2019] 皮配)

首先注意到题目等价于规定一个阵营和一个排序的人数上下界.

我们可以将这四位导师分别记为\(xy , y , x , 1\),这样最后判断幂在一个区间内的\(x\)\(y\)前面的系数就行.

注意到如果没有学校有偏好,将生成函数卷起来后得到的答案就是\(\prod ( x^{ s_i } y^{ s_i } + x^{ s_i } ) + \prod ( y^{ s_i } + 1 ) = ( \prod ( x^{ s_i } + 1 ) ) ( \prod ( y^{ s_i } + 1 ) )\).也就是\(x\)\(y\)是互相独立的,我们可以分开算.

对于那些有偏好的学校,我们暴力算就行.复杂度不会高于\(O ( mk^2 s )\).最后两部分合并一下.

约定

\(K_n\)\(n\)个点的完全图

树的性质

Example1([HDU6035]Colorful Tree)

考虑每种颜色的贡献,一种颜色的贡献显然是删去所有这个颜色的边后,剩下的联通块之间的路径.

Example2([2022qbxt国庆Day1]tree)

首先考虑分开处理每个点,在做每个点的时候假设它的所有子节点全部已经满足条件了,最终我们再通过计算组合数的方式计算即可.

那么最后,我们需要对于每个点进行处理,假设我们已知这个子树的集合是\(S\),那么我们需要用容斥计算如果当前子树集合是\(S\)的子集的情况,不难发现容斥式子:

\[ ans = \sum_{ k = \max \{ f_v | x \rightarrow v \} }^{ f_x } ( - 1 )^{ f_x - k } k \binom{ f_x }{ k } \sum_{ x \rightarrow v } \binom{ k }{ f_v } \]

其实也就是个二项式反演的形式.

这题还需要一些技巧优化,我们首先发现由于\(f_v\)有可能有重复的,我们可以提前把重复的\(f_v\)压缩到一起再用快速幂求,于是后面的部分最多不过\(\sqrt{ n }\)级别.而前面是一个类似于树上启发式合并的东西,于是复杂度\(O ( n \sqrt{ n } \log n )\).

Example3(CF1628E Groceries in Meteor Town)

因为要求路径最大值,所以先建Kruskal重构树.然后问题转化为求一个点和一群白点的LCA是谁.

树上多点LCA有个经典性质:也就相当于其中\(dfn\)序最大的和最小的两个点的LCA.

至于区间覆盖可以用线段树.

Example4(loj3692)

注意到\(D\)很小.

我们考虑处理邻域乘,设\(f_{ x , i }\)表示\(x\)\(i\)级儿子需要乘上的答案.每次修改时,先将\(f_{ x , D }\)\(f_{ x , D - 1 }\)乘上\(W\),然后令\(x = fa_x\),\(D = D - 2\),继续此操作直到\(D\)\(0\).

然后询问的时候直接暴力跳\(D\)层父亲找答案,不难发现这样做是对的.

同样的思路可以脱离点分治处理很多邻域问题.

树的直径

  1. 定义:树中最长的一条简单路径.

  2. 树的直径可能有多个.

  3. 直径的两个端点一定是两个叶子节点.

  4. 如果树有多条直径,树的不同的直径的中点/中边一定是相同的.

  5. 到一个点距离最远的点一定是直径的一个端点.

  6. 对于两棵树,如果第一棵树直径两端点为\(( u , v )\),第二棵树直径两端点为\(( x , y )\),用一条边将两棵树连接,那么新树的直径一定是\(u , v , x , y\)中的两个点.

上述的证明大都是考虑反证法:如果不成立,则一定存在一条更长的直径.

Example1([SDOI2013]直径)

有一个做法是:考虑找到直径的中点/中边,找到它到两边的最远距离的点,显然两边的点分别的以中点/中边的两个端点为根的LCA中间的部分就是一定会被包含的边.

树的重心

  1. 定义:树的重心是删去后所有剩余子树大小最大值最小的点.

  2. 树的重心是删去后所有剩余子树大小全部小于等于\(\lfloor \cfrac{ n }{ 2 } \rfloor\)的点.

  3. 树的重心只有可能有一个或两个.

  4. 如果树有两个重心,那么这两个重心相邻.

  5. 树的重心是所有点到其距离之和最小的点.

  6. 把一个树添加或删除一个叶子,那么它的重心最多只移动一条边的距离.

  7. 把两个树通过一条边相连得到一个新的树,那么新的树的重心在连接原来两个树的重心的路径上.

(2)的证明如下:

如果重心是\(u\),且删去\(u\)后剩余最大子树大小大于\(\lfloor \cfrac{ n }{ 2 } \rfloor\),设这棵子树中与\(u\)相邻的点为\(v\),则我们删去\(v\)后,最大子树大小一定会减少,不满足假设,所以(2)得证.

另外,如果一个点删去后所有剩余子树大小全部小于等于\(\lfloor \cfrac{ n }{ 2 } \rfloor\),那它也一定是重心.因为不存在除了重心以外的满足条件的点:考虑调整法,与重心相邻的点一定都不满足条件,因为它们的子树大小全都小于等于\(\lfloor \cfrac{ n }{ 2 } \rfloor\),移动后最大子树一定不小于\(n - \lfloor \cfrac{ n }{ 2 } \rfloor\).

(3)(4)的证明如下:

首先证明:如果有两个点都是重心,那它们一定相邻.

考虑如果二者不相邻,那删去它们后剩下的最大子树大小一定相等,设这两个点分别为\(x , y\),那删去\(x\)后,剩下的最大子树一定包含了\(y\),而这个子树的大小一定小于等于\(\lfloor \cfrac{ n }{ 2 } \rfloor\).那删去\(y\)后,剩下的最大子树大小必定大于\(\lfloor \cfrac{ n }{ 2 } \rfloor\),一定不合法.

而树上不可能有超过两个点两两相邻,于是最多只有两个重心,且它们一定相邻.

(5)的证明如下:

考虑如果\(u\)是树的重心,我们看能不能将\(u\)调整到另一个点使得所有点到其距离之和更小.

由于调整是一步一步做的,显然只需要判断所有和\(u\)相邻的点是否符合条件即可.设这个点为\(x\),那我们把\(u\)改为\(x\),会使答案减小\(siz_x\),增加\(n - siz_x\),由于\(siz_x \leq \lfloor \cfrac{ n }{ 2 } \rfloor\),所以这么做一定不优.

(6)的证明如下:

首先,如果加入一个叶子节点后,各个子树大小仍然都\(< \lfloor \cfrac{ n }{ 2 } \rfloor\),那显然不必调整.

不然,显然是往叶子节点移动一格或者加入一个相邻的重心.

(7)的证明如下:

不妨设两棵树大小分别为\(siz_a \leq siz_b\),然后令相连的两个点是这两棵树的根.

对于\(b\)中的重心,肯定是会往根跳,并且不可能跳出\(b\)原本的树.

Example1([CSP-S2019]树的重心)

首先取重心\(rt\)为根,如果有两个就随便取一个.

接下来我们考虑对于每个点\(x\),它在什么情况下会成为重心.首先,删掉的边不可能在\(x\)的子树内,不然一定不可能取到\(x\)的.然后,我们假设删掉的子树大小为\(S\),\(x\)的子树内最大的一个子树大小为\(g_x\),那么根据重心的性质有:

$$ \[\begin{aligned} 2 ( n - S - siz_x ) & \leq n - S \\ 2 g_x & \leq n - S \\ \end{aligned}\]

$$

整理得到:

\[ 2 g_x \leq n - S \leq 2 siz_x \]

考虑这个怎么计算:如果没有删边必须在\(x\)子树外的限制,那显然可以直接遍历一遍存下\(n - S\),然后统一使用值域树状数组做.而我们接下来考虑删去\(x\)子树内的贡献,类似colorful tree的做法,每次dfs到一个点,记录下来当前树状数组的答案,然后dfs子树,回溯时拿新答案减去旧答案就是子树内的答案.

接下来我们需要考虑\(x = rt\)怎么做.

考虑\(x\)的子树中最大的那个和次大的那个,如果我们删去的节点不在最大的子树中,那只需要保证最大的子树大小满足条件;不然,只需保证次大的子树大小满足条件,也是好维护的.

树的结构的维护

Example1

给定一棵树,树上点有点权\(val\).现在有一个值\(sum\),初始为\(0\).从\(1\)号点出发,每第一次到一个点\(u\),就会使\(sum + = val_u\).求在时刻保证\(sum \geq 0\)的前提下,\(sum\)最终的最大值.

首先注意到为了保证\(sum \geq 0\)这个性质,一个节点应该有两个值:\(lim\)表示能走到这个点所需要的最小的\(sum\),\(val\)表示到了这个点后能获得的价值.显然如果\(val \leq 0\)则无意义.

如果我们能一开始处理出根的所有儿子的\(lim\)\(val\),我们就可以使用先走\(lim\)小的点,并不断累计\(sum\)的方式做.

所以考虑不断向上合并信息.不难发现此时一个点要处理出多对\(( lim , val )\).考虑用一个左偏树维护这个东西.

但是,我们还需要保证不能跳着选点.也就是说我们要保证选中一个点,这个点的父亲必须选,怎么办呢?

一个方式是,我们把排序方法从只看\(lim\)变成先判是否存在祖先后代关系,再判断\(lim\).

另一个方式是,我们每次直接把当前子树根节点扔到堆顶.但是需要满足堆的性质.不难发现如果这个点\(val < 0\),我们可以将它与下面的\(lim\)最的节点合并直到这个点\(val \geq 0\).而如果这个点的\(lim\)太大,我们同样可以合并.注意到这样我们采取了一种很聪明的方式维护了树的形态.

dfs树的性质

Example1([CF1361E]James and the Chase)

如何判断一个点是否是好的呢?首先,如果要求是任意路径,那一个点是好的当且仅当它是一个叶向有根树的根.

现在要求是简单路径,那也就是说如果走了重复点是可以忽略的,这也就是说这个叶向有根树可以有反走边,而显然不能有横插边.不难发现这是充要条件.

另一个问题是:如何快速判断一个点是否满足上述条件呢?首先我们求出以一个好的点为根的dfs树(随机选取一定数量的点,如果一个都不是好点直接输出\(- 1\)),然后我们发现:一个点\(u\)是好的必要条件是它的子树内只有一条反走边,证明显然.假设\(u\)通过这条反走边走到了点\(v\),那么\(u\)是好的点当且仅当\(v\)也是好的点.

这是为啥呢?首先,因为我们是以一个好点为根跑的dfs树,所以\(u\)走到子树内的点必定只有一种方式.那子树外的点呢?走到\(v\)后,显然就要从它走到其它点,而它到\(u\)的子树内显然只有一种方案,那如果\(v\)到其它点也只有一种方案,那么根据\(u \rightarrow v\)这条路径,\(u\)显然也是好点.

Example2(Loj 6276)

找到所有颜色相同的点对\(( x , y )\),经过它们的路径都不合法,显然经过它们的路径可以用dfs序刻画成矩阵,最后要求矩阵面积并.

圆方树的性质

  1. 对于任意的非空无向图\(G\),一定存在一个\(G\)的点双连通分量\(B\),使得\(B\)中只有不超过\(1\)个节点是\(G\)的割点.其中,若\(B\)中没有\(G\)的割点,则有\(B = G\).

  2. 若一个点双连通分量不为\(K_2\),则该点双连通分量中至少有一个简单环.

  3. 在仙人掌上的每个点双连通分量要么是\(K_2\),要么是一个简单环.

  4. 对于一个不是\(K_2\)的点双连通分量中的任意一个点\(u\),一定存在一个简单环\(C\)使得\(u\)\(C\)上.

  5. 对于一个不是\(K_2\)的点双连通分量中的任意两个点\(u , v\),一定存在一个简单环\(C\)使得\(u , v\)\(C\)上.

  6. 对于一个不是\(K_2\)的点双,任给一点\(x\)和一边\(e\),一定存在经过\(x , e\)的简单环.

  7. 对于一个不是\(K_2\)的点双,任给两点\(s , t\)和一边\(e\),一定存在一条\(s - e - t\)的简单路径.

(6)的证明非常变魔术,你考虑把\(e : u \leftrightarrow v\)这条边给改成\(u \leftrightarrow w \leftrightarrow v\),然后\(w\)\(x\)在一个简单环上,意味着\(u , w , v , x\)在一个简单环上.

(7)考虑(6)就行,先找到\(s\)\(e\)所在的简单环,然后从这个环上连到\(t\).

任意图的性质

  1. 若一张无向连通图\(G\)中存在\(3\)个不同的一度点\(x , y , z\),则一定存在一个点\(u \notin \{ x , y , z \}\)使得存在\(3\)条两两没有公共边的简单路径满足其中一个端点均为\(u\) 且另一个端点分别为\(x , y , z\).(证明考虑求生成树后讨论LCA)

dsu on tree

Example(QOJ5020)

我们考虑树链剖分,这样将问题转化为三部分:

  1. 对于某个点而言,到它距离\(\leq d\)的点数量.这个问题可以使用点分治解决.

  2. 对于某条重链的上半部分而言,它连接的所有轻子树中,到它距离\(\leq d\)的点数量.这个问题直接dsu on tree.

  3. 对于某个点而言,在它子树内到它距离\(\leq d\)的点数量.这个问题也可以直接dsu on tree.

为什么转化为三个部分就能求解呢?我们考虑一条链\(u \rightarrow w \rightarrow v\),其中\(w\)是这条链上深度最浅的点.那么首先我们统计在\(w\)子树外的,这一个部分可以由(1)和(3)做差求出来.然后我们要求的就是在\(w\)子树内,到这条链的距离\(\leq d\)的点的数量.这个怎么求呢?我们考虑差分,求一下\(1 \rightarrow u\)\(1 \rightarrow w\)的答案然后做差.这样我们对这条到根的路径重链剖分,只需要处理重链的上半部分以及两条重链的连接处.不难发现两条重链的连接处会被多算一次,拿(3)减一下就好.以及这条路径所叉出去的重儿子也需要用(3).

现在的问题在于怎么求(2)和(3),先考虑(2),我们对于每一条重链从顶端走到低端不断地加入轻儿子,然后维护BIT就行.(3)是类似的,只不过是需要从底端走到顶端.

注意如果把重儿子和轻儿子分开处理,那么可能会在一些奇怪的地方算重,解决方法是特判\(w\)处的答案,然后拆成两条互相之间完全没有影响的链,当然这也有可能会发生跳重链的时候轻儿子算重的情况,同样需要判断一下.

最小生成树

Example1(CF1550F Jumping Around)

首先考虑离线.注意到每次肯定跳到一个自己能跳到的点,而这个点应该是所需灵活度最小的点.

考虑boruvka算法,建立最小生成树并判断.

Kruskal重构树

最小生成树时,每一次加边的时候把那个边变成虚点,两个点连到这条边上.任意两个点的LCA就是它们路径上的最小边权.

最短路

Example1(CF1753D The Beach)

首先,自然的想法是把格子图黑白染色.

然后,我们注意到一个床是不可能被移动两次及以上的.因为如果是横着动两次,那不动自然就有一对空位置了;如果是转两次,考虑转的目的一定是为了空出某个位置或某两个位置(不可能为了空出三个位置,显然这么做很闲),一次操作足矣;如果是动一次转一次也是一样的,要么转的很闲要么原本就存在这么一对空位置.

我们再进行一步转化,考虑把动床改为动格子.换句话说,每个格子可以通过一定的代价移动到和它相邻的床的与它不相邻的那个位置上.注意到移动格子的过程只会把黑格子移动到黑格子,白格子移动到白格子.

于是建立超级源点跑两边最短路,枚举最后床放在哪里即可.不过这里有一点是一个床有没有可能被黑白最短路同时跑了一遍,是有可能的,但这么跑一定不优秀,不可能是最小答案.

Example2([CF843D]Dynamic Shortest Path)

注意到\(O ( nq )\)能过.而且每次修改只是对于若干条边\(+ 1\),自然想到每次修改完后跑01bfs.

但是怎么跑呢?注意到维护每个点最短路的增量,并且在路径的增量上跑01bfs,自然可求.

Example3 同余最短路([luoguP2371]墨墨的等式)

因为\(a_i\)无序,假设\(a_1\)最小,那么所有的数字都可以按\(\mod a_1\)的结果分成\(a_1\)类.我们按照余数设置\(a_1\)个点,编号为\(0\)\(a_1 - 1\).

\(dis_i\)为所有能组成的数中且\(\mod a_1\)余数为\(i\)的最小数.那么,所有能表示出来的\(\bmod a_1\)余数为\(i\)的数都可以写作\(dis_i + k \times a_1 , k \in \mathbb{ N }\)的形式,求得\(dis_i\)后可以很轻易算出.

那么怎么求\(dis_i\)呢?我们考虑:对于任意一个数\(k\),它可以怎么得到.注意到如果\(k - a_j\)(其中\(i \ne j\))可行,那么\(k\)一定可行.自然有:\(dis_i = \min \{ dis_j + a_k | 0 \leq j < a_i , k \ne i \}\).

这显然是一个最短路问题.

差分约束

Example1([AGC056C] 01 Balanced)

\(1\)看成\(- 1\),\(0\)看成\(+ 1\),不难发现字典序最小也就是让前缀和序列字典序最小,并且有\(sum_{ r_i } = sum_{ l_i - 1 }\)以及\(- 1 \leq sum_{ i } - sum_{ i - 1 } \leq 1\),然后做\(01\)bfs跑最短路,显然最短路可以保证每个\(sum\)都尽可能小.

然后另一个问题在于这玩意为啥不会让\(sum_i = sum_{ i - 1 }\),这个建图后观察一下就知道不会发生这种情况.

2-SAT

Example1(CF1697F)

对每个点建立\(k\)对点表示\(a_i \geq x\)\(a_i < x\),就能做了.

Example2(2021集训队互测 序列)

注意到如果\(a_i < x\),那么\(a_j \geq x \land a_k \geq x\),这样就可以刻画所有的条件.

而且一定可以刻画所有的条件.

对偶图

Example1([CSP-S 2021] 交通规划)

先考虑如果附加点的颜色全都相同,那肯定输出\(0\)即可.

考虑附加点的数量为\(2\)的时候,那显然最优情况需要将整个图分成各自联通的两部分,一部分染成黑色,一部分染成白色.可以发现这就是一个对偶图.

而如果附加点的数量很多怎么做呢?稍微思考一下

广义串并联图/三度化

定义

定义:不存在\(4\)个点使得任意两点之间存在一条简单路径,且这六条路径不在\(4\)个点之外的地方相交.

删一度点

经典问题引入:树上带权最大独立集.

首先dp是可以实现的,我们考虑是否存在贪心算法.

首先,如果不带权,我们显然可以每次选取一度点或零度点,并删去所有相连的点.这样做显然是最优的.

但怎么做带权的方法呢?我们注意到可以先删掉所有负点权的点,然后可以加入剩下的所有零度点.

那么对于一度点呢?对于一个一度点\(u\)和它的相邻点\(v\),我们不能盲目选\(u\)的原因是可能选取\(v\)会更优秀.考虑做一个带悔贪心,我们先把\(u\)选上,然后把\(v\)的权值设为\(val_v - val_u\),相当于我们仍然可以选\(v\),但是要花费\(val_u\)的代价把\(u\)删去.

我们把类似这样的操作称为删一度点.

缩二度点

问题引入:给定一个仙人掌,每个点可以染色为\(0\)\(1\),\(u\)节点染成\(0\)会有\(b_u\)的贡献,不然有\(w_u\)的贡献.若一条边\(e\)相邻的两点颜色相同则有\(s_e\)的贡献,不然有\(d_e\)的贡献,求最大答案.

首先如果有一度点和零度点,我们仍然可以使用删一度点的操作.

如果没有,考虑仙人掌上的一个点双一定是一个简单环.而且一定存在一个点双\(B\)满足\(B\)只包含一个割点.

那么对于这个点双上的一个非割点\(x\)以及和它相邻的两个点\(u\)\(v\),我们考虑\(x\)的染色有可能改变\(u\)\(v\)的答案,那么怎么办呢?

冷静思考一下,我们想办法把\(x\)给删掉.简单来说,我们把\(u\)\(v\)之间连一条边权为\([ w_{ 0 , 0 } , w_{ 0 , 1 } , w_{ 1 , 0 } , w_{ 1 , 1 } ]\)的边,分别表示\(u\)\(v\)的染色为以上四种情况时这条边(也就是原本的\(x\))的最大贡献是什么,这显然可以通过讨论\(x\)的取值而求得.这样初始边权实际上就是\([ s , d , d , s ]\),于是我们就可以删掉一个二度点并连起来与它相邻的两个点,我们把类似这样的操作称为缩二度点.

叠合重边

注意到使用缩二度点的时候,会把一个三元环缩成两个点及链接它们的两条重边,但是我们可以直接把重边合起来,我们把类似这样的操作称为叠合重边.

正确性证明

接下来我们证明:任何广义串并联图都可以通过以上三种操作缩为一个点.

引理1

对于一个无向图\(G\),若进行若干次删一度点操作,缩\(2\)度点操作以及叠合重边操作后得到的图不是广义串并联图,那么\(G\)也不是广义串并联图.

考虑用逆操作还原原图.删一度点的逆操作是加入一个点,叠合重边的逆操作是将一条边变成两条边,这两个操作显然不会使一个不是广义串并联图的图变成广义串并联图.接下来考虑缩二度点的逆操作:删掉一条边\(( u , v )\)并加入一个点\(w\)和两条边\(( u , w )\)\(( w , v )\).

由于这个图不是广义串并联图,所以一定存在一组反例点\(\{ a , b , c , d \}\).如果我们删掉的边不在作为反例的六条边上,那显然不影响;如果在,由于新加入的两条边仍然可以作为路径,所以也不影响.

于是引理得证.

引理2

任意一张所有点的度数都大于等于\(3\)的简单无向连通图,一定不是广义串并联图.

这个引理的严格证明有些麻烦.我们冷静一下,一个四个点的完全图满足以上条件且不是广义串并联图.而其他的图感性理解一下应该可以通过缩路径的方式变成一个四个点的完全图.

结合引理1,我们得知任意一个操作后不能变成单个节点的图的无向连通图不是广义串并联图.

引理3

任意一个满足\(m \leq n + k\)的图,通过删一度点,缩二度点,叠合重边操作后,\(m\)\(n\)都会到达一个\(O ( k )\)的量级.

考虑缩完点后,所有点的度数\(\geq 3\),于是有\(2 m \geq 3 n\),而在操作过程中,\(m - n\)的值显然是不增的,于是有\(m - n \leq k\),解一下方程得到\(n \leq 2 k , m \leq 3 k\).

Example1(22zr提高十连测day6摆件)

首先考虑颜色之间没啥区别,所以对于一棵树来说,朴素的dp是可以的.

简单来说,设\(dp_i\)表示第\(i\)棵子树的答案.合并的时候考虑设\(f_v = \cfrac{ 1 }{ k } dp_v sam_e + \cfrac{ k - 1 }{ k } dp_v dif_e\),自然有\(dp_u = \prod_{ u \rightarrow v } f_v \\\).

接下来考虑先随便找一棵生成树,然后暴力枚举多余的反走边的深度较低的叶子节点的颜色,再进行dp即可.

另外也可以缩点后做,不过对于这题没啥区别.

Example2([JOI Open 2022] 放学路)

广义串并联图的一个很重要的思想是:我们通过一些手段改变这个图的形态为一个好做的形态,但是答案又和原图相同.

在这个思想的指导下,我们考虑这个题能否进行三度化.不过注意起点和终点简单特判一下,别把他们给删了.这样我们最后如果得到了一个只有起点和终点的图,那就一定是no.

然后如果没有只得到起点和终点呢?对最短路图建DAG,考虑如果\(S\)\(T\)在一个点双中,我们找到两个点\(u , v\),使得\(u \rightarrow v\),并且\(u\)的出度至少是\(2\),\(v\)的入度至少是\(2\),显然只要找到就做完了.现在的问题就在于为啥这条边一定存在.这个考虑找一个入度至少为\(2\)的点\(v\),找到它的入点\(u\),如果\(u\)的出度不是\(2\),那么\(u\)也是一个入度至少为\(2\)的点.这样往前推一定至少能推到一个点(因为不可能\(S\)贡献了俩入度).

如何保证\(S , T\)在一个点双中呢?其实只需要添加一条边\(( S , T , dis_{ S \rightarrow T } )\)就行了.显然加了后不会对答案产生影响.然后不在\(S , T\)这个边双内的点也没有用了.

点分治

Example1(CFgym101002K)

点分治,假设当前分治重心是\(g\),将每个数缩成一个二元组\(( w_i , d_i )\),所求就是\(w_i w_j + d_i + d_j\)最小,直接排序做斜率优化.

点分树的性质

  1. 点分树的高度是\(O ( \log n )\)级别.

  2. 两个点在原树上的路径一定经过其在点分树上的LCA.

Example1(codechef [BTREE])

这题用到了一个经典套路:一个树形连通图的点数减去边数为\(1\),把虚树建出来,能到达一个点的守卫必然是一个树形连通图(虚树中原本没有守卫的点可以加个不同覆盖范围的守卫).于是我们只需要求出每个守卫能覆盖多少点以及两个守卫之间的那条路径能覆盖多少个点,前者用点分树轻松维护,后者的话找一下这条边上的某个满足条件的点就行.

Example2

给定一棵树,现在在上面选定\(m\)对不同的点,要求每对点的距离之和最大.

考虑如果确定了\(2 m\)个点,我们如何匹配他们.对每条边算贡献,假设这条边两侧分别有\(a , b\)个点,那么这条边最大的贡献就是\(\min \{ a , b \}\).不难发现这个上界可以取到,只需要取这\(2 m\)个点的带权重心,由于不存在绝对众数,所以直接两两匹配.枚举带权重心是啥,这样复杂度\(O ( n^2 )\).

那么怎么优化呢?我们注意到如果以一个点\(x\)作为根,而它有一个儿子\(y\),\(y\)的子树中选了少于\(m\)个点,那么我们以\(y\)为根一定是不优秀的,不然一开始就不可能只选少于\(m\)个点,再考虑带权重心这个东西,上点分树.

具体来说,我们建立点分树,然后从点分树的根开始枚举带权重心,如果当前没有一棵子树选了\(m\)个点,就停止,不然往选了\(m\)个点的那棵子树走(如果有两个的话选第\(m\)大更大的那个),这样就只会选取\(O ( \log n )\)个带权重心.

边分治

需要建立虚点转二叉树.

边分树的性质

  1. 非叶子节点代表边,叶子节点代表点.

  2. 边分树的高度是\(O ( \log n )\)级别.

  3. 边分树上每棵子树中的叶子节点一定联通.

  4. 是一棵完全二叉树.

  5. 两个点在原树上的路径一定经过其在边分树上的LCA所代表的边.

二分图

定理

最大流-最小割定理
Hall定理

对于二分图\(\langle V_1 , V_2 , E \rangle , | V_1 | \leq | V_2 |\),那么该图存在完备匹配的充要条件是\(\forall Q \subseteq V_1 , | Q | \leq | N ( Q ) |\),其中\(N ( Q )\)指的是所有与\(Q\)中点有边相连的点的集合.

必要性很显然,接下来说明充分性.设\(T\)为最小点覆盖,也就是最大匹配的数量,再设\(M\)为最大匹配,此时自然有:

\[ | M | = | T | = | T_1 | + | T_2 | \geq | T_1 | + | N ( V_1 / T_1 ) | \geq | T_1 | + | V_1 / T_1 | = | V_1 | \]

显然\(| M | \leq | V_1 |\),于是\(| M | = | V_1 |\).

另外,Hall定理有一个推论:正则二分图一定存在完美匹配.什么叫正则二分图,就是所有的点的度数(不为\(0\))都相等的图.

\(2^d\)-正则二分图求完美匹配的话,可以不断求欧拉回路并给边定向,每次把一个方向的边全都删掉,这样就转化成了\(2^{ d - 1 }\)-正则二分图,不断递归到\(d = 0\).

Vizing定理

\(f ( G )\)表示将\(G\)边染色,使得有公共点的边的颜色不同,最少需要的颜色数量.

\(\delta ( G )\)表示\(G\)中的点的最大度数.

对于一般图,我们有:\(\delta ( G ) \leq f ( G ) \leq \delta ( G ) + 1\),对于二分图有\(\delta ( G ) = f ( G )\).

考虑这个的证明:我们每次将一对点\(( x , y )\)染色,考虑设它们当前没染色的最小的颜色是\(l_x , l_y ( l_x \leq l_y )\),如果相等就直接选,不然类似增广路更新.

二分图最大权匹配

假定二分图两边两两有边(不是的话可以补上\(- \infty\)的边),这样就一定存在完美匹配.

我们给每个点一个顶标权值\(v\),对于任意一条边\(e : a \leftrightarrow b\),它的权值是\(w_e\),我们要求\(v\)满足\(v_a + v_b \geq w_e\).

如果我们规定了一组顶标后,取出所有满足\(v_a + v_b = w_e\)的边后的图(称作相等子图)存在完美匹配,那这组完美匹配就一定是最大权匹配.

这是为啥呢?考虑此时的最大权其实也就是\(\sum v\),而由于\(v_a + v_b \geq w_e\),因此最大权匹配一定不会超过\(\sum v\).这就是一个可达的上界.

那么我们该怎么得到一个相等子图呢?考虑先构造一组合法的顶标,让左部端点取边的最大值,右部端点取\(0\),然后开始增广.

从左侧任意一个非匹配点出发,在相等子图上走增广路并增广.如果增广失败,我们将访问过的左部端点全部减去\(d\),右部端点全部加上\(d\),注意到此时匹配边一定不会变化,因为匹配边要么两个端点都没被访问过,要么都被访问过.而左端点被访问过,右端点没被访问过的边有可能加入相等子图,我们考虑取所有这种边的需要的差值的最小值并进行更新.但是直接这么做的复杂度有点高.

使用bfs优化,可以发现只会扩大\(O ( n^2 )\)次子图,每次复杂度\(O ( n )\),增广的复杂度类似,于是总复杂度\(O ( n^3 )\).

Example

Example1([ XVII Open Cup named after E.V. Pankratiev. Grand Prix of Japan(openstrain contest 1489) B]Point Pairs)

看到这种要求横坐标或纵坐标相同的题,有一个自然的想法是建立二分图,对于点\(( x , y )\),将二分图左边的\(x\)和右边的\(y\)连一条边.那么配对等价于要每次找两条相邻的边删掉.那么如何删掉呢?

首先发现的是,二分图不同的连通块可以分开处理,我们接下来只讨论一个连通块的情况.如果这个连通块有奇数条边,显然一定不行.而又可以发现,如果这个连通块有一个点度数仅为\(1\),那这条边如何删是确定的,我们可以把它和另一条边删掉,不难发现怎么删最后得到的新图仍然联通.而如果不存在度数为\(1\)的点呢?由于这是一个二分图,不存在奇环,所以我们可以找一个简单环删掉,之后显然也是一个连通块.我们到这里就可以发现问题了.运用数学归纳不难证明:只要一个连通块的边数是偶数就一定合法.

然后我们可以使用可撤销的分治解决这个问题.

网络流常见模型

最大流

最小费用最大流

最小割

最大流\(=\)最小割,证明显然.

最小割求方案。这个是简单的,我们删去所有流量\(0\)的边后从\(S\)开始bfs,找到所有\(S\)能到达的点,显然这些点(注意如果这个点一开始就不能到达\(T\),那它是废物,不用管它,下面只讨论它能到达\(T\)的情况)组成一个SCC(为啥呢?首先\(S\)能到达它们,其次由于是最小割,因此这个点一定到达不了\(T\),而原本是可以到达\(T\)的,假设这个点是\(x\),那么一定是原本存在一条\(S \rightarrow x \rightarrow T\)的路径被割掉了,也就是现在一定存在一条\(x \rightarrow S\)的路径)。最小割包含的边一定是这个集合和其它集合交界处的边。这是为啥呢?首先这些边一定组成了原图的一个割,其次,我们发现割不可能存在\(S\)所在SCC中,而割掉完全不连接\(S\)的边可以发现不如割其中一个点在\(S\)所在SCC的边。

Example1(luoguP4313 文理分科)

先把所有的满意值全部吃下,然后考虑放弃哪些.

对于每个人\(u\),将\(S\)向他连一条流量为\(art\)的边,它向\(T\)连一条为\(science\)的边,表示它自己要么放弃文科,要么放弃理科.

然后再对每个点建立一个虚点\(u '\),\(S\)\(u '\)连一条为\(sameart\)的边,\(u '\)向相邻的实点连\(\infty\)的边,表示要么放弃\(sameart\),要么那些点全都放弃理科.\(samescience\)是同理的.

从这也可以看出来,大部分最小割的题目其实就是将冲突的选项放到一条路径中,然后考虑放弃哪些,将这个限制用最小割表示出来.

Example2([HNOI2013]切糕)

也是显然的最小割,唯一难处理的地方在于相差\(\leq D\).

这个怎么做呢?建图后先每一竖轴都变成了一条链,我们在链之间加一些\(\infty\)的边,使得如果断开的两个点之差大于\(D\),那就可以通过这条边破坏最小割结构.

这题同样告诉我们:对于最小割题目中的限制条件,几乎都是需要考虑破坏最小割结构的(也有可能是用费用流限制).

Example3(uoj704)

二分图最小割计数.

先求出最小割,然后显然每个匹配的三条边一定会选择一条割掉.

不妨设\(a_i = 0 / 1 / 2\)表示第\(i\)对匹配割掉了哪一条边.

考虑每个非匹配边\(( u , v )\)对点权的限制:

  1. \(u\)在最大匹配\(i\)中,\(v\)不在.则\(a_i = 0\).

  2. \(v\)在最大匹配\(i\)中,\(u\)不在,则\(a_i = 2\).

  3. \(u\)在最大匹配\(i\)中,\(v\)在最大匹配\(j\)中,则\(a_i = 0\)\(a_j = 2\).

前两种是好处理的,考虑第三种:显然所有都选\(2\)或所有都选\(0\)是一种方案,更进一步地,我们将\(i \rightarrow j\),那么在一个强连通分量中的点一定都是\(2\)或都是\(0\).这样可以缩点,缩点后发现DAG上的每一条路径的染色都形如\(0 , 0 , 0 , \cdots , 0 , ( 1 ) , 2 , \cdots , 2 , 2 , 2\).

不妨折半搜索,按照拓扑排序,确定前一半哪些是\(0\),剩下是\(1 / 2\),那他们的后继必然全都是\(2\),这样后面的是\(2\)的集合一定是这个后继集合的超集,高维后缀和.

接下来只需要判断哪些位置可以选\(1\).相当于前驱全都是\(0\)并且后继全都是\(2\).

二分图匹配

二分图最小点覆盖

二分图最小点覆盖\(=\)二分图最小割.

问题在于如何求解方案.

我们从左侧的非匹配点开始dfs,走还有残留流量的路径.并将路径上所有的点全都打上标记.那么左侧所有的未标记点和右侧所有的标记点就是一组合法的方案.

这是为啥呢?首先我们注意到,左侧的非匹配点一定会被标记,右侧的非匹配点一定不会被标记.

为啥右侧的非匹配点一定不会被标记呢?因为如果被标记了,从左侧非匹配点到右侧非匹配点这条路径的起始边和终边就都是非匹配边,显然是一条增广路.

然后我们又注意到:对于一组匹配点,要么两者都被标记,要么两者都不被标记,因为一旦走到了右侧点,下一步必然走向左侧点.而如果走到了左侧点,也必然是从右侧点走过来的.

接下来我们讨论一下:

对于非匹配边,由于其必然连了一个左侧非匹配点,所以它的右边必然被选择了.

对于匹配边,不难发现它会被某个匹配点覆盖掉.

于是得证.

当然,上面的证明略显啰嗦.事实上我们这么考虑:

首先,我们按照套路,求出\(S\)所有能到达的点.根据二分图的性质,这个点的集合必然不包括\(T\).

然后我们取所有不在这个点集的左侧点和所有在这个点集的右侧点,这样所有的点被分为了四个部分,边也自然被分为了四个部分,讨论一下就知道这四个部分中有一个部分是不存在边的.于是得证.

二分图最大独立集

二分图最大独立集\(= n -\)二分图最小点覆盖.

Example1(CF1404E)

在两个可选矩形的边界处建立一个点,如果它被选了,那么说明这个矩形和上面那个矩形被一起覆盖了.然后注意到每有一个点被选,自然就多覆盖了一个矩形,显然一个矩形不可能又跟纵向的一起被覆盖又跟横向的一起被覆盖,在他俩之间连边跑最大独立集即可.

感觉还是类似于最小路径覆盖,将这种两个一起被覆盖就减少答案的东西转换成一整条流.

最大权闭合子图

原图的边流量设为\(+ \infty\),然后对于每个点\(x\),如果\(val_x > 0\),那么\(ans + = val_x\),然后将\(S \rightarrow x\),流量为\(val_x\);不然,\(x \rightarrow T\),流量为\(- val_x\),然后求出最小割\(w\),答案即为\(ans - w\).

Example1(luoguP4177)

只需要把中间的\(\infty\)边改为租用的代价即可.

最小路径覆盖(覆盖点)

将每个点\(x\)拆为两个点\(A_x\),\(B_x\),将\(S\)向所有\(A\)连边,\(B\)\(T\)连边,如果图中存在一条路径\(x \rightarrow y\),则连边\(A_x \rightarrow B_y\),流量均为\(1\),然后求出最大流\(w\),答案即为\(n - w\).

还有一个版本是可以重复走点,做一遍传递闭包就行.因为可重复相当于原图上的可跳点,这个版本又叫最小链覆盖.

Example1([网络流24题]魔术球问题)

枚举球数,不断在残联网络上加边并在新图跑最小路径覆盖即可.

最长反链

反链是一个点的集合,满足这个集合中的点两两不可达.

最长反链\(=\)可重复走点的最小点覆盖(最小链覆盖).

为啥呢?因为发现做完传递闭包后等价于新图的最大独立集.当然图是有性质的,观察一下可重复走点的最小点覆盖就可以发现等价于传递闭包后在二分图上求最大独立集.

Example1([CF1630F]Making It Bipartite)

首先显然的一点是,对于任意一个数字\(x\),这个序列中不能同时出现\(px\)\(pqx\),其中\(p , q\)都是大于等于二的正整数.这是显然的.如果我们把图改为有向图,由\(x \rightarrow px\),那么整个图就只会有两种点:只有出边的点和只有入边的点.

那么我们该怎么办呢?如果是只能出现\(x\)就不能出现\(px\),那这就是一个经典的最长反链问题.但多了一层,我们可以考虑类似分层图的思想:建立和原图完全一样的图\(G '\),并且将\(G\)中的\(x\)\(G '\)中的\(x '\)连有向边,然后跑最长反链.不难发现这样做是正确的.

平面图最小割

平面图最小割\(=\)对偶图最短路.

最小费用任意流

一般费用流,但是当当前增广路代价为正的就停止增广.

和最小费用最大流不一样,这玩意是可以增量的.

只需要考虑所有新的从源到汇的增广路以及增加过程出现的负环即可.

Example1(luoguP4694 [PA2013]Raper)

费用流模型很好建立,问题在于这个东西好像跑费用流有点慢.

那咋办呢?我们考虑到费用流是有凸性的.所以搭配一下wqs二分.

然后分一下三种情况讨论:

  1. 直接\(S \rightarrow T\)的负增广路,相当于选取最小的\(b\)和当前的\(a\)搭配.

  2. 有一条\(S \rightarrow a \rightarrow b \rightarrow a \rightarrow S\)的负环,相当于以当前的\(a\)代替前面的某个较大的\(a\).

  3. 有一条\(S \rightarrow a \rightarrow b \rightarrow T \rightarrow b \rightarrow a \rightarrow S\)的负环,注意到这个环必然没意义,因为不可能存在一条\(T \rightarrow S\)的负路径(不然反路径就是正的,而最小费用任意流不可能流正路径),所以这种情况不如直接选\(S \rightarrow T\)的路径.

讨论完拿堆模拟一下就行.

这引出了著名的模拟费用流算法.

负费用最小流

一般费用流,但是当增广当前增广路时费用变成正的就停止增广.

注意如果两条增广路代价相同选流量大的那条.

有负环的费用流

首先注意到:如果初始图没有负环,那无论后面怎么流都不可能出来负环.因为这意味着要么是一开始流了个正环,要么是一开始有负路径不走走正路径,都不太可能.

对于所有的负边\(u \rightarrow v\),我们建立两个新点\(S '\)\(T '\),我们先将这条负边反向权值取相反数并让答案加上\(f \times v\),之后令\(u \rightarrow T ' , S ' \rightarrow v\),跑\(S ' \rightarrow T '\)的费用流,这个时候再在残联网络上跑\(s \rightarrow t\)的费用流就是答案.

为啥会这样呢?

首先先证明正确性,这个东西相当于一开始跑了一下\(T ' \rightarrow u \rightarrow v \rightarrow S '\)的图.然后我们在跑\(S ' \rightarrow T '\)的时候一定是可以把上面的那个东西所从\(T ' \rightarrow S '\)的所有流量全都退回去,因为这是一个可以构造的上界.也就相当于我们跑了一个环流.而在费用流里跑环流显然是不会影响答案的.

好,那么为啥这么做就不会出现负环了呢?因为你不可能在跑\(S ' \rightarrow T '\)的时候跑个正环出来,自然不可能出现负环.

另外有一点是,一个点可能向\(S '\)\(T '\)连很多边,其实是可以拼掉的,因为这些边全都是零权边,而构造完后的图是非负权边.

模拟费用流

对于特殊的图,模拟EK费用流的增广过程并进行操作.

对着例题记吧.

Example1(luoguP4694 [PA2013]Raper)

散题

Example1([CQOI2014]危桥)

有一个朴素的想法是:我们直接按题意建图,然后\(S \rightarrow a_1 , b_1\),\(T \rightarrow a_2 , b_2\),跑最大流然后检查是否满流.

问题在于,这样有可能会出现\(a_1 \rightarrow b_2\)的流量,我们怎么避免这种情况呢?

做法是,我们交换\(b_1 , b_2\)并重复上面的过程,如果还是满流,我们声明一定合法.

为什么呢?我们注意到此时网络上的流量分为四种:\(a_1 \rightarrow a_2\),\(a_1 \rightarrow b_2\),\(b_1 \rightarrow a_2\),\(b_1 \rightarrow b_2\).不难发现\(a_1 \rightarrow b_2\)\(b_1 \rightarrow a_2\)的流量是相等的.

在第二次跑网络流时,我们不妨直接将\(a_1 \rightarrow a_2\)\(b_2 \rightarrow b_1\)的流量加入答案并将这两条路径反向.此时,如果\(a_1\)还是要走到\(b_1\),你发现第一轮的时候已经找到了一条\(b_1 \rightarrow a_2\)的路径,我们一定可以走这条来构造出只有\(a_1 \rightarrow a_2\)的路径,另一边同理.

图的计数问题

Prufer序列

我们可以将一颗有编号\(n\)个点(\(n \geq 2\))的无根树与一个长度为\(n - 2\)的Prufer序列建立双射.换句话说,一颗有编号\(n\)个节点的无根树总共有\(n^{ n - 2 }\)种(Cayley公式).

首先证明一个树可以对应到一个序列:每次选择一个度数为\(1\)的编号最小的点,把它连向的点加到序列中并把这个点删去,直到最后只剩下两个节点,这样我们就把一棵树对应到一个序列.不难发现每个点出现的次数是其度数\(- 1\).

然后证明一个序列可以还原成一棵树:

我们可以通过序列得知每个点的度数,每次找到度数中最小的那个点并把它与序列中的第一个元素连边并删去序列中的第一个元素,不断这么做显然可以还原树.

Example

一个\(n\)个点的图有\(k\)个连通块,现在加入\(k - 1\)条边使得图连通,求方案数.

\(s_i\)为第\(i\)个连通块的点数,\(d_i\)为第\(i\)个连通块所新连上的边数,如果我们令\(\binom{ n }{ c_1 , c_2 , . . . , c_m } = \cfrac{ n ! }{ c_1 ! c_2 ! . . . c_m ! } , \sum_{ i = 1 }^m c_i = n \\\),也即将\(n\)个位置拆分成\(m\)个集合,第\(i\)个集合有\(c_i\)个位置的方案数.

那我们所需要做的也就是枚举每个连通块所新连出的边数\(d_i\),于是答案即\(\sum_d [ \sum d_i = 2 k - 2 ] \binom{ k - 2 }{ d_1 - 1 , d_2 - 1 , . . . , d_k - 1 } \prod_{ i = 1 }^k s_i^{ d_i } \\\).

注意到我们有多项式定理:\(( x_1 + x_2 + . . . + x_m )^n = \sum_{ c } [ \sum c_i = n ] \binom{ n }{ c_1 , c_2 , . . . , c_m } \prod_{ i = 1 }^m x_i^{ c_i } \\\).

于是原式\(= n^{ k - 2 } \prod_{ i = 1 }^k s_i\).

Prufer序列的矩阵树定理理解

事实上,Prufer序列其实是可以拿矩阵树定理代替的(但是更麻烦一点).

我们先考虑证明Cayley公式:构造矩阵:

\[ \begin{bmatrix} - n + 1 & 1 & \cdots & 1 \\ 1 & - n + 1 & \cdots & 1 \\ \vdots & \vdots & \ddots & \vdots \\ 1 & 1 & \cdots & - n + 1 \end{bmatrix} \]

其主余子式为:

\[ \begin{bmatrix} - n + 1 & 1 & \cdots & 1 \\ 1 & - n + 1 & \cdots & 1 \\ \vdots & \vdots & \ddots & \vdots \\ 1 & 1 & \cdots & - n + 1 \end{bmatrix} \]

将所有行全部加到第一行:

\[ \begin{bmatrix} - 1 & - 1 & \cdots & - 1 \\ 1 & - n + 1 & \cdots & 1 \\ \vdots & \vdots & \ddots & \vdots \\ 1 & 1 & \cdots & - n + 1 \end{bmatrix} \]

全部加下来,然后就成了上三角矩阵,将对角线乘起来就是\(n^{ n - 2 }\).

连通块的结论是类似的.

LGV引理

\(G\)是一个有限的带权有向无环图,有点集\(V\)的一个大小为\(n\)的子集\(A = \{ a_1 , a_2 , . . . , a_n \}\)作为起点集合,一个大小为\(n\)的子集\(B = \{ b_1 , b_2 , . . . , b_n \}\)作为终点集合.

记边\(i\)的权值为\(w_i\).对于有向路径\(p\),记路径上所有边的边权的乘积为\(W ( p )\).记\(e ( u , v ) = \sum_{ p : u \rightarrow v } W ( p )\),即从\(u\)\(v\)的所有路径的边权乘积之和.

\(P : A \rightarrow B = ( p_1 , p_2 , . . . , p_n )\),\(p_i\)表示从\(a_i\)\(b_{ \sigma ( i ) }\)的一条路径,其中\(\sigma\)是一个排列,记\(sign ( \sigma )\)\(- 1\)以这个排列的逆序对数量为幂的值.又记\(\sigma ( P )\)\(P\)所对应终点的排列.若满足\(\forall 1 \leq i , j \leq n , i \ne j\),\(p_i\)\(p_j\)没有公共点,则记作\(P^u\),否则记作\(P^c\),若不作区分记作\(P\).记\(W_{ all } ( P ) = \prod_{ i = 1 }^n W ( p_i ) \\\),也就是所有路径的乘积.

设矩阵\(M\)满足\(M_{ i , j } = e ( a_i , b_j )\),那么有:

\[ \det M = \sum_{ P^u : A \rightarrow B } sign ( \sigma ( P^u ) ) W_{ all } ( P^u ) \]

证明:

根据行列式的定义,我们有:

$$ \[\begin{aligned} \det M & = \sum_{ \sigma } sign ( \sigma ) \prod_{ i = 1 }^n e ( a_i , b_{ \sigma ( i ) } ) \\ & = \sum_{ \sigma } sign ( \sigma ) \prod_{ i = 1 }^n \sum_{ p_i : a_i \rightarrow b_{ \sigma ( i ) } } w ( p_i ) \\ \end{aligned}\]

$$

考虑后面那部分,\(\prod_{ i = 1 }^n \sum_{ p_i : a_i \rightarrow b_{ \sigma ( i ) } } w ( p_i ) \\\)形如一个卷积的形式,所以这个式子等价于所有对应排列为\(\sigma\)\(P\)\(w ( P )\),所以有:

\[ \begin{aligned} \det M & = \sum_{ \sigma } sign ( \sigma ) ( \sum_{ P : \{ a_1 , . . . , a_n \} \rightarrow \{ b_{ \sigma ( 1 ) } , . . . , b_{ \sigma ( n ) } \} } w ( P ) ) \\ & = \sum_{ P : A \rightarrow B } sign ( \sigma ( P ) ) w ( P ) \\ & = \sum_{ P^u : A \rightarrow B } sign ( \sigma ( P^u ) ) w ( P^u ) + \sum_{ P^c : A \rightarrow B } sign ( \sigma ( P^c ) ) w ( P^c ) \end{aligned} \]

接下来只需证明\(\sum_{ P^c : A \rightarrow B } sign ( \sigma ( P^c ) ) w ( P^c ) = 0 \\\)即可.

设所有\(P^c\)组成的集合为\(E\),考虑构造一个映射\(f : E \rightarrow E\)满足如下条件:

  1. \(f ( P^c ) \ne P^c\).

  2. \(f ( f ( P^c ) ) = P^c\).

  3. \(w ( f ( P^c ) ) = w ( P^c )\).

  4. \(sign ( f ( P^c ) ) = - sign ( P^c )\).

上面的结论即得证.

我们不妨考虑\(P^c\)中的第一对相交的路径\(p_i\)\(p_j\),并交换它们的终点.显然满足上述条件,于是结论得证.

Example

现在有\(n\)个点,第\(i\)个点位于\(( a_i , 1 )\),需要走到\(( b_i , n )\).一个在\(( x , y )\)的点可以走向\(( x + 1 , y )\)\(( x , y + 1 )\).求路径不相交的方案数.

路径不相交,则终点排列只有可能是\(\{ 1 , 2 , . . . , n \}\),直接使用LGV引理即可.

矩阵树定理

无向图情况

定义无向图的度数矩阵\(D ( G )\)为:\(D ( G )_{ i , j } = \begin{cases}0 & i \ne j \\ \deg_{ i } & i = j\end{cases}\).

\(w ( i , j )\)\(i\)\(j\)之间直接相连的无向边个数,定义无向图的邻接矩阵\(A ( G )_{ i , j } = \begin{cases}0 & i = j \\ w ( i , j ) & i \ne j\end{cases}\)

定义无向图的基尔霍夫矩阵(又称拉普拉斯矩阵)\(L ( G ) = D ( G ) - A ( G )\).

\(t ( G )\)为图\(G\)的生成树个数,那么有:\(t ( G )\)等于基尔霍夫矩阵任意一个主余子式.

引理:无向图的基尔霍夫矩阵的任意一个代数余子式都相等.

证明:考虑删去第\(i\)行,设剩下的矩阵为\(A = [ \vec{ r }_1 , \vec{ r }_2 , . . . , \vec{ r }_n ]\),根据基尔霍夫矩阵的性质,不难发现\(\sum{ \vec{ r }_i } = \vec{ 0 }\).\(\forall 1 \leq j < k \leq n\),如果我们删去第\(j\)列,考虑将除了第\(k\)列的其它列全部加到第\(k\)列,于是得到矩阵\([ \vec{ r }_1 , . . . , \vec{ r }_{ j - 1 } , \vec{ r }_{ j + 1 } , . . . , \vec{ r }_{ k - 1 } , - \vec{ r }_j , \vec{ r }_{ k + 1 } , . . . , \vec{ r }_n ]\).我们接下来一路将第\(k\)列交换到第\(j + 1\)列之前并取反,我们就得到了删去第\(k\)列的矩阵,于是有\(M_{ i , j } = ( - 1 )^{ 1 + ( k - 1 ) - ( j + 1 ) + 1 } M_{ i , k }\),也就是\(C_{ i , j } = C_{ i , k }\),同理可证明\(C_{ j , i } = C_{ k , i }\).

接下来,用\(T\)表示生成树的边的集合,设\(w ( T ) = \prod_{ e \in T } w ( e )\),我们只需证明\(C_{ 1 , 1 } = \sum w ( T )\).

定义\(\zeta ( e , u ) = v , e = \{ u , v \}\),考虑构造一个\(n \times m\)的矩阵\(A\)满足\(A_{ i , j } = \begin{cases}1 & i \in e_j \land i < \zeta ( e_j , i ) \\ - 1 & i \in e_j \land i > \zeta ( e_j , i ) \\ 0 & other\end{cases} \\\).

注意到:

$$ \[\begin{aligned} AA^T ( i , j ) & = \sum_{ k = 1 }^m A ( i , k ) A^T ( k , j ) \\ & = \sum_{ k = 1 }^m A ( i , k ) A ( j , k ) \\ \end{aligned}\]

$$

\(i = j\)时,不难发现\(AA^T ( i , j ) = \sum_{ k = 1 }^m [ i \in e_k ] = \deg_i\).不然,注意到显然为\(- \sum_{ k = 1 }^m [ i \in e_k ] [ j \in e_k ]\).也就是说,\(AA^T = L\).

定义\(A\)删去第一行后得到的矩阵为\(B\),则\(BB^T = M_{ 1 , 1 }\).此时我们带入Cauchy-Binet公式,得到:

\[ \begin{aligned} M_{ 1 , 1 } & = \sum_{ | S | = n - 1 , S \subseteq \{ 1 , 2 , . . . , m \} } \det ( B [ S ] B^T [ S ] ) \\ & = \sum_{ | S | = n - 1 , S \subseteq \{ 1 , 2 , . . . , m \} } \det ( B [ S ] )^2 \end{aligned} \]

接下来我们需要证明:如果\(S\)集合构成了一棵生成树,那么\(\det B [ S ] = \pm 1\).反之,\(\det B [ S ] = 0\).

如果集合没有构成一个生成树,则至少存在一个简单环.如果有某个点是孤立点那么答案肯定是\(0\),因此只需考虑每个点都与边连通的情况即可.

考虑这种情况下,如果有两条边\(( u_1 , u_2 )\)\(( u_2 , u_3 )\)被选上了,那么我们可以通过列变换将它们改为\(( u_1 , u_2 )\)\(( u_1 , u_3 )\).这样不断进行下去,如果存在环,一定会出现重边选择的情况,这个时候行列式的值为\(0\).如果不存在环,那么我们可以通过这个操作得到一个菊花图.所以行列式为\(\pm 1\).

所以定理得证.

Example([省选联考 2020 A 卷]作业题)

给定一个图,设第\(i\)条边的权值为\(w_i\),求所有生成树的\(\gcd ( w_1 , . . . , w_{ n - 1 } ) \sum_{ i = 1 }^{ n - 1 } w_i\)之和.

首先前面的\(\gcd\)可以使用\(\varphi * I = id\)来处理.于是剩下的问题在于我们如何将一个生成树的边的和代替乘积作为贡献来求和.

不妨进行扩域,令\(j^2 = 0 , j \ne 0\),这样我们可以类比复数来将每个数写作\(a + bj\)的模式.考虑将每条边的边权改为\(w_i j + 1\)并定义新域的四则运算,取最后得到的数\(a + bj\)\(b\)作为答案即可.

另外,注意到这样做复杂度\(wn^3\),很难通过.考虑每次只当边数大于等于\(n - 1\)的时候再跑行列式.不妨设\(\sigma ( n )\)\(n\)的因数个数,考虑如果因数很分散,那肯定复杂度很低,不然,我们有复杂度\(O ( n^3 \cfrac{ \sum_{ i = 1 }^m \sigma ( w_i ) }{ n - 1 } )\),可以通过.

Example([北京省选集训2019]生成树计数)

给定一个图,设第\(i\)条边的权值为\(w_i\),求所有生成树的\(( \sum_{ i = 1 }^{ n - 1 } w_i )^k\)之和.

考虑将第\(e\)条边边权改为\(\sum_{ i = 0 }^k \cfrac{ w_e^i x^i }{ i ! }\).根据多项式定理,显然最后取\([ x^k ]\)并乘以\(k !\)即可.

有向图情况

定义有向图的出度矩阵\(D^{ out } ( G ) = \begin{cases}0 & i \ne j \\ \deg^{ out }_i & i = j\end{cases}\),类似地可以定义入度矩阵\(D^{ in } ( G )\).

\(cnte ( i , j )\)为从\(i\)直接连向\(j\)的有向边个数,定义有向图的邻接矩阵\(A ( G )_{ i , j } = \begin{cases}0 & i = j \\ cnte ( i , j ) & i \ne j\end{cases}\)

定义有向图的出度基尔霍夫矩阵\(L^{ out } ( G ) = D^{ out } ( G ) - A ( G )\),同理可以定义其入度基尔霍夫矩阵\(L^{ in } ( G )\).

\(t^{ root } ( r , G )\)为图\(G\)\(r\)为根的根向生成树(\(r\)为根时,所有边都从儿子指向父亲)个数,同理可以定义叶向生成树个数\(t^{ leaf } ( r , G )\).

\(M^{ out }_{ r , r }\)\(L^{ out }\)的主余子式,有\(t^{ root } ( r , G ) = M^{ out }_{ r , r }\).叶向同理.

下面只简单提到根向生成树的证明,叶向同理.

类似于无向图,我们考虑构造\(n \times m\)矩阵\(A\)\(( n - 1 ) \times m\)矩阵\(B\):

\[ \begin{aligned} A_{ i , j } & = \begin{cases} 1 & e_j ' s \ head \ is \ i \\ - 1 & e_j ' s \ tail \ is \ i \\ 0 & other \end{cases} \\ B_{ i , j } & = \begin{cases} 1 & e_j ' s \ head \ is \ i \\ 0 & other \end{cases} \end{aligned} \]

剩下的部分与无向图类似.

BEST定理

\(ec ( G )\)为有向图\(G\)的欧拉回路个数,若其存在欧拉回路,则:

\[ ec ( G ) = t^{ root } ( G , x ) \prod_{ i = 1 }^n ( \deg_i - 1 ) ! \]

其中\(\deg_i = \deg^{ in }_i = \deg_i^{ out }\).

考虑如果勒令以\(x\)为起点,我们保留除了\(x\)以外每个点的最后经过的出边,最后一定会形成一棵根向树.而其他点可以随便选(由于我们勒令了每个点存在一个出边,所以不可能走到死胡同),这样的答案是\(t^{ root } ( G , x ) \deg_x \prod_{ i = 1 }^n ( \deg_i - 1 ) !\).

但是如果没有规定起点,考虑循环重构,在我们选择不同的边当作初始边时,只需循环一下总体的顺序,就可以得到以另一条边为初始边的另一个图,所以答案要比规定起点的答案多除一个\(\deg_x\).

格路计数问题

定义
  1. 在平面直角坐标系中,横坐标和纵坐标都是整数的点称为格点,平面格路是指从一个格点到另一格点只走格点的路,格路的长度是指其所走的路的步数.

  2. 对于一条从\(( 0 , 0 )\)\(( n , m )\)的格路,若其只使用了上步\(U = ( 0 , 1 )\),右步\(L = ( 1 , 0 )\),则我们称其为\(( n , m )\)自由路.

  3. \(\mathcal{ F } ( n , m )\)\(( n , m )\)自由路的集合,\(F ( n , m ) = \# \mathcal{ F } ( n , m )\)\(( n , m )\)自由路数量,即\(\mathcal{ F } ( n , m )\)的元素个数,显然\(F ( n , m ) = \binom{ n + m }{ n } \\\).

  4. 对于一条从\(( 0 , 0 )\)\(( n , m )\)的自由路,若其始终不经过对角线\(y = \cfrac{ m }{ n } x\)下方,则我们称之为\(( n , m ) - Dyck\)路.

  5. \(\mathcal{ D } ( n , m )\)\(( n , m )\)自由路的集合,\(D ( n , m ) = \# \mathcal{ D } ( n , m )\)\(( n , m )\)自由路数量,即\(\mathcal{ D } ( n , m )\)的元素个数.

  6. 对于从\(( 0 , 0 )\)\(( n , m )\)\(2\)条格路\(P , Q\),其中\(P = u_1 u_2 . . . u_{ n + m } , Q = v_1 v_2 . . . v_{ n + m } ( u_i , v_i \in{ L , U } , i = 1 , 2 , . . . , n + m )\).若 \(\exists i , u_{ i + 1 } . . . u_{ n + m } u_1 . . . u_i = v_1 v_2 . . . v_{ n + m }\),则我们称格路\(P , Q\)等价.将\(P\)的等价格路全集记为\([ P ]\).

  7. 对于任意格路\(P\),记\(P_k = u_{ k + 1 } . . . u_{ n + m } u_1 . . . u_k\),则\([ P ] = \{ P_k | k = 1 , 2 , 3 , · · · , n + m \}\).定义\(P\)的周期为使得\(P = P_k\)的最小数\(k\),用\(period ( P )\)表示,则显然有\(\# [ P ] = period ( P )\).

定理

散模型

多叉堆计数

有一棵树,要求给每个点一个\([ 1 , n ]\)的权值且不同的点权值不同,满足父亲的权值小于儿子的权值,求方案数.

不妨设以\(u\)为根节点的子树方案数为\(f_u\),\(u\)的儿子是\(v_1 , . . . , v_k\),注意到\(f_u = \binom{ siz_u - 1 }{ siz_{ v_1 } , siz_{ v_2 } , . . . , siz_{ v_k } } \prod f_{ v_i } = ( siz_u - 1 ) ! \prod_{ u \rightarrow v } \frac{ f_{ v } }{ siz_v ! } \\\).

那么考虑根的答案\(f_1\),考虑不断将\(f_1\)中含有的其它\(f_u\)向下展开,自然的,除了\(1\)号点外,每个点对答案都贡献了一个\(\frac{ 1 }{ siz }\),而根的贡献是\(( n - 1 ) !\).

也就是说,\(ans = ( n - 1 ) ! \prod_{ u = 2 }^n \frac{ 1 }{ siz_u } = n ! \prod_{ u = 1 }^n \frac{ 1 }{ siz_u } \\\).

Example1([AGC060C] Large Heap)

如果没有限制,就是一个简单的多叉堆计数.

而有了限制怎么做呢?我们考虑把\(u\)\(1\)的路径和\(v\)\(1\)的路径归并起来,会得到一条长链.我们只要确定了长链上的元素,通过组合数以及二叉堆计数,自然可以算出不在长链上的元素的答案.而对于长链上的元素,我们可以直接设计一个\(O ( n^2 )\)的dp即可.

Example2([HEOI2013]SAO)

显然给出的是一张树形图,然后每条边有一个限制表示这条边所连接的两个点哪个更大.现在给每个点一个\([ 1 , n ]\)的权值且不同的点权值不同求方案数.

我们随便找一个点然后当成有根树做,然后如果只有父亲小于儿子的边就是简单的多叉堆计数.不然,我们可以做一个简单容斥.这样问题就又转化回多叉堆计数,容斥部分写一个树形dp就好.

补一下,这个树形dp没有那么简单.首先你注意到多叉堆计数是跟子树大小有关系的,所以你不能简单地设计\(f_{ i , j }\)表示\(i\)子树内选中了\(j\)条边的代价,你必须加一维来处理子树大小,也就是设\(f_{ u , siz , cnt }\)表示\(u\)所在连通块大小为\(siz\),子树中总共选择了\(cnt\)条边的代价.

但是注意到这题的容斥系数是\(( - 1 )^k\),其中\(k\)是选择的儿子小于父亲的数量,然后其它的要求儿子大于父亲的边随便选.你发现你选中了一条边,无非是对答案乘以一个\(- 1\),这是没有必要记录的.因此直接以\(f_{ u , siz }\)的状态转移就行.

这个故事告诉我们别什么容斥都最后算,你能在做的过程中把\(- 1\)乘上去就别惦记最后统一求和了.

三元环计数

我们对原图建立一个新的有向图,在新图中,如果\(u \rightarrow v\),则在原图中\(\deg u < \deg v\)\(\deg u = \deg v \land u < v\).根据自然根号,每个点的出度不会超过\(O ( \sqrt{ n } )\).

接下来枚举原图的一条边\(u \leftrightarrow v\),只要在新的图中找到\(w\)满足\(u \rightarrow v , u \rightarrow w , v \rightarrow w\)即可.打tag做一做,复杂度\(O ( n \sqrt{ n } )\).

四元环计数

仍然类似三元环计数那样建立新图.

考虑原图中的两条边\(u \leftrightarrow v\)\(u \leftrightarrow v '\),我们考虑对四元环中度数最大的那个点\(w\)计数,对于这个\(w\)统计一个tag表示形如\(u \leftrightarrow v \rightarrow w\)的数量,每次改变\(u\)的时候清空一下全图tag.

有标号DAG计数

即:

$$ \[\begin{aligned} f_n & = \sum_{ k = 1 }^n \binom{ n }{ k } ( - 1 )^{ k - 1 } 2^{ k ( n - k ) } f_{ n - k } \\ \end{aligned}\]

$$

证明见反演与容斥-子集反演-Example2.

Example1(qoj5749)

注意到一个环内部不能有任何边,那么其实也就是有标号DAG计数,只不过要乘上一个斯特林数.不妨设\(g_{ n , m }\)\(n\)个点\(m\)条边的答案,再设\(G_n\)为其生成函数.事实上,我们自然有:

$$ \[\begin{aligned} G_n & = \sum_{ k = 1 } \binom{ n }{ k } \sum_{ j = 1 }^k{ k \brack j } ( - 1 )^{ j - 1 } ( 1 + z )^{ k ( n - k ) } G_{ n - k } \\ & = \sum_{ k = 1 } \binom{ n }{ k } ( 1 + z )^{ k ( n - k ) } G_{ n - k } \sum_{ j = 1 }^k{ k \brack j } ( - 1 )^{ j - 1 } \\ \end{aligned}\]

$$

逆用斯特林公式,如果\(n \geq 1\):

\[ \sum_{ i }{ n \brack i } ( - 1 )^{ i - 1 } = ( - 1 ) \times ( - 1 )^{ \overline{ n } } = [ n = 1 ] \]

注意到\(G_1 = 1\),于是:

\[ \begin{aligned} G_n & = n ( 1 + z )^{ n - 1 } G_{ n - 1 } \\ & = n ! ( 1 + z )^{ \frac{ n ( n - 1 ) }{ 2 } } \\ [ z^m ] G_n & = n ! \binom{ \frac{ n ( n - 1 ) }{ 2 } }{ m } \end{aligned} \]

反演

假设有两个函数\(f\)\(g\)满足:\(f ( n ) = \sum_{ k } a_{ n , k } g ( k )\),已知f求g的过程称为反演.

一般情况下,求反演只能高斯消元,但是有一些形式的反演有巧妙解法.

子集反演

一般形式:

\[ \begin{aligned} f ( S ) & = \sum_{ T \subseteq S } g ( T ) \Leftrightarrow g ( S ) = \sum_{ T \subseteq S } ( - 1 )^{ | S | - | T | } f ( T ) \\ f ( S ) & = \sum_{ S \subseteq T \subseteq U } g ( T ) \Leftrightarrow g ( S ) = \sum_{ S \subseteq T \subseteq U } ( - 1 )^{ | T | - | S | } f ( T ) \end{aligned} \]

证明:

\[ \begin{aligned} g ( S ) & = \sum_{ T \subseteq S } ( - 1 )^{ | S | - | T | } f ( T ) \\ & = ( - 1 )^{ | S | } \sum_{ T \subseteq S } ( - 1 )^{ | T | } \sum_{ P \subseteq T } g ( P ) \\ & = ( - 1 )^{ | S | } \sum_{ P \subseteq S } g ( P ) \sum_{ T \subseteq S / P } ( - 1 )^{ | T | + | P | } \\ & = ( - 1 )^{ | S | } \sum_{ P \subseteq S } g ( P ) ( - 1 )^{ | P | } \sum_{ T \subseteq S / P } ( - 1 )^{ | T | } \\ & = ( - 1 )^{ | S | } \sum_{ P \subseteq S } g ( P ) [ S = P ] ( - 1 )^{ | P | } \\ & = g ( S ) \end{aligned} \]

不难发现,这个子集反演也就相当于在做高维前后缀和.

Example1(2019zrpzt七连day1D)

根据子集反演,设\(cnt_S\)为集合为\(S\)的数量,然后设\(f_S = \sum_{ S ' \subseteq S } cnt_{ S ' }\),有:\(ans = \sum_{ S } 2^{ f_S } ( - 1 )^{ n - | S | }\).

做一遍高维前缀和就好,复杂度\(O ( n 2^n )\),应该也可以用分治FMT无脑做到\(O ( n^2 2^n )\).

Example2(有标号DAG计数)

\(f_{ i , j }\)表示\(i\)个点,其中有\(j\)个点的入度数为\(0\)的方案数.(等一下,为撒子想到要记度数为\(0\)的点咧?因为你要一层一层转移,而在DAG中一层一层的就是零度点.而且说到底,你注意到有编号这个事实其实是很烦的,因为考虑如果一个一个点放上去,就有可能出现放的地方是等价的.而这么一层一层是绝对不会出现等价点的问题的.再说的仔细一点,如果我们把位置空着,然后选出一些放上来,是会出现等价点的问题的.但如果我们先选出来,然后再把边连上就不会.于是我们必须要枚举一些点然后再连到上面去)

这样我们每次枚举删去这\(j\)个点后,还剩下\(k\)个零度点.于是自然有:

\[ f_{ i , j } = \binom{ i }{ j } \sum_{ k = 1 }^{ i - j } ( 2^j - 1 )^k 2^{ j ( i - j - k ) } f_{ i - j , k } \]

等一下咧,这复杂度\(O ( n^3 )\)了,这咋办啊?

好像转移优化不太了,因为\(k\)很难省去(在指数上).但我们注意到我们定义的时候说:\(0\)度点的数量恰好为\(k\),这个条件好像太强了果然OI就是发现限制太强了就弱一点,发现太弱了就强一点,所以我们想办法把它放弱一点.

一个经典的方法是:我们把定义改为至少\(k\)个零度点.但是这样转移好像还是不太行:零度点的情况太多了.那我们不妨考虑容斥,因为推导容斥的过程中,永远不害怕情况太多:我们直接考虑所有情况的集合.当然能不能推到最后是另一回事.

我们设\(f ( n , S )\)表示\(n\)个点,其中只有\(S\)中的点的入度为\(0\);类似定义\(g ( n , S )\)表示\(n\)个点,至少\(S\)中的点的入度为\(0\).显然我们所求也就是\(g ( n , \emptyset )\),注意到:

\[ \begin{aligned} g ( n , S ) & = 2^{ | S | ( n - | S | ) } g ( n - | S | , \emptyset ) \\ g ( n , S ) & = \sum_{ S \subseteq T } f ( n , T ) \end{aligned} \]

对第二个式子用子集反演,有:

\[ f ( n , S ) = \sum_{ S \subseteq T } ( - 1 )^{ | T | - | S | } g ( n , T ) \]

接下来使用反复带入大法:

$$ \[\begin{aligned} g ( n , \emptyset ) & = \sum_{ \emptyset \ne T } f ( n , T ) \\ & = \sum_{ T \subseteq S } ( - 1 )^{ | S | - | T | } g ( n , S ) \\ & = \sum_{ T \subseteq S } ( - 1 )^{ | S | - | T | } 2^{ | S | ( n - | S | ) } g ( n - | S | , \emptyset ) \\ & = \sum_{ m = 1 }^n \sum_{ | T | = m } \sum_{ T \subseteq S } ( - 1 )^{ | S | - | T | } 2^{ | S | ( n - | S | ) } g ( n - | S | , \emptyset ) \\ & = \sum_{ m = 1 }^n \binom{ n }{ m } \sum_{ k = m }^n \binom{ n - m }{ k - m } ( - 1 )^{ k - m } 2^{ k ( n - k ) } g ( n - k , \emptyset ) \\ \end{aligned}\]

$$

可以发现:我们在推式子的过程中,将和集合本身有关的性质转化为了只和集合大小有关的式子,于是就简化了大量运算.

接下来我们继续化简:

$$ \[\begin{aligned} & \sum_{ m = 1 }^n \binom{ n }{ m } \sum_{ k = m }^n \binom{ n - m }{ k - m } ( - 1 )^{ k - m } 2^{ k ( n - k ) } g ( n - k , \emptyset ) \\ = & \sum_{ k = 1 }^n \sum_{ m = 1 }^k \binom{ n }{ m } \binom{ n - m }{ k - m } ( - 1 )^{ k - m } 2^{ k ( n - k ) } g ( n - k , \emptyset ) \\ = & \sum_{ k = 1 }^n \binom{ n }{ k } 2^{ k ( n - k ) } g ( n - k , \emptyset ) \sum_{ m = 1 }^k \binom{ k }{ m } ( - 1 )^{ k - m } \\ = & \sum_{ k = 1 }^n \binom{ n }{ k } 2^{ k ( n - k ) } g ( n - k , \emptyset ) ( ( 1 - 1 )^k - ( - 1 )^k ) \\ = & \sum_{ k = 1 }^n \binom{ n }{ k } 2^{ k ( n - k ) } g ( n - k , \emptyset ) ( - 1 )^{ k - 1 } \\ \end{aligned}\]

$$

注意到复杂度已经降到\(O ( n^2 )\)了.

上面是从集合的角度一步步分析得到的.但如果你直接从容斥的角度考虑,忽略掉那个\(( - 1 )^{ k - 1 }\),把它当成一个可以数学归纳出来的容斥系数,那么这个式子会得到一个很简单的理解方式:

$$ \[\begin{aligned} f_n & = \sum_{ k = 1 }^n \binom{ n }{ k } ( - 1 )^{ k - 1 } 2^{ k ( n - k ) } f_{ n - k } \\ \end{aligned}\]

$$

也就是直接设,然后钦定其有至少\(j\)个,然后配容斥系数.

二项式反演

一般形式:

$$ \[\begin{aligned} f ( n ) & = \sum_{ k = 0 }^n C_n^k g ( k ) \Leftrightarrow g ( n ) = \sum_{ k = 0 }^n ( - 1 )^{ n - k } C_n^k f ( k ) \\ f ( n ) & = \sum_{ k = 0 }^n ( - 1 )^k \binom{ n }{ k } g ( k ) \Leftrightarrow g ( n ) = \sum_{ k = 0 }^n ( - 1 )^k \binom{ n }{ k } f ( k ) \\ f ( n ) & = \sum_{ k = n }^N C_k^n g ( k ) \Leftrightarrow g ( n ) = \sum_{ k = n }^N ( - 1 )^{ k - n } C_k^n f ( k ) \\ f ( n ) & = \sum_{ k = n }^N ( - 1 )^k \binom{ k }{ n } g ( k ) \Leftrightarrow g ( n ) = \sum_{ k = n }^N ( - 1 )^k \binom{ k }{ n } f ( k ) \\ \end{aligned}\]

$$

显然以\(( - 1 )^n g ( n )\)代替\(g ( n )\)即可从第一个式子推导第二个式子,下面证明第一个式子:

$$ \[\begin{aligned} g ( n ) & = \sum_{ k = 0 }^n ( - 1 )^{ n - k } C_n^k f ( k ) \\ & = \sum_{ m = 0 }^n \sum_{ k = 0 }^{ n - m } ( - 1 )^k C_{ n - m }^k C_n^m g ( m ) \\ & = \sum_{ k = 0 }^n ( - 1 )^k C_n^k \sum_{ m = 0 }^{ n - k } C_{ n - k }^m g ( m ) \\ & = \sum_{ k = 0 }^n ( - 1 )^k C_n^k f ( n - k ) \\ & = \sum_{ k = 0 }^n ( - 1 )^{ n - k } C_n^k f ( k ) \\ \end{aligned}\]

$$

Example1(错排问题)

\(n\)个有编号的人站成一排,求他们都没有站到自己编号对应位置的方案数.

\(f ( n )\)\(n\)个人随便站的方案数,\(g ( n )\)\(n\)个人都站错的方案数.

如果知道\(g\)的表达式,我们可以通过枚举有多少人站错位置来得到\(f\),即:\(f ( n ) = \sum_{ k = 0 }^n C_n^k g ( k )\).

显然就是一个二项式反演,\(g ( n ) = \sum_{ k = 0 }^n ( - 1 )^{ n - k } C_n^k f ( k ) = \sum_{ k = 0 }^n ( - 1 )^{ n - k } C_n^k k !\).

值得一提的是,我们再观察一下最后得到的错排公式并进行一定的化简,可以得到:\(g ( n ) = n ! \sum_{ 0 \leq k \leq n } \cfrac{ ( - 1 )^k }{ k ! } \\\).

不难发现\(n !\)的后面形如\(e^{ - 1 }\)的泰勒展开,我们考虑直接将泰勒展开的公式带入,可以得到:

\[ \begin{aligned} g ( n ) & = \cfrac{ n ! }{ e } - n ! \sum_{ k > n } \cfrac{ ( - 1 )^k }{ k ! } \\ & = \cfrac{ n ! }{ e } - \cfrac{ ( - 1 )^{ n + 1 } }{ n + 1 } \sum_{ 0 \leq k } ( - 1 )^k \cfrac{ ( n + 1 ) ! }{ ( k + n + 1 ) ! } \end{aligned} \]

用一些我不会的方法分析误差,会发现后面的项所能带来的误差很小,于是有\(g ( n ) = \lfloor \cfrac{ n ! }{ e } + \cfrac{ 1 }{ 2 } \rfloor + [ n = 0 ]\).

另外,观察\(g\)关于\(f\)的表达式,不难求出\(g\)的递推式:\(g ( n ) = ng ( n - 1 ) + ( - 1 )^n\).

下面证明\(g_n = ( n - 1 ) ( g_{ n - 1 } + g_{ n - 2 } )\),事实上,右边等于:

$$ \[\begin{aligned} & ( n - 1 ) ( g_{ n - 1 } + g_{ n - 2 } ) \\ = & ( - 1 )^{ n - 1 } ( n - 1 ) + ( n - 1 ) \sum_{ k = 0 }^{ n - 2 } ( ( n - 1 ) ! \frac{ ( - 1 )^k }{ k ! } + ( n - 2 ) ! \frac{ ( - 1 )^k }{ k ! } ) \\ = & n ! \sum_{ k = 0 }^{ n - 2 } \frac{ ( - 1 )^k }{ k ! } - ( n - 1 ) ( - 1 )^n \\ \end{aligned}\]

$$

Example2(CF1750G)

如果没有字典序限制就是经典的二项式反演:考虑能被分为\(k\)段,说明有\(n - k\)个位置和前一个位置是大一的关系.我们钦定这些位置即可.

而有字典序限制也很经典,枚举LCP,枚举下一个位置,这个时候值域被分为若干个区间,假设剩了\(x\)个数字,\(y\)个区间,那么钦定\(j\)对的方案是\(\binom{ x - y }{ j } ( x - j ) !\).然后要乘上前面已经有了的,也就是乘上形如\(( 1 + z )^k\).这样复杂度\(O ( n^4 )\).

这种问题通常LCP后的下一个位置都可以规避,这里你发现不同的取值只会让后面的\(x , y , k\)\(O ( 1 )\)种不同的取值,因此不用枚举.这样就是\(O ( n^3 )\).但是那个多项式乘法也可以规避,考虑最后的答案形如\(\sum ( 1 + z )^k P_k ( x )\),我们考虑写成\(P_{ n - 1 } ( z ) + = ( 1 + z ) P_n ( z )\),然后不断这么做,就只需要\(O ( n^2 )\).

Example3(CF1228E)

不妨设至多有\(i\)\(j\)列最小值为\(1\)的答案是\(f_{ i , j }\),恰好有\(i\)\(j\)列最小值为\(1\)的答案是\(g_{ i , j }\),注意到:

\[ f_{ n , m } = \sum_{ i = 0 }^n \binom{ n }{ i } \sum_{ j = 0 }^m \binom{ m }{ j } g_{ i , j } \]

\(h_{ n , m } = \sum_{ j = 0 }^m \binom{ m }{ j } g_{ n , j } \\\),则\(f_{ n , m } = \sum_{ i = 0 }^n \binom{ n }{ i } h_{ i , m } \\\),而\(f_{ n , m } = k^{ nm } ( k - 1 )^{ NM - nm }\).做两次二项式反演得到\(g\).

写到这里发现一个问题(其实是我发现问题后把上面原本写错的给改了),为啥\(f_{ n , m } \ne \binom{ N }{ n } \binom{ M }{ m } k^{ nm } ( k - 1 )^{ NM - nm }\)呢?我们写成子集反演形式看看:

$$ \[\begin{aligned} f_{ S , T } & = \sum_{ s \subseteq S } \sum_{ t \subseteq T } g_{ s , t } \\ f_{ S , T } & = \sum_{ s \subseteq S } h_{ s , T } \\ h_{ S , T } & = \sum_{ t \subseteq T } g_{ S , t } \\ \end{aligned}\]

$$

做子集反演:

\[ \begin{aligned} f_{ S , T } & = k^{ | S | \times | T | } ( k - 1 )^{ NM - | S | | T | } \\ h_{ s , T } & = \sum_{ S \subseteq s } ( - 1 )^{ | s | - | S | } f_{ S , T } \\ g_{ s , t } & = \sum_{ T \subseteq t } ( - 1 )^{ | t | - | T | } h_{ s , T } \end{aligned} \]

把集合改成集合大小就可以发现问题所在:

换句话说,\(g_{ n , m }\)本身就包含了所有\(| S | = n , | T | = m\)的情况的和,并且在组合数\(\binom{ m }{ j }\)那里就找到了唯一确定的\(f_{ s , t }\),因此\(f_{ n , m }\)是唯一确定的.这意味着这里\(f\)\(n , m\)并非集合之和,而是已经确定的集合的大小.

啥?这和我平常接触的二项式反演不一样啊?不说别的,第四题(BZOJ2839)的式子是这样的:

\[ \begin{aligned} f_i & = 2^{ 2^{ n - i } } \binom{ n }{ i } \\ f_k & = \sum_{ i = k }^n \binom{ i }{ k } g_i \\ g_k & = \sum_{ i = k }^n ( - 1 )^{ i - k } \binom{ i }{ k } f_i \end{aligned} \]

冷静一下,二项式反演的公式肯定没错,那也就一定是下面这几句出现了问题:

\[ f_{ n , m } = \sum_{ i = 0 }^n \binom{ n }{ i } \sum_{ j = 0 }^m \binom{ m }{ j } g_{ i , j } \]

这个问题其实非常显然,我们的\(g_{ i , j }\)定义为所有\(| S | = i , | T | = j\)的答案之和.\(f\)也是这么定义的,那这个式子就是错的,应该写成:

\[ f_{ n , m } = \sum_{ i = 0 }^n \binom{ N - i }{ n - i } \sum_{ j = 0 }^m \binom{ M - j }{ m - j } g_{ i , j } \]

这样才是在不确定的那些行列中选择组合数,而不是在确定的那些行列中选.

但这样又有一个问题,就是这个题的特殊性,这个题要求\(g_{ N , M }\),那此时\(g\)怎么定义不应该是一样的吗?

当然不一样,二项式反演讲究统一性,所有的定义必须遵循一个统一的原则,不然如果什么样子的函数都能反演,那一般的反演就不是一个需要解方程才能完成的东西了.

回到第四题,再看一遍这个式子:

$$ \[\begin{aligned} f_k & = \sum_{ i = k }^n \binom{ i }{ k } g_i \\ \end{aligned}\]

$$

这个定义式就非常良性,\(g\)是已知的集合,\(f\)是未知的集合.我们乘上组合数就可以得到对于\(f\)来说已知的集合.因此这个就非常正确.

回到这个题上,为什么我们最后把\(f\)的定义改成\(f_{ n , m } = k^{ nm } ( k - 1 )^{ NM - nm }\)就对了呢?

再看看这个式子:

\[ f_{ n , m } = \sum_{ i = 0 }^n \binom{ n }{ i } \sum_{ j = 0 }^m \binom{ m }{ j } g_{ i , j } \]

这个式子的右边在干这样一件事:那就是在已知\(n\)\(m\)列的集合的前提下,从中选出\(i\)\(j\)列并求\(g\).那么你从哪知道的\(n\)\(m\)列呢?你得组合数啊!

所以,实际上的\(f\)是这样的:

\[ \begin{aligned} f_{ n , m } & = \binom{ N }{ n } \binom{ M }{ m } \sum_{ i = 0 }^n \binom{ n }{ i } \sum_{ j = 0 }^m \binom{ m }{ j } g_{ i , j } \\ f_{ n , m } & = \binom{ N }{ n } \binom{ M }{ m } k^{ nm } ( k - 1 )^{ NM - nm } \end{aligned} \]

好麻烦啊,能不能避免这种需要进一步思考集合意义的问题呢?

考虑二项式反演的第二个形式:

$$ \[\begin{aligned} f ( n ) & = \sum_{ k = n }^N C_n^k g ( k ) \Leftrightarrow g ( n ) = \sum_{ k = n }^N ( - 1 )^{ k - n } C_n^k f ( k ) \\ \end{aligned}\]

$$

不难发现这个式子无论怎么写,前后都一定是从已知集合中选东西.绝对不会出现上面的问题.

因此,我们重新写一下这个题的相关式子,考虑直接正难则反,设\(f '_{ i , j }\)为至少有\(i\)\(j\)列不满足条件的方案数,自然有\(f '_{ i , j } = f_{ N - i , M - j }\).你发现此时一定有:

\[ f '_{ n , m } = \sum_{ i = n }^N \binom{ i }{ n } \sum_{ j = m }^M \binom{ j }{ m } g '_{ i , j } \]

最后答案就是\(g '_{ 0 , 0 }\).

斯特林反演

一般形式:

$$ \[\begin{aligned} f ( n ) & = \sum_{ k = 0 }^n \left \{ \begin{array} { c } n \\ k \end{array} \right \} g ( k ) \Leftrightarrow g ( n ) = \sum_{ k = 0 }^n \left [ \begin{array} { c } n \\ k \end{array} \right ] ( - 1 )^{ n - k } f ( k ) \\ f ( n ) & = \sum_{ k = 0 }^n \left [ \begin{array} { c } n \\ k \end{array} \right ] g ( k ) \Leftrightarrow g ( n ) = \sum_{ k = 0 }^n \left \{ \begin{array} { c } n \\ k \end{array} \right \} ( - 1 )^{ n - k } f ( k ) \\ f ( m ) & = \sum_{ n = m }^M ( - 1 )^{ m - n } \left [ \begin{array} { c } n \\ m \end{array} \right ] g ( n ) \Leftrightarrow g ( m ) = \sum_{ k = 0 }^M \left \{ \begin{array} { c } k \\ m \end{array} \right \} f ( k ) \\ f ( m ) & = \sum_{ n = m }^M ( - 1 )^{ m - n } \left \{ \begin{array} { c } n \\ m \end{array} \right \} g ( n ) \Leftrightarrow g ( m ) = \sum_{ k = 0 }^M \left [ \begin{array} { c } k \\ m \end{array} \right ] f ( k ) \\ \end{aligned}\]

$$

考虑第一类斯特林数和第二类斯特林数的对称性,只需证明第一个和第三个式子即可.

反转公式:

$$ \[\begin{aligned} \sum_{ k = 0 }^n \left [ \begin{array} { c } n \\ k \end{array} \right ] \left \{ \begin{array} { c } k \\ m \end{array} \right \} ( - 1 )^{ n - k } & = \sum_{ k = 0 }^n \left \{ \begin{array} { c } n \\ k \end{array} \right \} \left [ \begin{array} { c } k \\ m \end{array} \right ] ( - 1 )^{ n - k } = [ m = n ] \\ \end{aligned}\]

$$

第一个式子的证明:

$$ \[\begin{aligned} g ( n ) & = \sum_{ m = 0 }^n [ m = n ] g ( m ) \\ & = \sum_{ m = 0 }^n \sum_{ k = 0 }^n \left [ \begin{array} { c } n \\ k \end{array} \right ] \left \{ \begin{array} { c } k \\ m \end{array} \right \} ( - 1 )^{ n - k } g ( m ) \\ & = \sum_{ k = 0 }^n \left [ \begin{array} { c } n \\ k \end{array} \right ] ( - 1 )^{ n - k } \sum_{ m = 0 }^k \left \{ \begin{array} { c } k \\ m \end{array} \right \} g ( m ) = \sum_{ k = 0 }^n \left [ \begin{array} { c } n \\ k \end{array} \right ] ( - 1 )^{ n - k } f ( k ) \\ \end{aligned}\]

$$

第三个式子的证明:

$$ \[\begin{aligned} g ( m ) & = \sum_{ n = m }^M [ n = m ] g ( n ) \\ & = \sum_{ n = m }^M \sum_{ k = 0 }^M \left [ \begin{array} { c } n \\ k \end{array} \right ] \left \{ \begin{array} { c } k \\ m \end{array} \right \} ( - 1 )^{ n - k } g ( n ) \\ & = \sum_{ k = 0 }^M \left \{ \begin{array} { c } k \\ m \end{array} \right \} f ( k ) \\ \end{aligned}\]

$$

莫比乌斯反演

一般形式:

\[ \begin{aligned} f ( n ) & = \sum_{ d | n } g ( d ) \Leftrightarrow g ( n ) = \sum_{ d | n } \mu ( \frac{ n }{ d } ) f ( d ) \\ f ( n ) & = \sum_{ n | d } g ( d ) \Leftrightarrow g ( n ) = \sum_{ n | d } \mu ( \frac{ d }{ n } ) f ( d ) \\ f ( x ) & = \sum_{ 1 \leq d } g ( d ) \Leftrightarrow g ( x ) = \sum_{ 1 \leq d } f ( \cfrac{ x }{ d } ) \mu ( d ) \end{aligned} \]

第一个式子的证明:

$$ \[\begin{aligned} g ( n ) & = \sum_{ m | n } [ \frac{ n }{ m } = 1 ] g ( m ) \\ & = \sum_{ m | n } \sum_{ d | \frac{ n }{ m } } \mu ( d ) g ( m ) \\ \end{aligned}\]

$$

注意到\([ d | \frac{ n }{ m } ] = [ md | n ] = [ m | \frac{ n }{ d } ] \\\).

$$ \[\begin{aligned} g ( n ) & = \sum_{ d | n } \mu ( d ) \sum_{ m | \frac{ n }{ d } } g ( m ) \\ & = \sum_{ d | n } \mu ( d ) f ( \frac{ n }{ d } ) \\ & = \sum_{ d | n } \mu ( \frac{ n }{ d } ) f ( d ) \\ \end{aligned}\]

$$

第二个式子的证明:

$$ \[\begin{aligned} g ( n ) & = \sum_{ n | d } [ \frac{ d }{ n } = 1 ] g ( d ) \\ & = \sum_{ n | d } \sum_{ c | \frac{ d }{ n } } \mu ( c ) g ( d ) \\ & = \sum_{ c | d } \sum_{ nc | d } \mu ( c ) g ( d ) \\ & = \sum_{ c } \mu ( c ) f ( nc ) \\ & = \sum_{ n | d } \mu ( \frac{ d }{ n } ) f ( d ) \\ \end{aligned}\]

$$

第三个式子的证明:

\[ \begin{aligned} \sum_{ 1 \leq d } g ( \cfrac{ x }{ d } ) \mu ( d ) & = \sum_{ d \geq 1 } \mu ( d ) \sum_{ k \geq 1 } f ( \cfrac{ x }{ kd } ) \\ & = \sum_{ m \geq 1 } f ( \cfrac{ x }{ m } ) \sum_{ d , k \geq 1 } [ m = dk ] \mu ( d ) \\ & = \sum_{ m \geq 1 } f ( \cfrac{ x }{ m } ) \sum_{ d | m } \mu ( d ) \\ & = f ( x ) \end{aligned} \]

Example1

求长度为\(n\)且仅包含小写英文字母且循环节长度恰为\(n\)的字符串个数.

不妨设\(f ( n )\)表示长度为\(n\)的字符串个数,\(g ( n )\)表示长度为\(n\)且循环节长度恰为\(n\)的字符串个数.

\(f ( n ) = \sum_{ d | n } g ( d )\),根据莫比乌斯反演,\(g ( n ) = \sum_{ d | n } \mu ( \cfrac{ n }{ d } ) f ( d )\).

Example2

\(\sum_{ i = 1 }^{ n } \sum_{ j = 1 }^m gcd ( i , j ) \\\).

我们通过这个题来讲一下推导技巧.

增加枚举量
$$ \[\begin{aligned} \sum_{ i = 1 }^{ n } \sum_{ j = 1 }^m gcd ( i , j ) & = \sum_{ i = 1 }^n \sum_{ j = 1 }^m id [ gcd ( i , j ) ] \\ & = \sum_{ i = 1 }^n \sum_{ j = 1 }^m \sum_{ d | gcd ( i , j ) } \varphi ( d ) \\ \end{aligned}\]

$$

交换枚举顺序
$$ \[\begin{aligned} \sum_{ i = 1 }^n \sum_{ j = 1 }^m \sum_{ d | gcd ( i , j ) } \varphi ( d ) & = \sum_{ d = 1 }^{ \min ( n , m ) } \sum^{ \lfloor \frac{ n }{ d } \rfloor }_{ i = 1 } \sum^{ \lfloor \frac{ m }{ d } \rfloor }_{ j = 1 } \varphi ( d ) \\ \end{aligned}\]

$$

分离无关变量
$$ \[\begin{aligned} \sum_{ d = 1 }^{ \min ( n , m ) } \sum^{ \lfloor \frac{ n }{ d } \rfloor }_{ i = 1 } \sum^{ \lfloor \frac{ m }{ d } \rfloor }_{ j = 1 } \varphi ( d ) & = \sum^{ \min ( n , m ) }_{ d = 1 } \varphi ( d ) \times \lfloor \cfrac{ n }{ d } \rfloor \times \lfloor \cfrac{ m }{ d } \rfloor \\ \end{aligned}\]

$$

考虑使用数论分块,只需处理出\(\varphi ( d )\)的前缀和即可在\(O ( \sqrt{ n } + \sqrt{ m } )\)的复杂度解决此问题.

Example3

\(\sum_{ i = 1 }^{ n } \sum_{ j = 1 }^m [ gcd ( i , j ) = 1 ] \\\).

和上一道题几乎没区别,唯一不同的是需要处理的函数从\(id\)变为了\(\epsilon\).

Example4

\(\sum_{ i = 1 }^{ n } \sum_{ j = 1 }^m [ gcd ( i , j ) \in \mathrm{ prime } ] \\\).

考虑增加枚举量,则:

$$ \[\begin{aligned} \sum_{ i = 1 }^{ n } \sum_{ j = 1 }^m [ gcd ( i , j ) & \in \mathrm{ prime } ] = \sum_{ i = 1 }^{ n } \sum_{ j = 1 }^m \sum_{ p \in \mathrm{ prime } } [ gcd ( i , j ) = p ] \\ & = \sum_{ p \in \mathrm{ prime } } \sum^{ \lfloor \frac{ n }{ d } \rfloor }_{ i = 1 } \sum^{ \lfloor \frac{ m }{ d } \rfloor }_{ j = 1 } [ gcd ( pi , pj ) = p ] \\ & = \sum_{ p \in \mathrm{ prime } } \sum^{ \lfloor \frac{ n }{ p } \rfloor }_{ i = 1 } \sum^{ \lfloor \frac{ m }{ p } \rfloor }_{ j = 1 } [ gcd ( i , j ) = 1 ] \\ & = \sum_{ p \in \mathrm{ prime } } \sum_{ d = 1 }^{ \min ( \lfloor \frac{ m }{ p } \rfloor , \lfloor \frac{ n }{ p } \rfloor ) } \mu ( d ) \lfloor \cfrac{ n }{ pd } \rfloor \lfloor \cfrac{ m }{ pd } \rfloor \\ \end{aligned}\]

$$

于是转化为上一道题,但复杂度仍不可接受.

换元

考虑设\(x = pd\),则变为\(\sum_{ x = 1 }^{ \min ( n , m ) } \sum_{ p \in \mathrm{ prime } \land p | x } \mu ( \frac{ x }{ p } ) \lfloor \frac{ n }{ x } \rfloor \lfloor \frac{ m }{ x } \rfloor \\\).

Example5([UR #5]怎样跑得更快)

首先先考虑去掉\(lcm\)使得式子中只有\(i , j , \gcd ( i , j )\).

显然可以构造函数\(f ( x ) = x^{ c - d } , g ( x ) = x^d , h ( x ) = x^d \\\),然后将题目转化为\(\sum_{ j = 1 }^n f ( gcd ( i , j ) ) g ( i ) h ( j ) x_j \equiv b_i ( \mod p ) \\\).

\(\gcd ( i , j )\)很难处理,于是考虑用莫比乌斯反演消掉.

可以求出\(f_r ( n )\)使得\(f ( n ) = \sum_{ d | n } f_r ( d ) \\\),也即\(f_r ( n ) = \sum_{ d | n } \mu ( \cfrac{ n }{ d } ) f ( d )\).

则原式即:

$$ \[\begin{aligned} \sum_{ j = 1 }^n \sum_{ d } [ d | i ] [ d | j ] f_r ( d ) g ( i ) h ( j ) x_j & \equiv b_i ( \mod p ) \\ \sum_{ d | i } f_r ( d ) \sum_{ j = 1 }^n [ d | j ] h ( j ) x_j & \equiv \frac{ b_i }{ g ( i ) } ( \mod p ) \\ \end{aligned}\]

$$

\(z_d = \sum_{ j = 1 }^n [ d | j ] h ( j ) x_j \\\),有\(\sum_{ d | i } f_r ( d ) z_d \equiv \frac{ b_i }{ g ( i ) } ( \mod p ) \\\).

这个也是一个莫比乌斯反演的形式,我们可以求出左边,进而求出\(z_d\).

\(z_d = \sum_{ j = 1 }^n [ d | j ] h ( j ) x_j = \sum_{ d | j }^n h ( j ) x_j\),可以再次使用莫比乌斯反演求出\(h ( j ) x_j\),进而求\(x_j\).

无解条件显然是\(g_i = 0 \land x_i \ne 0\).

简而言之,这个题的步骤就是:

  1. 通过增加枚举量消掉\(lcm\)以及\(\gcd\)这些难以处理的项.

  2. \(i\)\(j\)尽量分到式子两边.

  3. 先通过莫比乌斯反演求出一些值,再通过这些值反推.

Example6([CF1566H]Xor-quiz)

首先注意到一个重要的事实:我们只需要询问所有\(\mu ( x ) \ne 0\)\(x\),就可以得到全部信息,而这些\(x\)的数量是完全足够我们全部询问一遍的.

注意到一个事实是,异或是模意义下的按位加减法,这意味着我们可以对异或做莫比乌斯反演.事实上,我们有:

$$ \[\begin{aligned} f ( n ) & = \bigoplus_{ i \in A } i [ \gcd ( i , n ) = 1 ] \\ & = \bigoplus_{ i \in A }^c i \sum_{ d | i , d | n } \mu ( d ) \\ \end{aligned}\]

$$

注意到\(\sum_{ d | i } \mu ( d ) = \bigoplus_{ d | i } | \mu ( d ) |\),于是:

\[ f ( n ) = \bigoplus_{ d | n } | \mu ( d ) | \bigoplus_{ d | i , i \in A } i \]

接下来只要我们形式上写作\(n\),我们就默认\(\mu ( n ) \ne 0\),又令\(g ( n ) = \bigoplus_{ n | i , i \in A } i\),此时自然有\(f ( n ) = \bigoplus_{ d | n } g ( d ) \\\).这是一个经典的莫反形式,我们再反演回去就可以得到\(g ( n ) = \bigoplus_{ d | n } \mu ( \frac{ n }{ d } ) f ( d ) = \bigoplus_{ d | n } f ( d )\),也就是说我们可以求得所有的\(g ( n )\),也就是这个集合中所有是\(n\)的倍数的异或值.

注意一个事实:如果我们设\(w ( m ) = \prod_{ p \in \mathrm{ prime } , p | m } p\),那么我们就可以按照\(w\)的不同将所有数划分为若干个集合,每个集合在每次查询的时候要么都不被异或要么都被异或.这也告诉我们:我们只能求出每个集合中被选进\(A\)的这些数的异或值,而不能分开得知它们.接下来考虑如何知道这个,不妨设\(S ( n ) = \{ x | w ( x ) = n \}\),又设\(h ( n ) = \bigoplus_{ i \in A , i \in S ( n ) } i\).考虑用\(g ( n )\)表示\(h ( n )\),我们有:

\[ g ( n ) = \bigoplus_{ n | d } | \mu ( \frac{ d }{ n } ) | h ( d ) \]

反演,有\(h ( n ) = \bigoplus_{ n | d } g ( d ) \\\).于是我们可以求得所有的\(h ( n )\)了.

现在的问题在于:对于数\(n , \mu ( n ) \ne 0\),我们要在\(S ( n )\)中选出若干个数,使得它们的异或和为\(h ( n )\),并且选出的数字总共有\(| A |\)个.

然后是根据数据随机,拿每个集合的线性基随机一下自由元,然后对着构造.多随机几次,最后做背包.

多重子集反演

\(S\)为可重集合.

一般形式:定义\(\mu ( S )\),若\(S\)包含重复元素则为\(0\),否则为\(( - 1 )^{ | S | }\).

$$ \[\begin{aligned} f ( S ) & = \sum_{ T \subseteq S } g ( T ) \Leftrightarrow g ( S ) = \sum_{ T \subseteq S } \mu ( S - T ) f ( T ) \\ \end{aligned}\]

$$

证明:

根据莫比乌斯反演,这个是显然的.

单位根反演(离散傅里叶变换)

一般形式(\(\omega_n = e^{ \frac{ 2 \pi i }{ n } }\)):

\[ f_m = \sum_{ k = 0 }^{ n - 1 } \omega_n^{ mk } g_k \Leftrightarrow g_m = \frac{ 1 }{ n } \sum_{ k = 0 }^{ n - 1 } \omega_n^{ - mk } f_k \]

可以发现这个式子其实就是FFT时所做的DFT与IDFT.

一般情况

考虑莫比乌斯反演的过程,我们实际上使用的是\([ m | n ] \sum_{ d | \frac{ n }{ m } } \mu ( d ) = [ n = m ] \\\).

\(c = md\),左边\(= \sum_{ c | n } [ m | c ] \mu ( \frac{ c }{ m } ) = \sum ( [ c | n ] ) ( [ m | c ] \mu ( \frac{ c }{ m } ) ) \\\).

\(A_{ c , n } = [ c | n ]\),\(B_{ m , c } = [ m | c ] \mu ( \frac{ c }{ m } ) \\\),那我们有\(BA = I\).

刚才的过程相当于:

$$ \[\begin{aligned} Ax & = b \\ x & = Ix \\ x & = ( BA ) x \\ x & = B ( Ax ) \\ x & = Bb \\ \end{aligned}\]

$$

无论是二项式反演还是莫比乌斯反演,他们都满足\(f ( n )\)所依赖的\(g ( k )\)\(k \leq n \\\).

根据上面的情况,我们发现\(A\)是一个下三角矩阵,\(B\)\(A^{ - 1 }\).

现在来推导满足\(k \leq n\)的一般情况反演:

$$ \[\begin{aligned} f ( n ) & = \sum_{ k = 1 }^n a_{ n , k } g ( k ) \\ \end{aligned}\]

$$

不妨设算子\(\mu ( n , m )\),满足\(\sum_{ k = 1 }^n a_{ n , k } \mu ( k , m ) = \sum_{ k = 1 }^n \mu ( n , k ) a_{ k , m } = [ n = m ] \\\).

\(AB = BA = I \\\).

$$ \[\begin{aligned} g ( n ) & = \sum_{ m = 1 }^n [ n = m ] g ( m ) \\ & = \sum_{ m = 1 }^n \sum_{ k = 1 }^n \mu ( n , k ) a_{ k , m } g ( m ) \\ & = \sum_{ k = 1 }^n \mu ( n , k ) f ( k ) \\ \end{aligned}\]

$$

由上我们发现,反演解决了一些在下标上的二元运算卷积:

$$ \[\begin{aligned} c_r & = \sum_{ p , q } [ f ( p , q ) = r ] a_p b_q \\ \end{aligned}\]

$$

而我们需要把\(f\)分成两个独立的部分,通常正变换一下,处理一下,逆变换回来.

容斥

一般形式

即:将求并集中元素个数转化成了求交集中元素个数.

我们有:\(\mid \bigcup_{ i = 1 }^n S_i \mid = \sum_{ T \subseteq \{ 1 , . . . , n \} } ( - 1 )^{ | T - 1 | } \mid \bigcap_{ p \in T } S_p \mid\).

证明:我们考虑对于每个元素,看它对最终答案的贡献.假设它所属\(m\)个集合\(T_1 , . . . , T_m\),而除了这些集合以外的集合,

\[ \begin{aligned} cnt & = \sum_{ i = 1 }^m ( - 1 )^{ i - 1 } \binom{ m }{ i } \\ & = \binom{ m }{ 0 } - \sum_{ i = 0 }^m ( - 1 )^i \binom{ m }{ i } \\ & = 1 - [ m = 0 ] \end{aligned} \]

显然,当这个元素被包含的时候,贡献为\(1\),反之贡献为\(0\).

如果我们定义一类在集合上的函数\(F ( S ) = \sum_{ p \in S } F ( p )\),那么自然也有:

\[ F ( \bigcup_{ i = 1 }^n S_i ) = \sum_{ T \subseteq \{ 1 , . . . , n \} } ( - 1 )^{ | T | - 1 } F ( \bigcap_{ p \in T } S_p ) \]

另外,我们上面的做法是:当交集好求时求并集.我们还可以使用一步补集转化:

\[ \mid \bigcap_{ i = 1 }^n S_i \mid = | U | - \mid \bigcup_{ i = 1 }^n \overline{ S_i } \mid \]

这样我们同样可以在并集好求的时候求交集.

会发现容斥和二项式反演是很像的.但是不一样的是,容斥是从集合的角度考虑,更注重单个元素的贡献;二项式反演是从函数的角度考虑,更关注函数之间的转化.

Example1(不定方程非负整数解计数)

考虑不定方程\(\sum_{ i = 1 }^n x_i = m\),和\(n\)个限制条件\(x_i \leq b_i\),其中\(m\)\(b_i\)都是非负整数,求该方程的非负整数解的数目.

首先,我们需要找出全集\(U\),以及刻画\(U\)中元素的\(P_i\)(条件):

  1. \(U\)是满足\(\sum_{ i = 1 }^n x_i = m\)的所有非负整数解;

  2. 对于每个变量\(i\),都对应一个\(P_i = [ x_i \leq b_i ]\).

设所有满足\(P_i\)的解构成集合\(S_i\),那么我们需要求解的值就是\(\mid \bigcap_{ i = 1 }^n S_i \mid\).而\(\mid U \mid\)显然是\(\binom{ m + n - 1 }{ n - 1 }\).我们有:\(\mid \bigcap_{ i = 1 }^n S_i \mid = | U | - \mid \bigcup_{ i = 1 }^n \overline{ S_i } \mid\).考虑对\(\mid \bigcup_{ i = 1 }^n \overline{ S_i } \mid\)使用容斥原理,注意到\(\overline{ S_i }\)的意义是满足\(x_{ i } \geq b_{ i } + 1\)的解的数目.换句话说也就是部分变量有下界限制,那直接左右两边同时减去下界即可.于是枚举子集即可实现.

欸,等一下,咋想到的补集转化,又是咋想到要用容斥的捏?

我们冷静一下,首先补集转化和容斥都是一个思想:正难则反.我们要求满足条件的个数,就先想一下能不能求不满足条件的个数,然后拿总的个数减去.然后注意到不满足条件的意义是:有至少一个不满足,这样就很可以容斥了.

Example2(错排问题)

我们考虑从容斥的角度再次认识一下错排.

首先,我们需要找出全集\(U\),以及刻画\(U\)中元素的\(P_i\)(条件):

  1. \(U\)是长度为\(n\)的所有排列;

  2. 对于每个变量\(i\),都对应一个\(P_i = [ p_i \ne i ]\).

注意到所求仍然是\(\mid \bigcap_{ i = 1 }^n S_i \mid\).于是我们仍然试图\(| \bigcap_{ k = 1 }^m \overline{ S_{ a_k } } |\).考虑其意义,也即:有\(m\)个位置被确定了,而其它位置没有限制,于是\(| \bigcap_{ k = 1 }^m \overline{ S_{ a_k } } | = \binom{ n }{ m } ( n - m ) !\).根据容斥,自然有:\(d_n = n ! - \sum_{ m = 1 }^n ( - 1 )^{ m - 1 } \binom{ n }{ m } ( n - m ) ! = n ! \sum_{ m = 0 }^n \cfrac{ ( - 1 )^m }{ m ! }\).

Example3(bzoj3622已经没有什么好害怕的了)

首先可以用dp+双指针得到\(f_i\)表示勒令\(i\)对满足条件的方案数.把\(k\)的定义改为恰好\(k\)对满足条件的显然是同强度的.

我们接下来仍然考虑容斥,首先,我们需要找出全集\(U\),以及刻画\(U\)中元素的\(P_i\)(条件).

等一下,这个好像不好刻画?

我们先回归一下容斥的本质:考虑每个元素的贡献.注意到恰好\(a\)对的方案会被恰好\(b\)对的方案计算\(\binom{ b }{ a }\)次.我们再考虑一种方式理解容斥:我们一步一步把正确的答案消出来:简单来说,我第一步让所有恰好为\(k\)的方案贡献为\(1\),其它的可能也有贡献,但我们忽略他们.第二步让所有恰好为\(k + 1\)的方案贡献为\(0\),第三步以此类推.于是这个题,我们考虑也这么做:这样第一步令\(ans = f_k\),第二步除去其中被多算的\(k + 1\),这一步令\(ans - = \binom{ k + 1 }{ k } f_{ k + 1 }\).这个时候,我们再考虑\(k + 2\)的贡献:它将在\(f_k\)时贡献\(\binom{ k + 2 }{ k }\)次,在\(f_{ k + 1 }\)时贡献\(- \binom{ k + 2 }{ k + 1 } \binom{ k + 1 }{ k } = - \binom{ k + 2 }{ k } \binom{ 2 }{ 1 }\)次,那它现在的贡献还有:\(- \binom{ k + 2 }{ k }\)次.以此类推,可以得到\(ans = \sum_{ i = k }^n f_i ( - 1 )^{ i - k } \binom{ i }{ k }\).

等一下,这也太麻烦了,就不能从集合的角度分析嘛?

冷静一下,如果我们要做容斥,我们必须考虑每个元素单独的贡献,但是在这个题中,每个元素并没有单独的贡献,而是整个集合需要满足性质才能贡献.也就是说,我们无法分析每个\(P_i\).而考虑集合就需要将集合分类,从而使用二项式反演.

换句话说,这个定义在集合上的函数并不满足可加性.

换句话说,我们要用容斥,就一定要刻画\(P_i\),因为只有这个时候,我们才能通过分析满不满足\(P_i\)的解集的交并来实现.

再换句话说,大部分的所谓的容斥其实都和集合没啥关系,我们做容斥就是需要逐个考虑贡献,把它们贡献全都杀成\(1 / 0\)就行.

Example4(HAOI2008硬币购物)

如果直接对于每次询问暴力做,复杂度显然是\(O ( 4 ns )\),无法接受.于是考虑预处理来降低单词询问复杂度.

注意到硬币数量很少,并且每个硬币的贡献可以独立计算.我们完全可以刻画\(P_i = [ use_i \leq d_i ]\),从而可以用容斥做.复杂度\(O ( 4 m + n 2^4 )\).

Example5

Alice和Bob在玩游戏,他们有一个\(n\)个点的无向完全图,设所有的边组成了集合\(E\),他们想取遍\(E\)的所有非空子集,对某个集合\(S\)有一个估价\(f ( S )\):考虑\(n\)个点与\(S\)中的边组成的图,我们用\(m\)种颜色对所有点染色,其中同一个连通块的点必须染成一种颜色,那么\(f ( S )\)等于这个图的染色方案数.同时,Alice喜欢奇数,所以当\(| S |\)为奇数时,Alice的分值加上\(f ( S )\),否则Alice的分值减去\(f ( S )\),求最后的分值.\(( n , m \leq 10^6 )\).

一开始抄题的时候没有写染色而是直接写”设\(k\)为连通块个数,则\(f ( S ) = m^k\).”然后发现做不了,因为\(| S |\)相同的\(f ( S )\)不尽相同,而且可能情况还蛮多的.冷静一下,注意到连通块这个性质太强了:如果我们把它放到指数上,那应该会做得很痛苦.所以我们考虑每有一个连通块就乘上一个\(m\),这个看上去就简单一些.

但是这样好像还是不太好做,毕竟现在我们面对的还是一个难以转化为计数问题的图论问题,只是把问题的单位元素从图变成了连通块.那我们能不能再进一步:把单位元素换成单点呢?

考虑由于连通块要染一种颜色,那\(x \leftrightarrow y \Rightarrow col_x = col_y\).注意到这是一个单位元素更小的限制条件!并且我们发现我们将与\(- 1\)有关的单位元素(从一开始就是点)和与\(f\)有关的单位元素统一起来了.这也提示我们做计数的时候,尤其是做容斥的计数的时候,最好先将单位元统一,这样后面才可能更容易做.

接下来就可以写式子了,令\(F ( C )\)表示在\(C\)情况下的染色方案,\(T_{ ( i , j ) }\)表示满足边\(( i , j )\)限制的解集:

\[ ans = \sum_{ \emptyset \ne S \subseteq E } ( - 1 )^{ | S | - 1 } F ( \bigcap_{ ( i , j ) \in S } T_{ ( i , j ) } ) \]

冷静一下!这个东西和容斥长得那叫一个一模一样啊.我们看看能不能逆向分析出\(ans\)的意义:显然是\(F ( \bigcup_{ i = 1 }^{ m } P_i )\).也就是完全图中至少有两个点颜色相同的染色数.根据补集转化,我们只需求出两两点不相同的染色数即可.所以最后的答案就是\(m^n - m^{ \underline{ n } }\).

Example6

\(\varphi ( n )\).

考虑这么一个事实:假设\(n = \prod p_i^{ q_i }\),注意到令\(P_i = [ \gcd ( i , n ) = 1 ]\),我们所求也就是\(\mid \bigcap_{ i = 1 }^n S_i \mid\).于是可以用上面的方法做.另外,这里的做法引出莫比乌斯反演.

Example7(AGC058D)

直接容斥好像不太可做,我们把容斥中的条件改为有多少个极长的形如\(ABCABCAB . . .\)这样的串.

乍一看这个极长的条件好像巨难满足,但实际上我们冷静一下,我们只需要满足这个串长度大于等于\(3\)并且开头不能往前延申就可以了,后面其实是没啥必要管的.

拿组合数算一算.

Example8(AGC035F)

显然问题只在于重复计算的问题.我们先将所有状态做一个双射:对于一个网格,唯一可能被重复计算的只可能是一个拐角的\(1\),我们让这种情况下的行尽可能长.

然后捏?注意到这样的话一个拐角的角一定是行了,是列就一定不合法,我们考虑把不合法的列杀了.

于是做一下容斥,答案是\(\sum_{ i = 0 }^{ \min ( n , m ) } ( - 1 )^i \binom{ n }{ i } \binom{ m }{ i } i ! ( m + 1 )^{ n - i } ( n + 1 )^{ m - i }\).

Example9

给定若干个限制条件\(( x , y )\),表示\(a_x = y\)\(a_y = x\)必须满足至少一个,求排列方案数.

首先\(i \rightarrow p_i\)把排列转化成图,这样上面的限制条件也就是有一些无向的链和环,最后定向.一开始以为随便做做,思考一下注意到如果有长度为\(2\)的链,它自己成环的话是不用\(\times 2\)的.

这咋办.一个办法是:我们考虑容斥,先随便放进去,最后再钦定若干个自己成环.诶等一下为啥这个容斥是对的?因为系数是\(\times 2\),所以一个有\(1\)个单独成环的状态会被随便放的情况恰好多算一次.类似可以做容斥.

当然,也可以考虑先把其它的合并,最后做长度为\(2\)的链,但是!一开始一定要钦定有序,最后再用组合数统一算答案.因为一开始带着顺序做很难做.

Example10([AGC036F] Square Constraints)

由题意得:\(n^2 - i^2 \leq P_i^2 \leq ( 2 n )^2 - i^2\).

当一个东西有上界又有下界的时候可以想到容斥.问题转化为只有上界.假设最后所有的上界为\(l_i\),那么只有上界的答案应该是什么呢?将\(l\)从小到大排序,答案就是\(\prod_{ i = 0 }^{ 2 n - 1 } ( l_i - i )\).(注意到必须满足\(l_{ 2 n - 1 } = 2 n - 1\).)

但是这个东西和容斥怎么结合起来呢?我们将限制放到二维平面上,注意到上下界的限制其实是两个\(\frac{ 1 }{ 4 }\)的圆弧.而通过圆弧的性质不难看出:最终的\(l\)分为三部分:在下半部分圆弧上的,在上半部分圆弧后面的,在上半部分圆弧前面的.而如果想知道\(l\)按照顺序排序,我们只需要对前两部分做归并,然后将最后一部分直接放到后面即可.于是我们考虑按照\(l\)的大小为顺序进行一个类似归并的东西,每次判断当前下半部分圆弧是否要往上加点即可.这样我们可以处理前两部分对答案的贡献,但问题在于第三部分对答案的贡献怎么做,我们需要找到第三部分上的点在排序后的位置.我们预先枚举容斥集合的大小即可,这样就可以快速算出这个东西,于是复杂度\(O ( n^3 )\).

Example11([23省选第一轮集训day4]C带劲的旅行)

(下面将\(n\)\(m\)反着写)

\(p = \frac{ 2 k }{ n } , q = n - p\).

首先注意到期望\(= P [ len \geq 1 ] + P [ len \geq 2 ] + \cdots\).

考虑如何计算\(P [ len \geq x ]\),如果我们设\(a_i\)表示以\(i\)作为开头的极长的带劲的长度大于等于\(x\)的序列的集合,那么最后无非是要求所有\(a\)的并.考虑用容斥做到求所有\(a\)的交.不过要注意讨论一下是不是第一个点.

Example12

给定\(n , k\)\(n\)个点各自的颜色,对有编号无根树计数,要求相同颜色组成的连通块大小不超过\(k\).\(n \leq 300\).

著名结论:\(n\)个点\(m\)个连通块任意连边成树的方案数是\(n^{ m - 2 } \prod s\),其中\(s\)是每个连通块的大小.但是,如果我们强行对每种颜色分成若干连通块,我们要防止它们之间有边.这就是我一开始没做出来的原因:要容斥的根本不是树的大小不能超过\(k\),由于树的形态多变,这个是不能维护的!正确的做法是找到若干个相同颜色的大小小于等于\(k\)的连通块,要求它们两两无边.甚至根本就不是它们可以连边但是大小不能超过\(k\),我们要容斥的东西一定要好算,简单.

然后就做完了,每次暴力合并若干个颜色相同的块,容斥系数\(( - 1 )^{ 块 数 - 1 }\).

容斥是一个层层递进的东西,我们每一步都是基于上一步的限制:它本身就是一个求解集的东西.

Min-Max容斥

对于:

\[ \mid \bigcup_{ i = 1 }^n S_i \mid = \sum_{ T \subseteq \{ 1 , . . . , n \} } ( - 1 )^{ | T - 1 | } \mid \bigcap_{ p \in T } S_p \mid \]

考虑一个特例:\(S_i = \{ 1 , 2 , \cdots , a_i \}\),那么上面的式子导出min-max容斥(我们设\(S = \{ a_1 , a_2 , \cdots , a_n \}\))(第二个式子可以把前缀改成后缀):

\[ \begin{aligned} \max ( S ) & = \sum_{ T \subseteq S , T \ne \emptyset } ( - 1 )^{ | T | - 1 } \min ( T ) \\ \min ( S ) & = \sum_{ T \subseteq S , T \ne \emptyset } ( - 1 )^{ | T | - 1 } \max ( T ) \end{aligned} \]

由于是集合,这个式子在期望意义下同样成立:

\[ \begin{aligned} E ( \max \{ S \} ) & = \sum_{ T \subseteq S , T \ne \emptyset } ( - 1 )^{ | T | - 1 } E ( \min \{ S \} ) \\ E ( \min \{ S \} ) & = \sum_{ T \subseteq S , T \ne \emptyset } ( - 1 )^{ | T | - 1 } E ( \max \{ S \} ) \end{aligned} \]

进一步,这个式子可不止能求min-max的转化,它可以求出集合中第k大的数字:

\[ \begin{aligned} kth \max \{ S \} & = \sum_{ T \subseteq S , T \ne \emptyset } ( - 1 )^{ | T | - k } \binom{ | T | - 1 }{ k - 1 } \min \{ T \} \\ kth \min \{ S \} & = \sum_{ T \subseteq S , T \ne \emptyset } ( - 1 )^{ | T | - k } \binom{ | T | - 1 }{ k - 1 } \max \{ T \} \\ E ( kth \max \{ S \} ) & = \sum_{ T \subseteq S , T \ne \emptyset } ( - 1 )^{ | T | - k } \binom{ | T | - 1 }{ k - 1 } E ( \min \{ T \} ) \\ E ( kth \min \{ S \} ) & = \sum_{ T \subseteq S , T \ne \emptyset } ( - 1 )^{ | T | - k } \binom{ | T | - 1 }{ k - 1 } E ( \max \{ T \} ) \end{aligned} \]

原理是消掉前\(k - 1\)大的数字,让他们的贡献为\(0\),剩下的配一下容斥系数.

Example1([23省选10连测 day6]A)

不妨设\(tim_i\)\([ i , i + 1 ]\)第一次被覆盖的时间,答案就是:

\[ E ( \max_{ i = 1 }^{ n - 1 } \{ tim_i \} ) = \sum_{ T \subseteq \{ 1 , 2 , \cdots , n - 1 \} , T \ne \emptyset } ( - 1 )^{ | T | - 1 } E ( \min_{ j \in T } \{ tim_j \} ) \]

\(f ( S )\)为有多少个区间能覆盖至少一个\([ i , i + 1 ] , i \in S\),考虑\(E = p_{ [ t \geq 0 ] } + p_{ [ t \geq 1 ] } + p_{ [ t \geq 2 ] } + \cdots\),于是\(E ( \min_{ j \in S } \{ tim_j \} ) = \frac{ m }{ f ( S ) }\).

于是:

\[ \begin{aligned} ans & = \sum_{ T \subseteq \{ 1 , 2 , \cdots , n - 1 \} , T \ne \emptyset } ( - 1 )^{ | T | - 1 } f ( T ) \\ & = \sum_{ k = 0 }^m \frac{ m }{ k } \sum_{ T \subseteq \{ 1 , 2 , \cdots , n - 1 \} , T \ne \emptyset , f ( T ) = k } ( - 1 )^{ | T | - 1 } \end{aligned} \]

注意到\(f ( S )\)可能不那么好求,我们求\(g ( S ) = m - f ( S )\),也就是不包含任何一个\([ i , i + 1 ] , i \in S\)的区间个数,我们有:

\[ ans = \sum_{ k = 0 }^m \frac{ m }{ m - k } \sum_{ T \subseteq \{ 1 , 2 , \cdots , n - 1 \} , T \ne \emptyset , g ( T ) = k } ( - 1 )^{ | T | - 1 } \]

这里已经不难写出\(O ( n^3 )\)的dp了.

那么怎么优化呢?设\(dp_{ i , j }\)表示只考虑\([ 1 , i ]\)时(\([ i - 1 , i ]\)必选),\(\sum_{ g ( T ) = j } ( - 1 )^{ | T | - 1 }\)的答案,不难发现每次加入一个区间\([ l , r ]\)就会让\(dp_{ i , j } , i < = l\)\(dp_{ r , j + 1 }\)的贡献乘一个\(1\).

如何处理这个事情?我们用类似多项式的东西,前者相当于平移多项式系数,后者相当于标量乘法,然后拿线段树维护和,复杂度\(O ( nm \log n )\).

反射容斥

一般形式:给定二维平面上两个点\(S\)\(T\),其中\(T\)\(S\)的右方,给定两条线\(y = a\)\(y = b\),每次可以向右上或者右下走一步,求不碰线的从\(S\)\(T\)的方案数.

我们不妨设\(A\)表示一定碰了一次上界的方案数,\(B\)表示一定碰了一次下界的方案数,\(AB\)表示一定碰了一次上界后碰了一次下界的方案数……

最后的答案就是随便走\(- A - B + AB + BA - ABA - BAB . . .\).

考虑设步数为\(n\),那显然长度最多为\(\cfrac{ n }{ a - b }\).

Bash游戏

\(A\)\(B\),有\(n\)颗石子,每次可以取\(x\)颗,其中\(1 \leq x \leq m \\\),求\(A\)是否能赢.

考虑直接令石子数量为状态,有\(SG ( x ) = mex \{ SG ( y ) | \max \{ 0 , x - m \} \leq y \leq x - 1 \} \\\),注意到\(SG ( x ) = 0\)当且仅当\(x \equiv 0 ( \mod m + 1 )\).

我们使用数学归纳证明:

\(0 \leq x \leq m\)时,显然成立.

而对于\(x\),如果\(x \equiv 0 ( \mod m + 1 ) \\\),那么集合\(S = \{ y \in \mathbb{ Z } | \max \{ 0 , x - m \} \leq y \leq x - 1 \}\)中一定\(\nexists y\)满足\(y \equiv 0 ( \mod m + 1 ) \\\).

也就是\(\nexists y\)满足\(SG ( y ) = 0\),那么\(SG ( n ) = 0\).反之,一定存在.

Nim游戏

\(A\)\(B\),有\(n\)堆石子,第\(i\)堆石子有\(x_i\)个石子.每次可以任选一堆取走若干个石子,最后不能取的人输.求先手是否必胜.

注意到如果\(x\)均等于\(0\)一定先手必败.考虑令\(w = x_1 \oplus x_2 \oplus . . . \oplus x_n\)(\(w\)即为全游戏的\(SG\)值),那么先手必败当且仅当\(w = 0 \\\).

证明:

只需证明当\(w \ne 0\)时一定存在一种方法使得\(w = 0 \\\).

考虑\(w\)的最高位为第\(k\)位,那么一定存在一个\(x_i\)的第\(k\)位为\(1\).将它改为\(0\),然后这个\(x_i\)的后面几位可以随意更改.

Example1(Nimk游戏)

\(A\)\(B\),有\(n\)堆石子,第\(i\)堆石子有\(x_i\)个石子.每次可以任选不超过\(k\)堆取走若干个石子,最后不能取的人输.

\(x_i\)写成二进制,如果每一位的\(1\)的个数均是\(k + 1\)的倍数,那么先手一定必败.道理是差不多的.

Example2(Multi-Nim游戏)

Nim游戏,但是玩家每回合可以将任意一堆石子数量大于等于\(2\)的石子堆分成任意两堆不为空的石子堆.没法操作的人输.

本质仍然是SG游戏,我们正常做就行.

\(SG ( x ) = mex \{ \{ SG ( v ) | x \rightarrow v \} , \{ SG ( x - i ) \oplus SG ( i ) | 1 \leq i < x \} \} \\\).

找一下规律可以发现:

$$ \[\begin{aligned} SG ( x ) & = \begin{cases} x - 1 & x \equiv 0 ( \mod 4 ) \\ x & x \equiv 1 或 2 ( \mod 4 ) \\ x + 1 & x \equiv 3 ( \mod 4 ) \\ \end{cases} \\ \end{aligned}\]

$$

不妨设当\(x \leq 4 k\)时结论成立.

\(x = 4 k + 1\)时,前半部分一定是取遍了\([ 1 , 4 k ]\).

但是一定不存在\(a\)\(b\)满足\(a + b = 4 k + 1\)并且\(SG ( a ) \oplus SG ( b ) = 4 k + 1\).讨论一下\(a\)\(b\)\(\mod 4\)意义下的值就会发现不可能.

其他的是同理的.

SG游戏

\(n\)个DAG,每个DAG只有一个起始点,起始点上有一枚棋子.\(A\)\(B\)每次可以选一个图,将上面的棋子沿DAG移动一条边,不能移动的人输.

直接使用\(SG ( u ) = mex \{ SG ( v ) | u \rightarrow v \}\).

那么先手必败当且仅当所有DAG初始节点的SG异或起来是\(0\).

首先如果\(SG ( u ) = x\),那么\(\forall 0 \leq y < x\),\(\exists v\)使得\(u \rightarrow v\)\(SG ( v ) = y\).可以发现这就如同Nim游戏了.

但是与Nim游戏不同的是,可能\(\exists y > x\),但是仍然可以转移到.

但在这种情况下,我可以继续转移到一个\(u '\)使得\(SG ( u ' ) = x\),因此异或值不变.

Example1(Anti-SG游戏)

SG游戏,但是不能取的人赢.

SJ定理:

先手必胜当且仅当下面两个条件满足一个:

  1. 游戏的SG函数不为\(0\)且游戏中某个单一游戏的SG函数大于\(1\).

  2. 游戏的SG函数为\(0\)且游戏中没有单一游戏的SG函数大于\(1\).

如果没有单一游戏的SG函数大于\(1\),那么显然游戏的SG函数为\(0\)就赢了,否则就输了.

而如果SG函数为\(0\)且存在某个单一游戏的SG函数大于\(1\),一定是输的.

因为这个情况下,后手先按照正常\(SG\)游戏压着先手,最后一定会剩两堆一样大于\(1\)的,无论你怎么选,对手都可以压着你.如果你把一堆全选了,此时对手就可以把另一堆剩下一个,这样就必输;如果你把这一堆选的只剩下一个,对手就可以把它那一堆全选了,这样就也是必输的.

Example2(Every-SG)

SG游戏,但是每次每个能移动的游戏都必须移动,不能移动任何游戏的人输.

对于每个子游戏,如果先手必胜,先手一定会尽可能多争取时间.

反之,先手一定会尽可能早结束游戏.

\(DAG\)上dp的时候除了\(SG\)我们再加一维表示时间耗费,就可以dp了.

Example2.5(Every-SG)

n个游戏,每个游戏两堆石子,每次可以从大的那堆中取小的那堆石子大小的整数倍的石子.

直接套用Every-SG的做法就行.

Example3(Nim on tree)

一棵有根树两个人,每次可以挑一棵真子树删掉,不能操作者输.

结论:\(SG ( u ) = \bigoplus_{ u \rightarrow v } ( SG ( v ) + 1 )\).

考虑归纳假设.如果\(u\)只有\(v\)一个儿子.那么要么将\(v\)子树全删,要么删一部分,有:

\[ SG ( u ) = mex ( x | x = 0 \lor 0 \leq x - 1 < SG ( v ) ) = SG ( v ) + 1 \]

而如果有多个儿子,则每个儿子都相当于是一个SG子游戏,异或起来即可.

另一种理解方式:考虑只有一个儿子的情况,那么相当于这个儿子的所有状态都向终止节点连了一条边,终止节点的\(SG\)\(0\),而显然\(SG\)图中的其它节点的\(SG\)均要\(+ 1\).

Example4

\(n\)个有根仙人掌,保证所有的环与树的结构只有一个公共点(环只有一条连到环外的边).

两个人分别操作删边,与根不连通的边都被删掉.

结论:奇环\(SG = 1\),偶环\(SG = 0\).

这么考虑:边数为\(k\)的链的\(SG\)\(k\).

而拆开奇环后,你得到的两条链奇偶性一定相同,因而不可能得到\(1\).偶环同理,不可能得到\(0\).

Example5

无向图,每次删掉一条边以及与根节点不连通的部分,无法操作者输.

考虑Example2.

Fusion定理:将偶环替换成一个新点,奇环替换成一个新点连出去一条边,做边双.对于一个边双,\(SG\)值只和他边的奇偶性有关.证明大概和上面一样.

斐波那契博弈

一个数\(N\),两个人轮流令他减去一个数,第一次不能减完,每次减的不能超过上一次的两倍.

不能操作者输.

结论为:当且仅当\(N\)是斐波那契数时,先手必败.

考虑归纳证明:

先证明当\(N\)是斐波那契数时必败,不妨假设\(N = N_0 + N_1\),

考虑将\(N\)看成两堆,因为如果第一次取走了大于\(N_1\)颗石子,由于\(N_0 \leq N_1 \\\),则后手第二步可以全取走,必败.

并且一开始先手一定要在\(N_0\)堆取石子,原因是如果取了大于\(N_0\)颗石子,由于\(N = N_0 + N_1 \leq 3 N_0 \\\).这样下一步后手就可以全取完.

那么现在先手应该开始取\(N_0\)这一堆,如果在这一堆取的过程中,先手一直取得不超过\(N_0\)剩下的数,那么根据归纳假设,后手一定可以取走\(N_0\)堆的最后一个石子,此时局面变成了只剩\(N_1\)颗石子.只要此时先手不能一次取走\(N_1\)颗石子,先手就必败.而后手最后一步拿走石子最多会拿走\(\frac{ 2 }{ 3 } N_0\)的石子,但是,\(\frac{ 4 }{ 3 } N_0 < N_1\),因此一定不可能.

否则,仍然是先手取走了\(N_0\)全部石子,又当了先手取\(N_1\)的石子.仍然是必败的.

齐肯多夫定理:任意一个正整数都可以被表示成若干不连续的斐波那契数之和.

\(N = \sum_{ i = 1 }^k f_{ p_i }\),其中\(p_1 < p_2 < p_3 < . . . < p_k \\\),先手取走\(f_{ p_1 } \\\).由于\(2 f_{ p_1 } < f_{ p_2 }\),因此后手接下来无论如何不可能取得大于等于\(f_{ p_2 } \\\),问题转化为一堆大小为\(f_{ p_2 }\)的石子,此时先手必败.因此原问题的先手必胜.

二分图博弈

给出一张二分图和起点\(S\),\(A\)\(B\)轮流操作,每次操作只能选与上一个被选的点相邻的点,且不能选已经选过的点.

考虑二分图的所有最大匹配,如果在所有的最大匹配的方案中都包含了起点\(S\),那么先手必胜,否则先手必败.

证明:

如果所有匹配都包含\(S\),那么\(A\)只需要每次走到一个和\(S\)匹配的点即可.\(B\)无论如何不可能走到一个不在最大匹配中的点,不然,我们将路径全部取反,就得到了一个最大匹配不变但不包含\(S\)的点,与假设不符.

而如果存在一个匹配不包含\(S\),如果\(A\)仍然第一步走到一个和\(S\)匹配的点那么\(B\)一定能想办法走到一个不在当前\(A\)选择的最大匹配中的点而在一个不包含\(S\)的最大匹配中的点,于是\(B\)必胜.

Example1([2022qbxt国庆Day5]C)

显然,一个人敢抢金条当且仅当没有人敢抢他的金条.假设\(dp_{ S , x } = 0 / 1\)表示目前集合\(S\)中的所有人都已经离场了,而目前金条在\(x\)手中,金条会不会被抢.显然,如果\(\exists y\)满足\(dp_{ S \cup \{ x \} , y } = 0\),也就是金条在\(y\)手里不会被抢,那\(x\)手中的金条必定会被抢.

将这个抢的过程看作二分图博弈中走到相邻的点的过程,于是这个问题等价于二分图博弈.也就是说,如果二分图博弈先手必胜,那么第一个拿到金条的人一定会被抢.

因此,我们需要找到所有与\(S\)匹配的可能出现在最大匹配中的边,对应编号最小的那个点,金条最后一定在他手里.(第一步这么走后,一定能构造出)

这个怎么构造呢,我们考虑先跑一遍dinic求最大匹配,然后做一遍tarjan缩点,然后如果\(S\)\(x\)并未匹配,那么我们判断二者是否在一个强连通分量中,如果在,那他们可以被匹配.

至于判断\(S\)是否一定在其中,只需要先删去\(S\),跑dinic,再在残联网络上加上\(S\),判断是否有新的增广路.

树上博弈

Example1(zr[23省选10连 day1] Clashmas)

注意到删点对树形态的影响,考虑重心

  1. \(n\)为奇数,重心为后手点.

注意到此时后手一定可以通过一些方式维持重心不变,因此后手必胜.

  1. \(n\)为奇数,重心为先手点.

我们不妨设先手是A,后手是B.

考虑一个事实:对于这样一棵树,我们删着删着一定会出现一个时刻使得此时\(n\)为偶数,有两个重心(比如最后只剩下两个点的时刻),根据(4)和(5)的讨论,此时胜负已分.而且不难注意到此时A变为了实际上的后手.

根据(5),如果B掌控了任意一个重心,那A就输了.因此A必定要使当前局面的两个中心均为A的点.考虑原重心的所有儿子,它们有的是A点,有的是B点.由于树的重心的性质,树的重心的移动一定是一点一点挪的,也就是说第一次出现上面的局面的时候,两个重心必有一个是原重心,另一个是原重心的儿子,接下来A和B就要对于另一个重心能取到哪个儿子做争夺.我们不妨设A的点的集合为\(S_A\),B的点的集合为\(S_B\).以原重心为根建树,设其所有儿子组成的集合为\(S_C\),不难发现A能胜利(也就是让两个重心全都属于他)当且仅当\(\sum_{ u \in S_A \cap S_C } siz_u \geq \sum_{ u \in S_B \cap S_C } siz_u\).

原因很简单:A和B必然每次都会去杀属于对方的子树中\(siz\)最大的那棵.由于A有着先手优势,因此只要满足上面的条件,A总能获胜.

  1. \(n\)为偶数,唯一重心,重心为后手点.

类似(2)的讨论,最后一定有某个时刻使得此时\(n\)为偶数,有两个重心(比如最后只剩下两个点的时刻),此时A仍然是先手,根据(5),只要他掌控一个重心就可以获胜.

类似地,不难发现胜利条件等价于(2).

  1. \(n\)为偶数,两个重心,重心均为后手点.

注意到此时整棵树分为两个大小相等的部分,因此后手一定可以维持这个场面不动,后手必胜.

  1. \(n\)为偶数,至少有一个重心是先手点.

注意到此时先手一定存在一种方式开局,使得重心仍为这个先手点,这样就转化为第一种情况,先手必胜.

散题

Problem1([CSP-S2020]贪吃蛇)

首先注意到,如果一个蛇吃完后还不是最小的蛇,那它一定会吃.因为被吃的蛇是单调不降的,而吃蛇的蛇是单调不增的,因此下一个蛇如果要吃,那一定会比它还小,所以至少会先被吃掉,而那条蛇会被吃掉,它就一定不会选,所以无论如何这条蛇都不会被吃掉.

我们考虑如果吃完后变成了最小的蛇后会怎么样,我们设\(f_i\)为还剩\(i\)条蛇的时候能不能吃,那\(f_i = 1\)的话,要么\(i = 2\),要么吃完后不是最小的,要么\(f_{ i - 1 } = 0\).

递归做就好了.另外这题需要复杂度\(O ( n )\),需要用几个队列/双端队列维护.

Problem2([AGC023D]Go Home)

首先,最后一个人要么是最左边的,要么是最右边的.而显然这两边中人数较少的一个将会是最后一个到家的,那么这个人的目标就是帮助另一边的人尽可能快到家,于是会帮着它投票.以此类推不断递归下去.

Problem3(牛客38727E)

首先考虑如果有人作为第\(n - p + 1\)个人复读了,那接下来复读一定不会被惩罚,于是没复读的都会复读,这样这个人就必死.于是最多只会复读\(n - p\)个人.

继续思考,如果有人作为第\(n - 2 p + 1\)个人复读了会怎么样,后面的人也都不会被惩罚了,于是也会继续复读.

以此类推,会发现最后只会有\(n \mod p\)个人复读,并且一定是前\(n \mod p\)在一轮内复读完.

Problem4(arc155D)

考虑直接转移,但是有可能出现在原地转的情况,注意到这种情况我们只需要记录\(f_{ i , j }\)表示当前的\(G\)\(i\),\(G\)的倍数还剩下\(j\)个,然后做转移,再进一步发现我们只关心\(j\)的奇偶性.于是记\(f_{ i , 0 / 1 }\)即可.

这题给我最大的启示是,我们不能假定让双方共同遵守一个”君子协定”,博弈论最重要的就是博弈,不能说我们最后再选倍数之类的,他的转移路线会变化的.

Problem5

给一个“日”字型图,七条边,每条边有一堆石子.每次可以选任意多条不构成环的边,然后将这些边上的石子堆取走任意多个石子.求先手必胜策略,以及如果每条边的石子数量在\([ l_i , r_i ]\),那么有多少种先手必胜的情况.

考虑将这个图分成三部分,上面三条边,中间一条边,下面三条边.那么这三部分一定不能全选至少两部分,不然会构成环.反之一定构不成环.

先手必败当且仅当,这三部分内部的边上石子均相等,并且所有边异或值为\(0\).

否则,考虑将上部分和下部分三条边先全改成相等的,会修改较大的两条边.

接下来,我们剩了三条边,我们只能选择改其中一条,使得他们仨异或值为\(0\).

换句话说,我们现在有\(x_1 , x_2 , x_3\),我们要将其中一个\(x_i\)改为\(y_i\),其他不变,使得他们仨异或值为\(0\).和Nim游戏类似,假设他们仨异或值的最高位为\(k\).那么一定有一个\(x_i\)的第\(k\)位为\(1\),将它改为\(0\),后面就可以随意变换.

思路具体怎么想到的呢,可以发现整个图只有三个环,并且这三个环都可以由这几部分组成.接下来就可以每个部分的\([ l_i , r_i ]\)求个交,用FWT做一遍异或卷积.数位dp也可以做.

Problem6

Nim游戏,但是每堆石子有一个\(K_i\).如果这堆石子剩\(x_i\)个每次最多取\(\lfloor \frac{ x_i }{ K_i } \rfloor\)个石子.求先手是否必胜.

结论是

SG(n-n k,k)&n(k)\

n k&n=0(k)\

\end{cases}\

考虑数学归纳就可以证明.

然后我们就只需要对于\(k\)是否大于\(\sqrt{ n }\)讨论一下,如果\(k < \sqrt{ n }\)暴力,最多只会做\(\sqrt{ n }\)次.否则,意识到此时可以通过求一个区间\([ l , r ]\),满足\(\forall x \in [ l , r ] , \lfloor \frac{ x }{ k } \rfloor\)均相等,加速一下.这种区间最多只会有\(\sqrt{ n }\)个.

Problem7

一个数\(N\),两个人轮流令他减去一个数,第一次不能减完,每次减的不能超过上一次.不能操作者输.

先手必败当且仅当\(N = 2^k\),不然,每次选lowbit即可.

Problem8

A和B,有\(n\)颗石子,每次可以取\(x\)颗,其中\(1 \leq x \leq \lceil \frac{ n }{ 2 } \rceil \\\).

仍然令石子数量为状态,注意到\(SG ( x ) = 0\)当且仅当\(x + 1 = 2^k - 1\),也即\(x = 2^k - 2 \\\).首先,注意到:

$$ \[\begin{aligned} n - \lceil \frac{ n }{ 2 } \rceil & = \lfloor \frac{ n }{ 2 } \rfloor \\ SG ( n ) & = mex \{ SG ( y ) | \lfloor \frac{ n }{ 2 } \rfloor \leq y \leq n - 1 \} \\ \end{aligned}\]

$$

\(n = 2^k - w\),其中:

$$ \[\begin{aligned} - 2^{ k - 1 } + 2 & \leq w \leq 2 \\ \lfloor \frac{ 2^k - w }{ 2 } \rfloor & = 2^{ k - 1 } - \lfloor \frac{ w }{ 2 } \rfloor \\ \end{aligned}\]

$$

\(w = 2\)时,原式\(= 2^{ k - 1 } - 1 > 2^{ k - 1 } - 2 \\\).反之.\(2^k - 2 \leq\)原式.因此数学归纳即可证明.

2024寒假学堂(部分)

Problem4

\(G ( x ) = ( x^2 + x - 1 )^{ 100 } = \sum_{ k = 0 }^{ 200 } a_k x^k\),求\(2 a_0 - a_1 - a_2 + 2 a_3 - a_4 - a_5 + \cdots + 2 a_{ 198 } - a_{ 199 } - a_{ 200 }\).

Solution4

考虑求出\(\sum_{ 0 \leq k \leq 66 }{ a_{ 3 k } }\).直接取三次单位根\(\omega_3 = - \frac{ 1 }{ 2 } + \frac{ \sqrt{ 3 } }{ 2 } i\),自然有\(1 + \omega_3 + \omega_3^2 = 0\),所以\(G ( 1 ) + G ( \omega_3 ) + G ( \omega_3^2 ) = 3 \sum_{ 0 \leq k \leq 66 }{ a_{ 3 k } }\).

所以答案显然是\(G ( \omega_3 ) + G ( \omega_3^2 ) = ( - 2 )^{ 100 } + ( - 2 )^{ 100 } = 2^{ 101 }\).

Problem10

等差数列中,\(a_1 > 0\),公差\(d < 0 , \frac{ a_{ 31 } }{ a_{ 30 } } < - 1\),求最大的正整数\(n\),使得\(S_n > 0\).

Solution10

显然\(S_{ 60 } = 30 ( a_{ 30 } + a_{ 31 } ) < 0 , S_{ 59 } = 59 a_{ 30 } > 0\).

Problem11

全为整数的等差数列,\(d = 4\),求所有满足\(S_n = 2024\)\(n\)的和.

Solution11

\(n ( 2 n - 2 + a_1 ) = 2024 = 2^3 \times 11 \times 23\).显然只要\(n | 2024\)即可.

所有\(n\)的和自然是\(( 1 + 2 + 4 + 8 ) ( 1 + 11 ) ( 1 + 23 ) = 15 \times 12 \times 24 = 4320\).

Problem14

整数数列\(U_n\)满足\(U_0 = 1\),且当\(n \geq 1\)的时候\(U_{ n + 1 } U_{ n - 1 } = kU_n\),其中\(k\)是一个正整数.问能让\(U_{ N } = N\)\(k\)的个数有多少个,其中\(N = 2024\).

Solution14

\(U_{ n + 1 } = \frac{ kU_n }{ U_{ n - 1 } } , \frac{ U_{ n + 1 } }{ U_n } = k \frac{ U_n }{ U_{ n - 1 } } \frac{ 1 }{ U_n }\).

观察上面的式子,不难想到换元后求前缀积,但其实注意到我们可以直接求前缀积,设\(T_n = \prod_{ k = 1 }^n U_k , W_n = U_n \prod_{ k = 1 }^{ n - 2 } U_k\).

注意到\(W_n = kW_{ n - 1 } , W_1 = U_1 , W_n = k^{ n - 1 } U_1\).又注意到\(T_n = kU_{ n - 1 } W_{ n - 1 } = kW_{ n - 1 } \frac{ T_{ n - 1 } }{ T_{ n - 2 } } = k^{ n - 1 } U_1 \frac{ T_{ n - 1 } }{ T_{ n - 2 } } = ( k^{ n - 1 } U_1 ) ( k^{ n - 2 } U_1 ) \frac{ 1 }{ T_{ n - 3 } }\),\(T_{ n - 3 } = ( k^{ n - 4 } U_1 ) ( k^{ n - 5 } U_1 ) \frac{ 1 }{ T_{ n - 6 } }\).所以\(T_{ n } = k^6 T_{ n - 6 }\),所以\(U\)存在长度为\(6\)的循环节.所以\(U_{ N } = \frac{ T_N }{ T_{ N - 1 } } = \frac{ T_2 }{ T_1 } = U_2 = kU_1\).(其实直接暴力找循环节也是可以的)

所以\(k\)需要是\(N\)的因子.

哦,还不如直接找循环节,还要判断这是个整数序列.

\(w = U_1\),则\(U\)的前六项是:\(1 , w , kw , k^2 , \frac{ k^2 }{ w } , \frac{ k }{ w }\).要求\(kw = N , w | k\),所以\(( 11 \times 23 ) | k\),\(k \equiv 0 \pmod{ 4 }\).所以\(k = 4 \times 11 \times 23\)\(k = 8 \times 11 \times 23\).

Problem15

求使方程\(\lfloor \frac{ 10^n }{ x } \rfloor = N = 2024\)恰有两个整数解的正整数\(n\)的个数.

Solution15

我们有:

\[ \begin{aligned} N & \leq \frac{ 10^n }{ x } < N + 1 \\ xN & \leq 10^n < x ( N + 1 ) \\ \frac{ 10^n }{ N + 1 } & < x \leq \frac{ 10^n }{ N } \\ \lfloor \frac{ 10^n }{ N + 1 } \rfloor & < x \leq \lfloor \frac{ 10^n }{ N } \rfloor \\ \lfloor \frac{ 10^n }{ N } \rfloor - \lfloor \frac{ 10^n }{ N + 1 } \rfloor & = 2 \\ \frac{ 10^n }{ N ( N + 1 ) } - \frac{ 10^n \bmod N }{ N } + \frac{ 10^n \bmod{ ( N + 1 ) } }{ N + 1 } & = 2 \end{aligned} \]

显然\(\lfloor \frac{ 10^n }{ N ( N + 1 ) } \rfloor = 1 , 2 , 3\).而\(N ( N + 1 ) = 4098600\),所以只有\(n = 7\)可能满足条件,带入检验可行.

Problem18

用六种颜色给正方形六个面染色,旋转平移后相同算一种方案,要求每个面颜色都不同,求方案数.

Solution18

钦定一个面,然后枚举对面,中间四个是一个环,方案数是\(5 \times 3 ! = 30\).

Problem19

\(f ( x ) = \lfloor 2 x \rfloor + \lfloor 4 x \rfloor + \lfloor 6 x \rfloor + \lfloor 8 x \rfloor , x \in \mathbb{ R }\),求其不超过\(n = 2024\)的正整数取值有多少种.

Solution19

显然\(f ( x + 1 ) = f ( x ) + 20\),因此我们先考虑\(x \in [ 0 , 1 )\)的情况.

手动枚举一下知道此时\(f ( x )\)\(12\)种不同的取值,前六种是\(\{ 0 , 1 , 2 , 4 , 5 , 6 \}\),后六种对应了前六种\(+ 10\).而\(2024 = 101 \times 20 + 4\),所以共有\(101 \times 12 - 1 + 4 = 1215\)种取值.

Problem20

\([ 1 , n ] , n = 2024\)中分别独立随机两个正整数(可以相同)\(a , b\),则求\(3^a + 7^b \equiv 8 \pmod{ 10 }\)的概率.

Solution20

考虑\(\varphi ( 10 ) = 4\),所以原题答案等价于\(n = 4\)的时候的答案.在这\(16\)中可能性中满足条件的只有三种,概率为\(\frac{ 3 }{ 16 }\).

2023强基(部分)

Problem3

已知\(a_1 = \frac{ 5 }{ 2 } , a_{ n + 1 } = a_n^2 - 2\),求\(\lfloor a_n \rfloor \bmod 7 , n = 2023\).

Solution3

这个一看就不是好解的,想都别想直接数学归纳,注意到\(a_n = \frac{ 4^{ 2^{ n - 1 } } + 1 }{ 2^{ 2^{ n - 1 } } }\),那么\(\lfloor a_n \rfloor = 2^{ 2^{ n - 1 } }\).

\(\varphi ( 7 ) = 6 , \varphi ( 6 ) = 2\).由扩展欧拉定理,立刻有:\(2^{ 2^{ 2022 } } \equiv 2^{ 2^{ 2022 } \bmod 6 } \equiv 2^{ 2^{ 6 } } \equiv 16 \equiv 2 \pmod{ 7 }\).

Problem4

\(50\)个队伍两两打比赛,胜一场积分\(+ 1\),负一场积分不变,无平局.

且任取\(27\)支队伍,其中一定有一支队伍负于其它的\(26\)支,也一定有一支队伍胜于其它的\(26\)支.

\(50\)支队伍最少有多少种不同的积分.

Solution4

答案是\(50\).

因为是竞赛图,缩点之后是一条链.

如果所有强连通分量的大小都\(\leq 27\)的话,显然我们全选一个强连通分量就完蛋了.因此所有的强连通分量的大小都\(> 27\),唯一的可能是所有点在一个强连通分量中,我们在其中取出一个长度为\(k\)的简单环,由鸽笼原理,剩下的\(n - k\)个点中至少有\(\frac{ n - k }{ 2 }\)个点对着\(k\)个点只输或者只赢(如果有输有赢就无所谓了),这样的话只需要\(k + \frac{ n - k }{ 2 } \geq 27\)即可,此时\(k \geq 4\)即可.由于这是竞赛图,显然存在长度为\(4\)的简单环.

还有一种更简单的做法,考虑取一个积分最多的点,假设为\(u\).我们任意取一个击败过它的点(如果有的话),假设为\(v\),再取\(25\)个被\(u\)击败的点(显然这些点存在),设这些点集为\(S\).则\(u , v , S\)组成的集合中,有一个点可以击败其它所有点,根据假设,只能是\(v\).由此,可以知道,只要是\(u\)能击败的点,\(v\)一定能击败,而且\(v\)能击败\(u\),因此\(\deg_v > \deg_u\),与假设不符.因此一定不存在一个\(v\)可以击败\(u\).删掉\(u\)后做数学归纳,可知原图一定是拓扑图.

Problem8

一只蚂蚁第一天在\(( 0 , 0 )\),第\(k + 1\)天向上下左右随机一个方向移动\(\frac{ 1 }{ 4^k }\)单位,求第\(n\)天的可能位置数量,\(n = 2023\).

Solution8

不妨设第\(n\)天不同位置数量为\(S_n\),显然只要前面岔开了,后面永远无法走到一个点.所以\(S_1 = 1 , S_{ n + 1 } = 4 S_n , S_{ 2023 } = 4^{ 2022 }\).

Problem10

集合\(U = \{ 1 , 2 , \cdots , n \} , n = 10\),求\(U\)中的满足元素两两互素的三元子集个数.

Solution10

集合是无序的,这个很难搞,我们先从\(U\)中把\(1\)去掉最后再加上.

先考虑可以重复放\(1\)的情况:

$$ \[\begin{aligned} \sum_{ i = 1 }^n \sum_{ j = 1 }^{ n } \sum_{ k = 1 }^{ n } [ \gcd ( i , j ) & = 1 ] [ \gcd ( i , k ) = 1 ] [ \gcd ( j , k ) = 1 ] \\ \end{aligned}\]

$$

这个推下去感觉就头大了,退一步考虑暴力算吧.

先考虑全是奇数的情况,只能从\(1 , 3 , 5 , 7 , 9\)中选,答案应该是\(1 + 2 \binom{ 3 }{ 2 } = 7\).

接下来考虑选一个偶数,如果选\(2 , 4 , 8\)是等价的,答案此时是\(3 ( \binom{ 5 }{ 2 } - 1 ) = 27\).如果选\(6\)的话答案是\(\binom{ 3 }{ 2 } = 3\).如果选\(10\)的话方案数是\(\binom{ 4 }{ 2 } - 1 = 5\),加起来方案数是\(42\).

Problem11

集合\(U = \{ 1 , 2 , \cdots , n \} , n = 366\),则\(U\)的互不相交且各元素之和为\(17\)的倍数的二元子集最多有多少个?

Solution11

考虑\(\lfloor \frac{ 366 }{ 17 } \rfloor = 21 , 366 \equiv 9 \pmod{ 17 }\).答案显然是\(21 \times 8 + 10 + 1 = 179\)个.

Problem12

三个互不相同的数的\(\gcd = 20 , \text{ lcm } = 20000\),求选取这三个数的方案数(顺序不同算不同的方案).

Solution12

显然等价于\(\gcd = 1 , \text{ lcm } = 1000 = 2^3 \times 5^3\).先只分析其中一个质因子,方案应该是\(( 0 , 0 , 3 ) , ( 0 , 1 , 3 ) , ( 0 , 2 , 3 ) , ( 0 , 3 , 3 )\),打乱一下顺序的话就共有\(3 + 6 + 6 + 3 = 18\)种方案.如果可以重复,平方一下得到\(324\).

接下来去掉重复的情况,只有可能两个质因子都相同才会重复,拿上面的三元组算一下,此时方案数共有\(2 \times 2 \times 3 = 12\)种,于是答案为\(312\).

Problem14

\(\lfloor \frac{ k^2 }{ n } \rfloor , k \in [ 1 , n ] , n = 2023\)种有多少个不同的元素.

Solution14

\[ \begin{aligned} \lfloor \frac{ k^2 }{ n } \rfloor & = d \\ d & \leq \frac{ k^2 }{ n } < d + 1 \\ nd & \leq k^2 < n ( d + 1 ) \end{aligned} \]

由于两个完全平方数的差是固定的,不妨猜测存在一个\(k_0\),\(\leq k_0\)\(k\)会扎堆,但是这些\(d\)全都能取到,\(> k_0\)的则不会有两个\(k\)得到相同的元素.所以前者统计不同的\(d\),后者统计不同的\(k\)考虑\(( k + 1 )^2 - k^2 = 2 k + 1\).分界线应该是\(k_0 = 1011\).

所以答案应该是\(n - k_0 + \lfloor \frac{ k_0^2 }{ 2 k_0 + 1 } \rfloor + 1 = 1012 + 506 = 1518\).

Problem15

对四元组\(( a , b , c , d )\)计数,满足\(101 | ( a + b + c + d )\)\(0 < a < b < c < d \leq 101\).

Solution15

这题真的厉害啊.

不妨设\(S_k\)为满足\(( a + b + c + d ) \equiv k \pmod{ 101 }\)的满足\(0 < a < b < c < d \leq 101\)的四元组数量.不难发现\(\sum S_k = \binom{ 101 }{ 4 }\).

注意到\(( a , b , c , d ) \mapsto ( a + 1 , b + 1 , c + 1 , d + 1 )\),注意这里是\(\pmod{ 101 }\)意义下的加法,这是一个双射,所以\(S_{ k } = S_{ k + 4 }\),下标同样也是\(\pmod{ 101 }\)意义下进行的.又因为\(\gcd ( 101 , 4 ) = 1\),所以所有的\(S_k\)均相等.\(S_0 = \frac{ \binom{ 101 }{ 4 } }{ 101 } = 40425\).

Problem16

问方程\(x \lfloor x \rfloor = 6\)的解的个数.

Solution16

\(6 = x \lfloor x \rfloor \geq \lfloor x \rfloor^2\),所以\(\lfloor x \rfloor = \pm 1 , \pm 2\).显然都不可以.所以个数为\(0\).

Problem17

\(R ( n ) = \sum_{ k = 2 }^{ 10 } ( n \bmod k )\),求满足\(R ( n ) = R ( n + 1 )\)的十进制下的两位数\(n\)的个数.

Solution17

\(R ( n )\)\(R ( n + 1 )\),应该是加了若干个\(1\),然后又丢了几个\(k - 1\)这样的.那就一定需要丢掉的数字之和为\(9\).枚举一下,丢了的只有可能是以下情况:\(( 9 ) , ( 7 + 2 ) , ( 6 + 3 ) , ( 5 + 4 ) , ( 4 + 3 + 2 )\),分别对应了\(n + 1\)应该是分别以下数的倍数\(( 9 ) , ( 14 ) , ( 6 ) , ( 20 ) , ( 12 )\),并且和分别要求不是另一些数的倍数,这就去掉了其中的若干个,最后剩下的是:\(( 7 + 2 )\),并且分别不能是以下数字的倍数\(( 3 , 4 , 5 )\).

取一下的话\(n + 1\)可以是:\(14 , 98\),\(n = 13 , 97\),验证一下均合法,所以答案为\(2\).

Problem18

已知\(a < b < c < d\),而\(x , y , z , w\)\(a , b , c , d\)的一个排列,求\(( x - y )^2 + ( y - z )^2 + ( z - w )^2 + ( w - x )^2\)得到的不同数个数.

Solution18

圆排列个数是\(3 ! = 6\)个,只需要判掉相同的圆排列即可.

显然翻转后是相同的,所以最多有三个不同数,排列分别是\(( x , y , z , w ) , ( x , z , w , y ) , ( x , w , y , z )\).

考虑:

\[ \begin{aligned} & ( x - y )^2 + ( y - z )^2 + ( z - w )^2 + ( w - x )^2 \\ = & 2 ( x^2 + z^2 + y^2 + w^2 ) - 2 ( xy + yz + zw + wx ) \end{aligned} \]

显然只要\(xy + yz + zw + wx\)不同,那么两个数就不同.不难判断上面三个数互不相同.

Problem19

已知\(0 < x_1 < x_2 < \cdots < x_9\)\(\sum_{ k = 1 }^9 x_k = 220\),在\(\sum_{ k = 1 }^5 x_k\)最大的前提下,最小化\(x_9 - x_1\).

Solution19

不妨枚举一下\(x_5\)选啥,设\(f ( S , m , k )\)表示选出\(k\)个互不相同的数,使得它们\(\leq m\)且总和为\(S\),是否可行.不难发现\(f ( S , m , k ) = [ \frac{ k ( k + 1 ) }{ 2 } \leq S \leq \frac{ k ( 2 m - k + 1 ) }{ 2 } ]\).

那我们要求的就是:

\[ \begin{aligned} \max_{ 5 \leq x_5 } \{ S | f ( 220 - 4 x_5 - S , + \infty , 4 ) & = 1 \land f ( S - x_5 , x_5 - 1 , 4 ) = 1 \} \\ & = \max_{ 5 \leq x_5 } \{ S | 4 x_5 + S \leq 210 \land 10 + x_5 \leq S \leq 5 x_5 - 10 \} \\ & = \max_{ 5 \leq x_5 } ( \min \{ 5 x_5 - 10 , 210 - 4 x_5 \} ) \end{aligned} \]

立刻得到\(x_5 = 24 , 25 , S = 110\),那么后面的选法就一定了,后面四个数一定是\(26 , 27 , 28 , 29\),只需要让\(x_1\)最大即可

\(x_5 = 24\)时,此时最优显然是\(20 , 21 , 22 , 23 , 24 , 26 , 27 , 28 , 29\),\(x_9 - x_1 = 9\).

Problem20

有一个\(n\)边形,其中有\(\binom{ n }{ 2 }\)条对角线,不存在三线交于一点的情况,问这些对角线将该\(n\)边形分成了多少个部分.\(n = 10\).

Solution20

平面图同样符合欧拉定理.

考虑内部一定多出来了\(\binom{ n }{ 4 }\)个点(任意四个点有且只有一种交法),每交一个点就会多出\(2\)条边,所以多出来了\(2 \binom{ n }{ 4 } + \frac{ n ( n - 3 ) }{ 2 }\)条边.

考虑内部的若干个部分一定是\(a_3\)个三角形,\(a_4\)个四边形,…,\(a_k\)\(k\)边形,总之我们发现:

\[ \begin{cases} \sum_{ j = 3 }^k ( j - 2 ) \pi a_j = ( n - 2 ) \pi + 2 \pi \binom{ n }{ 4 } \\ \sum_{ j = 3 }^k ja_j = n + 4 \binom{ n }{ 4 } + n ( n - 3 ) \end{cases} \]

两式得到:\(\sum_{ j = 3 }^k a_j = \frac{ ( n - 1 ) ( n - 2 ) }{ 2 } + \binom{ n }{ 4 }\).

\(n = 10\)的时候,答案为\(246\).

2024强基(部分)

Problem1

\(\sum_{ i = 1 }^n \lfloor \frac{ 19^i }{ 20 } \rfloor \bmod 7 , n = 2024\).

Solution1

\[ \begin{aligned} & \sum_{ i = 1 }^n \lfloor \frac{ 19^i }{ 20 } \rfloor \\ = & \sum_{ i = 1 }^n \lfloor \frac{ \sum_{ k = 0 }^i 20^k ( - 1 )^{ i - k } \binom{ i }{ k } }{ 20 } \rfloor \\ = & - \lfloor \frac{ n }{ 2 } \rfloor + \sum_{ i = 1 }^{ n } \frac{ 19^i - ( - 1 )^i }{ 20 } \\ = & - \lfloor \frac{ n }{ 2 } \rfloor + \frac{ \frac{ 19 }{ 18 } ( 19^n - 1 ) - ( \frac{ ( - 1 )^n - 1 }{ 2 } ) }{ 20 } \end{aligned} \]

带入\(n = 2024\)\(\bmod 7\),原式为:

\[ \equiv - 4 + \frac{ 5 }{ 4 } ( 1 - 5^n ) \equiv - 4 + 3 ( 1 - 5^n ) \]

注意到\(2024 \bmod 6 = 2\),原式\(\equiv - 4 - 9 \equiv 1\).

Problem3

求长度为\(n\)的排列个数,使得排列中\(\nexists i \in [ 1 , n - 1 ] , a_i = a_{ i + 1 } - 1\).\(n = 8\).

Solution3

一眼容斥,也就是每个长度为\(k\)的连续段的容斥系数应该是\(( - 1 )^{ k - 1 }\).那么设分成了\(w\)个段,总的容斥系数应该是\(( - 1 )^{ n - w }\),答案就是\(f_{ n ' } = \sum_{ w = 1 }^n ( - 1 )^{ n - w } w ! \binom{ n - 1 }{ w - 1 } = \sum_{ w = 0 }^{ n ' } ( - 1 )^{ n ' - w } \binom{ n ' }{ w } ( w + 1 ) ! = n ' ! \sum_{ w = 0 }^{ n ' } \frac{ ( - 1 )^w }{ w ! } ( n ' - w + 1 )\),此时已经能算出答案是\(16687\).

注意到这个形式和错排非常像,类似错排去凑递推公式.设\(g_n\)为错排数量,显然有\(f_{ n } = nf_{ n - 1 } + g_{ n }\),立刻算出答案是\(16687\).

Problem4

已知数列\(1 , 2 , 2 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , \cdots\),求其第\(n\)\(\bmod 5\)的值,\(n = 2024\).

Solution4

考虑第一个值为\(k\)的地方应该在哪里.显然\(a_{ \frac{ k ( k - 1 ) }{ 2 } + 1 } = k\).注意到\(a_{ 2081 } = 65\),所以\(a_n = 64\),其\(\bmod 5 = 4\).

Problem5

求四元组\(( a_1 , a_2 , a_3 , a_4 )\)的个数,满足\(a_1 , a_2 , a_3 , a_4 \in \{ 1 , 2 , 3 \}\),且\(10 < a_1 a_2 a_3 a_4 < 20\).

Solution5

排个序按照字典序开搜,只有三种可能:\(\{ 3 , 3 , 2 , 1 \} , \{ 3 , 2 , 2 , 1 \} , \{ 2 , 2 , 2 , 2 \}\),打乱顺序的话就有\(25\)种可能.

Problem8

\(\mathbb{ R }\)上方程\(x^2 - 13 \lfloor x \rfloor + 11 = 0\)的解的个数.

Solution8

首先注意到\(\lfloor x \rfloor = \frac{ x^2 + 11 }{ 13 }\),那么自然有方程组:

\[ \begin{cases} \frac{ x^2 + 11 }{ 13 } \leq x \\ x < \frac{ x^2 + 11 }{ 13 } + 1 \end{cases} \]

只需要解这个方程组即可.但是这个方程组很难搞.

先考虑\(x^2 \equiv 2 \pmod{ 13 }\)这个性质,由勒让德判别符号,算出该方程在整数范围内无解.

没办法,只能设\(x = \sqrt{ 2 + 13 k }\)的形式,带入有不等式:

\[ \begin{aligned} k - x + 1 & \leq 0 < k - x + 2 \\ 1 & \leq \sqrt{ 2 + 13 k } - k < 2 \\ \begin{cases} 0 < k^2 - 9 k + 2 \\ k^2 - 11 k - 1 \leq 0 \end{cases} \end{aligned} \]

冷静一下!注意到\(0 \leq k \leq 13\),又根据第一个不等式得知大部分\(k\)应该会很大,开始暴力枚举一下,合法的情况有:\(k = 0 , 9 , 10 , 11\),共有四个解.

Problem9

在一个体积为\(1\)的正方体内部找一个点,过这个点作平行于正方体的面的三个平面,这样整个正方体会被分为八个长方体,最小化这八个部分中,体积\(\leq \frac{ 1 }{ 8 }\)的长方体的个数.

Solution9

原本想考虑先横着切一刀,分为一个大部分一个小部分,大部分均分即可,小部分选一个很大的部分,剩下三个部分体积\(\leq \frac{ 1 }{ 8 }\).考虑设这个点是\(( x , x , h )\),那么必然有\(\begin{cases}( 1 - h ) x^2 > \frac{ 1 }{ 8 } \\ h ( 1 - x )^2 > \frac{ 1 }{ 8 }\end{cases}\),化简,只要\(8 > \frac{ 1 }{ x^2 } + \frac{ 1 }{ ( 1 - x )^2 }\)即可,这个根据基本不等式不可能满足,寄了.

但是四个肯定是好构造的,我们直接取\(( 0 . 5 , 0 . 5 , 0 . 1 )\)即可.那么是不是可以证明答案一定\(> 3\)呢?

考虑一个面上的四个长方体,其中较小的两个一定是相邻的.因此,最终体积\(\leq \frac{ 1 }{ 8 }\)的长方体肯定也是相连的.接下来证明三个的不行,只需要设这个点为\(( x , y , h ) , x , y , h \leq \frac{ 1 }{ 2 }\),然后证明\(8 > \frac{ 1 }{ xy } + \frac{ 1 }{ ( 1 - x ) ( 1 - y ) } , x , y \leq \frac{ 1 }{ 2 }\)这个不等式无解即可.

由基本不等式,\(\frac{ 1 }{ xy } + \frac{ 1 }{ ( 1 - x ) ( 1 - y ) } \geq 2 \sqrt{ \frac{ 1 }{ x ( 1 - x ) y ( 1 - y ) } } \geq 2 \sqrt{ 4 \times 4 } = 8\),不符题意.

这样就是最少是四个.

Problem11

\(S ( n )\)表示正整数\(n\)的十进制数码和,求满足\(S ( n ) \equiv S ( n + 1 ) \equiv 0 \pmod{ 5 }\)的最小的\(n\).

Solution11

显然必须发生进位,不妨设\(n = 10^k a + 10^k - 1\),\(a \ne 9 \pmod{ 10 }\),\(S ( n ) = S ( a ) + 9 k , S ( n + 1 ) = S ( a ) + 1\),

此时显然有\(9 k - 1 \equiv 0 \pmod{ 5 }\),\(k \equiv 4 \pmod{ 5 }\).\(n_{ \min } = 49999\).

Problem12

求满足以下条件的最大的正整数\(n\):十进制下每一位数字互不相同,且\(\forall m , 10^m \leq n , \lfloor \frac{ n }{ 10^m } \rfloor | n\).

Solution12

显然不可能是五位数及以上,而且如果是四位数的话最后一位必然是\(0\).

不妨设其为\(\overline{ ab }\),其中\(b = 10 c\),\(a\)\(b\)的因子,不妨枚举一下\(k = \frac{ b }{ a }\).注意到因为\(a\)中不能有\(0\),所以\(k \in \{ 2 , 4 , 5 , 8 \}\).取\(k = 2\)试出来\(3570\)是合法的,而且显然\(k \in \{ 4 , 5 , 8 \}\)的时候不可能有更大的答案了.

Problem20

\(a_1 = \sqrt{ 2 } , a_{ n + 1 } = \lfloor a_n \rfloor + \frac{ 1 }{ a_n - \lfloor a_n \rfloor }\),求\(\sum_{ k = 1 }^{ n } a_k , n = 2024\).

Solution20

这一看就是个环,设\(a_n = b_n + c_n \sqrt{ 2 }\).难点显然在下取整函数.

没想出太好的办法,选择使用数学归纳,注意到:

\[ \begin{cases} a_1 = 0 + \sqrt{ 2 } \\ a_2 = 2 + \sqrt{ 2 } \\ a_3 = 4 + \sqrt{ 2 } \\ \cdots \end{cases} \]

容易猜测\(b_n = 2 ( n - 1 ) , c_n = 1\).也就是\(a_n = 2 ( n - 1 ) + \sqrt{ 2 }\),数学归纳一下即可.

那么\(\sum_{ k = 1 }^n a_k = n ( n - 1 ) + n \sqrt{ 2 }\),带入\(n = 2024\)即可.

2022图选

Problem1

问能否将有限个单位正方形摆放在平面上使得:

  1. 任意两个正方形至多有一个顶点重合

  2. 每个正方形的每个顶点都与其他某个正方形的顶点重合

Solution1

这个题传到我这里题面已经丧失了,但反正理解起来就两种情况

  1. 边不能相交.此时不可能.考虑扫描线,从上到下扫一条线,然后第一次扫到的最右边的那个顶点显然不可能和其它的某个正方形顶点重合.

  2. 边可以相交,放到正十二边形的边上.

Problem2

\(\lfloor ( \frac{ 1 + \sqrt{ 5 } }{ 2 } )^{ 12 } \rfloor\).

Solution2

考虑\(( \frac{ 1 + \sqrt{ 5 } }{ 2 } )^3 = 2 + \sqrt{ 5 }\),\(\lfloor ( \frac{ 1 + \sqrt{ 5 } }{ 2 } )^{ 12 } \rfloor = 161 + \lfloor 72 \sqrt{ 5 } \rfloor = 321\).

也可以考虑类似斐波那契数列,取\(f_n = ( \frac{ 1 + \sqrt{ 5 } }{ 2 } )^{ n } + ( \frac{ 1 - \sqrt{ 5 } }{ 2 } )^{ n }\),其满足\(f_n = f_{ n - 1 } + f_{ n - 2 } , f_0 = 2 , f_1 = 1\),取\(f_{ 12 } - 1\)就是答案\(321\).

Problem3

对于一个加法乘法环,要求你利用:

  1. 乘法结合律、交换律、对加法的分配律、逆元.

  2. 加法结合律、逆元.

来证明加法的交换律.

Solution3

倒反天罡题.

注意到\(( a + 1 ) ( b + 1 ) = ( b + 1 ) ( a + 1 )\),所以\(a + b = b + a\).

Problem4

给你\(n\)个数集\(a_i\),其中\(| a_i | = i + 1\),要你选出\(n\)个两两不同的数字满足\(x_i \in a_i\),求最少方案数.

Solution4

考虑从小的往大了选,每次可能会删掉一个可选择的数字,所以是\(2^n\).

Problem5

Alice和Bob博弈.Alice先选一个数\(m\),然后Bob选一个数\(n ( n > m )\),并构造一个\(n\)个点的竞赛图.Alice如果能从中选出\(m\)个不同的点,满足不存在某个点\(x\)到这\(m\)个点都有出边,那么Alice赢,否则Bob赢.问是否有人存在必胜策略.

Solution5

一开始以为Alice肯定赢,结果被gank了.

其实Bob一定赢.为啥呢?考虑一对点合法的概率,应该是\(( 1 - \frac{ 1 }{ 2^m } )^{ n - 2 }\),因此期望为\(E = \binom{ n }{ m } ( 1 - \frac{ 1 }{ 2^m } )^{ n - 2 }\),只需\(n\)足够大的时候期望\(< 1\),则说明一定存在\(0\),也就是Bob总有必胜策略.

注意到只需证明\(\exists n\),\(\binom{ n }{ m } < ( \frac{ 2^m }{ 2^m - 1 } )^{ n - 2 }\),而\(\binom{ n }{ m } = \frac{ n^{ \underline{ m } } }{ m ! } < n^m\).下面证明\(\exists n , n^m < ( \frac{ 2^m }{ 2^m - 1 } )^{ n - 2 }\).

两边取\(\ln\),不妨假设\(n \geq 3\),有\(m \ln n < ( n - 2 ) \ln ( \frac{ 2^m }{ 2^m - 1 } ) , \frac{ m }{ \ln ( \frac{ 2^m }{ 2^m - 1 } ) } < \frac{ n - 2 }{ \ln n }\),\(\frac{ n - 2 }{ \ln n }\)显然在\(n \geq 3\)的时候单增,所以一定存在这么一个\(n\).

2023图选

Problem1

求单位正方形中能放下的最大的等边三角形的边长.

Solution1

首先肯定三角形有一个角卡在正方形的角上(不然可以平移过去),而且剩下两个角肯定卡在边上.

Problem2

求正整数拆分成有序的\(1 , 2\)序列的个数.

Solution2

显然为斐波那契数.

Problem3

定义\(*\)为集合\(G\)上的二元运算,已知:

  1. 满足结合律\(a ∗ b ∗ c = a ∗ ( b ∗ c )\).

  2. 存在左单位元\(e\),对任意\(a\)满足\(e ∗ a = a\).

  3. 对任意\(a\)存在左逆元\(b\),使\(b ∗ a = e\).

问:

  1. 左单位元是否也为右单位元.

  2. 左逆元是否也为右逆元.

Solution3

看(2),考虑设\(b\)\(a\)的左逆元,\(c\)\(b\)的左逆元,则\(cba = ce = a , ab = ceb = e\).

看(1),设\(b\)\(a\)的逆元,\(ea = aba = ae\),所以左单位元也是右单位元.

值得一提的是,这个题如果将条件(3)改为右逆元,则不一定构成群.

感性理解一下改前的题,如果存在左逆元的话,说明\(ab\)的时候\(b\)不能彻底损失信息,而观察\(ab = eab\)知道\(a\)也不能损失信息,于是应该是群.

但怎么构造反例呢?首先得造出来左单位元对吧.答案给了一种很聪明的构造方式:考虑运算\(( a_1 , b_1 ) ( a_2 , b_2 )\),想办法让其损失掉\(( a_1 , b_1 )\)中的信息(这样使其不存在左逆元,但可以构造出左幺元).注意到\(( a_1 , b_1 ) ( a_2 , b_2 ) = ( a_1 + a_2 , b_2 )\)即可,存在左幺元为\(( 0 , 0 )\),右逆元为\(( - a , 0 )\).

Problem4

\(f\)的定义域和值域都是正整数并且\(f ( xy ) = f ( x ) + f ( y ) - 1\),求:

  1. 是否存在这样的函数.

  2. 是否存在无数个这样的函数.

  3. 是否存在严格递增的函数.

Solution4

\(g ( x ) = f ( x ) - 1\),则\(g ( xy ) = g ( x ) + g ( y )\).

对于(1),取\(g ( x ) = 0 , f ( x ) = 1\)即可.

对于(2),考虑\(g ( p^k ) = kg ( p )\),只需要让\(g ( p )\)取不同的值即可.

对于(3),考虑\(g ( 2^a ) = ag ( 2 )\),\(g ( 3^b ) = bg ( 3 )\).

考虑构造\(a , b\),使得\(2^a < 3^b\)但是\(ag ( 2 ) \geq bg ( 3 )\).不妨取\(a = \lceil \frac{ bg ( 3 ) }{ g ( 2 ) } \rceil\),那么必定有:

$$ \[\begin{aligned} 2^{ \lceil \frac{ bg ( 3 ) }{ g ( 2 ) } \rceil } & < 3^b \\ \lceil \frac{ bg ( 3 ) }{ g ( 2 ) } \rceil & < b \log_2 3 \\ \frac{ bg ( 3 ) }{ g ( 2 ) } + \Delta & \leq b \log_2 3 \\ \end{aligned}\]

$$

于是如果存在,必定需要\(\frac{ g ( p_1 ) }{ g ( p_2 ) } \geq \log_{ p_2 } p_1 \land \frac{ g ( p_2 ) }{ g ( p_1 ) } \geq \log_{ p_1 } p_2\),也就是\(\frac{ g ( p_2 ) }{ g ( p_1 ) } = \log_{ p_1 } p_2\).但是左边是有理数右边是无理数,不可能.

Problem5

对于任意\(2 n - 1\)个正整数(可重复),问其中是否一定有\(n\)个数的和能被\(n\)整除,这题\(n = 50\).

Solution5

考虑当\(n\)是合数的时候,设\(n = pq\),则可以将其拆成\(q - 1\)组每组\(2 p\)个数以及一组\(2 p - 1\)个数,因此只需要这些都可以找到\(p\)个数使得其是\(p\)的倍数,组合起来就行了.

只需要解决\(n\)是质数的情况.

感觉场上的最优解应该是解决\(n = 2\)\(n = 5\)的情况然后拼成\(n = 50\).

\(n = 2\)的时候显然是对的.

这谁想得到啊?

考虑反证,如果不存在的话,显然\(S = \sum_{ } ( x_{ p_1 } + x_{ p_2 } + \cdots + x_{ p_n } )^{ p - 1 } \equiv \binom{ 2 n - 1 }{ n } \equiv 1 \pmod{ n }\).

但是考虑左边那个多项式的每一项,形如\(c \prod_{ i = 1 }^k x_{ p_i }^{ e_i }\).注意到\(c\)一定是\(\binom{ 2 n - 1 - k }{ n - k }\)的倍数,而后者\(\bmod n\)\(0\).

这玩意到底咋想到的?

不过其实也合理,因为\(1\)并不是对称的,而左边是个对称式子,某个\(x\)增大也无所谓,这意味着左边应该是为\(0\)的,我们要做的就是去证明它是\(0\).

2024图选

Problem1

问在双曲线\(xy = 1\)上有一个三个点都在上面的等边三角形,求其边长.

Solution1

不会做,取个特殊值知道答案应该是\([ 2 \sqrt{ 6 } , + \infty )\).

Problem2

我们称”能表示为两个数的平方和”的数是好的,求证:

  1. 如果\(n , m\)都是好的,那么\(nm\)是好的.

  2. \(2024\)不是好的.

Solution2

如果\(n = a^2 + b^2 , m = c^2 + d^2\),那么\(nm = a^2 c^2 + a^2 d^2 + b^2 c^2 + b^2 d^2 = ( ac - bd )^2 + ( ad + bc )^2\).

\(2024 = 2^3 \times 11 \times 23\),使用反证法,不妨设其可以被表示为\(a^2 + b^2\).

讨论一下:如果\(a , b\)均为奇数,那么\(a^2 + b^2 \equiv 2 \pmod{ 8 }\),不符题意.

于是\(a , b\)应该均为偶数,那么就有\(a '^2 + b '^2 = 506\).简单枚举一下就知道不存在.

当然这个题是个数竞结论,可以直接套用结论.

Problem3

对于集合\(G\),\(e \in G\),定义域为\(G\)的函数\(f\)满足以下性质:

  1. \(e \in G\),但\(e\)不在\(f\)的值域中.

  2. \(G\)关于\(f\)封闭.

  3. \(\exists A \subseteq G\),\(e \in A\)\(A\)\(f\)封闭,则\(A = G\).

\(G\)上定义二元运算\(\circ\),满足\(ae = a , af ( b ) = f ( ab )\).

求证:

  1. 存在幺元.

  2. 运算满足交换律.

  3. 运算满足结合律.

Solution3

只需要证明运算满足交换律即可.

考虑性质(3),我们不妨先往\(A\)里面扔个\(e\),此时\(A\)一定不满足条件.我们不断从\(A\)中选出一个元素\(w\)满足\(f ( w ) \notin A\),并把\(A : = A \cup \{ f ( w ) \}\).不断做这个过程显然最后会得到\(G\),这意味着任何一个元素\(a\)可以写成\(f ( f ( f \cdots f ( e ) ) )\)的形式.

不妨将\(f\)函数嵌套\(k\)次记作\(f^{ ( k ) }\),那么我们要证明的是\(a = f^{ ( A ) } ( e ) , b = f^{ ( B ) } ( e )\),\(ab = ba\).

考虑\(ab = f^{ ( A ) } ( e ) f^{ ( B ) } ( e ) = f^{ ( B ) } ( f^{ ( A ) } ( e ) e ) = f^{ ( A + B ) } ( e )\),因此证毕.

Problem4

给出一个具体函数满足:

  1. \(f ( x + y ) = f ( x ) + f ( y ) + xy\).

  2. \(f ( xy ) = f ( x ) f ( y ) + f ( x - 1 ) f ( y - 1 )\).

Solution4

先注意到\(f ( 0 ) = 0 , f ( 1 ) = 1\).

\(x\)为主元两边求导,立刻得到\(f ' ( x + y ) = f ' ( x ) + y\),因此\(f ' ( x )\)是斜率为\(1\)的一次函数,立刻得到\(f ( x ) = \frac{ x^2 }{ 2 } + \frac{ x }{ 2 }\).

Problem5

对于\(r = \sqrt{ 2 }\),是否存在正整数\(p\)和整数\(q\)满足\(| pr - q | < \frac{ 1 }{ 2024 }\)\(p < 2024\).

Solution5

考虑取\(0 , \sqrt{ 2 } , 2 \sqrt{ 2 } , 3 \sqrt{ 2 } , \cdots 2023 \sqrt{ 2 }\)的小数部分,记作\(a_0 , a_1 , \cdots a_{ 2023 }\).

由鸽笼原理,一定存在两个数\(0 \leq x < y \leq 2023\)满足\(| a_x - a_y | < \frac{ 1 }{ 2024 }\),于是证毕.

2019茶选

Problem1

在一个数轴上,你站在\(0\)点,并按照如下算法寻找\(x ( x > 0 )\)点处的牛:

1
2
3
4
5
6
7
curpos = 0;
curdir = LEFT;
step = 1;
while (没有找到牛) {
沿着 curdir 方向,走 step 单位距离,如果找到牛就停止;
如果没有找到牛,回到原点并将 curdir 设为反方向,step = step * 2;
}

大约至少需要多少步才能找到牛?

A. \(3 x\) B. \(5 x\) C. \(7 x\) D. \(9 x\) E. 以上答案都不对.

Solution1

考虑找到牛的时候\(step\)为多少,应该为\(2^{ 2 k }\),其中\(k\)满足\(2^{ 2 k } \geq x > 2^{ 2 ( k - 1 ) }\).此时走的步数应该是\(ans = 2 \sum_{ i = 0 }^{ 2 k - 1 } 2^i + x = 2^{ 2 k + 1 } - 1 + x\)步.而\(x \leq 2^{ 2 k } < 4 x\),所以\(ans < 9 x - 1\).

Problem2

给定\(10\)个实数变量\(x_1 , \cdots , x_{ 10 }\),满足它们均\(\geq 1\)且两两不同.你要寻找一组\(\{ x \}\)和一个实数\(a\),使得存在尽可能多组\(\langle b \rangle , b_i = \pm 1\),满足\(\sum_{ i = 1 }^{ 10 } b_i x_i \in ( a , a + 2 )\).

最多存在多少组\(\langle b \rangle\)?

A. \(512\) B. \(252\) C. \(504\) D. \(684\) E.以上答案都不对.

Solution2

不妨猜测\(x\)全取\(1\)最优,此时的答案是\(\binom{ 10 }{ 5 } = 252\).

能不能严格证明这个事情呢?我们不妨注意到一个事情:由于\(x \geq 1\),所以如果存在两组\(\langle b \rangle\),使得\(A\)组中选择取\(+ 1\)恰好是\(B\)组的子集,那么\(S_A \leq S_B - 2\),不可能同时满足条件.

如果我们能选出若干个互不相交的集合呢?那我们显然可以让\(x\)尽可能接近\(1\),这样就是满足条件的.所以问题变为对于一个大小为\(10\)的集合,要在其中挑选出尽可能多的子集使得这些集合两两之间没有包含关系,有结论说这个东西取\(\binom{ 10 }{ 5 }\)最优,即Sperner定理.其实也就是Dilworth定理的特例.

Problem3

给定无向图\(G = ( V , E )\),我们称一个图是好的,如果:

  1. 每个点的度数均为\(d\).

  2. 任何一个大小不超过\(\frac{ | V | }{ 2 }\)的联通集合\(S\),其邻居(不属于\(S\)但和\(S\)中的某个点存在直接相连的边)的大小\(\geq \frac{ 5 }{ 4 } | S |\).

求证:好的图中任意两个点\(u , v\)之间的最短路径长度\(dis ( u , v ) = O ( \log | V | )\).

Solution3

考虑以\(u\)为起点一点一点往外扩张,这样一直扩张到\(\frac{ | V | }{ 2 } + 1\)时,集合中每个点到\(u\)的距离不超过\(O ( \log | V | )\).

然后以\(v\)做同样的事,由于这两个集合大小之和大于\(| V |\),说明一定有交,且存在一条路径长度为\(O ( \log | V | )\)的路径,最短路径肯定比这个还短.

Problem4

给你两个完全相同的鸡蛋和一个\(n = 100\)层的高楼,你每次可以将鸡蛋从某一层楼掉下去.问你最少用多少次操作才能测出能让鸡蛋摔碎的最低楼层.

Solution4

经典信息论题.考虑构造一棵左倾的决策树,从根到任何一个叶子节点最多向右走两步,并且有\(101\)个叶子节点(因为还有可能从最高层掉下去不碎).

\(f_{ i , 1 / 2 }\)表示一棵有\(i\)个叶子的树,最多向右走\(1 / 2\)步,深度最低为多少.显然\(f_{ i , 1 } = i - 1\).

不妨设最后的最大深度为\(k\),需要满足\(1 + \sum_{ i = 1 }^k i = 1 + \frac{ k ( k + 1 ) }{ 2 } \geq 101 , k ( k + 1 ) \geq 200\),\(k_{ \min } = 14\).

Problem5

\(n\)个人要进行一场游戏.游戏设计者准备了\(n\)张卡片,正面分别写着\(n\)个人的名字,背面写了\([ 1 , n ]\)\(n\)个不同的数字.所有卡片都背面朝上放置在一个房间里.

当设计者准备完成后,\(n\)个人可以经过充分的讨论,并依次进入房间,一张一张地翻开\(\lfloor \frac{ n }{ 2 } \rfloor\)张卡片,并找到写有自己名字的卡片.当一个人操作结束后,他无法与其他人交流直到游戏结束.

只有所有\(n\)个人全部找到了写有自己名字的卡片,他们才能获胜.请问:是否存在一种策略,使得无论设计者怎样安排名字和数字的对应,他们均拥有超过\(0 . 1\)的胜率.

Solution5

这题真理元素讲过.做法是每个人先翻开自己编号的位置的卡片,假设卡片上数字是\(a\),如果\(a\)就是自己的编号就下班;反之接下来翻开\(a\)位置的卡片.为了防止设计者刻意安排,可以提前自己随机一个数字的映射.这样失败当且仅当场上存在一个长度大于\(\frac{ n }{ 2 }\)的环.

考虑总方案数是\(n !\).不妨枚举这个环的长度为\(K\),则存在一个长度\(= K > \frac{ n }{ 2 }\)的环的方案数是\(\binom{ n }{ K } ( K - 1 ) ! ( n - K ) ! = \frac{ n ! }{ K }\).所以此时的概率为\(\frac{ 1 }{ K }\).

那么失败的概率就是\(H_n - H_{ \frac{ n }{ 2 } } \approx \ln 2\).

2022茶选

Problem1

证明弱对偶定理,差不多就是:

提一个问题:最大化\(z = 5 x_1 + 8 x_2 + 4 x_3\),其中:

  1. \(x_1 , x_2 , x_3 \geq 0\)

  2. \(\frac{ 1 }{ 2 } x_1 + 5 x_2 + 9 x_3 \leq 3\)

  3. \(4 x_1 + 7 x_2 + 3 x_3 \leq 6\)

再提一个问题:最小化\(v = 3 y_1 + 6 y_2\),其中:

  1. \(y_1 , y_2 \geq 0\)

  2. \(\frac{ 1 }{ 2 } y_1 + 4 y_2 \geq 5\)

  3. \(5 y_1 + 7 y_2 \geq 8\)

  4. \(9 y_1 + 3 y_2 \geq 4\)

现在请你证明:\(z \leq v\).

Solution1

下面乘一下配一下上面的系数,自然得证.

写成矩阵形式,设\(X = \begin{bmatrix}x_1 & x_2 & x_3\end{bmatrix} , A = \begin{bmatrix}0 . 5 & 4 \\ 5 & 7 \\ 9 & 3\end{bmatrix} , Y = \begin{bmatrix}y_1 \\ y_2\end{bmatrix}\),不难发现\(z \leq XAY \leq v\).

Problem2

半径为\(R\)的球里放点,要求两两之间距离不能小于\(1\),证明至多放\(( 2 R + 1 )^3\)个.

Solution2

要求两两距离不能小于\(1\)等价于往其中放半径为\(0 . 5\)的球,这种球体积为\(\frac{ 4 }{ 3 } \pi \frac{ 1 }{ 8 }\).然后原球要扩大一圈,所以原球体积变为\(\frac{ 4 }{ 3 } \pi ( R + 0 . 5 )^3\).除一下得到答案.

Problem3

一个无限长的数轴上有一辆车,它的初始坐标是个未知的整数\(n\).

它每秒以\(v\)的速度行驶,其中\(v\)是个未知的整数(可以为负).

现在你每秒能进行一次这样的询问:询问整数\(x\),你会得知此时车的坐标是否是\(x\)(Yes or No).

请给出一个策略,使得在有限的时间里可以获得一次Yes回答.

Solution3

\(t\)秒的时候车应该在\(n + vt\)处.由于我们知道现在是第几秒,枚举\(n , v\)然后不断check即可.这个是经典的证明\(\mathbb{ Z }^2\)\(\mathbb{ N }\)等势.按照\(| n | + | v |\)排序然后一个一个遍历.

Problem4

对满足\(\forall i , | i - p_i | \leq 1\)的排列计数.

Solution4

简单题,设\(f_n\)为答案,考虑\(p_n\)取什么.

\(p_n = n\)时,方案数为\(f_{ n - 1 }\).

\(p_n = n - 1\)时,\(p_{ n - 1 } = n\),方案数为\(f_{ n - 2 }\).

于是,\(f_1 = 1 , f_2 = 2\),\(f_n = f_{ n - 1 } + f_{ n - 2 }\).

Problem5

你有一个\(n \times n\)的棋盘.初始所有格子都是白色的.

你可以选择\(k\)个格子染黑.此后,如果某个格子四联通的两个格子都是黑色,它自己也会变成黑色.

你要让所有格子最终都变黑.试证明:你一开始选择染黑的格子数\(k\)最小值是\(n\).

Solution5

数学归纳了半天,屁用没用.

注意到在扩张过程中,黑色格子的周长不会变大,所以至少是\(\frac{ 4 n }{ 4 } = n\)个.

Problem6

\(F = \{ S_1 , S_2 , S_3 , . . . , S_{ | F | } \}\),定义一个集合\(T\)能被\(F\) shattered为:\(T\)的任意一个子集(包括它自己和空集),都可以由\(T \cap S_{ i_1 } \cap S_{ i_2 } . . .\)表示.其中\(S_{ i_j }\)\(F\)中的集合(就是说每个子集都等于\(T\)和某些\(F\)内集合的交.)

定义一个\(F\)的”VC-Dimension”是,能被他shattered的集合\(T\)的大小的最大值.

\(F\)中的集合们只会包含某\(n\)种不同的元素.证明:

  1. 任意一个\(F\)能shattered的\(T\)至少有\(| F |\)个.

  2. 对于一个VC-Dimension的大小为\(k\)\(F\),其\(| F | \leq \sum_{ i = 0 }^k \binom{ n }{ i }\).

Solution6

显然只要证明了(1),那么(2)是显然的.

那么怎么证明(1)呢?考虑数学归纳.先考虑拎出所有的\(S\),满足\(S , S \cup \{ x \} \in F\),然后将这些\(S \cap \{ x \}\)拎出来,假设有\(t\)个,左边删去\(x\)后再进行数学归纳得到\(| F | - t\)个集合(由于拎出了所有满足上述条件的集合,不可能删出重复的集合),右边也有\(t\)个集合,在这\(t\)个集合添上\(x\)这个元素即可.

\(t = 0\)怎么办?我们自己造一组满足条件的就行了.每次加入一个集合:如果这个集合存在一个前面所有的集合都没有的元素,那么显然把这个元素拎出来就行了.又注意到如果一个元素全局都有的话,那么很废物对吧,我们把这个元素删掉继续做.此时不妨设新加入的集合为\(S\)(选取最大的那个集合为新加入的),我们在前面的集合中找到一个与\(S\)有交的集合\(T\),根据上面的预处理,此集合显然存在.选出一个\(x \in S \setminus T\),不妨设\(S = S ' \cup \{ x \}\),令\(T ' = S ' \cap T\),然后用\(T '\)代替原本的\(T\)即可.

2023茶选

Problem1

\(p ( x )\)表示\(x\)的最大质因子,求所有\(( x , y , z )\)使得:

  1. \(x < y < z\)\(x + z = 2 y\).

  2. \(p ( xyz ) \leq 3\).

Solution1

不妨令\(g = \gcd ( x , y , z )\),令\(x ' = \frac{ x }{ g }\),则只需要解:\(x ' + z ' = 2 y '\).

我们有\(y - x = z - y\),则\(\gcd ( y ' , x ' ) = \gcd ( y ' , y ' - x ' ) = \gcd ( y ' , z ' ) = 1\),用这个能解决不少讨论.

此时有以下两种情况:

  1. \(2 \nmid x ' , 2 \nmid z '\).

  2. \(2 \mid x ' , 2 \mid z ' , 2 \nmid y '\).

先看(1),设\(x ' = 3^a , z ' = 3^c , y ' = 2^b\).方程变为\(3^a ( 1 + 3^{ c - a } ) = 2^{ b + 1 }\),一定有\(a = 0\),只需解\(1 + 3^{ c } = 2^{ b + 1 }\).

\(b \leq 2\)的时候,经检验有\(\begin{cases}c = 0 \\ b = 0\end{cases}\)(舍)和\(\begin{cases}c = 1 \\ b = 1\end{cases}\)两组解.

\(b \geq 3\)的时候,注意到\(3^{ c } \equiv - 1 \pmod{ 4 }\),所以\(c\)是偶数.又注意到\(3^{ c } \equiv - 1 \pmod{ 8 }\),但是奇数的平方\(\bmod 8\)应该是\(1\),不符.

再看(2),设\(x ' = 2^d , z ' = 2^e , y ' = 3^b\).

\(e = 1\)时,显然不符.

\(d = 1 , e > 1\)时,要解\(2^{ e - 1 } + 1 = 3^{ b }\).当\(e = 2\)的时候有一组解\(\begin{cases}e = 2 \\ b = 1\end{cases}\).当\(e \geq 3\)的时候,有\(3^b \equiv 1 \pmod{ 4 }\),说明\(b\)是偶数.

那必然有\(2^{ e - 1 } = 3^b - 1 = ( 3^{ \frac{ b }{ 2 } } + 1 ) ( 3^{ \frac{ b }{ 2 } } - 1 )\).令\(t = 3^{ \frac{ b }{ 2 } } - 1\),则\(2^{ e - 1 } = t ( t + 2 )\).则要么\(t = 2\),要么\(t + 2 = 2\).解出\(b - 2\),此时有\(\begin{cases}e = 4 \\ b = 2\end{cases}\).

综上,解出来的解有\(\begin{cases}x ' = 2 \\ y ' = 3 \\ z ' = 4\end{cases} , \begin{cases}x ' = 1 \\ y ' = 2 \\ z ' = 3\end{cases} , \begin{cases}x ' = 2 \\ y ' = 9 \\ z ' = 16\end{cases}\).

但其实有更厉害一点的做法,考虑升幂引理.

先看方程\(2^x + 1 = 3^y\),考虑两边\(\bmod 3\)知道\(x\)是奇数,于是\(v_3 ( 2^x + 1 ) = v_3 ( 3 ) + v_3 ( x ) = y , 3^{ y - 1 } | x , x \geq 3^{ y - 1 }\),用这个放缩一下就行.

再看方程\(2^x = 3^y + 1\).仍然考虑两边\(\bmod 4\),知道\(y\)是奇数.\(x = v_2 ( 3^y + 1 ) = v_2 ( 3 + 1 ) = 2\),当场下班.

Problem2

给定两个随机分布:

\(x ∼ D_1\):从\({ 0 , 1 , … , p − 1 }\)中等概率随机一个\(y\),令\(x = y   \bmod  { 2^k }\).

\(x ∼ D_1\):从\({ 0 , 1 , … , 2^k - 1 }\)中等概率随机一个\(y\),令\(x = y\).

定义二者的统计距离为:\(SD ( D_1 , D_2 ) = \frac{ 1 }{ 2 } \sum_{ i = 0 }^{ 2^k - 1 } | P_{ D_1 } ( x = i ) - P_{ D_2 } ( x = i ) |\).

求证:\(SD ( D_1 , D_2 ) ≤ \frac{ 2^k }{ 4 p }\).

Solution2

\(w = p \bmod{ 2^k }\).则\(SD ( D_1 , D_2 ) = \frac{ w }{ 2 } ( P_{ D_1 } ( x = 0 ) - P_{ D_2 } ( x = 0 ) ) + \frac{ 2^k - w }{ 2 } ( P_{ D_2 } ( x = w ) - P_{ D_1 } ( x = w ) )\).

\(k = \lfloor \frac{ p }{ 2^k } \rfloor = \frac{ p - w }{ 2^k }\)不难发现\(P_{ D_1 } ( x = 0 ) = \frac{ k + 1 }{ p } , P_{ D_1 } ( x = w ) = \frac{ k }{ p }\).

\(SD ( D_1 , D_2 ) = \frac{ w }{ 2 } ( \frac{ p - w + 2^k }{ p 2^k } - \frac{ 1 }{ 2^k } ) + \frac{ 2^k - w }{ 2 } ( \frac{ 1 }{ 2^k } - \frac{ p - w }{ p 2^k } ) = \frac{ 1 }{ 2^{ k + 1 } } ( \frac{ w ( 2^k - w ) }{ p } + \frac{ w ( 2^k - w ) }{ p } ) = \frac{ w ( 2^k - w ) }{ p 2^k }\).

要证明\(\frac{ w ( 2^k - w ) }{ p 2^k } \leq \frac{ 2^k }{ 4 p } \Leftrightarrow w ( 2^k - w ) \leq ( 2^{ k - 1 } )^2\).由基本不等式显然.

Problem3

给你一个单增函数\(f\),满足定义域和值域都是\(\mathbb{ N }\),并且\(f ( f ( n ) ) = 3 n\),求\(f ( 2023 )\).

Solution3

首先我们不妨先试一下\(f ( f ( 1 ) ) = 3\).由于\(f ( 1 ) \geq 2\),且\(f ( 1 ) \ne 3\),所以\(f ( 1 ) = 2 , f ( 2 ) = 3\).

考虑\(f ( 3 n )\),必然存在一个\(n < m < 3 n\),使得\(f ( n ) = m , f ( m ) = 3 n\).

用这个找前几项,发现规律是把\(n\)写成三进制形式,如果首位是\(1\)就变成\(2\),首位是\(2\)就改为\(1\)再在后面加个\(0\).容易验证这是合法的\(f\)\(f ( 2023 ) = 3882\).

但问题没有解决,需要证明它是唯一的\(f\).

考虑数学归纳假设现在\(f ( x ) , x \in [ 1 , 3 k ]\)都确定了.

注意到如果\(f ( n ) = m , f ( m ) = 3 n , f ( 3 n ) = 3 m , f ( 3 m ) = 9 n\).所以如果\(f ( n ) = m\),我们实际上有\(f ( 3^k m ) = 3^{ k + 1 } n , f ( 3^k n ) = 3^k m\).数学归纳即可以证明\(f ( 3 k + 3 )\)一定是确定的.

接下来要证明\(f ( 3 k + 1 )\)\(f ( 3 k + 2 )\)一定是确定的.

手玩发现确定它们的方式有两种:

  1. \(f ( 3 k ) + 3 = f ( 3 k + 3 )\).

  2. \(\exists n , f ( n ) = 3 k + w ( w \in \{ 1 , 2 \} )\).

如果我们能说明至少可以取二者其一就行.

由归纳假设,不难发现当\(k\)在三进制下首位如果是\(2\),则一定满足(2).

\(k\)在三进制下首位是\(1\),则一定满足(1).

于是证毕.

Problem4

对于一个\(n \times n\)的包含\([ 1 , n^2 ]\)各一个的矩阵(下称为排列矩阵),定义一次操作为:将每行都任意重排;或将每列都任意重排.求证:

  1. 如果一个排列矩阵满足每行恰有模\(n\)\([ 0 , n - 1 ]\)的数各一个,则称它是好的.求证:好的矩阵可以通过两次操作变为一个满足第\(i\)行第\(j\)列为\(( i - 1 ) n + j\)的矩阵(不妨称为有序矩阵).

  2. 求证:任意排列矩阵可以通过一次操作变为好的.

Solution4

这题原题啊,AGC037D.

(1)显然,注意到有序矩阵的每列\(\bmod n\)不相同,可以先将每行按照\(\bmod n\)排序,再每列排序即可.

(2)的话我们考虑一次列操作.将\(\bmod n\)不同的数字分类,然后建一个二分图:左侧的点是数字分的类,右侧的点代表行,注意到这个东西是\(n\)正则二分图,根据Hall定理一定存在完美匹配.

Problem5

\(n ( \geq 2 )\)个硬币排成一个环.你被蒙上眼睛,你每次操作可以选择一个硬币的子集并将它们翻面.但是你每次操作之后,硬币的位置将会任意旋转(即变为原来的一个循环同构).如果你存在一种策略,使得对于任意初始局面和任意中途的旋转方案,有限步内一定可以令存在一个时刻所有硬币正面朝上,则称\(n\)是好的.求证:

  1. \(4\)是好的.

  2. 如果\(n\)是奇数,那么\(n\)不是好的.

  3. 求出所有好的\(n\).

Solution5

首先可以证明\(2\)是好的.

这么干:如果一开始都正面向上就赢了.不然第一步全翻,这样如果一开始是反面向上也赢了.下一次随便翻一个,再下一次全翻,这样四次中至少赢了一次.

从上面的观察可以发现啊,我们场上一定会进行若干次全局翻转操作,并且最后一次一定是一个全局翻转,不然我们每次只需要让一个位置保持不被翻到就输麻了.

转全局太复杂了,考虑转操作,问题转化为现在你要排若干个操作,使得它们任意旋转后,仍然可以保证前缀异或和取到了所有的情况.注意到不妨让第一轮轮空,此时最少需要\(2^n\)步.

不妨每进行一次非全局操作就全局翻一次,这样\(0\)\(1\)就没区别了.

先考虑全局异或和为偶数的时候:

注意到\(1100\)来一个\(1010\)之后啥也不变,但是\(1010\)来一个\(1010\)一定赢了.所以上来先来一个\(1010\),如果赢了就下班,没赢就来个\(1100\),这样\(1100\)要么下班,要么变成了\(1010\),再重复上面的操作.

如果全局异或和为奇数,那就随便异或一下,再按照偶数的做.

总的来说,先按照偶数的操作,不会改变全局异或和.如果没结束说明是奇数,变一下重复以上操作.

总结一下的话就是操作序列是:\(0000 , 1111 , 1010 , 1111 , 1100 , 1111 , 1010 , 1111 , 1000 , 1111 , 1010 , 1111 , 1100 , 1111 , 1010 , 1111\).

上面的构造启发我们手玩一下\(n = 3\),注意到此时的问题在于\(100\)\(110\),都很完蛋.

我们先考虑弱化版问题:就是我们摘下了眼罩,但是选择策略在旋转之前.如果这种情况我们都做不到那蒙上眼更做不到了对吧.

我们不妨将所有的状态分为两类:一类叫做成功状态,即如果一个状态是成功的,那它可以通过有限次操作得到全\(0\);另一类叫做失败状态,即只要初值是它,一定有一种旋转的方式使得一直得不到全\(0\).

我们来仔细看一下这两个状态应该是啥样的:

对于一个成功状态,应该有一个固定的选择翻面策略,使得它可以在有限次操作内达到另一个更接近全\(0\)的成功状态.我们不妨令一个成功状态的度为\(d\)表示它可以经过\(d\)步到达全\(0\),显然全\(1\)\(d = 1\),\(n = 4\)的时候,\(1010\)\(d = 2\),因为其可以通过一次操作转化为全\(1\),\(1100\)\(d = 3\),因为其可以用一次操作转化为\(1010\).

仔细思考上面的过程,也就意味着:任何一个成功状态的所有出边,必然要指向\(d\)比它更小的成功状态.

对于一个失败状态,应该有一个任意的选择旋转策略,使得它怎么翻都还是失败状态.

这个定义还是挺粗糙的,我们先看失败状态吧.

显然\(n = 3\)的时候,\(\{ 110 , 100 \}\)就是失败状态.

而对于\(n\)取任意来说,一定得存在一个\(d = 2\)的成功状态.一个显然的\(d = 2\)的成功状态要满足的条件是,假设它是\(a\),那么存在一个数\(b\),使得\(a \oplus b\)是全\(1\)或者全\(0\).既然\(a\)\(b\)旋转后只有两种结果,那么\(b\)的循环节必定为\(2\),也就是\(b\)一定要是\(101 \cdots 010\)这样的,于是\(n\)是奇数的时候一定不符合,这就证明了(2).

同理寻找\(d = 3\)的成功状态,现在我们已知的四种成功状态是\(111 \cdots 111\),\(000 \cdots 000\),\(101 \cdots 010\),\(010 \cdots 101\),所以考虑构造一个循环节长度为\(4\)的串,使得异或完它是这上面四种其一,注意到\(1100 \cdots 1100\)就是一个合法的串.

做到这里发现上面那个东西完全无法扩展啊.更要命的是我们现在还是睁着眼的,甚至没证明闭着眼是一样的.

找qyc讨论了一下得到了另一个思路的做法:

先证明\(n = 2^k\)一定是好的.考虑数学归纳,不妨这么干:构造一个长度为\(2^{ k - 1 }\)的串\(b\),使得其\(b_i = a_i \oplus a_{ i + 2^{ k - 1 } }\).然后由数学归纳,可以造出\(b\)\(0\)的情况.而如果\(b\)\(0\),则原串一定存在长为\(2^{ k - 1 }\)的循环节,并且消除循环节的过程不会改变\(b\)的值,仍然是数学归纳下去就做完了.

不然,设\(n = 2^k m\),

模仿上面的过程,不妨使用数学归纳证明其不成立.仍然是构造\(b\)数组,由于\(b\)数组都不可能全\(0\),显然也不可能成立.

这个能不能顺便证明\(n\)是奇数一定不行呢?还真可以.

考虑你现在要卡掉蒙眼的对手的构造,你选出一个位置来备用,剩下了\(n - 1\)个位置.

接下来无论对手怎么出,你都可以通过乱搞这个备用的位置,来保证前\(n - 1\)个位置的异或值为\(1\).因此对手一定不能完成任务.

2024茶选

Problem1

连续扔一枚硬币,连续扔出三个正面则停止.假设硬币扔出正面反面的概率都为\(50 \%\),求期望停止时间.

Solution1

简单题,设\(f_0 , f_1 , f_2 , f_3\),然后有\(\begin{cases}f_3 = 0 \\ f_2 = \frac{ 1 }{ 2 } f_3 + \frac{ 1 }{ 2 } f_0 + 1 \\ f_1 = \frac{ 1 }{ 2 } f_2 + \frac{ 1 }{ 2 } f_0 + 1 \\ f_0 = \frac{ 1 }{ 2 } f_1 + \frac{ 1 }{ 2 } f_0 + 1\end{cases}\),算出\(f_0 = 14\).

Problem2

Alice和Bob玩游戏,一共有三轮.每一轮中,Alice选择一个实数,Bob将这个数填到下式中任意一个框中.进行三轮后,如果下式方程有三个不同的整数解则Alice赢,反之Bob赢,求是否有必胜策略.

\[ x^3 + □ x^2 + □ x + □ = 0 \]

Solution2

纯粹的构造.

简单分析一下,不妨设三个解为\(- A , - B , - C\),方程应该可以写作\(( x + A ) ( x + B ) ( x + C ) = 0\).

拆开有\(x^3 + ( A + B + C ) x^2 + ( AB + AC + BC ) x + ABC = 0\).

这么对称,不妨猜一手Alice先选择\(0\),讨论一下:

  1. Bob令\(ABC = 0\).不妨令\(C = 0\).

此时方程变为\(x^2 + ( A + B ) x + AB = 0\).直接秒了,随便选一个数就行(比如选\(3\),如果Bob令\(AB = 3\),就再选\(4\);如果令\(A + B = 3\),就再选\(2\))

  1. Bob令\(A + B + C = 0 , C = - A - B\).

不妨令\(C ' = - C , D = AB\),则\(AB + AC + BC = D - C '^2 , ABC = DC '\).

接下来Alice要选择一个数字\(k\),如果Bob又令\(D - C '^2 = k\),发现在此时如果\(k\)是一个负的完全平方数,并且Alice接下来选择\(0\),当场就下班了.

所以不妨直接让\(k = - n^2\),然后看当\(DC ' = - n^2\)的时候如何去解.此时有\(AB ( A + B ) = n^2\).不难发现取勾股数就很优秀.

总结一下就是,Alice第二步选择\(- 3^2 \times 4^2 \times 5^2\),这样就赢了.

  1. Bob令\(AB + AC + BC = 0 , C = - \frac{ AB }{ A + B }\).

我是构造不出来了.但我可以抄答案,答案是你接下来选择\(6^2 \times 7^3\),两种情况如下:

\[ \begin{aligned} ( x + 2 \times 7 ) ( x - 3 \times 7 ) ( x - 6 \times 7 ) & = 0 \\ ( x - 2 \times 6^2 \times 7^2 ) ( x + 3 \times 6^2 \times 7^2 ) ( x + 6 \times 6^2 \times 7^2 ) & = 0 \end{aligned} \]

后来又找人讨论了一下这个是咋得出来的啊.考虑\(ABC \ne 0\),我们有的条件其实是\(\frac{ 1 }{ A } + \frac{ 1 }{ B } + \frac{ 1 }{ C } = 0\).方程现在是\(x^3 + ( A + B - \frac{ AB }{ A + B } ) x^2 - \frac{ A^2 B^2 }{ A + B } = 0\).不妨令\(a = A + B , b = AB\),方程实际上是\(x^3 + ( a - \frac{ b }{ a } ) x^2 - \frac{ b^2 }{ a } = 0\).最好能让\(a\)小一点,因此我们不妨直接取\(a = 1\),此时\(A = - n , B = n + 1 , C = n ( n + 1 )\),只要能构造这样的两组\(A , B , C\)使得它们的\(a_1 - \frac{ b_1 }{ a_1 } = - \frac{ b_2^2 }{ a_2 }\)即可.直接造看上去没啥前途,但是不难发现\(A = - nk , B = ( n + 1 ) k , C = n ( n + 1 ) k\)依然合法.此时有\(k_1 = a_1 , b_1 = - n ( n + 1 ) a_1^2 , k_2 = a_2 , b_2 = - n ( n + 1 ) a_2^2\),我们有\(a_1 ( n^2 + n + 1 ) = - n^2 ( n + 1 )^2 a_2^3\).取\(n = 2\)试试看!此时有\(7 a_1 = - 36 a_2^3\).取\(a_2 = 7 , a_1 = - 6^2 \times 7^2\),这就是上面那组答案的构造过程.

Problem3

人们之间可能会有讨厌的情况,讨厌关系是相互的.一个人最多讨厌另外\(3\)个人.现在希望将全部的人分成两组,使得每个人在自己的组内至多只讨厌\(1\)个人.这是一定可以办到的吗?

Solution3

考虑增广,对于一个不合法的点,它应当连了两个同色点.不妨将这个点反色,那么同色边的数量一定减少,因此一定存在操作终点.而只要当前不合法就一定可以继续操作,因此操作终点一定合法.

Problem4

有公式:

\[ \sum_{ S \subseteq \{ 1 , 2 , \cdots , n \} } ( P ( f ( R ) \oplus \bigoplus_{ i \in S } R_i = 0 ) - P ( f ( R ) \oplus \bigoplus_{ i \in S } R_i = 1 ) )^2 = 1 \]

其中\(f\)是任意一个将\(\{ 0 , 1 \}^n \rightarrow \{ 0 , 1 \}\)的函数,\(\oplus\)是二进制意义下的异或运算,\(R\)\(\{ 0 , 1 \}^n\)上的均匀分布,\(R_i\)表示第\(i\)位.再定义\(\chi_S ( r ) = \prod_{ i \in S } ( - 1 )^{ r_i }\).

按照下面的步骤证明上面的式子,也就是说,求证:

  1. \(\chi_S ( r ) \times \chi_S ( r ' ) = \chi_S ( r \oplus r ' )\).

  2. \(r \ne 0\)时,\(\sum_{ S \subseteq \{ 1 , \cdots , n \} } \chi_S ( r ) = 0\).

  3. \([ f ( r ) \oplus \bigoplus_{ i \in S } r_i = 0 ] - [ f ( r ) \oplus \bigoplus_{ i \in S } r_i = 1 ] = ( - 1 )^{ f ( r ) } \chi_S ( r )\).

  4. 证明原命题.

Solution4

(1)显然.

(2)也很经典,挑选一个\(j\),使得\(r_j = 1\),然后所有的集合分为两类:一类是包含\(j\),一类不包含,两类集合一一对应并且\(\chi\)互为相反数.

(3)显然.

来看(4),注意到\(P ( f ( R ) \oplus \bigoplus_{ i \in S } R_i = 0 ) = \frac{ 1 }{ 2^n } \sum_{ r } [ f ( r ) \oplus \bigoplus_{ i \in S } r_i = 0 ]\),而\(\sum_{ r } [ f ( r ) \oplus \bigoplus_{ i \in S } r_i = 0 ] - [ f ( r ) \oplus \bigoplus_{ i \in S } r_i = 1 ] = \sum_r ( - 1 )^{ f ( r ) } \chi_S ( r )\),要证明的只是\(\sum_{ S } \frac{ 1 }{ 4^n } ( \sum_r ( - 1 )^{ f ( r ) } \chi_S ( r ) )^2 = 1\),而:

\[ \begin{aligned} & \sum_{ S } ( \sum_r ( - 1 )^{ f ( r ) } \chi_S ( r ) )^2 \\ = & \sum_S \sum_{ r } \sum_{ r ' } ( - 1 )^{ f ( r ) + f ( r ' ) } \chi_S ( r \oplus r ' ) \\ = & \sum_{ r } \sum_{ r ' } ( - 1 )^{ f ( r ) + f ( r ' ) } \sum_S \chi_S ( r \oplus r ' ) \\ = & \sum_{ r } 2^n = 4^n \end{aligned} \]

于是证毕.

Problem5

Alice在手心上写了两个不同的实数.你可以看其中一只手上的,然后猜哪边的数大.设计一种策略使得不论两个数是什么,猜对的概率都严格大于\(50 \%\).

Solution5

我对这个题有亿点小疑问,但是先说策略.

随机(无需均匀)一个数\(x\),然后随机一只手,看上面的数字\(a\),如果\(a \geq x\)就认为\(a\)大,反之认为\(b\)大.只要随机到一个区间内的实数的概率不为\(0\)即可.

但是怎么随机实数呢?好像可以按照正态分布随机,我其实也不太懂.

Problem6

使用一些长方形的砖头搭墙.如果每块砖头都有至少一条边的长度是整数,且搭出的墙面是没有缝隙的长方形,求证:这个长方形也至少有一条边长是整数.

Solution6

这个题是经典知乎题,下面搬一下知乎上面整理的这个题的答案:

数论证明:令\(p\)为素数,把整个图形放大\(p\)倍(也就是长度\(1\)变成长度\(p\)).下面把每个交叉点\(( x , y )\)换成其整数部分\(( \lfloor x \rfloor , \lfloor y \rfloor )\),我们就得到了一个新的大矩形,它被划分为很多两边长均为整数的小矩形,而且每个小矩形有一边长能被\(p\)整除.这样这个新的大矩形的面积也能被\(p\)整除,所以它的有一边长能被\(p\)整除.这条边只是被换成了它长度的整数部分,所以变化不超过\(1\),所以在放大之前这条边的长度和某个整数相差不超过\(1 / p\).因为素数有无穷多个,所以原来的大矩形某一条边长度与某个整数相差无限小,证毕.

图论证明:令所有的交叉点为顶点.每个小矩形都有一边长为整数,我们把这两条边长为整数的边在图上标出(允许两顶点之间的重复边),另外两条边不连.这样除了大矩形的四个角以外每个顶点有\(2\)条边或者\(4\)条边(这是因为这个点,要么是处于一个丁字路口(两条边),要么是十字路口(四条边)),而大矩形四个角每个角只连了一条边.所以从大矩形一角开始存在一条欧拉路径在另一个角结束.因为图上连边的边长都是整数,把这个欧拉路径投影到大矩形的长宽,我们就得到了大矩形至少有一边长为整数.

组合证明:考虑Sperner引理(和染色有关的那个).假设结论不成立.把每个小矩形画上对角线,然后把所有交叉点\(( x , y )\)染色:如果\(x\)是整数,染X颜色.如果\(x\)不是整数但\(y\)是整数,染Y颜色.如果都不是整数,染Z颜色.由Sperner引理,三顶点被染不同颜色的三角形有奇数个(简单来说就是,你考虑大矩阵的左侧两个点都是X颜色,右侧一个是Y一个是Z,并且在最下面这条边(两个端点分别被染成了X颜色和Y颜色)上面只可能出现X和Y两种颜色,由于这两种颜色交替出现,那么连接不同颜色的边就会有奇数个,同理对于全局来说,三条边上连接不同颜色的边总共奇数个,内部的每一条边会在两个三角形中被各算一次,因此三个顶点染成不同颜色的三角形应该有奇数个),但由题目条件这种三角形不存在(如果一个点被染成了X颜色,那么上面的点如果存在也该被染成了X颜色,Y颜色同理,俩总会矛盾一个),矛盾.

扫描线证明:设大矩形为\([ 0 , a ] \times [ 0 , b ]\),并假设\(b\)不是整数.把所有小矩形的下边界去掉,然后令\(f ( t )\)为所有上边界\(y\)坐标不是整数,并且与直线\(y = t\)相交的小矩形的\(x\)方向边长之和.那么\(f ( 0 ) = 0\),而且当\(f ( t )\)变化的时候,它一定会变成另一个整数(原因在于一个小矩阵(假设已加入扫描线)上方的矩阵,如果想要退出扫描线,则必然横向长度是整数.同理对于一个没有加入扫描线的小矩阵上方的矩阵,如果想要加入扫描线,也需要横向长度是整数).所以\(f ( b )\)是整数.而因为\(b\)不是整数,\(f ( b )\)就是最靠上的所有小矩形的宽之和,等于\(a\),所以\(a\)是整数.

0%