云霄县| 坝洒农场| 榕江县| 艾古斯乡| 宝盛乡|

V设计

空间设计简论

空间设计简论

一个好的空间的重点并非是表现手段。构成.颜色.材质(不局限于此列比)都是手段基调,而非一个空间的主题基调。通过结合运用手段的设计人可以类比为三国的杨修,识事确不识人(人指空间的元体即决定该空间存在意义的根本),况且多数是无杨修之才的,更像街头摊贩声高的吆喝罢了。我想对这一纸白页倾说一下,我理解的空间,然后再说设计的事。空间是承载物事的载体,物强调的是特定空间... 阅读全文

空间设计简论

 

一个好的空间的重点并非是表现手段。

构成.颜色.材质(不局限于此列比)都是手段基调,而非一个空间的主题基调。

通过结合运用手段的设计人可以类比为三国的杨修,识事确不识人(人指空间的元体即决定该空间存在意义的根本),

况且多数是无杨修之才的,更像街头摊贩声高的吆喝罢了。

我想对这一纸白页倾说一下,我理解的空间,然后再说设计的事。

空间是承载物事的载体,物强调的是特定空间既定的功能性,事是特定空间的可能性。50年代出, 华北无线电联合器材 联合厂在京郊毫无工业基础的酒仙桥地区筹建时,

谁能想到50年后这座 新中国“一五”期间的工业厂区变成了中国乃至亚洲的艺术核心。798的再利用是时间的产物更是时代的产物,同样谁也不会知道这座艺术区下一个多少年后的所扮演的身份会是什么,

这也是空间吸引我的重要原因。

我想,在空间面前我们不是执刀的屠户.掌墨的画家,因为每一个空间的可能性是高于或等于我们存在的,双方的契约首先是对彼此的尊重,

所以我认为空间的第一元体应该留给空间本身,其次是人是物。

作者:David Zhang

收起全文

ibanana

West Elm公司总部/VM Architecture & Design(19张)

辛几何&李代数

梅森素数的分布式网络计算

梅森素数的分布式网络计算

生成一个列表(Forming a list) 很容易证明,如果 2P-1 是素数,则 P 也一定是素数。因此,搜索梅森素数的第一步就是生成一个用于测试的素数指数列表。 试验分解因子(Trial Factoring)下一步是通过寻找小因子来排除一些指数。有一个非常高效的算法判断一个数是否能整除 2P-1。例如,让我们看一下 47 是否能够整除 22... 阅读全文

生成一个列表(Forming a list)

很容易证明,如果 2P-1 是素数,则 P 也一定是素数。因此,搜索梅森素数的第一步就是生成一个用于测试的素数指数列表。

 

试验分解因子(Trial Factoring)

下一步是通过寻找小因子来排除一些指数。有一个非常高效的算法判断一个数是否能整除 2P-1。例如,让我们看一下 47 是否能够整除 223-1。把指数 23 转换成二进制数,我们得到 10111。从 1 开始,重复以下步骤:平方,删除指数的最左边二进位,如果该位是 1,则将平方后得到的值乘以 2,然后计算其除以 47 后的余数。

平方删除最左边二进位如果需要就乘以 2除以47的余数
1*1 = 1101111*2 = 22
2*2 = 40111no4
4*4 = 1611116*2 = 3232
32*32 = 1024111024*2 = 204827
27*27 = 7291 729*2 = 14581

因此,223 = 1 mod 47。两边同时减 1,223-1 = 0 mod 47。因此我们知道 47 是一个因子,从而 223-1 不是素数。

可以证明梅森数有一个非常好的性质:2P-1 的任何因子 q 必定是 2kP+1 的形式,并且 q 除以 8 的余数一定是 1 或者 7。最后,一个高效的程序可以利用任何可能的因子 q 必须是素数这一事实。

GIMPS 程序的分解因子代码使用修正的厄拉托森斯(Eratosthenes)筛法,利用一个二进位表示一个可能的 2kP+1 形式的因子。这个筛排除能够被大约 40,000 以下的素数整除的任何可能的因子。同样,表示除以 8 的余数是 3 或者 5 的可能的因子的二进位被清除。这个过程排除大约百分之九十五的可能的因子。剩下的可能的因子使用上面描述的高效的算法进行测试。

现在唯一的问题是要试验分解多少因子?答案取决于三个因素:分解因子的代价、发现一个因子的概率和素性测试的代价。我们使用以下公式:

分解因子的代价 < 发现因子的概率 * 2 * 素性测试的代价

也就是说,分解因子所花费的时间必须小于期望被节省的时间。如果能够发现一个因子,我们就能够避免进行首次素性测试和复查。

根据以前分解因子的数据,我们知道发现一个 2X 到 2X+1 之间的因子的概率大约是 1/X。本程序进行素性测试和分解因子所需的时间已经被计算出来。目前,本程序试图分解因子到:

指数上限分解因子到
3,960,000260
5,160,000261
6,515,000262
8,250,000263
13,380,000264
17,850,000265
21,590,000266
28,130,000267
35,100,000268
44,150,000269
57,020,000270
71,000,000271
79,300,000272

 

用 P-1 方法分解因子(P-1 Factoring)

还有另外一个方法可被 GIMPS 程序用来搜索因子,因而避免进行素性测试的花费。这个方法叫做波拉德(Pollard)(P-1)方法。如果q 是某数的一个因子,并且 q-1 是高度复合的(也就是说 q-1 只有小因子),P-1 方法就可以找到因子 q

该方法用于梅森数时甚至更高效。回忆一下,因子 q 只能是 2kP+1 的形式。只要 k 是高度复合时,就很容易修改 P-1 方法去搜索因子 q

P-1 方法是十分简单的。在第一阶段我们挑选一个边界 B1。只要 k 的所有因子都小于 B1 (我们称 k 为 B1-平滑 (B1-smooth) ),P-1 方法就能找到因子 q。我们首先计算 E = (比 B1 小的所有素数的乘积)。然后计算 x = 3E*2*P。最后,检查 x-1 和 2P-1 的最大公约数,就可以知道是否找到一个因子。

使用第二个边界 B2,我们可以改进波拉德算法,达到第二阶段。如果 k 在 B1 到 B2 之间刚好有一个因子,而其它因子都小于 B1,我们就能够在第二阶段找到因子 q。这个阶段要使用大量的内存。

