用PyPy提高Python脚本执行效率
By 苏剑林 | 2014-06-11 | 23413位读者 | 引用在《两百万前素数之和与前两百万素数之和》中,我们用Python求了前两百万的素数和以及两百万前的素数和,并且得到了在Python 3.3中的执行时间如下:
两百万前的素数之和:
142913828922
time: 2.4048174478605646前两百万的素数之和:
31381137530481
time: 46.75734807838953
于是想办法提高python脚本的执行效率,我觉得在算法方面,优化空间已经比较小了,于是考虑执行器上的优化。在搜索的无意间我看到了一个名词——Psyco!这是python的一个外部模块,导入后可以加快.py脚本的执行。网上也有《用 Psyco 让 Python 运行得像 C一样快》、《利用 psyco 让 Python 程序执行更快》之类的文章,说明Psyco确实是一个可行的选择,于是就跃跃欲试了,后来了解到Psyco在2012年已经停止开发,只支持到Python 2.4版本,目前它由 PyPy所接替。于是我就下载了PyPy。
当概率遇上复变:解析概率
By 苏剑林 | 2014-04-25 | 28105位读者 | 引用每当看到数学的两个看似毫不相关的分支巧妙地联系了起来时,我总会为数学的神奇美丽惊叹不已。在很久以前,当我看到通过生成函数法把数论问题与复变函数方法结合起来,衍生出一门奇妙的“解析数论”时,我就惊叹过生成函数法的漂亮!可惜,一直都没有好好写整理这些内容。今天,当我在看李政道先生的《物理学中的数学方法》时,看到他把复变函数跟随机游动如鬼斧神工般了起来,再次让我拍案叫绝。最后实在压抑不住心中的激动,在此写写概率论和生成函数的事情。
数论与复变函数结合,就生成了一门“解析数论”,按照这个说法,概率与复变函数结合,应该就会有一门“解析概率”,但是我在网上搜索的时候,并没有发现这个名词的存在。经过如此,本文还是试用了这个名词。虽然这个名词没有流行,但事实上,解析概率的方法并不算新,它可以追溯到伟大的数学家拉普拉斯以及他的著作《分析概率论》中。尽管如此,这种巧妙漂亮的方法似乎没有得到大家应该有的充分的认识。
我觉得,即使作为一个简洁的计算工具,生成函数法这个美丽的技巧,也应该尽可能为科学爱好者所知,更不用说数学专业的朋友了。
【备忘】访问Google的方法(更新)
By 苏剑林 | 2014-06-04 | 81329位读者 | 引用《新理解矩阵6》:为什么只有方阵有行列式?
By 苏剑林 | 2014-07-15 | 68422位读者 | 引用学过线性代数的朋友都知道,方阵和非方阵的一个明显不同是,对于方阵我们可以计算它的行列式,如果不是方阵的话,就没有行列式这个概念了。在追求统一和谐的数学系统中,为什么非方阵却没有行列式?也许对于这个问题最恰当的回答是——因为不够美。对于非方阵,其实也可以类似地定义它的行列式,定义出来的东西,跟方阵的行列式具有同样的性质,比如某行乘上一个常数,行列式值也就乘以一个常数,等等;而且还可以把其几何意义保留下来。但是,非方阵的行列式是不够美的,因为对于一个一般的整数元素的方阵,我们的行列式是一个整数;而对于一个一般的整数元素的非方阵,却导致了一个无理数的行列式值。另外,一个也比较重要的原因是,单单是方阵的行列式也够用了。综合以上两个理由,非方阵的行列式就被舍弃不用了。
非方阵的行列式不够漂亮
$n$阶方阵的行列式是每个向量的线性函数,它代表着向量之间的线性相关性;从几何上来讲,它就是向量组成的平行n维体的(有向)体积。我们当然期望非方阵的行列式也保留这些性质,因为只有这样,方阵行列式的那些运算性质才得以保留,比如上面说的,行列式的一行乘上一个常数,行列式值也乘上一个常数。我们考虑$m\times n$的矩阵,其中$ m < n $,我们将它看成是$m$个$n$维向量的组合。最简单的,我们先考虑$1\times 2$矩阵的行列式,也就是二维向量$(a,b)$的行列式。
从费马大定理谈起(二):勾股数
By 苏剑林 | 2014-08-15 | 27941位读者 | 引用费马大定理说的是$n > 2$的情况,但是我们可以从$n=2$出发,求解到勾股数组的一般表达式,并且从中得到证明费马大定理的原始思想。
互质解
我们在实整数,也就是$\mathbb{Z}$内求解。为了求解不定方程$x^2+y^2=z^2$,首先我们注意到,这是一道齐次方程,这告诉我们,如果存在某一组解,那么可以通过同除以公约数的方法,得到一组两两互质的解。换句话说,有解必有互质解,这是$x^n+y^n=z^n$的解的通性。那么,我们假设$(x,y,z)=(a,b,c)$ 是方程$x^2+y^2=z^2$的一个互质解。
[追溯]封装界传奇人物
By 苏剑林 | 2014-07-02 | 19091位读者 | 引用转载理由:现在的deepin和ylmf(已经改为StartOs)都已经在制作自己的Linux,而当初它们都是制作GhostXp的大家。我的初中,即2009年以前,是GhostXP流行的时代,而我当时也加入了这一行列中,发表过一些GhostXP的作品。后来随着时代的发展,XP也就慢慢退出了舞台。我也就随之退出了这个舞台,也因此得以专注科学。但是,几乎所有我的电脑知识,都积累于那个时期,因为为了完成一个系统的制作和推广,需要懂得的电脑技术很多很多,我也得到了充分的锻炼。下面列举的一些人,都是当年GhostXP界的神话人物,有些我并不认识,但其名在当时就如雷贯耳;有些人在当时还十分幸运地加上了他们的QQ。这篇文章实际上已经是很久已经的了,但还是值得回味过去的时间,以此为我的初中时代留下一些回忆。
强大的整数数列网站OEIS
By 苏剑林 | 2014-07-17 | 38003位读者 | 引用OEIS?:http://oeis.org/
近段时间在研究解析数论,进一步感觉数论真是个奇妙的东西,通过它,似乎数学的各个方面——离散的和连续的,实数的和复数的,甚至物理的——都联系了起来。由此也不难体会到当初高斯(Gauss)会说“数学是科学的皇后,数论是数学的皇后。”了。今天,由于在研究素数的个数的上下界问题时,需要思考组合数
$$C_{n}^{2n}=\binom{2n}{n}=\frac{(2n)!}{n!\ n!}$$
最多能被2的多少次方整除。直觉告诉我,次数应该是随着$n$的增大而增大的,但事实却不是,比如$C_{15}^{30}$能够被16整除,但是$C_{20}^{40}$却最多只能被4整除,有种毫无规律的感觉,于是到群里问问各大神。其中,wayne提出
这个可以写个小程序算出一些数据,再在oeis上搜搜
从费马大定理谈起(四):唯一分解整环
By 苏剑林 | 2014-08-17 | 43660位读者 | 引用在小学的时候,数学老师就教我们除法运算:
被除数 = 除数 × 商 + 余数
其中,余数要小于除数。不过,我们也许未曾想到过,这一运算的成立,几乎是自然数$\mathbb{N}$所有算术(数论)运算性质成立的基础!在代数中,上面的运算等式称为带余除法(division algorithm)。如果在一个整环中成立带余除法,那么该整环几乎就拥有了所有理想的性质,比如唯一分解性,也就是我们说的算术基本定理。这样的一个整环,被称为唯一分解整环(Unique factorization domain)。
欧几里得整环
唯一分解定理说的是在一个整环之中,所有的元素都可以分解为该整环的某些“素元素”之积,并且在不考虑元素相乘的顺序和相差单位数的意义之下,分解形式是唯一的。我们通常说的自然数就成立唯一分解定理,比如$60=2^2\times 3\times 5$,这种分解是唯一的,这看起来相当显然,但实际上唯一分解定理相当不显然。首先,并不是所有的整数环都成立唯一分解定理的,我们考虑所有偶数组成的环$2\mathbb{Z}$,要注意,在$2\mathbb{Z}$中,2、6、10、30都是素数,因为它们无法分解成两个偶数的乘积了,但是$60=6\times 10=2\times 30$,存在两种不同的分解,因此在这样的数环中,唯一分解定理就不成立了。
最近评论