1.关于“不存在一个时刻,使时针、分针、秒针互呈120°”的命题及其证明
设:
时针运动方程为
分针运动方程为
秒针运动方程为
其中时间 以min为单位,则有
假设存在题述情形,即三针在某时刻互呈120°分布,则存在两类情形:
(1) 从秒针所在位置顺时针看去,依次为分针、时针;
(2) 从秒针所在位置顺时针看去,依次为时针、分针。
有方程组(a):
其中, 。
对情形(1),方程组(a)第二个方程中120°前取加号,第三个方程120°前取减号;
对情形(2),方程组(a)第二个方程中120°前取减号,第三个方程120°前取加号。
令 ,联立得不定方程(b):
其中
由于表盘内容以 (即 )为最小正周期,因此将 范围限制为
解不等式
对情形(1),解得
对情形(2),解得
因此,满足情形(1)对应不定方程的时刻在12小时内共出现11次,分别为:
序号(n=k+1) | 时 | 分 | 秒 |
---|---|---|---|
1 | 0 | 21 | 49.[09] |
2 | 1 | 27 | 16.[36] |
3 | 2 | 32 | 43.[63] |
4 | 3 | 38 | 10.[90] |
5 | 4 | 43 | 38.[18] |
6 | 5 | 49 | 5.[45] |
7 | 6 | 54 | 32.[72] |
8 | 8 | 0 | 0 |
9 | 9 | 5 | 27.[27] |
10 | 10 | 10 | 54.[54] |
11 | 11 | 16 | 21.[81] |
(注:此处中括号表示无限循环小数的循环节,下同。)
满足情形(2)对应不定方程的时刻在12小时内共出现11次,分别为:
序号(n=k) | 时 | 分 | 秒 |
---|---|---|---|
1 | 0 | 43 | 38.[18] |
2 | 1 | 49 | 5.[45] |
3 | 2 | 54 | 32.[72] |
4 | 4 | 0 | 0 |
5 | 5 | 5 | 27.[27] |
6 | 6 | 10 | 54.[54] |
7 | 7 | 16 | 21.[81] |
8 | 8 | 21 | 49.[09] |
9 | 9 | 27 | 16.[36] |
10 | 10 | 32 | 43.[63] |
11 | 11 | 38 | 10.[90] |
由于不定方程(b)成立为方程组(a)成立的必要不充分条件,因此上述22个解仅满足不定方程(b),即仅能保证 为整数,不一定满足方程组(a),即保证 同时为整数。需要对上述解进行一次验证。
以情形(1) 时为例,令 ,解得 ,不满足约束条件,故舍去。
而事实上此时有:
不满足题目要求。
同理可验证其余21个解均不满足要求,方程组(a)无解。
2.最接近题目要求的近似解求解
设时针与分针夹角为 ,分针与秒针夹角为 ,时针与秒针夹角为 ,并将其范围限制于 区间,定义偏差 ,以 为步长进行遍历搜寻偏差最小的时刻。
clear; omega_1=0.5; omega_2=6; omega_3=360; t=1/60000:1/60000:720; theta_1=omega_1*t; theta_2=omega_2*t; theta_3=omega_3*t; delta_1=180-abs(180-mod((theta_2-theta_1),360));% 感谢 @曹洪洋 朋友为代码优化作出的贡献 delta_2=180-abs(180-mod((theta_3-theta_2),360)); delta_3=180-abs(180-mod((theta_3-theta_1),360)); e=abs(delta_1-120)+abs(delta_2-120)+abs(delta_3-120); [~,I]=min(e); T=t(I); h=floor(T/60); m=floor(T-60*h); s=60*(T-60*h-m);
基于所定义的偏差,应用MATLAB进行数值求解可以得出:
在0~12时范围内,最接近题目要求的一个近似解为2时54分34秒548毫秒,此时时针与分针夹角约为 ,分针与秒针夹角约为 ,时针与秒针夹角约为 。由于镜像映射不改变指针之间夹角,因此从初始条件(0时整)出发,指针逆时针旋转相同的角度对应的时刻9时5分25秒452毫秒也是此种偏差定义下的最优解。
另据 @xiaomm8341 朋友向我提出,应用Mathematica可以得到这两个答案的精确值: 时 分 秒和 时 分 秒。这样,对应的指针夹角分别优化为 , , 。
由于题目并未规定最优解的指标,因此依本人观点,指标的确定可以是见仁见智的。除前述偏差定义方式外,也可以方差、标准差抑或是其他量作为寻找最优解的指标。基于不同指标,搜索到的最优解可能会不尽相同。
3.关于题目描述的讨论
根据题主的题目描述:“如果手表的时针、分针、秒针都是连续匀速转动的,即不是整格走的,可以找到一天中的某个时间,时针、分针、秒针两两互为 么?容许秒不为整数,但不可为无理数。那么有没有这样的时间呢?假设在零点整三针重合。如果没有的话,那最接近 的时间在哪里?”上述结论成立的前提是:时针、分针、秒针连续运动。事实上,机械钟表采用齿轮传动,所以指针运动方式为步进式。但是在步距角趋于0的极限条件下,指针可以近似为连续运动,也就适用于上述前提了。对于指针连续的钟表,在整个实数域都不存在夹角互为 的时刻,更遑论无理数集了。
相信以上两节内容已经可以解释题主的疑惑了。这一节将针对评论区部分朋友提出的“附加题”进行归纳和解答。
(1)存在一种钟表,其秒针每秒步进 ,而分针和时针连续运动。对于这种钟表,存在如题述的时刻吗?
不存在。
这是因为:如果只有秒针离散的话,那么秒针所在位置角度必为6的倍数;又因为分针和秒针相差 ,所以分针所在位置也必为6的倍数。分针的这个位置,对应着整分钟的时刻,也就是说此时秒针必指向“12”,这是前提。那么分针和时针必分别指向“4”和“8”,这是假设。而时针指向整数位置时必须为整小时的时刻,分针必不可能指向“12”以外的位置,这是基于假设的推论。这样,前后出现了矛盾。所以在秒针离散,时针和分针连续的情形下,三针互呈 的时刻也是不存在的。
(2)存在一种钟表,其秒针每秒步进 ,分针每分钟步进 ,时针每12分钟步进 。对于这种钟表,存在如题述的时刻吗?
存在。
例如:0时21分41秒,就是一个满足题目要求的解。
其实有一个非常简单的判断规则是:如果把三个针都看做二维平面上的单位长度的向量,那么三个向量之和为0当且仅当三者夹角两两互为120°。这样我们就不需要分类讨论三个指针的相对位置了。
我们把表翻转放倒为如下的平面坐标:
时针每小时走1/12圆周,即 弧度,分针每小时走1圆周,即 弧度,秒针每小时走60圆周,即 弧度。当经过 小时后,时针、分针、秒针的位置分别是 当三者夹角互为120度时,三个向量之和为0,即满足如下两条关系(*):
将带有 的项挪到等式右侧,然后两个方程各自平方再相加得到:
即 于是 这里 是整数。因此
类似的,我们把(*)中将带有 的项挪到等式右侧,然后两个方程各自平方再相加得到:
即 于是 这里 是整数。因此
但是 等式左边不是整数,但右边是整数,矛盾。因此方程无解,即不存在某一时刻三个表针夹角两两互为120°。
首先猜测没有这样的时间。
直观地想,分针比时针快,从0:00到12:00会追上时针11次,因此成120度角有22次机会,而这些机会的秒针位置都是确定的。只需验证这些位置秒针在不在规定位置就行了。
而直观地想,这似乎不可能……
算一下也是可以的。按照每秒一个状态的观点,继续细分圆周。
时针每秒走1/43200个圆周。分针每秒走12/43200个圆周。秒针每秒走720/43200个圆周。
如果假设时针不动,那就相当于分针每秒走11/43200个圆周。秒针每秒走719/43200个圆周。
现在要考虑分针和秒针到达14400/43200个圆周和28800/43200个圆周的位置。
这意味着在t秒之后,11t=14400+43200a且有719t=28800+43200b,或者11t=28800+43200b且有719t=14400+43200a。
这里t是实数,而a,b是整数。
于是11/719或者719/11=(14400+43200a)/(28800+43200b)=(1+3a)/(2+3b)。于是11(1+3a)=719(2+3b),或者719(1+3a)=11(2+3b)。
到这里消掉了实数t,只剩下整数a、b。
等式两边取mod 3,会得到一边余1,一边余2,余数不同,矛盾。
仍旧设时针不动,如果设秒针走过的圆周占比为x,分针走过的圆周占比为y,那么有关于秒数t的参数方程:
x=719/43200t
y=11/43200t
轨迹为直线。如果联立消掉t,并且将范围限定在0到1之间,就有相图:
直线维持同样的斜率向右上方延伸。当直线撞到右边界的时候,就会从左边界同样位置继续延伸;撞到上边界的时候,就会从下边界同样位置继续延伸。于是得到斜率相同的一族直线,为:
y=(11/719)x+delta
delta为y方向截距。秒针“走完一圈”后得到的截距是11/719,11乘65等于715,相当于分针“走完一圈”,直线向下方平移4/719个单位。
如果采用欧氏距离(两针到标准位置距离的平方和),问题即求解到达(1/3,2/3)与(2/3,1/3)距离最短的直线上的点。之前已经得到直线不会经过这两点的结论,于是问题变为这两点到达哪条直线距离最近,垂足点的坐标是多少,对应的时间参数t是多少。
由于11和719互素(11和4互素),根据裴蜀定理,直线的偏移量delta(根据图像关系,不考虑负数),会且仅会取遍0、1/719、2/719,……718/719的每一个值。
由于斜率一致,过(1/3,2/3)与(2/3,1/3)作两条该斜率的平行线,观察与y轴交点:
过(2/3,1/3):
y=(11/719)(x-2/3)+1/3=(11/719)x+(697/3)/719,697/3=232.33……,因此这个点与delta为232/719的直线距离最近。
过(1/3,2/3):
y=(11/719)(x-1/3)+2/3=(11/719)x+(1427/3)/719,1427/3=475.66……,因此这个点与delta为476/719的直线距离最近。
分针每超过时针1次,向下平移4/719个单位,相当于分子除以11的余数变化为:0,7,3,10,6,2,9,5,1,8,4。
232=21乘11+1,476=43乘11+3,分别对应分针超过时针8次和2次,又根据分针偏移1/3和2/3,可以将位置首先大致定位在9:05:25~9:05:26(差点9:05:25.5)和2:54:34~2:54:35(稍过2:54:34.5)两个区间。
事实上不需要解(2/3,1/3)到直线y=(11/719)x+232/719的垂足坐标,和(1/3,2/3)到直线y=(11/719)x+476/719的垂足坐标。
可以根据已经定位的时间,以及偏差平方和最小的原则,计算相应的时分秒。
到这里来回顾一下之前的步骤:
最开始的想法是最直白的,直接讨论22种情况。
优点是思路直白,缺点是讨论情况太多,计算22遍再进行比较,可能适合机器运算,对于人而言比较困难。
但至少直接证明所求最优解不存在是容易的。近似最优解,即最接近的解,至此只能讨论22遍。
相图的优点是直观,将三个针的运动情况用二维的图,借助时间t做参数,直接表示了出来。
缺点也很明显。因为减少了时针这个维度,导致图像只有形状直观,和时间t的关联却变得很复杂,不容易计算。例如给出具体的时间点t,不容易指出运行到了图中具体哪根线的哪个位置。也就是说,相图也很难直接指出具体的时间点。
于是这里借助相图,弥补之前思路的缺陷,只需找出大致的时间点即可。之前思路问题在讨论22遍繁琐,希望最好只讨论两遍,或者一遍。摆脱时间t之后,相图的直观性可以直接定位到点距离哪根线最近,而线穿过上下边界的次数的意义就是分针超过时针次数。紧紧抓住这一点,可以从22个方案种抽出需要的两个方案。
为什么可以定位到9:05:25?首先9:00:00的时候时针分针成直角,之后由于时针比分针慢,这两个针的夹角一直在增大。每过12分钟时针走过一小格,6分钟时针只走半小格。在9:06:00的时候,两针成直角加上5.5个小格,大于120度。120度刚好是直角加上5个小格,相当于每分钟时针分针夹角增大5.5/6个小格,略小于1小格,因此所求的时间位于9:05:00到9:06:00之间。由于时针此时还在9的位置,走过不到半小格,因此秒针也应该在25秒的位置,走过不到半小格。这样一来,分针也在5分的位置,走过不到半小格。
最后只差定量分析,这时暂时摆脱“时针不动假设”这个工具,三个针都在运动。假设最优时间是9:05:25+x秒,x是位于0到1的实数。之前提到,时针每秒走1/43200个圆周。分针每秒走12/43200个圆周。秒针每秒走720/43200个圆周。此时时针从9开始走过(325+x)/43200个圆周,分针从5分开始走过(300+12x)/43200个圆周,秒针从25秒开始走过720x/43200个圆周。
再重新应用之前给定的“时针不动”,“欧氏距离”的偏差平方和算法,相当于求相图的垂足步骤。分针到时针的偏差是(11x-25)/43200个圆周,秒针到时针的偏差是(719x-325)/43200个圆周,平方和是:
(1/43200^2)((11x-25)^2+(719x-325)^2)=(1/43200^2)((121x^2-550x+625)+(516961x^2-467350x+105625))=(1/43200^2)(517082x^2-467900x+106250)
最小值在x为这个值的时候取得:
x=(467900/2)/517082=116975/258541
因此在9:05:25+116975/258541秒的时候可以取得偏差平方和的最小值。同理可以求得另一种情况为2:54:34+141566/258541秒,并且这两种情况的接近程度相同。这是因为,相图是中心对称图形,这意味着如果把时间按相反方向行进,三个表针运动方向改为逆时针,情况与正常情况完全对应。所以两个情况的表针图形关于垂直轴线轴对称,时间之和应当恰好为12小时。
结论:三针在2:54:34+141566/258541秒和9:05:25+116975/258541秒的时候,最接近两两夹角120度。
如果必须要求手算,由于考试有时间限制,这题的难度大约在联赛二试以上水平。题目应该出成:
(1)证明:不存在一个时刻,三个针恰好成120度。(容易)
(2)寻找时刻t,使得(分针-时针-120度)^2+(时针-秒针-120度)^2最小。(困难)
开局一张图,剩下全靠猜?这个没法评价。
从软件的角度虽然我能想出两三种导致这个现象的原因,但非正式发布的产品出现任何问题都是常见现象。盲人摸象的评价没有必要。
跟11代没差别,这个肯定是违背常识的,要知道11代i9只有16线程,12代i9有24线程,24线程超越16线程并不需要多么高超的优化技巧。
调度优化的主要难题是当我们只需要少量线程运作的时候究竟把这个线程安排在哪个核心。
然而,对于全核心全线程同时计算的场景来说,反正都是全核心上场,根本不需要什么优化,谁来都是全核心工作。
如果这个软件能把所有核心用满的话,没道理性能不变。所以肯定有某个环节出了问题。正式版本再说吧。