GIMPS 程序使用该方法去寻找一些给人印象深刻的因子。例如:

22,944,999-1 能够被 314,584,703,073,057,080,643,101,377 整除。
314,584,703,073,057,080,643,101,377 等于 2 * 53,409,984,701,702,289,312 * 2,944,999+1。
值 k,53,409,984,701,702,289,312,是非常平滑的:
53,409,984,701,702,289,312 = 25 * 3 * 19 * 947 * 7,187 * 62,297 * 69,061

GIMPS 如何智能地选择 B1 和 B2 呢?我们使用试验分解因子方法中的公式的变种。我们必须使下式取得最大值:

发现因子的概率 * 2 * 素性测试的代价 - 分解因子的代价

发现因子的概率和分解因子的代价都依赖于 B1 和 B2 的取值。当 k 是 B1-平滑 或者 k 是 B1-平滑 并且在 B1 到 B2 之间刚好有一个因子时,迪克曼(Dickman)函数(参见高德纳(Knuth)《计算机程序设计艺术》第二卷(译注:中文版第347页))用来确定发现因子的概率。本程序尝试许多 B1 的值,如果有足够的可用内存的话也尝试一些 B2 的值,用以确定使以上公式取得最大值的 B1 和 B2 的值。

 

卢卡斯-莱默测试(Lucas-Lehmer testing)

卢卡斯-莱默素性测试是非常简单的:如果 P > 2, 2P-1 是素数当且仅当 SP-2 = 0,其中,S0 = 4,SN = (SN-12 - 2) mod (2P-1)。例如,证明 27 - 1 是素数的过程如下:

S0 = 4
S1 = (4 * 4 - 2) mod 127 = 14
S2 = (14 * 14 - 2) mod 127 = 67
S3 = (67 * 67 - 2) mod 127 = 42
S4 = (42 * 42 - 2) mod 127 = 111
S5 = (111 * 111 - 2) mod 127 = 0

为了高效地实现卢卡斯-莱默测试,我们必须寻找对巨大的数进行平方及对 2P-1 取余的快速方法。自二十世纪六十年代后期以来,对巨大的数进行平方的最快速的算法是:把巨大的数分裂成小片形成一个大数组,然后执行快速傅里叶变换(FFT),逐项平方,然后再进行快速傅里叶逆变换(IFFT)。参见克努特的《计算机程序设计艺术》第二卷“乘法能有多快?”一节(译注:中文版第267页)。1994年1月,由Crandall)和巴里·费金(Barry Fagin) 合著的题为“离散加权变换和大整数算术”的计算数学文章,引入了无理底数 FFT 的概念。这个改进使得计算平方的速度提高两倍以上,允许使用较小的 FFT,并且这一过程中自动执行了对 2P-1 取余步骤。虽然由于英特尔公司的奔腾处理器体系结构的原因,GIMPS 程序使用浮点 FFT,但彼得·蒙哥马利(Peter Montgomery)给出的一个纯整数加权变换的方法也能够被使用。

正如上一段所提到的,GIMPS 使用汇编语言编写的浮点 FFT 算法,充分利用流水线和高速缓存。因为浮点运算是不精确的,在每次迭代后浮点值舍入到整数。本来该有的整数结果和程序计算出来的浮点结果之间的差异叫做“卷折误差”。如果卷折误差超过 0.5 则舍入将产生不正确的结果 - 这意味着必须使用更大的 FFT。GIMPS 程序的错误检查确保最大卷折误差不超过 0.4。不幸地,这种错误检查的代价相当高,以致于不能在每次平方后都进行检查。存在另外一种代价很低的错误检查。FFT 平方的一个性质是:

(输入 FFT 值的和)2 = (输出 IFFT 值的和)

由于我们使用浮点数,我们必须将上式中的“等于”改为“约等于”。如果上式中两个值实质上不等,将给出一个在 readme.txt 文件中描述过的 SUMINP != SUMOUT 错误。如果输入 FFT 值的和是一个非法的浮点数(例如无穷大),将给出一个 ILLEGAL SUMOUT 错误。不幸地,这种错误检查无法发现我们将在下一节中描述的所有错误。

卢卡斯-莱默测试发现一个新的梅森素数的概率有多大?一个简单的估计是再次利用发现一个 2X 到 2X+1 之间的因子的概率大约是 1/X 的事实。例如,你已经使用试验分解因子证明 210,000,139-1 没有比 264 小的因子,那么它是素数的概率是:没有 65 二进位因子的概率 * 没有 66 二进位因子的概率 * ... * 没有 5,000,070 二进位因子的概率,即:

梅森素数的分布式网络计算

化简后得到:64 / 5,000,070,或者1 / 78,126。这个简单的估计不是很准确,它给出的公式是:(试验分解因子到多大的指数) / (指数/2)。进一步的工作表明更精确公式是:(试验分解因子到多大的指数-1) / (指数 * 欧拉常数(0.577...))。在上例中,是1 / 91,623。这个更精确的公式是未经证明的。

 

复查(Double-checking)

为了核实首次的卢卡斯-莱默素性测试没有出错,GIMPS 程序运行第二次素性测试。在每次测试期间,最终的 SP-2 的最低 64 二进位,叫做余数,被打印出来。如果它们相同,GIMPS 宣称该指数已经被复查。如果它们不相同,素性测试被再次运行直到最后出现匹配。和首次测试相匹配的复查,通常是在首次测试之后大约两年进行。GIMPS 分配复查给较慢的计算机,因为该指数比正在进行的首次测试的指数小,以便较慢的计算机能够在合理的时间内完成其工作任务。

GIMPS 复查采取进一步的防护措施以避免程序设计错误。在开始卢卡斯-莱默测试之前,S0 的值被左移随机的二进位。每次平方刚好加倍我们左移的 S 值。注意对 2P-1 取余的步骤仅是简单地将第 P 位以上的位移到最低有效位,因此没有信息丢失。为什么我们要自找麻烦呢?因为如果计算 FFT 的程序代码有错误,对 S 值的随机的移位确保第二次素性测试中的 FFT 算法处理一个和首次素性测试完全不同的值。一个程序设计错误几乎不可能产生同样的最终 64 二进位余数。

