前一段时间在某群里流传着一个神秘的高代期中考题:
如果 f∈Q[x] 满足 f(f(x))∈Z[x] 以及 f(0)∈Z, 则有 f∈Z[x] 成立.
而我们将展示一个神奇的解决方案, 不过一个刚学高代的大一同学大概不会这么思考这个问题...
一个引理
首先我们可以在素数局部观察这个问题, 也就是说可以把 Q,Z 放到 Qp,Zp 中. 于是我们就提出了下面的引理:
若 f∈Qp[x]\Zp[x], 且 f(0)∈Zp, 那么 f(f(x))∈Zp[x].
证明. 记 f=f0+⋯+fdxd, 那么 f∘f=f0+⋯+fdd+1xd2, 如果 fd∈Zp 那么首项 fdd+1∈/Zp, 因此我们可以假设 fd∈Zp. 为便利, 记 Nk:=vp(fk).
现在我们能对 f 的 Newton 折线说什么呢? 由于已知 f0,fd∈Zp, 但是有在 Qp\Zp 中的系数, 因此折线两端在 v≥0, 但是中间某个 v(fj)<0. 说明折线必然下凸低于了 v=0. 于是假设共 d 段的斜率从负到正为s1≤s2≤⋯≤sk≤0<sk+1≤⋯≤sd.于是 (k,Nk) 是折线最低点 (其中最右边的那个), 其中 Nk<0. 由于 Newton 折线斜率的相反数对应根的赋值, 于是在代数闭包 Qp 中 f(x)=fd∏j=1d(x−θj), 其中 v(θj)=−sj. 于是 f(f(x))=fd∏j=1d(f(x)−θj), 这便是我们研究复合函数的基本出发点.
那么 f(f(x)) 的 Newton 折线的诸段斜率由诸 f(x)−θj 贡献, 要证明它不在 Zp, 就需要检查折线某时刻低于 0.
• | 首先对于 1≤j≤k, 由于 v(θj)=−sj≥0, 由于 f−θj 的常数项 f0−θj 赋值正, 而首项 fd 赋值也正. 因此 f−θj 的折线中保有 sk+1,⋯,sd 的部分不变, 它们的抬升和为 sk+1+⋯+sd=Nd−Nk. |
• | 其次对于 k+1≤j≤d, 由于 v(θj)=−sj<0, 尽管 f−θj 的常数项 f0−θj 赋值负, 但是首项 fd 仍不变. 也就是说折线的低点纵坐标不会大于 v(θj), 因此 f−θj 的折线中斜率正部分的抬升和至少为 Nd−(−sj)=Nd+sj. |
根据这些内容, 我们来计算
f(f(x)) 的最低点的纵坐标
M 的上界, 一个控制就是
f(f(x)) 的首项赋值
(d+1)Nd 减掉
f(f(x)) 折线斜率中全体正的抬升和. 于是
M≤(d+1)Nd−k(Nd−Nk)−j=k+1∑d(Nd+sj)=Nd+kNk−(sk+1+⋯+sd)=(k+1)Nk.由于
Nk<0 故
M<0, 引理得证.
从这个引理出发证明定理非常简单, 只需注意到在每个 p 赋值都非负的有理数是整数, 即 Q∩⋂pZp=Z.
不过好像又有这样一个更加简单的证明.
引理的另证. 沿用前面 Nk=vp(fk) 的记号. 现在我们来观察 f∘f, 其实则是诸 Fr:=fr⋅f(x)r, r 从 0 到 d 的求和. 其中的系数 xrt 具有系数 frftr 加上一堆乱七八糟的. 这里 vp(frftr)=Nr+rNt 就是证明的突破口.
让我们考虑 M(r,t)=Nr+rNt. 我们希望研究它的最小值, 显然 r=0, 它的最小值首先肯定比 0 小, 且条件告诉我们存在某 Nt<0 对 t=0. 于是我们观察 M(r,t)=Mmin<0 时, 怎么让 r,t 尽可能大. 显然 t 可以直接取使得 Nt=Nmin 的最大 t, 这不依赖于 r 的选取. 这时固定 t, 再变动 r 使得 r 也最大即可. 此时的 r,t 是唯一的.
此时我们实际上最小最大化了这样一个结果, 考虑
Nr+Nt1+Nt2+⋯+Ntr 最小, 注意这里
t1,⋯,tr 取任意
r 个自然数, 然后
r+t1+⋯+tr 尽可能大. 换言之,
f∘f 的展开中, 对于我们上面得到的
r,t, 项
xtr 的系数中有且仅有唯一的
vp 赋值最小者
frftr, 其赋值是一个负数
M<0. 因此
f∘f 的
xtr 系数不在
Zp 中, 结论得证.
更好的是, 这个证明似乎稍作修改就能推广到 f 多重迭代的情景.
推论
有一个日本竞赛题就和这个引理有密切关系.
假设 g∈Q[x] 满足 g(2)=g∘g 和 g(3)=g∘g∘g 都在 Z[x], 则 g∈Z[x].
证明. 我们仍然只需在局部观察, 只需将
Z,Q 替换为
Zp,Qp. 那么奇技淫巧在于定义如下的多项式
f(x):=g(x+g(2)(0))−g(2)(0).首先
g(2)(0),f(0)=g(3)(0)−g(2)(0)∈Zp. 其次
f(f(x))=g(2)(x+g(2)(0))−g(2)(0)∈Zp[x].由此推出
f∈Zp[x], 进而
g(x)=f(x−g(2)(0))+g(2)(0)∈Zp[x] 得证.
这个结论可以推广为, 如果得知对于某个正整数集合 S 中的元素 s, 都有 g(s)∈Zp[x], 且全体 S 中元素互素, 那么 g∈Zp[x]. 实际上互素的条件是必须的, 不互素的反例很容易发现, 例如 g(x)=x+1/2 则 g(g(x))=x+1, 那么此时 g(2),g(4)∈Z[x] 然而 g∈Z[x]. 细节就留给读者.