这年头不懂点数学,可能连杂耍都玩不好
发布于 2021-08-27 11:21 ,所属分类:数学资料学习库
想必大家都看过杂耍,
大概也试图玩过。
小编我也玩过......
不知道祸害了多少苹果橘子.......
今天就来学习一下,怎么科学地杂耍。
在著名的(大概...)欧洲杂耍大会(European Juggling Convention),有一项神奇的运动——杂耍斗(combat juggling)。
杂耍斗是一种两人对战类的体育运动。比赛规则非常简单。每局比赛开始时,两名选手各自抛耍 3 个杂耍棒。任何一方都可以故意上前干扰另一方(但只能针对对方手中的或者空中的杂耍棒,不能针对对方的手臂和身体)。谁站到最后,谁就赢得该局。先赢 5 局者获得比赛的胜利。
典型的一局比赛大致就像下面这样。
00:12
不知道有没有人仔细看过视频后,发现了一个有趣的细节:其中一人虽然抛耍起了 4 个杂耍棒,但是他的动作好赖皮呀!用哪只手抛出的杂耍棒,就用哪只手接住,任何一个杂耍棒都没有在两手之间交替。这恐怕不能叫做杂耍吧!这是不是要算违规呀?
还真不是。两只手各自独立地抛耍 2 个物体,确实是一种基本的杂耍模式。让我们来看三个演示动画,它们分别对应抛耍 3 个物体、抛耍 4 个物体和抛耍 5 个物体时最基本的杂耍模式:
按照大多数人的理解,在任何一种杂耍模式中,左右两只手一定是交替地、有节拍地不断抛耍小球。也就是说,右手接住某个小球并立即把它重新抛出,片刻后就该轮到左手接住某个小球并把它抛出,再过相同的时间后就又该轮到右手接住某个小球并把它抛出……今后,我们把某只手接住并抛出某个小球叫做一次“接抛”。接抛动作将会以右手、左手、右手、左手的顺序轮流完成。我们假设每次接抛动作都是瞬间完成的,小球停留在手中的时间忽略不计。接下来,我们还会把相邻两次接抛之间的时间叫做“一拍”。我们假设杂耍过程中,每一拍的时长都是相同的。
上面这些杂耍模式之所以是“最基本的杂耍模式”,其实就是因为,每次接抛动作都是完全相同的。这意味着,每个小球每次都被抛到了相同的高度,都会在空中停留相同的拍数。如果每个小球都在空中停留 3 拍,结果会怎样呢?让我们画个图来分析一下:
图中,横坐标表示时间,纵坐标表示高度,弧线则表示随着时间的流逝,小球们的高度是如何变化的。每个小球都在空中停留了 3 拍,表现在图上就是,每条弧线都横跨了 3 个区间。由图可知,这里面实际上一共有 3 个小球(我们用 3 种不同的线条分别表示出了它们的轨迹)。此时,每个小球都会交替地来到左手和右手上。
类似地,如果每个小球都在空中停留 5 拍,我们就需要 5 个小球,才能让双手不会闲下来。可以看到,在这种情况下,每个小球也都会交替地来到左手和右手上。
然而,如果每个小球都在空中停留 4 拍,情况就不一样了:对于任意一个固定的小球来说,不管它被哪只手扔了出去, 4 拍之后它将回到同一只手中。可以看到,此时对应着小球数为 4 的情况,也就是上面三个动画中的中间那个动画。
不妨用 n 来表示杂耍模式中的小球数。正因为在这种最基本的杂耍模式中, n 的奇偶性会导致如此大的区别,所以当 n 为奇数和 n 为偶数时,这种杂耍模式的俗名都是不一样的。当 n 为奇数时,所得的杂耍模式叫做“瀑泻”(cascade);当 n 为偶数时,所得的杂耍模式叫做“喷泉”(fountain)。
难道当 n = 4 时,就没有什么左右手能互相传递小球的杂耍模式吗?倒也有,比方说用一种叫做“倾盆”(shower)的杂耍模式就行了。事实上,倾盆可以适用于一切的 n ,并且不管 n 是奇数还是偶数,每个小球的位置都会在左右手之间切换。不过,这种模式的问题是——它太水了,还是不像杂耍。让我们还是先来看看 n = 3, 4, 5 时倾盆的演示动画吧:
也就是说,左手接住并水平抛出某个小球,右手立即接到该球并把它抛到更高的地方;然后左手接住并水平抛出下一个小球,右手立即接到该球并把它抛到更高的地方……倾盆也算是非常基本的一种杂耍模式了,或许你自己没事儿时也偷偷尝试过。搜索与“杂耍”有关的插图插画,画面内容基本上都是一个人把一堆小球从一只手扔到另一只手,所有小球在空中大致排成一个半圆。这表现的其实就是倾盆这种杂耍模式。不过,和瀑泻比起来,倾盆的效果确实差了一些,少了点“左右开弓”的感觉。
说了半天,当 n = 4 时,究竟有没有什么看起来非常爽,观赏性非常强的玩法呢?有。来看看下面三种 n = 4 时的杂耍模式:
看了上面这三个动画,你有何感想?
我估计,你的第一反应会是:“真牛逼,没想到这背后的水这么深!看着就觉得里面有好多数学原理!”接下来,你就该观察各种细节,或者该冒出各种怪异的想法了:
“****,这些动画你丫都是拿什么软件做的呀?”
“你这写的东西今后肯定是要出书的吧?哼哼,我看到时候这篇文章的动画你怎么处理!”
“你说这些新的杂耍模式都是谁想出来的,都是怎么想出来的呀?”
“这三种杂耍模式真的是三种不同的杂耍模式吗?让我看看啊……哦,是,好像确实是不同的。”
“这三种杂耍模式的循环长度似乎是不一样的,最左边那个的循环长度明显要短得多。”
“其实中间那个杂耍模式中,右手还是出现了自己扔给自己的情况。哦,左手也出现了这种情况。咦,等等,好像这个杂耍模式中,左右手的动作是完全对称的!”
“最右边那个图我好像看出些名堂来了。它就是一个抛得更高的 3 球瀑泻,插进去一个简单的水平抛掷。”
……
好吧,我先专门说一下这些动画是怎么变出来的吧,不然大家肯定又会问。以前每篇文章的图片和动画都是我用 Mathematica 做的,但这篇文章还真不是。这篇文章中所有杂耍模式的演示动画都是用一个叫做 Juggling Lab 的开源软件生成的(然后用 ImageMagick 调了一下颜色和线条的粗细)。这个软件在杂耍界里非常有名,它可以生成各种杂耍模式的 GIF 演示动画,极大地方便了人们的交流。
这篇文章里有这么多动画,以后真的出书时该怎么办呢?那还有啥办法,到时候出书时只能不用这篇文章了呗!所以,大家一定要体会到科技的进步。现在,向其他人展示某种杂耍模式,只需要发个 GIF 动画就行了;但在只有纸媒的时代,这将会变得非常非常困难。《杂耍者世界》(Juggler’s World)是杂耍界里颇有影响力的杂志。杂志读者曾经问道:为什么不在杂志上教大家一些新的杂耍技巧呢?于是,在 1985 年第 2 期的杂志中,编辑们用一组照片辅以数字和箭头,详细讲解了一个抛耍 4 球的新玩法。自然,效果非常糟糕,至少我看了半天都没看懂。
就好像跳水中“5253B”表示“向后翻腾两周半转体一周半屈体”一样,要是我们有一套记号,或者说一种“语法”,可以简单有效地表示出各种杂耍模式就好了。人们不但可以借助它进行交流,或许还能通过摆弄这些符号,寻找新的杂耍模式。杂耍模式的很多特征,或许也会反映在这些符号当中。
刚才对瀑泻和喷泉的分析,让我们自然地想到了这样一种方案:依次记下每次扔出的球会在空中停留几拍,直到完整地记下一个循环节为止。刚才我们展示了三种非常高级的 4 球玩法,让我们仔细分析一下中间那种玩法。不妨从右手扔出最高的那一次球开始算起:这次扔出的球(由右手扔出)要过 5 下才会被接住,我们就用数字 5 来标记;下次扔出的球(由左手扔出)要过 3 下才会被接住,我们就用数字 3 来标记;第三次扔出的球(由右手扔出)要过 4 下才会被接住,我们就用数字 4 来标记……如果把小球的轨迹连同这些数字标记一并画出,大概就是这样:
杂耍模式能永远持续下去,肯定是因为它在不停地循环。在这个例子中,我们记下的数字形成了 534 循环。我们就用 534 来表示这种杂耍模式。这就是杂耍界最通用的杂耍模式记号——“位换记号”(siteswap)。
位换记号最早是由谁想出来的,现在已经很难考证了。目前一般认为,位换记号起源于 1985 年左右,它的发明和传播,至少与以下三组人马有着密切的关系:来自加利福尼亚州圣克鲁斯的 Paul Klimek ,来自加利福尼亚理工学院的 Bruce Tiemann 和 Bengt Magnusson ,以及来自英国剑桥的 Michael Day 、Colin Wright 和 Adam Chalcraft 。
对于杂耍表演者来说,位换记号是非常直观的,因为它记录的本质上就是杂耍时的一个个接抛动作:数字 1 就表示,我应该把刚接到的球近乎水平地扔向另一只手,让另一只手在下一拍立即接到它;数字 2 就表示,我应该把刚接到的球竖直向上扔一点,使得在另一只手完成动作后,正好轮到这只手重新把它接住(实际表演时,人们通常会选择直接把这个小球握在手中停留 2 拍,因为在此期间反正这只手也不需要干别的);数字 3 就表示,我应该把刚接到的球扔得更高一些,扔出一个抛物线,使得 3 拍之后另一只手正好能接住它……总之,数字越大,就意味着我应该把小球越得越高,并且偶数意味着应该竖直向上扔,奇数意味着应该往另一只手的方向扔。
事实上,位换记号只告诉了你扔出的球需要多久之后回到手中,而并没有告诉你这个球具体应该怎么扔出去。你可以从胯下扔上来,从身体背后扔过来,扔头上顶一会儿,扔地上反弹回来……只要它能在正确的时候被接住就行了。
注意,一个杂耍模式的位换记号往往不是唯一的。我们可以对位换记号中的数字进行“循环移位”(cyclic shift),例如把 534 变为 345 和 453 ,它们刻画的显然是同一个杂耍模式。此时,人们通常会选择使用字典序最大的那个记法(也就是说,使用第一位数字最大的记法,如果有多个第一位数字最大的,则使用它们之中第二位数字最大的记法,等等)。另外,人们通常假设,位换记号中不会有大于 9 的数字出现,因为把小球扔这么高是不太现实的。这样的话,每个杂耍模式的位换记号都是一串唯一确定并且没有歧义的数字了。
我们刚才介绍的那些杂耍模式,用位换记号都该怎么记呢?3 球瀑泻、 4 球喷泉、 5 球瀑泻的位换记号分别是 3 、 4 、 5 。果然,它们是最基本的杂耍模式。3 球倾盆、 4 球倾盆、 5 球倾盆的位换记号分别是 51 、 71 、 91 。这也很容易看出来。
最后我们展示了三种 4 球玩法,其位换记号从左至右依次为 53 、 534 、 5551 。之前观察到的现象和规律,都可以从这几个位换记号中读出来。左边那个的循环长度确实是最短的,因为它的位换记号的长度就是最短的。整个杂耍模式其实就是两个动作不断重复,右手做个 5 ,左手做个 3 ,右手再做个 5 ,左手再做个 3 。中间那个的位换记号里有偶数,因此它里面就会出现“自己扔给自己”的情况。同时,它的动作是左右对称的,因为它的位换记号的长度为奇数。第一轮的 534 分别对应右、左、右,第二轮的 534 就分别对应左、右、左了。右边那个本质上就是“一个抛得更高的 3 球瀑泻,插进去一个简单的水平抛掷”,它的动作要领显然就是三个相同的大动作加上一个小动作,这不正是 5551 的意思吗?
不知道大家有没有发现, 53 、 534 、 5551 这几串数字有一个共同特征:数字串里所有数字的平均数都是 4 。事实上,这个规律对于其他几个杂耍模式的位换记号也都成立:位换记号中所有数字的平均数,等于这个杂耍模式中小球的个数。这就是位换记号理论中最著名的一个定理——平均数定理(the average theorem)。这个定理为什么是对的呢?我们介绍一种非常直观的证明方法。
每个小球每次在空中停留的时间,完全是我的手在抛出它时给予它的。这就好比每次抛出小球都是在给小球加油一样。如果位换记号里有一个数字 4,就表示此时抛出小球的动作相当于给小球加了 4 个单位的油,小球也就会在空中停留 4 个单位的时间,直到最后没油了落回手中,继续接受下一次加油。每个循环刚开始的时候,有些空中的小球消耗的还是上一个循环里加的油;每个循环快结束时,给小球加的油也有一部分会放到下个循环去用。但是,既然这些循环能够一个接一个地无限持续下去,既不会出现剩余的油越积越多的情况,也不会出现油慢慢就不够了的情况,这就说明每个循环里给小球加的油,一定都恰好等于这个循环里所有小球在空中停留的时间之和。
假设某个杂耍模式有 n 个小球,其位换记号的长度为 l 。在每个循环里,我的手一共给小球加了多少油呢?显然,这等于位换记号里的所有数字之和。在每个循环里,所有小球在空中总共停留了多少时间呢?由于我们有 n 个小球,每个小球都在空中停留了 l 个单位的时间,所以答案就是 n · l 。于是我们得到,位换记号里的所有数字之和等于 n · l ,即 n 等于位换记号里的所有数字之和除以 l 。这正是平均数定理的内容。
平均数定理有一个重要的推论:瞎写一串数字,不见得是一个合法的位换记号。比方说,如果所有数字的平均数根本就不是整数,那么这串数字就必然不是一个合法的位换记号了。然而,麻烦的是,即使所有数字的平均数是个整数,这串数字也不见得是一个合法的位换记号。比方说, 6114 这串数字满足平均数条件,但它就不是一个合法的位换记号。在 61146114… 中,第一次抛出的小球和第六次抛出的小球会“撞车”,使得杂耍模式无法持续下去。
所以,位换记号可以很好地描述杂耍模式,但要想利用位换记号创造新的杂耍模式,还得想想办法才行。
不妨让我们换个思路:能否对已有的位换记号进行改造,从而得出新的杂耍模式呢?考虑之前提过的 534 模式。现在,如果把 534 改成 633 ,会出现什么有意思的结果?你会发现,整个杂耍模式的循环节长度仍然是 3 ,并且在每一个循环节中,第一次抛出的小球和第三次抛出的小球都会交换落点。所以,原来的位换记号不会出现撞车的情况,新的位换记号也不会出现撞车的情况。
我们预言:633 是一种新的合法的位换记号,对应于一种全新的杂耍模式!事实上确实如此:
一般地,如果位换记号中有 a 、 b 两个数字,它们相隔 d 拍的距离,那么把 a 和 b 分别换成什么数字,就能交换它们的落点呢?看看下图,你就知道了:我们应该把 a 换成 b + d ,把 b 换成 a – d 。
在数字串中,按此规律修改某两个数字的操作就叫做一次“位换”(site swap)。对合法的位换记号进行位换操作,得到的仍然是合法的位换记号。其实,“位换记号”这个词就是这么来的——它是一种支持位换操作的记号。注意,每次位换既不会改变位换记号的长度,也不会改变位换记号中的所有数字之和。因此,位换操作不会改变所有数字的平均数。这说明,用位换操作得到的新杂耍模式,与原杂耍模式的小球数是相同的。
位换操作很强大。让我们再给大家展示几个例子。如果你愿意,你甚至可以对 3 球瀑泻进行位换操作。3 球瀑泻的位换记号是 3 ,里面就只有一个数字,这可怎么做位换呢?没关系,多补几个循环节就行了。比方说,把 3 先扩写成 333 ,然后对第一个数字和第三个数字进行位换,于是得到 531 。那么, 531 就是一个新的杂耍模式,如下图所示。
我们还可以对位换之后的结果再做位换。比方说,对 531 的第一个和第二个数字进行位换,于是得到 441 。这就又是一种新的杂耍模式!
我们刚才是用 3 → 333 → 531 → 441 的办法生成的 441 。其实,生成 441 还有很多别的路子。比方说,还是先把 3 扩写成 333 ;接下来,对 333 的第一位和第二位进行位换,于是得到 423 ;循环移位,可以把 423 变成 342 ;再对 342 的第一位和第三位进行位换,就可以得到 441 了。当然,变出 441 并不需要那么复杂,其实 423 能直接变成 441 。这里我们只是想告诉大家,位换操作还可以和循环移位配合着使用。
我们从几个最基本的杂耍模式,说到了位换记号与平均数定理,说到了如何“创造”新的杂耍模式。但是,刚才的一切仅仅是假设,左右两只手是在交替地接抛一个又一个的小球。如果两只手是同步运作的呢?或者,如果每次可以接抛不止一个小球呢?或者,如果我们有两个杂耍者,他们互相之间还能把小球扔给对方呢?我们又应该用什么记号来表示它们呢?刚才提到的结论能否继续扩展到这些情况呢?感兴趣的朋友不妨看看 Burkard Polster 的 The Mathematics of Juggling 一书。这篇文章中的内容主要也都是从这本书里来的。
所谓学海无涯,在读这篇文章以前,你大概觉得,之前学不会杂耍,是我协调能力和动手能力不行;
读完这篇文章以后你就会发现,之前学不会杂耍的你,也有可能是因为数学水平不行(小编回去做数学题了)。
最后,放点轻松的东西...
我们来欣赏一下...
杂耍...
是多么的炫酷...
05:52
原标题:位换记号、排列测试与状态图:杂耍中的数学
来源:节选自 Matrix67 博客,本文按 BY-NC-SA 方式授权
相关资源