历史上,卢卡斯-莱默测试运行期间没有报告严重错误时,结果的错误率大致是 1.5%。卢卡斯-莱默测试产生的错误被报告的比率大约是 50%。作为记录,我没有把“ILLEGAL SUMOUT”作为严重错误统计。

收起全文

辛几何&李代数

康威常数2

康威常数2

六、具体的应用:&1&,&2&和&3&的比例先解释一下这里&应用&的意思。许多读者看到这个理论的第一个(或第二个第三个……)反应也许会是&那这个理论在实际中有什么用途呢&?边说边看理论中的&说&&看&过程其实是一种被称为&游程编码&的编码方式。这种编码方式有时被用作数据压缩的方式,如在一些图像格式中。也许因为是这个原因,康威的论文在第二次发表时,刊登在一本和... 阅读全文

六、具体的应用:“1”,“2”和“3”的比例

先解释一下这里“应用”的意思。许多读者看到这个理论的第一个(或第二个第三个……)反应也许会是“那这个理论在实际中有什么用途呢“?

边说边看理论中的“说”“看”过程其实是一种被称为“游程编码”的编码方式。这种编码方式有时被用作数据压缩的方式,如在一些图像格式中。也许因为是这个原因,康威的论文在第二次发表时,刊登在一本和通信有关的学术论文集上。(第一次发表在剑桥大学数学学会的会刊Eureka上。)如果要强调边看边说理论有什么实际应用,也许这是个好的切入点。

不过我觉得这理论其实并没有什么实际用途,至少到目前为止没看见它有。它的价值在于它的美,而它的美源于它起源的质朴和内容的(相对)深刻以及形式的奇诡之间的强烈对比。一个数学理论,它是美的,这就是很好的价值了。

本节和后面所说的“应用”,是用康威的理论去回答一些问题。这些问题并不依赖于理论而存在;从原则上说,以直接产生边看边说序列再作观察的方式也能回答这些问题;但从现实上这样做非常困难,或根本不可能。本节想问的问题就是,从1开始的边看边说序列,它的第100,或是第1000000项有多少个数字,其中分别有多少“1”,“2”和“3”?

用直接写出每一项的方法,我们很容易计算出这个序列的前面几项的长度:

 

1, 2, 2, 4, 6, 6, 8, 10, 14, 20, 26, 34, 46, 62, 78, ……

 

但是这个直接生成数字串并作统计的方法会变得越来越困难,所需要的计算量和储存空间越来越大。根据算术定理,序列长度以指数增长。取康威常数为1.3,以非常粗略的方式估计,它的第100项的长度大约会是1.3100≈2×1011,也就是千亿这个数量级,生成新数字串的计算量变得非常大。而它的第1000项的长度则要超过10100,此时光是储存数字串也变得不可能,因为可观测宇宙内的原子总量据估计也仅有1080个。如果我们想知道第1000000项数字串有多长,其中分别有多少“1”,“2”和“3”,靠直接生成数字串的方法是完全不可行的。

但通过康威理论,这个问题就容易解决了。

我们知道,从数字串1开始的边看边说序列在第8项演化成由一个72铪元素和一个50锡元素组成的化合物。从这一天起,通过查询元素列表中的“一天后衰变物”一栏,每天演化出来的化合物中的各元素数量都可以通过前一天化合物中各元素的数量来计算:比如说,如果前一天的化合物中有100个31镓元素,那么次日的化合物中就会因此产生100个1氢元素,200个20钙元素,100个30锌元素,100个63铕元素和100个89锕元素。由分割的原理,化合物中的每一个元素都可以看作是在独立演化而不和化合物中其他(同种或不同种的)元素的演化过程相互干扰。92种元素中的每一种都可如此算出次日产生的元素数量,求和后就可得出次日产生的化合物中每种元素的含量。下面给出了第8项到第20项以及第99和第100项的结果:

康威常数2

接下来当然就很简单了,统计一下每种元素里“1”,“2”和“3”的数量,乘以化合物中此种元素的数量,再分别相加,就得到了化合物中“1”,“2”和“3”的数量。计算的结果是,第100项有511247092564个数字,其中有253103530928个"1",63796211233个"2"和94347350403个"3"。“1”,“2”和“3”在此项中的比例大约分别是49.507084658%,32.038560926%和18.454354416%。(上面这三个百分比相加不严格等于100%,因为分别有尾数的四舍五入。下同。) 注意到这个结果和我们上面粗略的估计千亿这个数量级是相符的。

对第100项可以这样算,对第1000000项也同样可以这样算,没有什么原则上的不同。只是对第1000000项来说,其中所含的元素数量实在太多,如果在编程时使用普通的32位或64位甚至128位的整数类形来表示是远远不够的,必须使用支持任意长度整数的数据类型,比如Java语言中的BigInteger。不过在此无法将这些数字具体写出来:第1000000项的长度以十进制数表示出来的话会有115137位,写出来将是一本中篇小说的篇幅。“1”,“2”和“3”的数量也一样无法具体写出,它们在此项中的比例分别约为49.507077868%,32.038585700%和18.454336321%。

看来当项数比较大时,“1”,“2”和“3”在数字串中的比例会趋向定值。这其实是算术引理的推论。因为随着项数趋于无穷,各元素在数字串中的比例趋近于它的丰度。以每种元素中“1”,“2”和“3”的数目乘以它的丰度,再分别相加能得到三个数字a,b和c,将它们归一化操作(即分别除以a+b+c)后就得到了当项数趋于无穷时“1”,“2”和“3”的比例的理论值,结果是约49.507077857%,32.038585734%和18.454336411%,和上面的结果相符。

我们可以问,为什么上面使用的计算长度的方法要比直接产生此项数字串再统计其长度的暴力法的计算速度快得多。因为在这种方法中,元素之间的顺序这个信息被省略而不参与计算。在前面的表中,我们只知道每一项化合物中每种元素有多少,但不知道它们分别处于化合物的什么位置。依照化学中表示物质组成的化学式来作比方的话,直接产生某项数字串类似于要知道物质的结构式,而上面的计算则只是得到了物质的实验式。而我们要知道数字串的长度或是其中“1”,“2”和“3”的数量,却恰恰并不需要知道元素之间的顺序。

 

七、具体的应用:第1000000项的某位数字

前面一节中的计算因省略计算元素之间的信息而变得迅速,但康威的理论也同样能帮助我们快速地知道,以1开始的边说边看序列的某项数字串的某个具体位置的数字是什么。

