昨天突然想起一道小学时曾经做过的题目。

题目

有一条长为 ss 的路 ABAB,甲和乙在 AA 点上,甲的速度为 vav_a,乙的速度为 vbv_bva>vbv_a>v_b)。甲乙同时向右运动。甲不断在乙和 BB 点之间运动(折返跑),直到乙到达 BB 点为止。求甲走的距离。

小学那时候一看这题,束手无策。可能那时也对数学不够重视吧,反正也不知道怎么做的。后来上了初中,第一次考试卷子就考这个,我人都傻了。好在觉悟够高,认真听了老师讲评,回忆了一下当时的做法,可谓是贻笑千载。

我的解法

如上图,每次算出红线的总长度,剩下的蓝线又可以表示成原图图中的形式(原问题的相同子问题)。

我们用 f(x)\operatorname{f}(x) 来表示乙走一段长度为 xx 的路的总路程(即假如上图中黑色加上蓝色的线为总长度,那么乙走的路程就是红色的线),用 g(x)\operatorname{g}(x) 来表示甲走一段长度为 xx 的路的总路程。

那么根据上图,我们可以使用相遇问题的公式,将红线加上绿线作为总路程,可以算出相遇时间为 2xva+vb\frac{2x}{v_a+v_b}。那么红线的长度就是 f(x)=2xvbva+vb\operatorname{f}(x)=\frac{2xv_b}{v_a+v_b},同理可得 g(x)=2xvava+vb\operatorname{g}(x)=\frac{2xv_a}{v_a+v_b}

g(x)\operatorname{g}(x) 中可以看出每次 xx 会缩小到原来的 vbvavb+va\frac{v_b-v_a}{v_b+v_a} ,那么答案就是:

i=0f(s(vbvavb+va)i)=2svbva+vb(1+(vbvavb+va)+(vbvavb+va)2+(vbvavb+va)3+)\begin{aligned} &\sum\limits_{i=0}^\infty \operatorname{f}(s(\frac{v_b-v_a}{v_b+v_a})^i)\\ =&\frac{2sv_b}{v_a+v_b}(1+(\frac{v_b-v_a}{v_b+v_a})+(\frac{v_b-v_a}{v_b+v_a})^2+(\frac{v_b-v_a}{v_b+v_a})^3+\cdots) \end{aligned}

然后我们可以利用一个有名的幂级数公式:

1+x+x2+x3+=11x(x<1)1+x+x^2+x^3+\cdots=\frac{1}{1-x}\quad(|x|<1)

注意只有当 x<1|x|<1 才能套入公式。因为 va>vb0v_a>v_b\ge0,因此 vbvavb+va[0,1)\frac{v_b-v_a}{v_b+v_a}\in[0,1)。因此我们可以套用上面的公式,于是:

i=0f(s(vbvavb+va)i)=2svbva+vb(1+(vbvavb+va)+(vbvavb+va)2+(vbvavb+va)3+)=2svbva+vb(11vbvavb+va)=svbva\begin{aligned} &\sum\limits_{i=0}^\infty \operatorname{f}(s(\frac{v_b-v_a}{v_b+v_a})^i)\\ =&\frac{2sv_b}{v_a+v_b}(1+(\frac{v_b-v_a}{v_b+v_a})+(\frac{v_b-v_a}{v_b+v_a})^2+(\frac{v_b-v_a}{v_b+v_a})^3+\cdots)\\ =&\frac{2sv_b}{v_a+v_b}(\frac{1}{1-\frac{v_b-v_a}{v_b+v_a}})\\ =&\boxed{\frac{sv_b}{v_a}} \end{aligned}

正解

因为甲和乙同时开始,同时停止,因此甲的运动时间等于乙的运动时间,通过题目易得运动时间为 svb\frac{s}{v_b},再代入公式 s=vts=vt 得出甲的运动路程为 svbva\frac{sv_b}{v_a}

真的要贻笑千载了。

彩蛋:幂级数公式是怎么来的?

1+x+x2+x3+=gx+x2+x3+x4+=gx(1+x+x2+x3+)(x+x2+x3+x4+)=ggx1=g(1x)g=11x\begin{aligned} 1+x+x^2+x^3+\dots&=g\\ x+x^2+x^3+x^4+\dots&=gx\\ (1+x+x^2+x^3+\dots)-(x+x^2+x^3+x^4+\dots)&=g-gx\\ 1&=g(1-x)\\ g&=\frac{1}{1-x} \end{aligned}

1+x+x2+x3+=11x(x<1)\therefore1+x+x^2+x^3+\cdots=\frac{1}{1-x}\quad(|x|<1)