数学,逻辑与艺术完美结合的学科。
数学公式,作为数学结论的高度概括,无不体现着优雅的自然哲理,闪耀着人类智慧和思想的光芒。
无数文章描绘和赞美了各种奇异的数学公式。典型的例子如欧拉公式:
再比如看似平凡的不等式
而本文要讲的是一个更加奇异的不等式,它的诡异之处让人简直无法相信,因为它的图像与它自身竟然长得一样!
它的真容是下面这样的。
一堆复杂的计算,看起来没什么美感。
当给定
960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719
各位仔细看,蓝色的图像部分与上面不等式长得差不多吧?
有人惊呼,这式子的内在和外表一模一样,用“表里如一”形容差不多,简直就是数学世界的“耿直哥”!
没错,它的名字叫做自引公式(self-referential formula),意即它自身就呈现了图形的样子。
然而,深入了解这个公式的来由,你会发现,它的功能并非只是“自引”。
这个不等式由加拿大多伦多大学计算机科学系的Jeff Tupper在2001年提出,其目的是为绘制二维像素图提供一种通用的算法。
如果把k值当作密钥,该算法针对106×17个像素的任意位图,提供了一种加密算法,将图形储存在k值中。反过来,给定合乎要求的k值,该算法能将其对应的位图解码呈现。
针对该算法,有网友做了一个在线工具(以下简称keelyhill),网址为:
https://keelyhill.github.io/tuppers-formula/
该网页提供了一个手动绘图区,随便你画个什么图,网页自动同步实时更新对应的k值。
我就是在这里以“点鼠标”的笨办法,绘制了一副像素为106×17的“physics”的图形(为了看清已放大)。
绘完后,网页自动加密图形得到k值:
120401836680646659455509389646023899515705854231963556041160524191114866288029520682884224620219395105639626717497512919432620009513234075338266327025415934700600983682893043453188898768182476382464582411154444434372693115229418739650991359706460160665110459999255798829023608683322251788245903097150734552156077686651923371287193708247211723456855071032994435095877499869830270139101542049407235599036201088283821293420150784
用photoshop之类的软件制作一个106×17的任意格式的图片。
将其转换为PBM格式。
将PBM文件上传传到keelyhill,加密k值就自动得到了。
https://imageconvert.org/png-to-pbm
和
https://tomseditor.com/convert
都能做这件事。
例如,我就用photoshop制作了“物含妙理”四个字的图片,存为PNG格式,再转换为PBM格式,然后上传keelyhill后,显示效果如下。
同步得到k值为:
7139654967278260629651290941008326958518470850910682761861525384140132302406091190862857098875453536850769175069352661071140120835934109218333156555590177755512019202666847997066015271590522004417332285741160486011404467360847622071770573518452745296570570192941705361446829591201588521916751968318711219998890940396121250716360098089210736839517482430753189219093462774268100743034071968922095929987193134184395836209412649784776538024555120949969287835366994967166573190410924720847460152936513845329920
那么,在哪里可以解码呢?
有两种方法——
按照自引公式的算法,自己写一个解码程序。
找个在线工具来完成。
from functools import reduce
import matplotlib.pyplot as plt
import math
xs = []
ys = []
k = 960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719
for x in range(106):
for y in range(k, k+17):
d = ((-17 * x) - (y % 17))
e = reduce(lambda x, y: x * y, [2 for x in range(-d)]) if d else 1
if 0.5 < math.floor((math.floor(y//17)//e) % 2):
xs.append(x)
ys.append(y-k)
plt.figure(figsize=(20,3))
plt.xlim(106, -1)
plt.ylim(17, -1)
plt.scatter(xs, ys, marker='s')
将代码里面的k值换成你的k值,即可得到解码后的图形。
第二种方法就简单多了,网上工具很多,例如
https://tuppers-formula.ovh/
你只要把k值贴入,点击“Number to Graph”按钮即可得到图形。
好了,关于自引公式的功能和用法,基本讲完了。
然而,看到这里,读者是不是对这个公式没有之前那种奇异的感觉了?
没错,你也许明白了,这个公式并非只为了彰显它自己的样子,它实际上是提供了一种加密和解码图形的通用方法。
既然任何106×17像素的图形都可以被加密,那同样,只要把自引公式存为这么大的一个图片,例如:
然后经历上述流程,就会被加密为一个k值。而用这个k值自然就能反过来重新得到这副图片——它与公式自身长得一样。
所以,自引公式的图像显示为它自己的样子,并不是什么巧合的事!它只是无数个加密图形中的一个而已。
正是这个原因,Jeff Tupper本人对“self-referential formula”这个名头根本不感冒!
没错,它根本不是什么自引公式,它就是一个普通的图形算法公式而已。
假设你能搞出一个图形算法,你也可以让你的算法公式画出与它自己长得一模一样的图形来,这是多么显然的道理!
行文至此,所谓“最神奇的公式的说法”被粉碎了,这也算本文的目的之一。
参考文献
https://en.wikipedia.org/wiki/Tupper%27s_self-referential_formula
https://blog.csdn.net/weixin_44143678/article/details/119869423
https://campus.lakeforest.edu/trevino/Tupper_Paper.pdf
END
如果您觉得这篇文章还有那么一点用处,请不吝转发,您的支持是我最大的动力。