它被认为是数学中最奇特的公式,其图像与自身长得一样,但真相是这样吗?

文摘   2024-08-20 21:01   广东  

数学,逻辑与艺术完美结合的学科。

数学公式,作为数学结论的高度概括,无不体现着优雅的自然哲理,闪耀着人类智慧和思想的光芒。

无数文章描绘和赞美了各种奇异的数学公式。典型的例子如欧拉公式: 

它将e、i、π、1和0这数中的五朵金花全聚在一起了。

再比如看似平凡的不等式 其内在美让人心动,它描绘了一颗完美的爱心。

而本文要讲的是一个更加奇异的不等式,它的诡异之处让人简直无法相信,因为它的图像与它自身竟然长得一样!

它的真容是下面这样的。 

其中  表示向下取整,例如  ,mod返回相除的余数。

一堆复杂的计算,看起来没什么美感。

当给定  如下值:

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
如果你不想用这么笨的办法,你可如下三步完成:
  1. 用photoshop之类的软件制作一个106×17的任意格式的图片。

  2. 将其转换为PBM格式。

  3. 将PBM文件上传传到keelyhill,加密k值就自动得到了。

PBM是一种比较少见的图形格式,如果你不会转换PBM格式,可以在网上搜一搜,例如:

https://imageconvert.org/png-to-pbm

https://tomseditor.com/convert

都能做这件事。

例如,我就用photoshop制作了“物含妙理”四个字的图片,存PNG格式,再转换为PBM格式,然后上传keelyhill后,显示效果如下。

同步得到k值为:

7139654967278260629651290941008326958518470850910682761861525384140132302406091190862857098875453536850769175069352661071140120835934109218333156555590177755512019202666847997066015271590522004417332285741160486011404467360847622071770573518452745296570570192941705361446829591201588521916751968318711219998890940396121250716360098089210736839517482430753189219093462774268100743034071968922095929987193134184395836209412649784776538024555120949969287835366994967166573190410924720847460152936513845329920
是的,k值实际上是加密图形得到的密钥,你只要保留这个k值,随时可以解码得到图形。

那么,在哪里可以解码呢?

有两种方法——

  1. 按照自引公式的算法,自己写一个解码程序。

  2. 找个在线工具来完成。

第一种方法需要一点编程能力,这里贴出一个网上搜到的python脚本给读者参考。
from functools import reduceimport matplotlib.pyplot as pltimport mathxs = []ys = []k = 960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719for 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_formulahttps://blog.csdn.net/weixin_44143678/article/details/119869423https://campus.lakeforest.edu/trevino/Tupper_Paper.pdf


END


科普不易,请您多支持,谢谢!

如果您觉得这篇文章还有那么一点用处,请不吝转发,您的支持是我最大的动力。

物含妙理
境自远尘皆入咏,物含妙理总堪寻。
 最新文章