28 Oct

在Python中使用GMP(gmpy2)

之前笔者曾写过《初试在Python中使用PARI/GP》,简单介绍了一下在Python中调用PARI/GP的方法。PARI/GP是一个比较强大的数论库,“针对数论中的快速计算(大数分解,代数数论,椭圆曲线...)而设计”,它既可以被C/C++或Python之类的编程语言调用,而且它本身又是一种自成一体的脚本语言。而如果仅仅需要高精度的大数运算功能,那么GMP似乎更满足我们的需求。

了解C/C++的读者都会知道GMP(全称是GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库),它是一个开源的高精度运算库,其中不但有普通的整数、实数、浮点数的高精度运算,还有随机数生成,尤其是提供了非常完备的数论中的运算接口,比如Miller-Rabin素数测试算法、大素数生成、欧几里德算法、求域中元素的逆、Jacobi符号、legendre符号等[来源]。虽然在C/C++中调用GMP并不算复杂,但是如果能在以高开发效率著称的Python中使用GMP,那么无疑是一件快事。这正是本文要说的gmpy2

点击阅读全文...

30 Oct

只有两个四阶群和六阶群

我们上近世代数课的时候,老师谈到在同构意义之下只有两个不同的四阶群,六阶群也是只有两个,还说到这是代数的研究生入学考试题目。说到这样了,我就饶有兴致地研究了一下,发现只有两个互不同构的四阶群这几乎是显然的,感觉这题用来做研究生考试题太水了吧?接着分析了一下六阶的情况,发现复杂了不少(元素增加)。而今天在实变函数课的时候,想到了一个简化的技巧,遂也证明了只有两个互不同构的六阶群。把结果和研究过程贴在这里,与大家分享。

两个四阶群

不管是四阶群还是六阶群,它们都是有限群。有限群的一个特点就是,可以把它们的乘法表写出来(只要不怕麻烦~~)。既然要研究四阶群的数目,我们只需要列出四阶群的乘法表就行了。设四阶群为$G_4=\{e, a, b, c\}$,其中$e$是单位元,根据这些信息,我们至少可以写出乘法表的一部分:
$$\begin{array}{c|cccc}
\cdot & e & a & b & c \\
\hline
e & e &a &b &c \\
a & a & & & \\
b & b & & & \\
c & c & & & \end{array}$$

点击阅读全文...

4 Dec

结果恒为整数的多项式

昨晚上初等数论的时候,有这么一道题

求证
$$\frac{1}{3}x^3+\frac{1}{5}x^5+\frac{7}{15}x$$
恒为整数,其中$x$是一个整数。

更一般地,可以得到
$$\sum_{p\in\mathbb{P}}\frac{1}{p}x^p + \left(1-\sum_{p\in\mathbb{P}}\frac{1}{p}\right)x$$
恒为整数,其中$\mathbb{P}$是有限个素数的集合,还有更多整数值函数问题。要证明这些函数的值恒为整数,可以通过同余分析,证明分子总能被分母整除。但是,更妙的、同时往往会更简单的方法是,将结果赋予必然为整数的意义——可以是计算上的,也可以是操作上的。

点击阅读全文...

23 Dec

鬼斧神工:求n维球的体积

今天早上同学问了我有关伽马函数和$n$维空间的球体积之间的关系,我记得我以前想要研究,但是并没有落实。既然她提问了,那么就完成这未完成的计划吧。

标准思路

简单来说,$n$维球体积就是如下$n$重积分
$$V_n(r)=\int_{x_1^2+x_2^2+\dots+x_n^2\leq r^2}dx_1 dx_2\dots dx_n$$
用更加几何的思路,我们通过一组平行面($n-1$维的平行面)分割,使得$n$维球分解为一系列近似小柱体,因此,可以得到递推公式
$$V_n (r)=\int_{-r}^r V_{n-1} \left(\sqrt{r^2-t^2}\right)dt$$
设$t=r\sin\theta_1$,就有
$$V_n (r)=r\int_{-\frac{\pi}{2}}^{\frac{\pi}{2}} V_{n-1} \left(r\cos\theta_1\right)\cos\theta_1 d\theta_1$$

点击阅读全文...

6 Jan

借助变分法变换坐标

ODE的坐标变换