比如我们可以计算出,序列的第1000000项是以“132113213221133112”开始的。这我们甚至可以用手算:它的第8项以72铪开头,于是第9项以71镥开头,然后依次以70镱,69铥,68铒,67钬,66镝,65铽开头,第16项又以67钬开头,我们发现了67钬→66镝→65铽→67钬……这个循环,所以此后所有3n的项都以65铽开头,3n+1的项都以67钬开头,3n+2的项都以66镝开头,于是第999999项以65铽开头,而第1000000项以65铽一天后的衰变物,也就是6764钆开头。要计算第1000000项是以什么结尾的可用类似办法。这其实是起首引理和结尾引理的推论。

任意给定自然数n,要计算第1000000项数字串的第n位是什么数字则比较麻烦一点,但原则上来说也不难,当然一般不能用手算。序列在第8项演化成7250锡。而按照前面的方法,我们可以精确计算72铪演化1000000-8=999992天后产生的化合物的长度d;如果d大于等于n,那么原问题就转化为72铪演化999992天后数字串第n位是什么数字,反之则转化为50锡演化999992天后数字串第n-d位数字是什么。这种方法可以一直继续下去直到求出结果:当化合物中有超过一个元素时,我们求出第一个元素最终产物的长度,以便知道我们感兴趣的那一位数字是否由它产生,如果不是,则可以抛弃这个元素(并修正所求数字所在的位数);当化合物中只有一个元素,则将其代换为它一天后的衰变物,再重复这个步骤。

上面的算法的具体实现则需要一点技巧,因为单独一次计算某元素在若干天后产物的长度虽然并不耗时,但如果每次使用都需要重新计算的话,所用的总时间也是惊人的。所以可以预先计算,要用时再查表。可是如果所有计算结果都储存的话,需要的空间相当大(大概超过2To)。笔者采用折衷的方式,储存每隔1000天的结果,将所需空间削减为原需的千分之一,中间结果则在需要时再当场计算填充。具体的程序实现属于编程和算法问题,在此就不详细介绍了。在一台并不很新的个人电脑上,笔者的程序用大约20分钟生成上面所说的元素产物长度表格,每回答一个“第1000000项数字串中间第n位是什么”的问题则需要大约10分钟。计算结果:序列从第1040000位开始的几个数字是3222112,它其实是一个3锂元素的结尾部分;第1090000位开始的几个数字是312,它其实是一个23钒元素的结尾部分。

八、线性代数的语言

现在我们来讨论本文最有意思的部分,关于算术定理的证明。这部分证明必须用到线性代数的知识,所以从现在起我假设读者了解线性代数的一般知识。

根据元素列表中的“一天后衰变物”一栏,我们定义一个92×92的矩阵M,它在第i行第j列处的值为第j号普通元素一天后衰变物中的第i号普通元素的数量。比如说1氢的一天后衰变物仍是1氢,于是矩阵的第1列只有在第1行处的值为0,其余均为0;而31镓的一天后衰变物是63208912030锌,于是M的第31列在第1、30、63和89行处的值为1,在第20行处的值为2,在其余行处的值为0。我们把这个矩阵称为边看边说矩阵

矩阵M的规模比较大,在网页上不容易完整地表示出来。好在它的元素很简单,大多数是0,其余的基本都是1,只有一个值是2,所以我们可以用下图中点阵的方式来表示这个矩阵,其中每个白点表示此处值为0,黑点表示1,红点表示2。

康威常数2

M的点阵表示

矩阵M包含了普通化合物演化的几乎所有信息。说“几乎”是因为它和第六节中的计算一样,忽略了演化过程中各元素间顺序的信息。对任意一个普通化合物C,我们都可以写出一个有92个分量的列向量u来,它的第i个分量是C中第i号普通元素的数量,我们称它为普通化合物C对应的向量

任何一个普通化合物C,如果它在次日演化成C',那么容易看出,C'对应的向量u'=Mu,也就是说“左乘M”代表了“演化1天”的操作(但是忽略了元素次序)。想知道C'再过一天的演化结果所对应的向量,只要在u'左边再乘以一个M,所以是M2u,这是C演化2天后所得化合物对应的向量。如此下去,C在第n天的演化结果所对应的向量就是Mnu这就把(忽略了元素顺序的)普通化合物演化过程完全地用线性代数的语言表述出来

比如第六节中那个表格现在就可以用矩阵的语言相当简明地表达。令u是第50、72分量为1,其余分量为0的列向量(对应于第8天的普通化合物7250锡),“化合物中元素个数”一栏表述的其实就是向量Mn-8u的各个分量,其中n是以1开始的边看边说序列的项数。

于是我们可以用线性代数的语言和工具来表述和研究边看边说序列的演化问题。算术定理叙述的,实际上就是当n趋向于无穷时,矩阵Mn的性质。康威在论文中提到的Perron–Frobenius定理,就是这样一个阐述矩阵的幂的极限性质的定理。我们先来看一下它的经典形式。

 

九、Perron–Frobenius定理

如果A是一个其中元素都是正实数的m阶正方矩阵。Perron–Frobenius定理断言,A的特征多项式必定有一个单的正实根μ,而且它严格大于所有其他的根的绝对值(其他的根有可能是复数)。我们知道这个根μ是A的一个特征值,Perron–Frobenius定理说,它必定有一个所有分量都是正实数的特征向量v。因为μ是单根,所以它的特征空间是1维的,就是由v生成的。

当我们说一个矩阵的“特征向量”时,我们通常指的是它的特征向量,也就是说Avvv是一个列向量(或可以说是一个m×1的矩阵)。但A同样也有关于μ的特征向量w,它可以看作是A的转置矩阵tA的(右)特征向量的转置,是一个行向量(或可以说是一个1×m的矩阵),满足wAww当然也可取成其中分量都是正实数的,而且我们还增加一个要求,要求wv=1(行向量乘以列向量的结果可以看作是一个数,也叫这两个向量的内积),这可以通过将w乘以合适的系数做到。

 

Perron–Frobenius定理进一步说,当自然数n趋向于无限时,矩阵序列{(1/μn)An}的极限是矩阵vw(不要和上面的wv=1的要求搞混了,列向量乘以行向量的结果是m阶正方矩阵)。

