数学,逻辑与艺术完美结合的学科。
数学公式,作为数学结论的高度概括,无不体现着优雅的自然哲理,闪耀着人类智慧和思想的光芒。
无数文章描绘和赞美了各种奇异的数学公式。
典型的例子如欧拉公式,它将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来源:物含妙理
原标题:它被认为是数学中最奇特的公式,其图像与自身长得一样,但真相是这样吗?
编辑:未
转载内容仅代表作者观点
不代表中科院物理所立场
如需转载请联系原公众号