由于之前那篇坏掉了,没法编辑了
所以重新开一篇,记录一点小知识
贝尔数
-
定义
把 N N N带标号的球分成 M M M个集合,是第二类斯特林数
对 S ( N , ? ) S(N,?) S(N,?)这一行求和,就是贝尔数 B n B_{n} Bn,表示 N N N个带标号的球的集合划分数 -
一些东西
递推式: B n + 1 = ∑ ( B k ∗ ( n k ) ) B_{n+1}=\sum \left(B_k*\binom{n}{k}\right) Bn+1=∑(Bk∗(kn))
相当于加入一个新的集合,这个集合里固定包含元素"n+1",剩下集合标号用组合数去选一个性质(Touchard同余): B p + n ≡ B n + B n + 1 ( m o d p ) B_{p+n}\equiv B_n+B_{n+1} \pmod p Bp+n≡Bn+Bn+1(modp),p是个质数
在p比较小的时候,可以线性递推
泰勒展开
-
构造多项式仿造目标函数
已知目标函数 f ( x ) f(x) f(x),有 f ( x ) ≈ g ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) 1 ! + f ′ ′ ( x 0 ) ( x − x 0 ) 2 2 ! + ⋯ f(x)\approx g(x)=f(x_0)+\frac{f'(x_0)(x-x_0)}{1!}+\frac{f''(x_0)(x-x_0)^2}{2!}+\cdots f(x)≈g(x)=f(x0)+1!f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+⋯
-
想法
对于一个函数 f f f,要去构造一个函数 g g g仿造它,可以这么做
确定一个 x 0 x_0 x0,使得 f ( x 0 ) = g ( x 0 ) , f ′ ( x 0 ) = g ′ ( x 0 ) , f ′ ′ ( x 0 ) = g ′ ′ ( x 0 ) ⋅ ⋅ ⋅ f(x_0)=g(x_0) , f'(x_0)=g'(x_0), f''(x_0)=g''(x_0)··· f(x0)=g(x0),f′(x0)=g′(x0),f′′(x0)=g′′(x0)⋅⋅⋅,就是让它们的每阶倒数都相同,项越多,仿造越精确。 -
例子
比如,要仿造 f ( x ) f(x) f(x)在 x 0 x_0 x0附近的样子
先从一个点开始仿造,得到 g ( x ) = f ( x 0 ) g(x)=f(x_0) g(x)=f(x0),这个仿造的函数只在 x 0 x_0 x0位置是和 f ( x ) f(x) f(x)相同的,不够精确。
为了提高精确度,使 g ( x ) g(x) g(x)在 x 0 x_0 x0处的斜率(一阶导)和 f ( x ) f(x) f(x)相同,令 k = f ′ ( x 0 ) k=f'(x_0) k=f′(x0),得到 g ( x ) = f ( x 0 ) + k ( x − x 0 ) g(x)=f(x_0)+k(x-x_0) g(x)=f(x0)+k(x−x0),可以改写成 g ( x ) = f ( 0 ) ( x 0 ) ( x − x 0 ) 0 + f ( 1 ) ( x 0 ) ( x − x 0 ) 1 g(x)=f^{(0)}(x_0)(x-x_0)^0+f^{(1)}(x_0)(x-x_0)^1 g(x)=f(0)(x0)(x−x0)0+f(1)(x0)(x−x0)1
我们还可以继续逼近,让 g ( x ) g(x) g(x)在 x 0 x_0 x0附近的斜率变化率(二阶导)也和 f ( x ) f(x) f(x)相同,继续写成上面那个样子,得到 g ( x ) = f ( 0 ) ( x 0 ) ( x − x 0 ) 0 + f ( 1 ) ( x 0 ) ( x − x 0 ) 1 + f ( 2 ) ( x 0 ) ( x − x 0 ) 2 2 ! g(x)=f^{(0)}(x_0)(x-x_0)^0+f^{(1)}(x_0)(x-x_0)^1+\frac{f^{(2)}(x_0)(x-x_0)^2}{2!} g(x)=f(0)(x0)(x−x0)0+f(1)(x0)(x−x0)1+2!f(2)(x0)(x−x0)2
如此类推,当求导的层数无穷多时, f f f 和 g g g 在 x 0 x_0 x0 附近的每一阶导全都相等,也就是变化趋势一致,那么 f f f 和 g g g 在 x 0 x0 x0 附近的样子也应该是相同的。这个“附近”的范围,随着仿造精确度的提高而变大(允许一定误差时)