首页 >> 数学 >> 文章

多项式的根之美Comments>>

发表于 2009-12-10 11:20 | Tags 标签:, , ,

deg5木遥按:这是美国数学家 John Baez 今年 11 月 14 日在他的网页上贴出来的一篇文章(原文),很快引起了许多人的兴趣。标题中的“根”是指数学中一个多项式的解。如果你还没有忘光你的高中数学课,就应该知道下面这两个事实:任何一个多项式在复数域中必有根,并且每个复数都可以在复平面上对应于一个点。这样,给定一系列多项式,我们就可以把它们的根都画在复平面上,从而形成一些特定的图案。请放心,即使你对多项式毫不了解,也不会妨碍你欣赏这些图案之美的。也许你曾经听说过经典的曼德布洛特集合(Mandelbrot set),那你很容易就能在这里看到某些相似之处。所不同的是,人们对这些新的图案还所知甚少。

下面所有括号中的文字都是我所添加,以帮助不熟悉复平面的朋友了解所说那些的点的位置。每幅图都可以点击放大。


我的朋友 Dan Christensen 发现了一幅令人赞叹的图画(见题图)。它是由所有系数为 -4 到 4 之间的整数的 5 次以下多项式的根在复平面上的对应点构成的。

点击图片可以看大图。二次多项式的根是灰色的,三次多项式的根是青蓝色的,四次多项式的根是红色的,五次多项式的根是黑色的。横轴是实轴,纵轴是虚轴,中间的大洞的中心是原点。两侧小一点的洞的中心是 ±1,在 ±i 处和 1 的所有六个虚根出也各有一个小洞(即中间那个大洞上下不远处对称的那些小洞)。

你可以在这里看到许多迷人的图案,给人的感觉是这些整系数多项式的根在竭力避开那些整点和单位根似的,──除非这些整点和单位根本身就是多项式的根。如果你把图案放大,可以看到更多细节:

deg5_closeup

在这里你可以看到,在 1 这个点所在的空白区域周围环绕着一些美丽的羽毛,在 exp(iπ/3) 这个点周围有一个六瓣的星形(即左上角那个梅花形状的洞),还有一条奇特的红色连线把这两个点连接起来,还有很多其他的点周围的星形的洞,诸如此类。

人们应该开始研究这些东西才对!让我们把所有系数为 -n 到 n 之间的整数的 d 次以下多项式的全体根构成的集合称为 Christensen 集 Cd,n,很显然当 d 和 n 越大, Cd,n 这个集合就越大,并且当 n 趋于无穷大时这个集合趋于布满全复平面。如果固定 d, 令 n 趋向于无穷大,那么我们就能得到全体有理复数;如果令 d 和 n 同时趋于无穷大,那么我们就能得到全体代数复数。于是一个有趣的问题就是,如果我们固定 n,令 d 趋于无穷大,会得到什么呢?

在上面这些图片的鼓舞下,Sam Derbyshire 决定绘制一些分辨率更高的多项式根的图片。试验了几次之后,他觉得他最喜欢的是系数为 ±1 的多项式。他把所有 24 次以下的这样的的多项式的根绘制成一副高清晰度的图片,这些多项式一共有 224 个,其根大约共有 24 × 224 个,也就是大约四亿个。他用 mathematica (一个数学软件)花了大概四天时间才计算出所有这些根,得到了大约 5G 的数据。然后他用 Java 语言生成了这幅美妙的图案:

polynomialrootssmall

颜色表示根的密度,从黑色到暗红色到黄色再到白色。上图是低分辨率版本,这里有一个 90M 的文件可供下载。我们可以放大一点看到更多细节:

polynomialroots_closeup

请注意单位根周围的那些小洞,还有圆弧内部的那些羽毛。为了更清楚地观察,我们把下面这些标记出来的区域放大:

polynomialrootscrops

这里是 1 这个点处的那个洞。(即上面最右边那个标记出来的区域。)

polynomialroots1

中间那条白线是实轴。这是因为有非常多的多项式根都是实数。

然后这里是 i 这个点处的洞。(即最上面那个标记区域。)

polynomialrootsi

这是 exp(iπ/4) 这个点周围。(差不多位于 1 和 i 正中央。)

polynomialrootsexpi025p

请注意,根的密度在接近这个点的时候会变大,然后又突然变小。可以看到这些密度所形成的微妙的图案。

但是更漂亮的是当我们来到单位圆内部时的那些羽毛状图案!这里是实轴附近的样子,这个图的中心位于 4/5 点处。(右边数第二个标记区域。)

polynomialroots08

在 (4/5)i 点处的样子就截然不同了。(从上数第二个标记区域。)

polynomialroots08i

但是我觉得最漂亮的还要说是 (1/2) exp(i π / 5) 这个点周围的区域。(剩下的那个标记区域。)这幅图生动的展示出,在我们的数学研究中,规律性是如何从一团混沌中逐渐成型的,就像从薄雾中隐约显现出来一样。

