22 Sep

一个人的数学建模:碎纸复原

suizhiji

suizhiji

笔者一直无心参加数学竞赛,主要原因是我喜欢能够持续深入地思考一个问题,而不想被竞赛的时间限制所束缚。我并不是一个机灵的人,因此很难有竞赛所需要的“灵光一现”。大概一个多星期前全国数学建模的预赛开始了,我也饶有兴致地关注了一下,并且留意到了B题这道有趣的题目——碎纸复原,然后就开始思考算法了。那时候应该是9月13日中午,我开始了一个人的数学建模,“一个人”并不是说我一个人就组成一支队了,而是我一个人自由高效地在构思算法、摸索代码,不为比赛,只为达到目的,那种兴奋一直持续到了当晚凌晨三点。

点击阅读全文...

24 Dec

用二次方程判别式判断正定矩阵

快要学期末了,不少学霸开始忙碌起来了。不过对非学霸的我来说,基本上每天都是一样的,希望把自己感兴趣的东西深入研究下去,因为我觉得,真正学会点有用的东西才是最重要的。数学分析和高等代数老师都要求写课程论文,我也写了我比较感兴趣的“欧拉数学”和“超复数研究”,之后会把这部分内容与大家分享。

虽然学期已经接近尾声了,但是我们的课程还没有上完。事实上,我们的新课一直上到十八周~随着考试的接近,我们的《高等代数》课程也已经要落幕了。最近在上的是二次型方面的内容,讲到正定二次型和正定矩阵。关于正定矩阵的判别,教科书上提供了两个判别方法,一个是基于定义的初等变换,另外一个就是主子式法。前者无可厚非,但是后者我似乎难以理解——它虽然是正确的,但是它很丑,计算量又大。我还没有想清楚主子式法到底有什么好的?在我看来,本文所探讨的基于二次方程判别式的方法才是简单、快捷的。

正定二次型
所谓正定二次型,就是关于n个变量$x_1,x_2,...,x_n$的二次齐次函数,只要$x_i$不全为0,它的值恒为正数。比如
$$2 x_1^2+x_2^2-2 x_1 x_2=x_1^2+(x_2-x_1)^2$$
这是一个比较简单的正定二次型,多元的还有
$$5 x_1^2+x_2^2+5 x_3^2+4 x_1 x_2-8 x_1 x_3-4 x_2 x_3$$

点击阅读全文...

29 Dec

有质动力:倒立单摆的稳定性

前几天在“宇宙的心弦”浏览网页时,发现他更新了一篇很有趣的文章,叫《倒立单摆的稳定性与Ponderomotive Force》(果然,物理系的能接触到各种各样有趣的现象),里边谈到通过施加一个运动在单摆上面,倒立的单摆也可以是稳定的。这勾起了我的兴趣,遂也计算了一番。

点击阅读全文...

16 Feb

带点电荷的均匀杆

在讨论了倒立单摆的相关分析之后,胡雄大哥(笔者的一位好友)提出了一个问题:一根均匀杆,当然质量不可忽略,只有一个力(简单起见,可以先假设为恒力)作用在其中一个点上(简单起见,可以假设为端点),那么杆是怎么运动的?

其实笔者学了不少的经典力学,也分析了不少问题,但就是对于力矩、角动量等还是模模糊糊的,对于我来说,大多数经典力学问题就是“作用量+变分”,本题也不例外。为了让题目的实验意义更加明确,不妨将题目改成:

一根中性的均匀杆,它的一个端点带有一个点电荷,那么它(仅仅)在一个均匀电场中的运动是怎样的?

在这里,我们进一步简化,只考虑平面问题。杆属于刚体,为了描述杆的运动,我们需要描述杆上一点的运动,以及杆绕这一点的转动,也就是说,即使只考虑平面的情况,该系统也是有三个自由度的。设杆的带电荷那一端点的坐标为$(x,y)$,为了描述杆的转动,以这一端点为中心建立极坐标系,设杆的极角为$\theta$。设电势的函数为$U(x,y)$,因为只有一点带电(受力),因此势能是简单的。

点击阅读全文...

2 Jul

[追溯]封装界传奇人物

转载理由:现在的deepin和ylmf(已经改为StartOs)都已经在制作自己的Linux,而当初它们都是制作GhostXp的大家。我的初中,即2009年以前,是GhostXP流行的时代,而我当时也加入了这一行列中,发表过一些GhostXP的作品。后来随着时代的发展,XP也就慢慢退出了舞台。我也就随之退出了这个舞台,也因此得以专注科学。但是,几乎所有我的电脑知识,都积累于那个时期,因为为了完成一个系统的制作和推广,需要懂得的电脑技术很多很多,我也得到了充分的锻炼。下面列举的一些人,都是当年GhostXP界的神话人物,有些我并不认识,但其名在当时就如雷贯耳;有些人在当时还十分幸运地加上了他们的QQ。这篇文章实际上已经是很久已经的了,但还是值得回味过去的时间,以此为我的初中时代留下一些回忆。

点击阅读全文...

17 Oct

两百万素数之和与“电脑病”

原则上来讲,同样的算法,如果分别在Python和C++上实现,那么Python的速度肯定比不上C++的。但是Python还被称为“胶水语言”,它允许我们把主要计算的部分用C或C++等高效的语言编写好,然后它作为“粘合剂”把两者粘合在一起。正因为如此,Python才有了各种各样的扩展库,这些库中有不少是用C语言编写的。因此,我们在编写Python程序的时候,如果可以用这些现成的库,速度会快很多。本文就是用Numpy来改进之前的《两百万前素数之和与前两百万素数之和》的计算。

算法本身是没有变的,只是用了Numpy来处理数组计算,代码如下:

点击阅读全文...

6 May

记录一次爬取淘宝/天猫评论数据的过程

笔者最近迷上了数据挖掘和机器学习,要做数据分析首先得有数据才行。对于我等平民来说,最廉价的获取数据的方法,应该是用爬虫在网络上爬取数据了。本文记录一下笔者爬取天猫某商品的全过程,淘宝上面的店铺也是类似的做法,不赘述。主要是分析页面以及用Python实现简单方便的抓取。

笔者使用的工具如下

Python 3——极其方便的编程语言。选择3.x的版本是因为3.x对中文处理更加友好。

Pandas——Python的一个附加库,用于数据整理。

IE 11——分析页面请求过程(其他类似的流量监控工具亦可)。

剩下的还有requests,re,这些都是Python自带的库。

实例页面(美的某热水器):http://detail.tmall.com/item.htm?id=41464129793

点击阅读全文...

6 Jun

闲聊:神经网络与深度学习

神经网络

神经网络

在所有机器学习模型之中,也许最有趣、最深刻的便是神经网络模型了。笔者也想献丑一番,说一次神经网络。当然,本文并不打算从头开始介绍神经网络,只是谈谈我对神经网络的个人理解。如果希望进一步了解神经网络与深度学习的朋友,请移步阅读下面的教程:
http://deeplearning.stanford.edu/wiki/index.php/UFLDL教程

http://blog.csdn.net/zouxy09/article/details/8775360

机器分类

这里以分类工作为例,数据挖掘或机器学习中,有很多分类的问题,比如讲一句话的情况进行分类,粗略点可以分类为“积极”或“消极”,精细点分为开心、生气、忧伤等;另外一个典型的分类问题是手写数字识别,也就是将图片分为10类(0,1,2,3,4,5,6,7,8,9)。因此,也产生了很多分类的模型。

点击阅读全文...