16 Aug

从费马大定理谈起(三):高斯整数

为了拓展整数的概念,我们需要了解关于环和域这两个代数结构,这些知识在网上或者相应的抽象代数教程中都会有。抽象地提出这两个代数结构,是为了一般地处理不同的数环、数域中的性质。在自然数集$\mathbb{N}$中,可以很方便定义和比较两个数字的大小,并且任意一个自然数的子集,都存在最小元素,这两点综合起来,我们就说$\mathbb{N}$是“良序”的(这也是数学归纳法的基础)。在良序的结构中,很多性质的证明变得很简单,比如算术基本定理。然而,一般的数环、数域并没有这样的“良序”,比如任意两个复数就不能比较大小。因此,一般的、不基于良序的思想就显得更为重要了。

环和域

关于环(Ring)的定义,可以参考维基百科上面的“环(代数)”条目。简单来说,环指的是这样一个集合,它的元素之间可以进行加法和乘法,并满足一些必要的性质,比如运算封闭性、加法可交换性等。而数论中大多数情况下研究的是数环,它指的是集合是数集的情况,并且通常来说,元素间的加法和乘法就是普通的数的加法和乘法。比如所有的实整数就构成一个数环$\mathbb{Z}$,这个数环是无限的;所有的偶整数也构成一个数环$2\mathbb{Z}$;对于素数$p$,在模$p$之下,数集$\{0,1,2,\dots,p-1\}$也构成了一个环,更特别的,它还是一个数域。

点击阅读全文...

25 Apr

傅里叶变换:只需要异想天开?

在对数学或物理进行事后分析,往往会发现一些奇怪的现象,也有可能得到一些更为深刻有趣的结果。比如本文所要谈及的傅里叶变换,可以由一种“异想天开”的思路得来。

洛朗展式

我们知道,在原点处形态良好的函数,可以展开为泰勒级数
$$f(x)=\sum_{n=0}^{\infty}a_n x^n$$
我们发现,上面的幂都是正的,为什么不能包含$x$的负数次幂呢?比如$\frac{\sin z}{z^2}$展开为
$$\frac{1}{z}-\frac{z}{6}+\frac{z^3}{120}\dots$$
显然也是一件合理的事情。于是,结合复变函数,我们得到解析函数的洛朗展式
$$f(z)=\sum_{n=-\infty}^{+\infty}a_n z^n$$
这是函数的双边展开。其中

点击阅读全文...

21 Jan

怎么会这么巧!背后的隐藏信息

假设我是一名中学数学老师,在给学生兴致勃勃地讲“素数”,讲完素数的定义和相关性质后,正当我接着往下讲时,有个捣蛋的学生提问,“老师,你能不能举一个三位数的素数?”。可是我手头上没有1000以内的素数表,我也没记住超过100的素数,那怎么办呢?我只好在黑板上写出几个三位数,比如173、211、463,然后跟学生说“让我们来检验这些数是不是素数”。最终的结果是:它们都是素数!然后会有学生疑问:怎么会这么巧?

素数的概率

首先的问题是,任意写一个三位数,它是素数的概率是多少?三位数的素数共有143个,三位数共有900个,于是概率应该是143/900,大约是六分之一。看起来挺低的,要“蒙中”似乎不容易。

点击阅读全文...

26 Aug

fashion-mnist的gan玩具

fashion_mnist_demo

fashion_mnist_demo

mnist的手写数字识别数据集一直是各种机器学习算法的试金石之一,最近有个新的数据集要向它叫板,称为fashion-mnist,内容是衣服鞋帽等分类。为了便于用户往fashion-mnist迁移,作者把数据集做成了几乎跟mnist手写数字识别数据集一模一样——同样数量、尺寸的图片,同样是10分类,甚至连数据打包和命名都跟mnist一样。看来fashion mnist为了取代mnist,也是拼了,下足了功夫,一切都做得一模一样,最大限度降低了使用成本~这叫板的心很坚定呀。

叫板的原因很简单——很多人吐槽,如果一个算法在mnist没用,那就一定没用了,但如果一个算法在mnist上有效,那它也不见得在真实问题中有效~也就是说,这个数据集太简单,没啥代表性。

fashion-mnist的github:https://github.com/zalandoresearch/fashion-mnist/

点击阅读全文...

2 May

寻求一个光滑的最大值函数

