可以画出世间(几乎)一切的神奇数学公式



原文链接:The formula that plots (almost) everything

先上公式:

\begin{equation}
\frac{1}{2}\lt \left \lfloor\mod\left (\left \lfloor \frac{y}{17}\right \rfloor 2^{-17\lfloor x \rfloor-\mod(\lfloor y \rfloor,17)},2 \right ) \right \rfloor
\label{Tupper}
\end{equation}

这是一个不等式,称为塔珀自指公式,其中$\lfloor n \rfloor$叫做地板函数,表示不大于$n$的最大整数,比如$\lfloor 3.14 \rfloor=3$,$\lfloor 5 \rfloor=5$,$\lfloor -2.7 \rfloor=-3$。$\mod(a,b) $表示a除以b的余数,这种计算叫做模除,比如$\mod(8,3)=2$。

如何利用公式\eqref{Tupper}画图?

想象在直角坐标系里划出一系列小方格,小方格边长为1,如下图所示。

左下小方格的坐标为$(0,0)$,其右边相邻的小方格的坐标为$(1,0)$,上边相邻的小方格坐标为$(0,1)$,其他小方格的坐标,以此类推。$x$取值范围是$[0,105]$,即有106列方格。画图需要17行方格,$y$取值范围是$[N,N+17)$,$N$的具体值视具体要画的图而定。

将方格的坐标带入不等式\eqref{Tupper},如果不等式成立,则将方格涂色,如果不等式不成立,则不涂色。

将公式\eqref{Tupper}画出来,如下图所示:

对应的$N$是个543位的数:

\begin{equation*} \begin{split} N=&960 939 379 918 958 884 971 672 962 127 852 754 715 004 339 660 129 306 651 505 519 271 702 802\\ &395 266 424 689 642 842 174 350 718 121 267 153 782 770 623 355 993 237 280 874 144 307 891 325\\ &963 941 337 723 487 857 735 749 823 926 629 715 517 173 716 995 165 232 890 538 221 612 403 238\\ &855 866 184 013 235 585 136 048 828 693 337 902 491 454 229 288 667 081 096 184 496 091 705 183\\ &454 067 827 731 551 705 405 381 627 380 967 602 565 625 016 981 482 083 418 783 163 849 115 590\\ &225 610 003 652 351 370 343 874 461 848 378 737 238 198 224 849 863 465 033 159 410 054 974 700 \\ &593 138 339 226 497 249 461 751 545 728 366 702 369 745 461 014 655 997 933 798 537 483 143 786 \\ &841 806 593 422 227 898 388 722 980 000 748 404 719 \end{split} \end{equation*}

可以画出欧拉恒等式,如下:

对应的$N$为:

\begin{equation*} \begin{split} N=&23 520 359 399 496 581 221 408 296 491 979 609 293 069 748 136 250 282 632 929 347 819 540 735\\ &954 955 446 141 406 484 573 424 156 488 732 522 345 562 080 420 479 6011 434 955 111 022 376 6\\ &01 635 853 210 476 633 318 991 990 462 192 687 999 109 308 209 472 315 419 713 652 238 185 967\\ &518 731 354 596 984 676 698 288 025 582 563 654 632 501 009 155 760 415 054 499 960 \end{split} \end{equation*}

高斯积分如下图所示:

对应的$N$为:

\begin{equation*} \begin{split} N=&156 987 402 179 570 082 907 078 791 551 211 618 836 789 749 600 368 204 518 384 965 530 593 042\\ &781 593 968 045 017 673 854 255 572 790 978 425 505 951 477 622 475 674 449 000 956 516 765 083 \\ &074 858 053 781 764 316 876 326 523 038 849 501 790 645 548 158 781 893 81 448 932 035 874 145 9\\ &65 881 631 363 964 883 085 974 756 487 867 902 744 830 960 668 082 577 437 782 189 064 512 907 8\\ &89 924 899 300 621 786 362 424 181 692 579 651 239 045 992 794 686 365 369 708 864 611 291 854 9\\ &34 130 524 940 679 843 180 800 552 468 281 283 793 284 632 769 100 458 995 693 741 829 668 924 7\\ &72 738 264 539 491 965 665 810 196 314 332 016 077 292 880 174 239 602 703 695 648 943 390 464 0\\ &74 020 112 302 080. \end{split} \end{equation*}

可见,想用公式\eqref{Tupper}作图,需要先知道$N$。如何求$N$呢?步骤如下:

  1. 选定像素为$106\times 17$的图片。
  2. 考察每个像素,如果像素着色,标记上1,如果没有着色,标记上0。
  3. 从左下角向上,将每个像素标记的1或0依次写下来,把标记的1和0依次排列起来,依次记下第一列1、0序列,然后记录第二列,也是从底部向上开始记录。然后依同样方法,依次记录第三列、第四列、……,一直到第17列,最后得到一个1802位的二进制数。
  4. 将此1802位的二进制数转换成10进制数,将所得之数乘以17,就是我们要求的$N$。

还是比较麻烦的。好在有人给我们做好了现成的工具,点点鼠标就能画图了,如 http://damnsoft.org/others/tupper.html,http://keelyhill.github.io/tuppers-formula/

本文另发表于《算法与数学之美》。

标签: 塔珀自指公式

添加新评论

captcha
请输入验证码