熟悉理论力学的读者应该能够领略到变分法在变换坐标系中的作用。比如,如果要将下面的平面二体问题方程
$$\left\{\begin{aligned}\frac{d^2 x}{dt^t}=\frac{-\mu x}{(x^2+y^2)^{3/2}}\\
\frac{d^2 y}{dt^t}=\frac{-\mu y}{(x^2+y^2)^{3/2}}\end{aligned}\right.\tag{1}$$
变换到极坐标系下,如果直接代入计算,将会是一道十分繁琐的计算题。但是,我们知道,上述方程只不过是作用量
$$S=\int \left[\frac{1}{2}\left(\dot{x}^2+\dot{y}^2\right)+\frac{\mu}{\sqrt{x^2+y^2}}\right]dt\tag{2}$$
变分之后的拉格朗日方程,那么我们就可以直接对作用量进行坐标变换。而由于作用量一般只涉及到了一阶导数,因此作用量的变换一般来说比较简单。比如,很容易写出,$(2)$在极坐标下的形式为
$$S=\int \left[\frac{1}{2}\left(\dot{r}^2+r^2\dot{\theta}^2\right)+\frac{\mu}{r}\right]dt\tag{3}$$
对$(3)$进行变分,得到的拉格朗日方程为
$$\left\{\begin{aligned}&\ddot{r}=r\dot{\theta}^2-\frac{\mu}{r^2}\\
&\frac{d}{dt}\left(r^2\dot{\theta}\right)=0\end{aligned}\right.\tag{4}$$
就这样完成了坐标系的变换。如果想直接代入$(1)$暴力计算,那么请参考《方程与宇宙》:二体问题的来来去去(一)

点击阅读全文...

13 Jan

当概率遇上复变:从二项分布到泊松分布

泊松分布,适合于描述单位时间内随机事件发生的次数的概率分布,如某一服务设施在一定时间内受到的服务请求的次数、汽车站台的候客人数等。[维基百科]泊松分布也可以作为小概率的二项分布的近似,其推导过程在一般的概率论教材都会讲到。可是一般教材上给出的证明并不是那么让人赏心悦目,如《概率论与数理统计教程》(第二版,茆诗松等编)的第98页就给出的证明过程。那么,哪个证明过程才更让人点赞呢?我认为是利用母函数的证明。

二项分布的母函数为
$$\begin{equation}(q+px)^n,\quad q=1-p\end{equation}$$

点击阅读全文...

16 Jan

勒贝格(Lebesgue)控制收敛定理

实变函数中有一个勒贝格控制收敛定理,一般认为它是判断积分和取极限可交换的很好用的方法。勒贝格控制收敛定理是说,如果定义在集合$E$上的函数列$\left\{f_n(x)\right\}$满足$|f_n(x)|\leq F(x)$,而$F(x)$在$E$上可积,那么积分和取极限就可以交换,即
$$\lim_{n\to\infty}\left(\int_E f_n (x)dx\right)=\int_E \left(\lim_{n\to\infty}f_n (x)\right)dx$$
本文不打算谈该定理的证明,只是谈谈该定理的应用相关的话题。首先,请有兴趣的读者,做做以下题目:
$$\lim_{n\to\infty}\left(\int_0^1 \frac{n^2 x}{1+n^4 x^4}dx\right)$$

点击阅读全文...

28 Mar

有趣的求极限题:随心所欲的放缩

昨天一好友问我以下题目,求证:
$$\lim_{n\to\infty} \frac{1^n + 2^n +\dots + n^n}{n^n}=\frac{e}{e-1}$$
将解答过程简单记录一下。

求解

首先可以注意到,当$n$充分大时,
$$\frac{1^n + 2^n +\dots + n^n}{n^n}=\left(\frac{1}{n}\right)^n+\left(\frac{2}{n}\right)^n+\dots+\left(\frac{n}{n}\right)^n$$
的主要项都集中在最后面那几项,因此,可以把它倒过来计算
$$\begin{aligned}\frac{1^n + 2^n +\dots + n^n}{n^n}=&\left(\frac{1}{n}\right)^n+\left(\frac{2}{n}\right)^n+\dots+\left(\frac{n}{n}\right)^n\\
=&\left(\frac{n}{n}\right)^n+\dots+\left(\frac{2}{n}\right)^n+\left(\frac{1}{n}\right)^n\end{aligned}$$

点击阅读全文...