这实在是一个非常漂亮的定理!要是它适用于边看边说矩阵M的话,Mn在n趋于无穷时的性质就可以通过计算M的特征值和特征向量得到,算术定理也就唾手可得了。

很遗憾,至少是在康威写作论文的那个时代,Perron–Frobenius定理对M并不适用——它的系数充满了不是正数的0。Perron–Frobenius定理也存在着其他一些形式。在某些形式里,条件被放宽为矩阵的元素可以是大于或等于0的实数,但矩阵必须是不可约的或是对称的,或是存在某个k使得Mk的元素都严格大于0,这些也是M所不能满足的——因为M显然不对称,而由于1氢元素的性质,M的第一列除了第一项外都等于0,这使得它是可约的,而且对任何自然数n,Mn的第一列除了第一项外也都等于0。

在这里岔开去说一点,Perron–Frobenius定理是相当有用的一个定理。在实际当中我们常会碰到元素均大于0或是均大于等于0的矩阵,最常见的有马尔科夫链的状态转移矩阵和图论中的邻接矩阵。Google公司搜索引擎的核心技术PageRank(网页排名)就是基于转移矩阵理论和对上面所说的那个特征值的计算,而Perron–Frobenius定理则保证了这个特征值的存在性。从理论上来说,Google要对付的那个矩阵的行和列数,和它搜集的网页数相等,是当之无愧的巨无霸矩阵。如何对它作特征值计算,大概是Google最重要的商业秘密之一,当然这是本文的题外话了。

十、加强版算术定理

因为前面所说的那些形式的Perron–Frobenius定理都不能应用于边看边说矩阵M,于是康威就在论文中用直观的方法证明了一个猴版的结论,也就是前面介绍的算术定理。之所以称它是“猴版”,是因为其结论是不完全的。它只是说,从任何一个普通化合物开始,每一步演化得到的数字串的长度和上一步相比,越来越趋近于康威常数λ,却没有对演化n天后的数字串的长度作直接的估算。下面这幅11钠,29铜和62钐开始演化后30天内序列中数字串长度的统计图很直观地显示了这个定理的正确性。注意到图中纵轴是对数坐标轴,指数函数在这样的坐标系中的图像是直线。随着项数的增长,图中的三条曲线很快都近似直线。三条直线的斜率都一样,通过算术定理我们知道这斜率就是康威常数λ。

康威常数2

长度的增长

但是算术定理无法说明的是,三条直线高低不同的位置是由什么决定的。如果把三条直线所对应的指数函数写成y=cλn的形式,我们就要问:对于每种不同的普通化合物,它所对应的c是由什么决定的,如何计算呢?下面的表中,我们对若干项n计算了以上述三种普通元素开始的边看边说序列的“演化n天后数字串的长度/λn”的值,也即上述c的经验值:

演化天数112962
09.00000006.00000006.0000000
19.20543826.13695886.1369588
28.23862014.70778299.4155658
38.12572596.32000909.0285843
48.31120756.92600638.3112075
57.43830765.313076910.094846
66.92880356.521226810.596994
76.56586336.87852359.3798047
86.23604325.756347510.553304
95.51976066.255728710.855529
105.22232546.77490879.5977873
205.29914806.12589489.9309221
505.29850206.050634010.037356
1005.29939126.050388710.035343
10005.29939036.050390710.035341
100005.29939036.050390710.035341
1000005.29939036.050390710.035341

看来,与11钠,29铜,62钐相对应的c值应该分别大约是5.2993903,6.0503907和10.035341。29铜和62钐的长度都是6,可是对应的c值却差许多;11钠的长度是9,可是对应的c值却反而小于29铜和62钐的。也就是说,从两个初始长度相同的化合物出发,接着用相同时间演化出来的化合物长度可以差许多,甚至有可能初始长度长的化合物,接下去演化出来的化合物的长度反而短。算术定理无法告诉我们这是为什么,更不能对每种化合物预言和它对应的c值。

康威的论文写于1980年代。二十多年后,代数学家们对Perron–Frobenius定理的研究更加深入,与其说现在我们有Perron–Frobenius定理,不如说我们有Perron–Frobenius理论,我们拥有了当年康威所没有的工具。文献[2]中的定理2.4简直就是为边看边说矩阵M量身定造的。它说,如果一个n阶实系数正方矩阵A有一个绝对值最大的正特征值,而且和它相关的左右特征向量都可以取分量非负的话,那么前面Perron–Frobenius定理中所叙述的“当自然数n趋向于无限时,矩阵序列{(1/μn)An}的极限是矩阵vw”的结论同样成立。

注意到在原版Perron–Frobenius定理中,关于存在绝对值最大的正特征值以及正分量的左右特征向量的命题,是结论的一部分,在上面的定理中则成了条件的一部分。对于矩阵M,这个条件是可以独立计算和验证的。关于矩阵的特征多项式、特征值和特征向量的理论,是线性代数的基础知识,在此我就不重复了。

康威证明了,M的92次的特征多项式可以被因式分解,去掉那些根为0或±1的因子,剩下的就是我们在算术定理中看到的那个71次多项式。下图是这个多项式的解的图示,最右方红点即康威常数λ。

康威常数2

71次多项式的解。图中心为原点,每一小格边长为0.5

在这里值得一提的是幂法求特征值的迭代算法(具体方法可以以“幂法 特征值”为关键词在网上查询)。本来这个算法有点鸡肋,因为它只能求绝对值最大的特征值(如果改变一下也可求绝对值最小的特征值,称为反幂法),所以如果要求所有的特征值就不适用了。可是这里我们恰恰只需要求绝对值最大的特征值,用求所有特征值的算法求出一堆特征值来到反而还得另去筛选出绝对值最大的来,反而麻烦。而且幂法能同时求出这个特征值和相关的特征向量。这简直是要睡觉就有人送上了枕头!笔者用这个方法轻松地就求出了M这个绝对值最大的特征值小数点后三百位的值和精确程度类似的相应的特征向量,虽然这么精确的数据其实没什么大用处。

于是我们就有了比原版算术定理更强的
加强版算术定理
1) 边看边说矩阵M有一个在其所有特征值中绝对值最大的特征值λ。λ为正实数,是M的特征多项式的单根。
2) M有一个关于λ的,分量都是正实数的,分量之和为1的(右)特征向量v,我们称v丰度向量
3) M有一个关于λ的,分量都是正实数的左特征向量w,满足wv=1。我们称w富度向量
4) 当自然数n趋向于无限时,矩阵序列{(1/λn)Mn}的极限为矩阵vw