polynomialroots05expi02

这里有太多东西需要解释了,每幅图片都至少需要一两个定理来描述。如果想看到更多的这类结果,可以参见:

Loki Jörgenson, 限定系数多项式的根 以及 相关图片
Dan Christensen,整系数多项式的根的图案

相关文章
  1. 这个要什么样的多项式才能解出这么多根?

      • 是啊,盖为每个多项式都能战斗出一丝蜿蜒,那一群多项式能战斗出一片蓝天也就不足为奇了,只是未曾料到竟至如此绚丽......

  2. 我是菜鸟,我就很诧异图形怎么得出来的,,颜色怎么算的,,
    不是你早设定好了一个映射颜色吗,所以你的数字出来然后根据这个映射规律成图。
    所以图是不是太主观,,如果我定个别的映射规律,那图是不是完全又不同了。。。

  3. 哈哈,看到本行的东西了,开心呢
    木遥达人做什么方向研究呢?
    代数么?
    回头弄篇分型的文章给大家看哈,更是惊艳呢
    多项式的美外行能看见的有冰山一角
    真正有多美,数学人自己知道
    加油哦,顶你哈

  4. 高中也用几何画板把好几个方程的曲线画出来,不过最多也就是十几条曲线同时在一个坐标上而已,这个也太震撼了...
    p.s.那个90M的图怎么下不下来呢...

  5. 这些图案很像时空通道出现时,虫洞口的景象,是一个从大到小的渐进过程,自然界很多东西都是相通的。

  6. 感觉似乎自然界与数学之间有某种神秘的联系。
    我们能否求证出花或者雪花形成所遵循的数学规律?

  7. 从这个图我想到了先有自然数,后有素数,很奇怪的结论。

  8. 真好看……无数次看到这些东西就难以抑制学基础数学的冲动……

    然则,真正的去做研究,是要枯燥很多的吧……

    无比纠结中……

  9. Pingback: 多项式的根之美 | 科学点亮中国

  10. 我们是不是可以画出宇宙?

    我觉得宇宙是数学,万物皆数学。数学是万物的规律。

    • 这个图我上《数学实验》课的时候画过了,下面这个就是程序。没有考虑对称解
      的情况下作优化。

      注:第一个参数 rank 用来设定多项式的次数,你该24就得到原文中的那个图像了,但是要美化成那个样子就不是我所能作的了。 rank=14就可以看到羽毛的形状了。

      ListPlot[pts2] 画出的点去掉了所有实数解,含有实数解的话,图有点扁。

      rank = 14;
      zeros = Table[0, {rank}];
      s = Table[x^k, {k, 0, 20}][[1 ;; rank + 1]];
      cod = Table[IntegerDigits[k, 2], {k, 0, 2^rank}] /. {0 -> -1};
      codd = Take[Join[#, zeros], rank + 1] & /@ cod;
      ans = Flatten[
      Table[NSolve[Dot[s, codd[[i]]] == 0], {i, 1, Length[codd]}]];
      pts1 = {Re[#], Im[#]} & /@ (#[[2]] & /@ ans);
      pts2 = Cases[#[[2]] & /@ ans, Complex[x_, y_] -> {x, y}];
      ListPlot[pts1, PlotStyle -> PointSize[0.0005], AspectRatio -> 0.8,
      Axes -> False]

  11. 你好,你在博文说那个90M的图形可以下载,但是我点击你给出的链接,没法下载。请问能用QQ或者QQ邮箱发给我吗?402698576

  12. 刚才想了一下有了所有的数据之后,这个图怎么画出这个效果来的,结果发现美化效果比画图本身还要难。

    上面说按点的密度来染色,那么就可以对每一个点,求出它周围有多少个其他的点,然后给该点赋予一个color值,可是要求出一个点周围有多少个点这个太麻烦了。采用某种能量函数可不可以呢?

  13. 我重复了一次,用C++也算了4天,不给力啊,可能是i5 的CPU,每个进程只能用到25%的性能
    发现此图的颜色是修改过的
    原图暗的多了

    比如某个像素的解个数为n,所有像素解个数最大值为nmax
    那么某个点的原颜色值为n/nmax
    而修改过的图颜色值为n/nmax * 500 (大概在500-800之间)

    然后我来解释下颜色的生成
    RGB颜色值有3字节,每个通道1字节,也就是256种状态
    0是最暗,255是最亮
    这种染色方式好像叫黑体
    从最暗到最亮有765种状态,所以让n/nmax*764
    n/nmax*764 在 0-254的话,R通道颜色值就是 n/nmax*764,其他2个通道为0
    如果在255-509,R通道为255,G通道为n/nmax*764 - 255,B通道为0
    如果在510-764,R\G通道为255,B通道为n/nmax*764 - 510