如何优雅地测量一只猫的体积,而不使其感到惊恐或受到伤害?
前情提要
Monte Carlo 测猫法:
把猫装进已知体积为V_box的盒子,在盒子内均匀取N个随机点,其中M个在猫体内,猫体积近似为V_box*M/N。
推理及讨论见supplemental materials.
要实现这一测猫法,需要一种瞬时确定某点是猫还是非猫的方法,否则在猫运动的情况下,会测得猫扫过的体积而不是猫体积。
我决定用下图所示的方法。。。
盒子壁上装尽量多的激光灯,盒子壁用感光材料。若要确定某点是猫还是非猫,则让所有激光灯射向目标点。若目标点是猫,则激光会被猫挡住因此盒子壁上任何一点都不会检测到激光。因此我们用以下原则判断目标点是猫非猫:
测量可以在很短的时间内完成,足以快到忽略猫的运动。 ============================ 当然这种方法是有缺陷的,猫身上一些凹陷部位可能会成为激光无法穿过的死角,因此被算入猫体积。
一个充分不必要的解决方法是让猫变成凸猫(convex cat), 即任取两点属于猫,两点之间的线段上的点都属于猫,满足这一条件的猫叫做凸猫,如下图所示。
下图是一个现实生活中凸猫的例子。。(图片来自网络)
对于凸猫,该方法测得的猫体积即为真猫体积,证明见supplemental materials中的夹逼测猫法。 但是这种方法是不猫道的,因为猫咪宣言中有这样的话:
We hold these truths to be self-evident, that all cats are created equal (大雾), and they are endowed by their Creator with certain unalienable rights, that among these are the rights to stand up, lie down, turn around, groom themselves and stretch their limbs ...
Five freedoms [ARCHIVED CONTENT] Farm Animal Welfare Council
而凸猫显然(至少)剥夺了猫咪 stretch their limbs 的自由。。。
好在对于非凸猫,该方法也不是那么糟糕。
下面我将展示给大家,即使对于非凸猫,用该方法测出来的猫体积
============================ 要测量猫体积,首先要定义猫体积。
然而“猫有毛兮毛有枝,本喵在哪你不知。”
猫的体积定义并非显而易见的,主要有两个困难:
嗯。。化学家出场了。。。
化学家测猫大法:
把一个直径一定的毛线球用一定力量按在喵体表滚一遍,把毛线球与喵接触的内表面轨迹包括的空间的体积视为猫的体积,并称之为Van de Waals cat volume .(好吧。。。我知道这不叫Van de Waals体积。。但是这个体积的实际名字土掉渣了。。哪有Van de Waals高大上。。。)
如下图。
这一体积定义包含两个要素。毛线球的直径和按在猫身上的力量,前者决定了凹陷和缝隙算与不算的体积和形状标准——毛线球放得进就算,否则不算;后者决定了猫边界的标准——和毛线球之间的作用力达到某一值为准,啥啥电子云都不好使,就看力的大小。通过改变毛线球和力量的大小,可以控制猫体积的精细程度。究竟多精细不重要,重要的是可以定义一个体积的客观标准。 ============================= 仿照这一定义,我将我测得的猫体积定义为 Van de Bars cat volume。。。如下图。。。
准确来说,是一个直径相当于激光束粗度,无限长的bar在猫表面滚过定义的猫体积。。。你看。。。我测的体积也是有一个很有道理的定义的嘛。。。。
同时我想强调,相对于其他回答,该方法对猫毛可以有很严格的处理,详见supplemental materials中对猫毛的讨论。 =============================== 我认为实际测量中Van de Bars 猫体积和我们一般认为的猫体积差异并不大。
比如看下图
E为克莱因猫,虚线部分在猫体内。。 对于碗状猫(bowl cat),Van de Bars 猫体积确实会把猫肚子下面那块空间误算做猫体积的一部分。但是对弓状猫(bow cat)、椅状猫(chair cat)的测量都是准确的,因为光线可以从图上箭头的角度穿过。甚至小昭猫(shaw zhao cat)这个我本来觉得挺奇葩的形状下其实并没有任何问题。这样一来,Van de Bars 猫体积在多数情况下和我们一般认为的猫体积的区别也就仅限于耳廓内的空间、个别身体缝隙之类的光穿不过的死角。。。我觉得还是能接受的。。。
为了尽量避免碗状猫对测量的影响,我们要大力鼓励猫咪充分 stretch their limbs. 这也提示我们,爱护猫咪对我们蓝星人也是有益的。。。所以爱护猫咪,人人有责,no cats should be convex!!! =============================
综上,我设计了一种测量Van de Bars 猫体积的Monte Carlo测猫法。我觉得这是目前回答里最猫道最优雅的。。。因为它保障了猫咪伸展身体、弄干身体、不受恐吓、自由站起、躺下、翻身的权利。。。而且对猫体积有严谨而实用的定义。。。 ============================= Supplemental materials:
把猫装进体积为V的盒子,在盒子内 uniform randomly 取N个 independent and identically distributed (i.i.d.) 的点组成样本,记为 SAMPLE = {(xi, yi, zi) | i in range(0, N)}。
定义如下 function: I(x, y, z) = 1 if (x, y, z) in CAT else 0 (即确定一个点是猫还是非猫)
假设猫体积(V_cat)不变,且猫的运动与取点不相关(即猫既不接飞镖也不躲飞镖,见评论区知友讨论),则I(x, y, z)具有如下分布: I(x, y, z) = 0 with a probability of 1-V_cat/V_box I(x, y, z) = 1 with a probability of V_cat/V_box 与猫运动与否不相关。
根据这一分布I(x, y, z)的期望值是V_cat/V_box. {I(xi, yi, zi) | (xi, yi, zi) in SAMPLE} 是一个服从上述分布的 i.i.d. 的sample。
根据大数定理(law of large numbers), sample mean almost surely converges to expected value. 所以可以用 sample mean 估计期望值,即: V_cat/V_box ~= sum(I(xi, yi, zi))/N 记M为在猫体内的样本点数量,则 V_cat/V_box ~= sum(I(xi, yi, zi))/N = M/N 所以V_cat ~= V_box * M/N
关于猫毛的讨论
上述方法等价于把猫边界定义为猫体表透光率显著不同于空气以至于足以使得sensor检测到差异的位置。可以想象这应该包括了猫毛,而且是不受压迫不变形的猫毛。
我认为这也是该方法的一大优势——这是真正的无损测真猫,而不是测 a rat-like creature that lives inside a cat (见 @苍原雪在本问题下的回答)。。。其他方法,包括彩虹糖,都是有压迫的。实际上彩虹糖法测的是彩虹糖的形状和大小、彩虹糖与猫接触处的压强定义的Van de Waals cat volume. 因为这一压强,长毛猫的测量可能和我们预想的含猫毛体积有较大区别。
Van de Bars 猫体积和其他猫体积的对比 (不适用于克莱因猫)
=========下面是原答案===============
物理学家测猫法:取一只半径为r的真空中的球形猫,体积等于4/3*πr^3 数学家测猫法:把猫装进已知体积为V的盒子,在盒子内均匀取N个随机点,其中M个在猫体内,猫体积近似为VM/N。 生物学家测猫法:把control猫装盒子,塞了10次都塞进去了,把实验猫装同一个盒子,塞了10次只进去两次,所以,猫多大我不知道,反正显著大于control猫。
——本文作者有勇有萌兔(知乎),转载已获授权