事实上定理中的λ就是康威常数λ。在原版定理中它是一个神秘的71次多项式的根;而在加强版定理中,它被明确为边看边说矩阵的唯一的绝对值最大的特征值。下面我们来看看如何由上述加强版定理推导出原版算术定理。

注意到在文献[2]定理2.4中,v并不是被唯一确定的,而是可以被乘以任意一个正实数,而在上述加强版定理中,对丰度向量v有一个“分量之和为1”的附加要求,v就被唯一确定了。正如它的名字所暗示的,v的各个分量就是各普通元素的丰度:第1个分量对应着1氢的丰度,第2个分量对应着2氦的丰度,等等。

富度向量w因此也被唯一确定,我们可以定义第n号普通元素的富度w的第n个分量。从线性代数的观点来看,wv是相对于同一个特征值的左右特征向量,是对偶的数学对象,所以我们可以把丰度和富度看作是对偶的概念。丰度的英文为abundance,于是和它对偶的富度可以反译回去称作coabundance。

我们不仅可以对普通元素定义其富度,而且可以对一般的普通化合物定义它的富度:普通化合物的富度就是组成它的普通元素的富度之和(同一种元素多次出现则对其富度多次求和)。比如化合物63208912030锌的富度就等于63铕、89锕、1氢、30锌的富度加上两倍20钙的富度。上述定义可以用线性代数的语言简单地写为:令C是一种普通化合物,设它所对应的列向量是u,那么它的富度就是富度向量wu的内积wu

在讨论富度的实际意义前,我们先列出所有普通元素的长度、丰度和富度:

元素长度丰度富度
120.09179038325.6080827086
2320.00323729693.2519030758
3270.00422006662.4945994020
4420.00226388604.4173991800
5340.00295115043.3886745994
6280.00384705252.5995195528
7240.00501493021.9941430512
8180.00653734911.5297467197
9140.00852193971.1734990753
10120.01110900680.9002144354
1190.01448144880.6905723633
12100.01885044121.0642759581
13100.02457300670.8164272141
1470.03203281300.6262975226
15120.01489588671.5173799538
16100.01941793921.1640122836
1760.02531278420.8929369292
1840.03299717010.6849896438
1940.04301436090.5254691533
2020.05607254310.4030978184
21160.00930209742.2191977577
22140.01212600281.7023906526
2380.01580718161.3059376632
2450.02060588261.0018107052
25120.02686136021.2489541407
2680.03501585850.9580975139
2750.04564587730.7349756218
2880.01387112421.0277878559
2960.01808208220.7884364666
3030.02357139130.6048252645
31170.00144789062.3774502059
32230.00188743722.8607239388
33262.72462160762.7242698891
34203.55175479442.0898415106
35164.62998681521.6031589076
36146.03554556821.2298150218
37107.86780000890.9434155159
3871.02562852490.7237127697
3971.33698603150.7923865601
40231.74286459972.2353942193
41282.27195867522.9203125825
42202.96167368522.2402297523
43153.86077049431.7185247131
44213.28994805762.3970976690
45244.28870150422.8757958978
46185.59065379452.2060801198
47127.28784920561.6923278521
48109.50027456451.2982182892
4980.00123843420.9958890202
5050.00161439470.7639662365
5170.00210448821.1205778552
52130.00274336301.9384007646
53180.00357618562.5239203970
54140.00466183431.9361494381
5580.00607706121.4852586679
5660.00792191881.1393714076
5750.01032683330.8740344241
58100.01346182521.5435278845
5980.01754852931.1840708803
6060.02287586390.9083242769
6130.02982045620.6967935837
6260.01540811521.3077219948
6370.02008566871.0031795014
64110.02166297281.6425976370
65160.02823935892.2970039458
66120.03681218641.7620773240
6770.04798752941.3517244937
6890.00109859561.5714588817
69140.00120490842.0785360303
70100.00157069121.5944862492
7160.00204751731.2231620535
7250.00266909700.9383118918
73322.42077366663.2519030758
74273.15566552522.4945994020
75421.69288018084.4173991800
76342.20680012293.3886745994
77282.87673447752.5995195528
78243.75004567391.9941430512
79184.88847429831.5297467197
80146.37250397551.1734990753
81128.30705132930.9002144354
8290.00108288830.6905723633
83100.00141162861.0642759581
84100.00184016700.8164272141
8570.00239879980.6262975226
86120.00312702091.5173799538
87100.00407631341.1640122836
8860.00531378950.8929369292
8940.00692693520.6849896438
9040.00758190470.5254691533
9120.00988359860.4030978184
9211.02562852490.3092243383

任取一种普通化合物C,设它所对应的列向量是u,那么n天后C演化成的化合物所对应的列向量就是Mnu。根据加强版算术定理的3),我们知道当n趋于无穷时,(1/λn)Mnu会趋于vwu。所以对Mnu在n充分大时的性质的研究可以转化为对vwu的性质的研究。

因为矩阵的乘法满足结合律,所以vwu=v(wu),而上面我们已经知道,wuwu的内积,即化合物C的富度,它是一个实数,令它为d,则vwu=dv。这证明了从任何一种普通化合物出发,Mnu在n充分大时和λndv差不多;也就是说,经过足够长时间后,它里面的各元素的百分比就会趋近于丰度向量的各分量。这就是原版算术定理中“每种元素在这些数字串中的比例越来越趋近一个大于0的常数值”这一部分。

我们定义量长向量是这样的行向量,它的各分量分别为各普通元素长度:(2, 32, 27, 42, ……),记它为r。那么容易看出u所对应的化合物的数字串长度就是ru。所以量长向量有测量化合物长度的功能。r和丰度向量v的内积则是一个常量,记它为L,我们可称其为量长常数。(如果滥用一下术语,我们可以说L是丰度向量v所对应的化合物的数字串长度。当然不可能真有哪种化合物所对应的向量会是v,因为v的分量都不是整数,甚至不是有理数。)根据上面的表格容易计算出L≈7.6739102369。对应于Mnu的化合物的长度为rMnu,它约等于rvwuλn=drvλn=dLλn。换句话说,当n相当大时,dLλn是C在n天后演化结果的长度的很好的估计。

