22 Jul

初试在Python中使用PARI/GP

BoJone很喜欢Python,也很喜欢数论,所以就喜欢利用Python玩数论了。平时也喜欢自己动手写一些数论函数,毕竟Python支持大整数高精度运算,这点是非常好的;但是,在很多实际应用中,还是希望能有一个现成的数论函数库来调用。之前尝试过数学研发网的HugeCalc库,但是由于各种不熟悉不了了之。后来论坛上的无心老兄推荐了PARI/GP,小试一下,居然在Python上成功调用了。以后再也不用担心Python上的数论计算问题了,呵呵~

点击阅读全文...

30 Jul

素数之美1:所有素数之积

在之前的欧拉数学中,我们计算过所有素数的倒数之和,得出素数的倒数之和是发散的,从而这也是一个关于素数个数为无穷的证明。在本篇文章中,我们尝试计算所有素数之积,通过一个简单的技巧,得到素数之积的一个上限(以后我们也会计算下限),从而也得到$\pi(n)$的一个上限公式。更重要的,该估计是初等地证明Bertrand假设(说的是n与2n之间定有一个素数)的重要基础之一。本文内容部分参考自《数学天书中的证明》和《解析和概率数论导引》。

素数之积

笔者已经说过,数论的神奇之处就是它总是出人意料地把数学的不同领域联系了起来。读者很快就可以看到,本文的证明和组合数学有重要联系(但仅仅是简单的联系)。关于素数之积,我们有以下结论:

不超过$n$的所有素数之积小于$4^{n-1}$。

点击阅读全文...

2 Aug

七夕-雨

七夕,想随便说一些。大家路过就行~~

印象之中,连续几年的七夕这一天都下雨,今天也下了一点雨。妈妈说七夕的雨是神仙水,很小的时候,如果七夕下雨,还专门装一些来洗澡。

牛郎织女相会了没有?

研究数学了。

16 Sep

生成函数法与整数的分拆

我们在高中甚至初中,都有可能遇到这样的题目:

设$x,y,z$是非负整数,问$x+y+z=2014$有多少组不同的解?(不同顺序视为不同的解)

难度稍高点,可以改为

设$x,y,z$是非负整数,$0\leq x\leq y\leq z$,问$x+y+z=2014$有多少组不同的解?

这些问题都属于整数的分拆问题(广为流传的哥德巴赫猜想也是一个整数分拆问题)。有很多不同的思路可以求解这两道题,然而,个人认为这些方法中最引人入胜的(可能也是最有力的)首推“生成函数法”。

关于生成函数,本节就不多作介绍了,如果缺乏相关基础的朋友,请先阅读相关资料了解该方法。不少数论的、离散数学的、计算机科学的书籍中,都介绍了生成函数法(也叫母函数法)。本质上讲,母函数法能有诸多应用,是因为$x^a\times x^b=x^{a+b}$这一性质的成立。

点击阅读全文...

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}$$

点击阅读全文...

17 Nov

[转载] 做数学一定要是天才吗?

(译自 陶哲轩 博客, 译者 liuxiaochuang)
(英文原文:Does one have to be a genius to do maths?)

这个问题的回答是一个大写的:不!为了达到对数学有一个良好的,有意义的贡献的目的,人们必须要刻苦努力;学好自己的领域,掌握一些其他领域的知识和工具;多问问题;多与其他数学工作者交流;要对数学有个宏观的把握。当然,一定水平的才智,耐心的要求,以及心智上的成熟性是必须的。但是,数学工作者绝不需要什么神奇的“天才”的基因,什么天生的洞察能力;不需要什么超自然的能力使自己总有灵感去出人意料的解决难题。

大众对数学家的形象有一个错误的认识:这些人似乎都使孤单离群的(甚至有一点疯癫)天才。他们不去关注其他同行的工作,不按常规的方式思考。他们总是能够获得无法解释的灵感(或者经过痛苦的挣扎之后突然获得),然后在所有的专家都一筹莫展的时候,在某个重大的问题上取得了突破的进展。这样浪漫的形象真够吸引人的,可是至少在现代数学学科中,这样的人或事是基本没有的。在数学中,我们的确有很多惊人的结论,深刻的定理,但是那都是经过几年,几十年,甚至几个世纪的积累,在很多优秀的或者伟大的数学家的努力之下一点一点得到的。每次从一个层次到另一个层次的理解加深的确都很不平凡,有些甚至是非常的出人意料。但尽管如此,这些成就也无不例外的建立在前人工作的基础之上,并不是全新的。(例如, Wiles 解决费马最后定理的工作,或者Perelman 解决庞加莱猜想的工作。)

点击阅读全文...

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/

点击阅读全文...