有个公式画出来的图像和公式本身一样?

撬开科学新世界 2024-10-04 15:00:34

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

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

无数文章描绘和赞美了各种奇异的数学公式。

典型的例子如欧拉公式,它将e、i、π、1和0这数中的五朵金花全聚在一起了。

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

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

它的真容是下面这样的。

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

当给定k如下值:

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值就自动得到了。

PBM是一种比较少见的图形格式,如果你不会转换PBM格式,可以在网上搜一搜相关信息,例如:https://imageconvert.org/png-to-pbm和https://tomseditor.com/convert都能做这件事。

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

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

有两种方法——

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

找个在线工具来完成。

第一种方法需要一点编程能力,这里贴出一个网上搜到的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://campus.lakeforest.edu/trevino/Tupper_Paper.pdf

来源:物含妙理

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

编辑:未

转载内容仅代表作者观点

不代表中科院物理所立场

如需转载请联系原公众号

0 阅读:3

撬开科学新世界

简介:感谢大家的关注