这下我们看出来了,dL就是对本节开始想求的c,即化合物的富度乘以量长常数。对11钠,29铜和62钐来说,其富度乘以量长常数的值分别约为5.2993903280,6.0503906721和10.0353412031。这三个数字和前面计算的经验值完全符合。

严格地写成命题的话就有:
量长推论)令普通化合物C的富度为d,它在第n天后演化结果的长度为hn,那么当n趋向于无穷时,dLλn/hn趋向于1,其中L为量长常数。

从这个结论很容易推出原版算术定理中“从任何一个普通化合物开始,每一步演化得到的数字串的长度和上一步相比,越来越趋近于固定常数λ”这部分。于是原版算术定理完全得证。

十一、更多的推论

一件有趣的事情是,如果我们将上面的r由量长向量换成每个分量都是1的行向量(1, 1, 1, 1, ……),那么ru就是u所对应的化合物中的元素个数(于是这个向量我们可以类似地称为计件向量,即以“件数”来称呼化合物中元素的个数),而rv精确地等于1(可称其为计件常数,滥用一下术语的话,丰度向量v所对应的化合物中恰好有1件元素)。对应于Mnu的化合物中的元素件数为rMnu,它约等于rvwuλn=drvλn=dλn。即在n相当大时,dλn是C在n天后演化结果中元素件数的很好的估计。

严格地写成命题的话就有:
计件推论)令普通化合物C的富度为d,它在第n天后演化结果中的元素件数为sn,那么当n趋向于无穷时,dλn/sn趋向于1。

如果再翻译回原版定理的说法,那就是“从任何一个普通化合物开始,每一步演化得到的元素个数和上一步相比,越来越趋近于固定常数λ。”事实上,这才是原版中的原版。康威的论文中的算术定理就是以化合物中元素个数为对象论证的,而不是象在本文上篇中那样,以化合物长度为对象。

这下我们达到了思路广的境界——量长和计件向量只是两个特定的向量而已,而每给定一个92个分量的行向量,上面的论证都可以被照葫芦画瓢地小小改编一下得到一个相应的推论。当然,这个行向量如果随便给就太没意思了,我在下面提几个有某种实际意义的例子。

令C是一个普通化合物,我们定义它的重量是它的所有数字之和。比如1氢的重量是2+2=4,11钠的重量是1+2+3+2+2+2+1+1+2=16。那么我们可以定义称重向量为各分量是各元素重量的行向量(4, 56, 47, 72, ……),定义称重常数则是称重向量和丰度向量v的内积,约等于12.964860969。我们有
称重推论)令普通化合物C的富度为d,它在第n天后演化结果的重量为wn,那么当n趋向于无穷时,dLλn/hn趋向于1,其中L为称重常数。

类似地我们可以引入“计1向量”、“计2向量”和“计3向量”,其分量分别是各元素中的“1”、“2”和“3”的个数,同样可定义“计1常数”、“计2常数”和“计3常数”,得到类似上面推论的“计1推论”、“计2推论”和“计3推论”。

十二、附记

如果对照康威原论文和本文内容的话,读者会发现在定理和引理的叙述方面有一些不同,最明显的是本文的化学定理变成是完全关于普通化合物的命题了,原本其中关于包含任意字符的数字串的部分,被移动到宇宙学定理中。这样的改动主要是出于科普文介绍的方便,康威从文章一开始就考虑包含任意字符的数字串,而笔者则需要注意循序渐进,以及将不同难度的问题分开。



收起全文

辛几何&李代数

赛德尔的五像差

赛德尔的五像差

赛德尔的五像差[2]1856年德国的赛德尔,分析出五种镜头像差源之于单一色(单一波长)。此称为赛德尔五像差。 球差 球面像差与物高无关而与入射光瞳口径三次方成正比的像差。它使理想像平面中各像点都成为同样大小的圆斑。轴上物点只有球差这一种像差。通过入射光瞳上不同环带的光线,经过光学系统后会聚在光轴上的不同点。这些点与近轴光的像点之差称为轴向球差。 ... 阅读全文

 

赛德尔的五像差[2]  1856年德国的赛德尔,分析出五种镜头像差源之于单一色(单一波长)。此称为赛德尔五像差。

赛德尔的五像差球面像差

与物高无关而与入射光瞳口径三次方成正比的像差。它使理想像平面中各像点都成为同样大小的圆斑。轴上物点只有球差这一种像差。通过入射光瞳上不同环带的光线,经过光学系统后会聚在光轴上的不同点。这些点与近轴光的像点之差称为轴向球差。

赛德尔的五像差彗差

与物高一次方、入射光瞳口径二次方成正比的像差。若仅存在彗差,轴外物点发出的通过入射光瞳不同环带的光线,会在理想像平面上形成半径变化的并且沿视场半径方向偏移的像圈。它们的组合会使物点的像成为形状同彗星相似的弥散斑。

赛德尔的五像差像面弯曲

与物高二次方、入射光瞳口径一次方成正比的像差。若仅存在场曲,则所有物平面上的点都有相应的像点,但分布在一个球面上;若采用弯成此种形状的底片,则可获得处处清晰的像。此时在理想像平面上,像点呈现为圆斑。

赛德尔的五像差像散

若仅存在像散,则轴外物点的光线通过光学系统后聚焦成两条焦。在这两条焦线的中点,光束形成最小。若将底片弯成处处都在这样的位置,则可获得处处像点弥散成最小的圆形斑。此时在理想像平面上,像点呈椭圆斑。

赛德尔的五像差歪曲像差

仅与物高三次方成正比的像差。若仅有畸变,得到的像是清晰的,只是像的形状与物不相似。

上述单色像差,仅与物高和入射光瞳口径的幂总共三次方成正比,称为三级像差(又称初级像差),此外还有与物高和入射光瞳口径的幂总共高于三次方的成正比像差,称为高级像差。

光学系统中。按照理想像平面上像差的线大小与物高的关系,可区分为:

赛德尔的五像差色差

位置色差(又称纵向色差) 与物高无关的像差,即不同波长的光线经由光学系统后会聚在不同的焦点。

横向色差(又称倍率色差) 与物高一次方成正比的像差。它使不同波长光线的像高不同,在理想像平面上物点的像成为一条小光谱。

