Tuesday, November 25, 2008

拜Mathematica

昨天遇到一个不定积分的求解(是大一的时候写在微积分课本上的,但是没有标注如何解答)—— ∫ Sec[x]^3 * Tan[x]^4 dx。这应该是一种普遍形式 Sec[x]^m * Tan[x]^n 的特殊例子。

对于m与n分别是偶偶、偶奇、奇奇的情况都比较容易求解,唯独奇偶不知如何处理。刚才突然看到微积分课本后的Mathematica 简介,发现其符号运算强大到仅需一行命令就可以做很牛逼很复杂很强悍的不定积分(例如 Sin[x^2] 这种原函数并非初等函数的函数也可以做)!于是打开 Mathematica ,输入如下表达式
f[x_] = Sec[x]^3 * Tan[x]^4;
Integrate[f[x], x]

额滴神啊,瞬间就给出了如下的答案
1/768 Sec[x]^6 (96 ArcTanh[Tan[x/2]] Cos[x]^6+78 Sin[x]-47 Sin[3 x]+3 Sin[5 x])

真的是五体投地!没太被主攻数值计算类型的科学计算软件(例如 Matlab Octave Scilab 等等)震撼过,这下子真的是被强大牛逼无敌滴符号运算震撼了!拜 Mathematica!不过俺真滴是很想知道这玩意的 kernel 是咋演算如此复杂的不定积分的。

没有安装 Mathematica 滴童鞋们可以去这里玩耍一把不定积分——http://integrals.wolfram.com/index.jsp

ps.

这里大致列举了 integrator 的两种实现方式(俺猜测肯定不止这两种,老陶如果看见了此日志,可以稍微详细滴描述下)。第一种很好理解,套用现成的 general form for an integral,然后微分之,继而和被积函数对比,确定未知参数。第二种所谓 generalized hypergeometric functions 俺没看明白,不过估计有可能是俺的那个积分表达式所采取的方式,因为如果我输入如下表达式
f[x_] = Sec[x]^m * Tan[x]^n;
Integrate[f[x],x]

就会得到如下答案
(1/(-1+m+n))Hypergeometric2F1[1/2 (1-m-n),(1-n)/2,1/2 (3-m-n),Cos[x]^2] Sec[x]^m (Sin[x]^2)^(1/2-n/2) Tan[x]^(-1+n)

查看了 Hypergeometric2F1 的帮助文档,可惜没看明白到底是啥分布函数 囧。等有时间了再仔细阅读之

Saturday, November 22, 2008

google用户自己主导自己的搜索结果(SearchWiki)

以前在blog里写过一则《强大好玩滴VPN》,不料今天用这个VPN服务上网居然有了一个非常令人欣喜的发现——來自google的searchwiki!具体的截图看这里(点击图片进入 picassa_web_albums 查看更多)——








From google

不仅仅可以promote,还可以进行抹掉某条result的操作。尚不清楚这种人为的操作是否会影响到其他人的搜索结果(排名情况等等),不过俺估计肯定是不会影响的(已经搜索证实,确实是不会影响的,具体查看來自google官方博客的通告),但是自身的搜索体验确实就棒了不少了!

ps.  找到了一些资源,粘贴在此——
來自google官方博客滴消息youtube上滴演示(不想设置VPN或者代理的可以看下体验体验);techcrunch上滴文章(描述成digg-like似乎有些欠妥)

update:现在可以直接访问了。 :-)

--jtuki

图像拼接 share autostitch

这几天做数字图像处理课程的一个presentation(图像拼接),查阅了一些资料,在这里share一下。

图像拼接中的方法主要是直接拼接法(Direct Method)和基于特征点的拼接(Feature-Based Method)。

前者有一篇很好的论文,需要界定详细的镜头物理参数等等,比较复杂。

