更新一下精确求解的思路,我放在最后吧。
想到了一种精确的计算方法。在此基础上,对于 米深的井,我得到的期望天数为
放个结果对比:
晚一些时候把证明过程放上来。
但是对于 米深的井,首先我需要算出一个 阶三对角矩阵的特征值……好巧不巧这些特征值都可以根式表达,所以理论上结果也可以摆上来。我一定会做出来的……
首先给出结论:爬上井所用期望的天数(口胡!是天数的期望!)约为 天。(这个结果是改正过的。我的过程算差了一天,后面会有提到(呜哇哇))
写一个可以数值求解的方法吧。
设第 个晚上后,蜗牛在井底的概率为 ,已经爬上的概率为 ,在距井底 区间内的分布函数为 。
那么 , , , 。
根据一些简单的概率学知识(具体推导过程暂且留做习题,等我以后来补):
那么所求即为
为方便计算,我们定义 那么所求期望可表示为
前述递推公式可重新表述如下:
试图寻找解析表达式失败,转而计算数值解。菜鸡编程:
a = 0.5 ; (*c9[1] = 0.;*) For [ n = 0 , n <= 4000 , n ++ , c [ 1 ][ n ] = N [ 1 / ( 2 ( n + 1 ))]; For [ l = 2 , l <= 9 , l ++ , c [ l ][ n ] = 0. ]]; For [ k = 2 , k <= 3999 , k ++ , c9 [ k -1 ] = c [ 9 ][ 1 ]; Print [ c [ 9 ][ 1 ]]; (*not c9[k]!*) aa = ( a + c [ 1 ][ 0 ] - c [ 1 ][ 1 ]) / 2 ; For [ n = 0 , n <= 4001 - k , n ++ , cc [ 1 ][ n ] = ( a + c [ 1 ][ 0 ] + c [ 2 ][ 0 ] - c [ 2 ][ n + 1 ]) / ( 2 ( n + 1 )); For [ l = 2 , l <= 8 , l ++ , cc [ l ][ n ] = ( c [ l - 1 ][ n + 1 ] + c [ l ][ 0 ] + c [ l + 1 ][ 0 ] - c [ l + 1 ][ n + 1 ]) / ( 2 ( n + 1 ))]; cc [ 9 ][ n ] = ( c [ 8 ][ n + 1 ] + c [ 9 ][ 0 ]) / ( 2 ( n + 1 ))]; a = aa ; For [ n = 0 , n <= 4001 - k , n ++ , For [ l = 1 , l <= 9 , l ++ , c [ l ][ n ] = cc [ l ][ n ]]]];
以下是 的图像, :
的对数坐标图像:
可以看到对于较大的 ,可以近似视为指数衰减。近似计算天数期望(我跑的时候用的变量名不一样,嘤嘤嘤):
为了估计误差,我们以 两项的比值为公比,将其后的诸 近似为等比数列:
可以看出误差项约为 。于是我们得到,蜗牛爬上井口所用天数的期望约为 天。这个数值也位于@lhy 所得估计范围的近似居中位置。(他还提到期望约为 天,或许大家可以检查一下我有没有犯差了一天的低级错误……)(补充:我代码错了,c9[k]得到的其实是k-1天的值,所以我的确算多了1)
以下是求出期望的精确值的方法。
首先考虑 米的情形。回顾我们之前提到的递推公式在 米时的对应情形:
我们定义 ,可以得到一个优美的关系:
其中 是和 无关的量!
于是我们有非常美妙的推论:
于是,
特别地,取 以及 , 以及 ,我们可得:
同时我们不难得到
可以看出以上 个方程(注意有 符号的是两个方程)是关于 的线性方程组,其中
而我们所求天数期望即为
由于求解过于复杂,交给Mathematica处理:(对不起我日常没有良好的编程素养!)
Solve[{c100 + I c200 == (-I) (E^(I/2) - 1) (a0 + c100 + (1 + I) c200 + 1), c101 + I c201 == (-I) (E^(I/2) - 1) (a1 + c101 + (1 + I) c201) + E^(I/2)/2 (a0 + c100 + (1 + I) c200 + 1), c110 + I c210 == (-2 E^(I/2) + (2 + I)) (a0 + c100 + (1 + I) c200 + 1), c111 + I c211 == (-2 E^(I/2) + (2 + I)) (a1 + c101 + (1 + I) c201) + (-2 + (2 - I) E^(I/2)) (a0 + c100 + (1 + I) c200 + 1), c100 - I c200 == (I) (E^(-(I/2)) - 1) (a0 + c100 + (1 - I) c200 + 1), c101 - I c201 == (I) (E^(-(I/2)) - 1) (a1 + c101 + (1 - I) c201) + E^(-(I/2))/2 (a0 + c100 + (1 - I) c200 + 1), c110 - I c210 == (-2 E^(-(I/2)) + (2 - I)) (a0 + c100 + (1 - I) c200 + 1), c111 - I c211 == (-2 E^(-(I/2)) + (2 - I)) (a1 + c101 + (1 - I) c201) + (-2 + (2 + I) E^(-(I/2))) (a0 + c100 + (1 - I) c200 + 1), a0 == 1/2 (a0 + c100 - c110 + 1), a1 == 1/2 (a1 + c101 - c111 + a0 + c100 - c110 + 1)}, {a0, a1, c100, c101, c110, c111, c200, c201, c210, c211}]
结果如下。
其中的 "c210"即为 ,它等于 意味着爬出井的概率为 ,这很合理。"c211"即为 ,虽然形式为复数,但我们的线性方程组中包含的含复系数方程是成共轭对出现的,解的虚部显然为 。通过将虚指数转化为三角函数即可得到一开始的结果。
现在进入正题。回顾我们之前的 之所以可以如此定义,是因为递推公式中从左侧诸 的系数到右侧诸 的系数的线性变换对应的矩阵为 ,其特征系为
对于原问题,这个矩阵是一个 阶矩阵
可以看到它的特征多项式 ,得到特征值
这个多项式在 上的分裂域为 ,其中 有最小多项式
我们可以用 来表示所有的特征值和单位特征向量:
定义 (因为有Eisenstein求和约定,其实写出求和号不是一个好习惯……但是知乎上还是怕人看不懂)
那么
其中
同样地,
特别地:
类似定义 ,我们得到如下的线性方程组:
其中 的定义见前文特征向量部分, 它们在 处定义为连续极限值
这是一个 元一次线性方程组,运用线性代数知识可求解之。特别地,解出 后可得所求期望即为