这是两种最基本的色差,由于波长不同还会引起单色像差的不同,这称为色像差,如色球差、色彗差等。如果物平面处在无穷远,上述物高应换为物点的视角(即它和光轴的夹角)。

收起全文

辛几何&李代数

数学家破解百年高维“球体填充问题”

数学家破解百年高维“球体填充问题”

有些人的工作是在噪声图像中分离信号,以寻找来自数十亿公里外的外星文明;有些人在研究弦理论,以探索宇宙中基本要素的内在联系;有些人则在食品店堆放水果,以求最节省空间的方法从而码得最多。奇妙的是,这些看似无关的事情都因为数学纽带而联系到一起&&它们都涉及到球体填充问题。只不过有些球体存在于其他维度。让我们看看数学家有什么最新发现。 早在1611年,... 阅读全文

有些人的工作是在噪声图像中分离信号,以寻找来自数十亿公里外的外星文明;有些人在研究弦理论,以探索宇宙中基本要素的内在联系;有些人则在食品店堆放水果,以求最节省空间的方法从而码得最多。奇妙的是,这些看似无关的事情都因为数学纽带而联系到一起——它们都涉及到球体填充问题。只不过有些球体存在于其他维度。让我们看看数学家有什么最新发现。

 

数学家破解百年高维“球体填充问题”

 

早在1611年,开普勒就已经推测出如何码放相同大小的球体能够达到最密集效果。他认为,形如金字塔那样的堆积方式乃是正解,就像在水果店里见到的桔子那样。球与球之间总会存在空隙,通过进一步研究,数学家们发现在满满一袋子网球里面,大约36%的空间都是空气。假如你能够精心排布这些网球,那么这个比例可以降低到26% (亦称26%法),但是人们在一百年前就已经认识到,26%乃是其极限。而对于开普勒的猜想,直到1998年,才被现在匹兹堡大学的Thomas Hales教授所证明。据说当时数学论证文档长达250页,还动用了猛犸象计算机。

 

其实,玩数学的人还会在高维度下鼓弄球体填充游戏——球的定义依然不变,但“距离”这一概念则在我们熟知的三维系统 (比如x,y,z轴) 之外获得了更多属性。其实,高维球体的定义并不复杂:在高维空间下到给定球心距离相等的一组点所构成的即为高维球体。重要的是,在多维环境下将具有更多的码放方法。所以寻找能够空间利用率最高的球体排布可能性一直是主要挑战。

 

不过,我们很难对高维度下的球体填充进行视觉呈现,但它们却是非常实际的存在:高密度的球体填充与我们常见的纠错代码有着密切关系。早在上世纪60年代,John Leech试图纠正信号在传播过程中所积累的错误或噪声。他发现在24维度下处理数据会非常实用,尤其对于从5亿英里以外传送回木星图像这种工作来说。

 

数学家破解百年高维“球体填充问题”
旅行者1号

 

十年后,旅行者1号和2号确实采用了这一方法。1977年,NASA在发射木星和土星探测器前曾面临着重要难题:在极低的电力供应下,如何将旅行者号拍摄的彩色图片传送回地球?当时所采取的方式是将图像转换为一组24位的二进制序列,成为“代码字”。代码字以无线电波的形式发射进宇宙,波峰和波谷分别代表1和0。但数据传输总会伴随着噪声,有时1会失真为0,有时0又会变成1。所以要还原旅行者号的图像,就需要纠错。

 

一方面,代码字需要足够清晰显著以便识别;另一方面,在24位的限制下,相对含混模糊的代码字才能提供更多的可能性,以及更快的数据传输速度。这样的矛盾与需求也随之转化为几何问题,比特位对应在了空间坐标上,每段代码字都成为一个24维空间下球体的球心。如果球体发生重叠,那么相关的代码字也将无法被识别。为了最大化地传输数据并且进行纠错,问题最终演变为:如何在24维空间下最密集地填充球体?

 

数学家破解百年高维“球体填充问题”
E8 lattice points

 

长久以来,数学家们已经积累了大量证据,几乎要默认E8和Leech晶格 (两者分别为8维度和24维度下极为美妙且对称的球体填充模型) 就是两种维度下的最佳填充方法。但他们一直缺少一项关键证据,即一个能够计算可容许球体最大密度的函数。

 

如今,乌克兰数学家Maryna Viazovska似乎已经找到了答案。今年3月,她先后在论文预印网站上贴出了两个重要的成果。她首先从8维空间球体排布开始说起,证明了E8晶格 (E8 lattice) 在8维空间中具有最大密度。E8很像是高维版本的“26%法”问题,只不过在8维空间下,球体之间拥有更多空隙,可以多塞进去一些。

 

数学家破解百年高维“球体填充问题”

Maryna Viazovska

 

当然,弦理论家并不会摆弄球体,他们只是将E8结构当作不同维度下的弦理论彼此关联方式中的重要组成部分。弦理论从26个维度开始,并需要折叠简化至我们所熟知的3维。E8则包含了折叠所需要的所有必要属性。

 

数学家和物理学家认为这绝不是一个巧合。他们觉得这样一个维度是最为简单有效的,因为再添加任何一维空间都会使其更难以解释。可能他们还真说对了,Viazovska已经可以证明E8结构不会留下任何额外空间,对于8维球体填充来说这是最高效的方法。

 

数学家破解百年高维“球体填充问题”

 

不过她并没有止步于此。在发布了8维研究后,一些希望解决24维问题的数学家找到她,于是他们开始研究 “Leech晶格”。Leech晶格对信息的处理方式就好比在24维度下排布球体,数学家们也一直认为这是最有效的解决方法。仅仅在E8文章公布一周之后,Viazovska和同事们又搞定了24维的问题

 

尽管两篇文章尚未接受同行评议,在数学圈内似乎并没有什么质疑。由于E8和Leech晶格与数学和物理的诸多领域关系密切, Viazovska等人的发现对未来的研究有着重要意义。

收起全文

ibanana

LUCCIANO冰激凌品牌旗舰店/Hitzig Militello arquitectos(11张)

人人小站
更多热门小站
X
洪铺镇 铁铺街 中观镇 潘礼南村 兵团八十二团
礼和乡 曙光街 杨乙伯胡同 光生 陵水道云山里