姬扬的个人博客分享 http://blog.sciencenet.cn/u/jiyang1971

博文

计算方法之推恩令

已有 7239 次阅读 2018-9-24 20:31 |个人分类:大众物理学|系统分类:科普集锦

 


 

 

(武帝)用主父偃谋,令诸侯以私恩裂地,分其子弟,而汉为定制封号,辙别属汉郡。汉有厚恩,而诸侯地稍自分析弱小云。

 

 

分治法是常用的解题方法。把一个比较难的大问题分解为几个比较简单的小问题,分而治之(divide and conquer),就不会有“老虎吞天,无从下口”的感觉了。计算机算法里常用的“递归法”也是一种分治法。

 

有限项$\sum ^n_{i=1} i^k$的求和公式就可以用分治法得到。这里的$n$$k$都是正整数。

如果$n=100$$k=1$,就是神童高斯的著名求和公式$1+2+3+…+100=5050$。对于一般性的$n$,如果$k=1$,则$\sum ^n_{i=1} i = n(n+1)/2$。求解的方法很简单,把第一项和最后一项相加,把第二项和倒数第二项相加,等等,都可以得到$n+1$,一共有$n/2$这样的组合。但是,这个方法不适合$k> 1$的情况。

$k> 1$的情况可以用分治法来处理。重新考虑$k=1$的情况。由$(i+1)^2=i^2+2i+1$可知,$i=((i+1)^2-i^2-1)/2$。除了一个常数项以外,$i$是由两项的差组成的。$i+1$也是如此,但是它的负号项和$i$的正号项正好抵消了。由此可知,$\sum ^n_{i=1} i = ((n+1)^2-1)/2-n/2=n(n+1)/2$。对于$k=2$,因为$(i+1)^3=i^3+3i^2+3i+1$,所以$i^2=((i+1)^3-i^3-3i-1)/3$。三次方的项是一正一负,所以求和的结果是$((n+1)^3-1)/3$,而一次方和常数项求和的结果都是已知的,直接带入就可以了。这个方法可以推广到任意的$k$,因为$(i+1)^{k+1}$可以用牛顿二项式展开(杨辉三角),$i^k$可以表示为两个$k+1$次方的差,以及$k-1$次方和更低阶的幂。$k+1$次方的差的$n$项求和最后只包括两项,而$k-1$次方和更低阶的幂的求和公式是已经知道的了。

可以看出,这个方法跟数学归纳法非常相似。

顺便说一下,如果把$n$取为无穷大,而令$k=-s$$s$可以取复数),上述求和就变成了$\sum ^{\infty}_{i=1} i^{-s} =\sum ^{\infty}_{i=1} \frac{1}{i^{s}} $,这就是著名的$\zeta$函数,这两天吵得火热的黎曼猜想就与此有关。黎曼认为,$\zeta$函数的非平凡零点的实部都等于1/2。这个猜想困扰了数学界接近160年了,阿提亚(M. Atiyah)声称自己证明了这个猜想。

 

行列式的计算也可以采用分治法(递归法)。

$n$阶行列式$|a_{ij}|$$n\times n$个数排成了$n$行、$n$列)的数值由$n!$个项的和构成,每一项包含由$n$个乘积构成,乘积的每个引自来自于$n$行列式的不同行和不同列(所以有$n!$种不同的排列方式),乘积前面还有个正负号(决定于排列的奇偶性)。

计算$ n$阶行列式,可以先随便选定一行元素,每个元素乘以它的子行列式(删除该元素所在行和所在列后剩下来的$n-1$阶行列式,$(n-1)\times (n-1)$),再由该元素位置决定正负号,然后把$n$个这样的项加起来就可以了。所以,$n$阶行列式就约化为$n$$n-1$阶行列式的求和了。

一阶行列式只有一个数,该行列式的数值就是这个数。二阶行列式有4个数,行列式的数值由2项构成,$a_{11}a_{22}-a_{21}a_{12}$,也就是说,左上到右下的连线减去左下到右上的连线。三阶行列式有9个数,行列式的数值由6项构成,$a_{11}a_{22}a_{33}+a_{12}a_{22}a_{31}+a_{13}a_{21}a_{32}-a_{31}a_{22}a_{13}-a_{32}a_{23}a_{11}-a_{33}a_{21}a_{12}$。一个简单的记忆方法是,把三阶行列式左边的两列复制到行列式的右边,这样就得到一个$3\times 5$的矩阵,这个矩阵有3条从左上到右下的斜线和3条从左下到右上的斜线,用前3条斜线减去后3条斜线,就可以了。

4阶以上的行列式没有简单的算法,但是原则上可以用递归法求解。

 

之所以说是原则上,因为没有人真的用这种方法求行列式的值。这种方法需要求$n!$个项的和,而每个项又有$n$个数相乘,总计$(n+1)!$次运算,这样会累死人的。肯定要采用其他更加有效的方法。

如果行列式碰巧有一行(或一列)的元素都等于零,那么你就走运了:这个行列式的值就等于零,因为$n!$项的每一个都包含这一行的元素。如果有一行里只有一个元素不为零,那么你选中这个元素,$n$阶行列式的计算就简化为$n-1$阶行列式了。如果你的运气好,每一行都只有一个元素为零(而且不同列),那么你把乘起来就可以了。这就是对角行列式(需要适当地重新安置各行和各列),如果对角行列式的所有对角元素为1,就是单位矩阵。