在最优化问题中,求一个函数的最大值或最小值,最直接的方法是求导,然后比较各阶极值的大小。然而,我们所要优化的函数往往不一定可导,比如函数中含有最大值函数$\max(x,y)$的。这时候就得求助于其他思路了。有一个很巧妙的思路是,将这些不可导函数用一个可导的函数来近似它,从而我们用求极值的方法来求出它近似的最优值。本文的任务,就是探究一个简单而有用的函数,它能够作为最大值函数的近似,并且具有多阶导数。下面是笔者给出的一个推导过程。

在数学分析中,笔者已经学习过一个关于最大值函数的公式,即当$x \geq 0, y \geq 0$时,我们有
$$\max(x,y)=\frac{1}{2}\left(|x+y|+|x-y|\right)\tag{1}$$
那么,为了寻求一个最大值的函数,我们首先可以考虑寻找一个能够近似表示绝对值$|x|$的函数,这样我们就把问题从二维降低到一维了。那么,哪个函数可以使用呢?

点击阅读全文...

16 Apr

采样定理:有限个点构建出整个函数

假设我们在听一首歌,那么听完这首歌之后,我们实际上在做这样的一个过程:耳朵接受了一段时间内的声波刺激,从而引起了大脑活动的变化。而这首歌,也就是这段时间内的声波,可以用时间$t$的函数$f(t)$描述,这个函数的区间是有限的,比如$t\in[0,T]$。接着假设另外一个场景——我们要用电脑录下我们唱的歌。这又是怎样一个过程呢?要注意电脑的信号是离散化的,而声波是连续的,因此,电脑要把歌曲记录下来,只能对信号进行采样记录。原则上来说,采集的点越多,就能够越逼真地还原我们的歌声。可是有一个问题,采集多少点才足够呢?在信息论中,一个著名的“采样定理”(又称香农采样定理,奈奎斯特采样定理)告诉我们:只需要采集有限个样本点,就能够完整地还原我们的输入信号来!

采集有限个点就能够还原一个连续的函数?这是怎么做到的?下面我们来解释这个定理。

任意给定一个函数,一般来说我们都可以将它做傅里叶变换:
$$F(\omega)=\int_{-\infty}^{+\infty} f(t)e^{i\omega t}dt\tag{1}$$
虽然我们的积分限写了正负无穷,但是由于$f(t)$是有限区间内的函数,所以上述积分区间实际上是有限的。

点击阅读全文...

26 Apr

高斯型积分的微扰展开(三)

换一个小参数

比较《高斯型积分的微扰展开(一)》《高斯型积分的微扰展开(二)》两篇文章,我们可以得出关于积分
$$\int_{-\infty}^{+\infty} e^{-ax^2-\varepsilon x^4} dx\tag{1}$$
的两个结论:第一,我们发现类似$(4)$式的近似结果具有良好的性质,对任意的$\varepsilon$都能得到一个相对靠谱的近似;第二,我们发现在指数中逐阶展开,得到的级数效果会比直接展开为幂级数的效果要好。那么,两者能不能结合起来呢?

我们将$(4)$式改写成
$$\int_{-\infty}^{+\infty} e^{-ax^2-\varepsilon x^4} dx\approx\sqrt{\frac{2\pi}{a+\sqrt{a^2+6 \varepsilon}}}=\sqrt{\frac{\pi}{a+\frac{1}{2}\left(\sqrt{a^2+6 \varepsilon}-a\right)}}\tag{6}$$

点击阅读全文...

21 Oct

把Python脚本放到手机上定时运行

毫无疑问,数据是数据分析的基础,而对于我等平民来说,获取大量数据的方式自然是通过爬虫采集,而对于笔者来说,写爬虫最自然的方式就是用Python写了。短短几行代码,就可以完成一个实用的爬虫,多清爽。(请参考:《记录一次爬取淘宝/天猫评论数据的过程》

爬虫要住在哪里?

接下来的一个问题是,这个爬虫放到哪里运行?为了爬取每天更新的数据,往往需要每天都要运行一次爬虫,特别地,是在某个点定时运行。这样的话,老挂在自己的电脑运行是不大现实,因为自己的电脑总有关机的时候。也许有读者会想到放在云服务器里边,这是个方法,但是需要额外的成本。受到小虾大神的启发,我开始想把它放到路由器里边运行,某些比较好的路由器是可以外接U盘,且可以刷open-wrt系统的(一个Linux内核的路由器系统,可以像普通Linux那样装Python)。这对我来说是一种很吸引人的做法,但是我对Linux环境下的编译并不熟悉,尤其是路由器环境下的操作;另外路由器配置很低,一般都只是16M闪存、64M内存,如果没有耐心,那么是很难受得了的。

点击阅读全文...