后者有一些比较著名的特征点检测算法。例如Harris算子, 也叫做角点检测子(Corner Detector),一般情况下效果不错,对旋转、灰度值统一线性变化都不敏感(也就是哪怕被检测对象旋转了或者是亮度均匀改变了,同样还是能够检测到相 同的特征点),但是对图像缩放(image scale)过于敏感。于是有了现在用的比较普遍的SIFT算法(Scale Invariant Feature Transform),主要参考的论文是David Lowe(SIFT算法的提出者)自己写滴一文, 行文流畅,很值得一读,特别是使用热扩散方程类比证明连续高斯滤波之差(DoG)在某种条件下等效于高斯滤波的拉普拉斯变换(LoG),尺度空间 (scale space)和特征点定位(Keypoint localization),以及后面的一些关于特征点描述子(Keypoint Descriptor)的说明都很值得一读(不过俺自己只是匆匆瞟了下,后面都没读完就直接翻看Conclusions了 囧)。

比较简单的实现可以直接使用matlab中的IPT里的一些函数来做,因为David Lowe的已经给出了SIFT的二进制实现和matlab的调用,简单情况下的图像变换(变换矩阵的确定)和联结相对来说就容易许多了。

如果需要开源的SIFT算法的实现,可以去这个链接里翻。(有灰常多种类滴实现,包括 C_&_matlab 的,C# 的等等)

这里给大家再share一个很强悍的全景图拼接软件 autostitch,是上文中提到的SIFT的提出者 David Lowe 和他的一个博士生 Brown 写的,他们所写的论文 Automatic Panoramic Image Stitching using Invariant Features 也确实堪称经典。如果想要把自己在海边度假的照片拼接起来、成为一副全景图的话,那么这款软件(尽管只免费提供 demo)绝对是首选!(起码现在看起来是如此 囧)

还有一些拼接实现,例如 pano-tools Hugin autopano-sift 等等都没有能够做到上述的 autostitch 的自动化识别和处理的效果(包括自动化识别大量图像的配对关系、自动确定配对图像间的空间关系、图像初步拼接后的多通道渲染处理等等)。关于其使用和体验分析可以看这里:AutoStitch 自動接圖軟體-全景圖(Panorama). 不过最好滴方式自然是下载来尝试一把。

--jtuki

Tuesday, November 11, 2008

排队排队排长队

开机后不自觉的输入了豆瓣的网址,看到几个好友推荐的一文——《被毒奶喂大的我们 该唱怎样的赞歌赞美你?》。很是无奈,不过在这里还是不说什么了吧。

这里要随便扯扯的,是另外一个事情。关于考研报名的长队。

今天上午一童鞋跑去考研报名现场确认报名(也就是照相等工作),回来后大呼幸亏去得早。咱们问他排在多远的地方,他说大约是100m处。我大惊失色(俺承认自己确实没有意识到“人多”啥含义),结果才得知居然总长度大约400m左右 囧。国内的本科生以及研究生教育体系和无奈滴研究生选拔机制不是本文的讨论的主题,而是另外一点——如何改进这个排队机制——俺倒是愿意八卦一下谈一谈。

研究生报名的排队和银行取款等的排队很类似,从本质上看,被处理时间的先后对最终结果影响不大——总不会说你先取款就可以奖给你100块钱。与此不同的是另一种排队,例如托福考试报名,例如奥运开幕式门票网上订票,在这一种排队中,被处理时间的先后对最终结果的影响是明显的——你可能晚了一天就没得考位(俺当时就是个悲惨的例子)或者门票了!咱们姑且将前者称作时间无关性排队,后者称作时间有关性排队。

咱们当前大多数的考研报名自然是长龙式——一条人站在那里无所事事,慢慢等待自己成为队伍中的头一个。工作人员尽管不止一人,但是也都还挺清闲,还能够聊聊天讲讲笑话。但是整个排队系统中被处理的客体——学生群体——的时间就被白白浪费了。(不要说 Iphone 或者是 G1-Android 首发的时候排长龙的现象,甚至是印有 Obama 大选胜利的报纸被人们排长龙热卖的现象,性质不一样 囧)

如何改进?参考下银行吧。对,就是象征排队顺序先后的号码!每个人去了之后都可以领一张号码纸,将这个号码减去当前正在被处理的号码,就得到了一个数字——表示自己被排在了多少位(往往是看到数字后就直接晕掉了 囧)。后面怎么办就很自然了,当然是估算下时间,例如排在第1000位,前面每位被处理的时间大约是1分钟,那么你只要保证在1000分钟后左右的时间再过来就行了(这里的数字纯属理论值,如有雷同,纯属故意)。

当然,在实际运作过程中还会有一些麻烦。比如很自然的很可能就会出现号码造假,号码领取票贩子,走后门不公正,领取号码后却长时间没来,发放号码的唯一性问题(例如根据学号或者身份证等等,但是无疑会增加发放号码的工作人员的工作负荷),等候室中最佳等待人数大小的确定(例如排队缓冲区大小是10个人,那么当200号在被处理时,201-210号就进入等候室排队等待,当轮到210号开始被处理时,211-220就开始接着上面10个人进入等候室,这个数字主要是根据处理方的工作人员速度决定),等等。这些问题都有一些相应的解决办法,就看付出的代价(学校需要在号码纸的制作和号码纸的发派等方面做更多的工作)和能够被回收的成本(学生的时间)之间的博弈了。

ps.

当年奥运开幕式门票网上订票系统就是因为没有做好人数限制工作,导致系统崩溃。如果能够做好服务器间的分流、排队等待和最大被处理人数的限制(但是依然可以通过 IP 和浏览器 cookie 等记录排队顺序)等工作,想必也不至于直接崩溃掉。Firefox 3.0 首发当日的下载系统也是如此。

update1(2008年11月11日 19点14分)

吃饭的时候突然想到忘记考虑了报名人数的问题。例如此次武汉大学考研报名现场确认的限定时间是5天,那么如果5天时间搞不定怎么办?俺相信这时间长度应该是个经验值,应该没啥问题。可是如果搞不定呢?咱们也不能排除这可能。号码计数就可以解决这个问题,统计和估算下网上报名的人数、每个人被处理的速度、每天工作人员的工作时间和相应工作人员的数量,就可以得到一个时间上的估计值,以及每天理论上能够被处理的人数——例如每天只能够处理2000人,那么每天发放号码到2100人的时候就开始停止发放(因为可能有人会领了号码不来,所以给出一定的冗余)。

update2(2008年11月13日)

纠正一个隐晦滴错误,上文中暗示了报名的速度慢。其实今天俺去报名了,觉得速度还成。一次性进去20个,然后在里面进行处理,根据内部人数的多少选择是否继续放人进去,工作人员滴效率也还算是挺不错的其实。 囧

--jtuki

Monday, November 10, 2008

给BBer们唠叨下由于google天气预报造成滴相关事宜

(俺首先承认自己是越来越不会起标题了,本想直接取名叫无题,最终还是罢了,以一长句话作为标题貌似也不错)

使用黑莓滴朋友可能都知道这个软件 BBer_SMS_Manager(某个爱好者开发的免费软件),可以将你的数千条短信附带电话簿一起导出,还可以保存成为文本或者 Excel 表格的形式,非常实用。(如果你还没尝试过,就赶紧去尝试一把吧。)

可惜今天俺着实是不太运气。本是一门公选课的倒数第二次课,俺弄错了日期,以为是最后一次,于是风风火火滴从一个校区坐车到另一个校区去上课,谁知居然被老师放了鸽子,座位前方还坐着一对小两口赌气闹别扭。晚上回来想备份下短信,谁知这 BBer_SMS_Manager 也不怎么给面子,出现了大致如下的错误——

Access violation at address XXXXXXXX in module 'BBerSMSManager.exe'. Read of address XXXXXXXX.

定位了一下错误,发现了错误的根源所在。记录在此,供已经碰到此问题正困扰不已滴朋友,或者是尚未碰到但有可能在未来某个时间碰到此问题滴朋友们参考,顺便为貌似比较晦气滴俺积攒点RP。

由于我使用了google天气预报,可能是运营商网络拥塞的缘故,我常常会收到类似如下的预报——



下方的 [some text missing] 可不是预报的文本内容,而可能是信息中丢失了某些帧,导致手机自动用此类语句作为提醒——换句话说,这是一个非常规的、难以被一般软件识别的文本内容(因为是手机自动替换相关信息所产生的嘛)。平时无所谓,但是用 BBer_SMS_Manager 就出现问题了,因为它也没办法识别这段消息!

同理,如果你也碰到了此类问题,就定位一下,看 BBer_SMS_Manager 是在哪里卡壳了,寻找到出错点,删除出错点所在的短信就OK咯。

如何删除呢?不要一个个去肉眼定位寻找,那就太枉费黑莓手机良好的操作系统设计了。(我使用的是8700系列,其他系列类似操作便可)打开主界面选择 Search 搜索(或者是直接按 S 便可快捷进入搜索界面),输入 keyword 例如“湖北 武汉”,选择范围是 messages,自动搜索便可以了——



搜索到了再如何?当然是 Delete 咯(直接按快捷键 D 便可删除)。但是依旧得益于Blackberry的完美操作设置——定位到某个日期,按下滑轮,选择 Delete Prior 便可删除在此日期前的被搜索到的全部短信了。 :D



--jtuki

Sunday, November 9, 2008

Lightbot 跳跳牌点灯机器人

Lightbot 这个游戏做滴挺有创意,但是恐怕不喜欢数学滴童鞋不会喜欢。

总共是12关,前面滴关卡教学为主(友情提醒——没有编程经历的童鞋可能需要多花点时间去适应一下前面滴指导关卡才能继续玩后面的几关)!针对那些有些编程经验滴童鞋来讲,思路其实也就特别简单了。俺总结一下(佛祖可以证明,这段总结不是大放厥词,或多或少还是有些道理的。因为俺就是根据这种思路玩通的,而且每一关的思路形成过程都非常滴顺利 :-D )——观察游戏地形,分成若干区域,在每个区域间寻找共性;完成某个区域后,回溯到某个可以重复使用一系列步骤的阶段,将这些相同滴步骤提取出来,函数实现之

最后三关(10-12)滴通关图片如下(点击链接地址查看全部)。








From lightbot 编程点灯机器人游戏

在豆瓣上找到了这个活动,上面提到了一段youtube上滴视频(真是牛人啊,仅仅用了132个commands,俺用了181个 囧)。此人滴解法中步骤的重复率很高,可谓是步步珠玑,但也因此造成很多滴步骤被白白的浪费。

-- jtuki

Saturday, November 8, 2008

嘿 哥们儿 要手电筒么?不要?那要weapon否?

大家都知道,美国是个不太安全的国家。(啥?珠海撞人事件?我可没听说过。中国可是世界上最安全的国家了,国民素质也是最高尚最文明最开化的,怎么可能会有人被逼得成了神经病、去开车撞中学生呢?)之所以这么说,最主要的原因当然还是多次校园枪击案件给人带来的心理包袱(可怜了CS和半条命这样的FPS游戏,在每次校园惨剧发生后,都难逃被严厉批判的厄运)。隐藏在多起青少年枪击事件背后的,当然也就是美国人人家中不仅藏着一副骷髅、还都藏着一杆枪的文化。

但是说真的,这样的事情还真是挺酷的。开始是在有意思吧看到了这个视频,后来输入视频中的链接找到了一些好资源!同大家伙share一下。视频在这里——



是不是想起了《国产零零漆》中滴精彩对白?表面上看这就是一手电筒,其实,这玩意可是把好家伙!

这把枪是一把 concept weapon ,咱们有了所谓概念车概念房概念电影,怎么能少了概念武器呢?这段视频出自这个站点,属于武器买卖公司,online-store 在这里。生产厂家是这家公司,当然咯,在国内自然是买不到啦 囧(强烈推荐其站点上方的随机logo 真是酷毙了)。

ps.
(个人观点)枪支不在于禁止与否。诚然,不禁止枪支所带来的问题固然是很多的,但很多问题并非不禁止枪支所造成的,而且其所占的比重远远超过了允许枪支流通所带来的问题。拿把菜刀还能乱捅呢,总不能全国都不让用菜刀切菜了吧?关键还是整个社会制度是否完善,社会风气是否良好,这才是问题的关键所在。(但是,特此声明——这样的论调绝对远远不足以构成允许枪支流通的理由。)

-- jtuki