如果你观察到一个$k\times (n-k)$的小矩阵里的元素都是零,就可以把原来的行列式拆分为$k$阶行列式和$n-k$阶行列式的乘积。如果你运气好,你可能发现行列式的左下方(或右上方,除了对角线)的元素都是零,这就是所谓的下三角行列式,其数值就是对角线元素的乘积。

一般来说,你没有这么好的运气。这时候,你就要创造条件自己上了——高斯消元法就是干这个的。行列式的目的是什么?为什么要采用上述的方式来定义行列式?其实,行列式就是用来求解$n$个变量的$n$阶线性线性方程组的。每个线性方程组是一个限制条件,$n$个变量需要$n$个限制条件才能唯一求解。限定条件多于$n$个,就是“超定”方程组,不一定有解,婆婆太多、束手束脚;限定条件少于$n$个,就是“欠定”方程组,有太多的解,山高皇帝远、无法无天。但是,如何确定$n$个限定条件确实是独立的呢?这就要计算系数行列式的数值,等于零就不是独立的,否则就是独立的。自己求解一遍二阶和三阶的线性方程组,就会明白的。

某个限定条件乘以一个常数,显然不会改变自己的独立性,所以行列式的某行上的公因子可以提取出来。某个限定条件与另一个限定条件相加,并不会改变后者的独立性,所以行列式的一行加上另一行,并不会改变行列式的数值。行列式如果有两行一模一样,这个行列式一定等于零,因为交换两行以后,行列式应该变符号,但还是原来的行列式,所以只能等于零了。

利用这几个性质,就可以一行行地处理,使得一般性的行列式变为下三角行列式,然后就容易计算了。可以知道,这种过程只需要进行大约$n^3$次的运算。与$(n+1)!$相比,$n^3$真的是太平易近人了。

 

那么,$n!$到底有多大呢?我们知道,$2!=2$$3!=6$$4!=24$$5!=120$$6!=720$,再往后算就有些累了。我们能不能简单地估计一下$n!$呢?

注意到$x=e^{\ln x}$,就可以把$n!$这样的乘积转化为求和运算。$n!=e^{\ln n!}=e^{\sum ^n_{i=1} \ln i} $,指数上的部分是个求和,$\sum ^n_{i=1} \ln i $,这个求和可以用积分来近似,$\sum ^n_{i=1} \ln i \approx \int ^n _1 \ln x \ dx $。利用分部积分法,$ \int ^n _1 \ln x \ dx =x\ln x - \int x d(lnx) = x(\ln x -1)$,就可以得到 $\sum ^n_{i=1} \ln i \approx n(\ln n -1) $,也就是说,$n!\approx (\frac{n}{e})^n$

 

现在,你也许会叫起了撞天屈:我们还没有学微积分呢,更别提什么分部积分法了!别着急,这种估计不用分部积分法也是可以的。

回到原始的问题,求$n!$。把第一项和最后一项乘起来,把第二项和倒数第二项乘起来,等等,根据$xy \leq (x+y)^2/4$,可以知道$n!$ 大约是$ (\frac{n+1}{2})^{n+1}$(大部分数还是靠近$n/2$的),跟前面的估计值$n!\approx (\frac{n}{e})^n$相差不大。

重新做求和$\sum ^n_{i=1} \ln i $。把每一项$\ln i$替换为$\ln i=i \ln i - (i-1)\ln i $,带入求和式并重新安置各项就得到,$\sum ^n_{i=1} \ln i = i \ln i -\sum _i (i-1) [\ln i -\ln (i-1)] $。因为$\ln i -\ln (i-1)= \ln [i/(i-1)]= \ln [1+ 1/(i-1)] \approx 1/(i-1) $,代回原式就再次得到$\sum ^n_{i=1} \ln i \approx n(\ln n -1) $

 

你看,其实并不难的,每一步你都会的——唯一能吓住你的是你自己。只要你在战略上藐视敌人,在战术上重视敌人,想办法把一个看起来可怕的大问题分解为若干个可以处理的小问题,你就能够解决它的。请记住:在这个世界上,读书和考试是最简单的事情。任何一道题出现在考卷上,你一定能够在五分钟里做出来的。如果做不出来,肯定是自己想错了,换个思路就是了。试题出现在考卷上这件事本身就是一个巨大的提示:

一切考试题都是纸老虎!

 


PS:

2018年9月,Michael Atiyah声称自己解决了黎曼猜想,以及物理学里的精细结构常数(~1/137)的问题。


THE RIEMANN HYPOTHESIS Atiyah.pdf


2018-The_Fine_Structure_Constant.pdf




https://blog.sciencenet.cn/blog-1319915-1136759.html

上一篇:一些关于经济学的书
下一篇:谈谈《优秀的绵羊》
收藏 IP: 124.193.162.*| 热度|

15 郑永军 刘炜 黄永义 张江敏 徐传胜 孙冰 武夷山 郭景涛 王安良 刘全慧 赵美娣 孙杨 宁利中 文克玲 刘钢

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-19 07:36

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部