恒's profileFrensel的日记PhotosBlogLists Tools Help

Blog


    October 29

    世上真的是無奇不有

    今天發生左一件好gap好gap既事,真係gap過頭,我都唔好意思講出口,估唔到係我既身邊會有D咁既事發生,實在太驚人了! astonishing, incredible, unbelievable... 為留個紀念,在這裏插篇日志記錄一下.........
    October 26

    狗生苦短也無常

    電腦中最後幾幅Jacky的照片. 愉快地活著,遺憾地死去. 狗生和人生一樣無常,悲劇啊!


    August 15

    一年零三个月,论文终被接受....

    一年半前导师和我做了个简单的工作,发现了目前为止用在某物理模型中的某计算方法都是有问题的,导师认为这工作很重要,于是打算投PRL,尝试打破PRL 0的纪绿.不过现实是残酷的,还没审稿,编辑就以"不能引见广范兴趣"和"英语不行"为由直接退稿.
    之后经过申诉,给审稿人审了几次,谁都说文章不行,甚至有个说"文章不应在任何科学期刊上发表",其实他们根本没看懂.此时已经和审稿人在骂起来了,搞到审稿人都火了.可能由于我们比较坚持,最后再找多一人来审稿,他以"不关心什么方法失败,只关心什么方法能给正确结果"为由,认为文章太过trivial,建议写成PRB的brief report重新投稿.我导师此时也没有办法了,只好这样,免得最后文章发表不了.
    因为转了期刊,又要重新审稿,搞了一轮,审稿结果是一个接受一个要修改.要我们修改那位仁兄说,"论文论据不够充分咧,建议写为full paper,再加什么什么进去"...当场吐了几升血出来.不过也没办法,只好把论文从4版扩写成9版,把什么东西都塞进去,写得很完整,就是沉闷了点,此时我经历了上篇文章(DMRG那篇)的写作,也知道了为什么我们这篇文章的英文被编辑说写得差了,原来我导师写文章习惯漏写冠词.审稿人看了修改过的文章后,立即就大爽,说"significantly improved",心想你们俩还真听话啊,也没什么要求了,改动几只字就OK了.
    于是,用了一年三个月,多次申诉,转了期刊和停工开工,论文终于被接受了 >.< 尽管此文我只是个第二作者,不过也非常高兴,又克服了一个难关了~

    以下是审稿过程,我也不太好意思登这玩意出来...

    CURRENT STATUS OF MANUSCRIPT:
    Editorially approved for publication

    CORRESPONDENCE:
    SENT RECEIVED DESCRIPTION
    14Aug08 Editorially approved for publication
    06Aug08 Correspondence (miscellaneous) sent to author
    31Jul08 06Aug08 Ed. decision and/or ref. comments to author; response rcvd
    08Jul08 28Jul08 Review request to referee; report received
    04Apr08 27Jun08 Ed. decision and/or ref. comments to author; response rcvd
    28Feb08 01Apr08 Review request to referee; report received
    28Feb08 26Mar08 Review request to referee; report received
    19Mar08 Reminder to referee [others sent (not shown) at 1-2 week intervals]
    19Mar08 Reminder to referee [others sent (not shown) at 1-2 week intervals]
    27Feb08 Correspondence (miscellaneous) sent to author
    27Feb08 27Feb08 Correspondence sent to author; response received
    04Feb08 26Feb08 Correspondence sent to author; response received
    19Feb08 Correspondence (miscellaneous) sent to author
    05Feb08 Acknowledgment sent to author
    01Feb08 Transferred from PRL to PRB
    10Dec07 01Feb08 Ed. decision and/or ref. comments to author; response rcvd
    24Oct07 10Dec07 Review request to referee; editor concludes response unlikely
    24Oct07 24Nov07 Review request to referee; report received
    08Nov07 08Nov07 Reminder to referee; response received
    08Nov07 Reminder to referee [others sent (not shown) at 1-2 week intervals]
    24Oct07 Correspondence (miscellaneous) sent to author
    24Sep07 23Oct07 Ed. decision and/or ref. comments to author; response rcvd
    22Aug07 24Sep07 Review request to referee; report received
    07Sep07 Reminder to referee [others sent (not shown) at 1-2 week intervals]
    22Aug07 31Aug07 Review request to referee; report received
    17Aug07 Correspondence (miscellaneous) sent to author
    14May07 17Aug07 Ed. decision and/or ref. comments to author; response rcvd
    14May07 Acknowledgment sent to author
    11May07 Correspondence (miscellaneous) sent to author

    8月29日新增:文章出来了,可看Phys. Rev. B 78, 064308 (2008).
    July 13

    关于迷信

    记得我小学和中学的时候,由于是在天主教学校就读,每天早上都要念经唱歌赞美主。我当时就想,这个主是什么玩意,怎样跟历史书中所形容的昏君一样,这么喜欢听这种阿谀奉承之词呢。

    也不知道是有意还是无意,学校的生物课安排得非常不认真,找了个教化学的老师,用二十年前出版,又贵又重的课本来上生物课。到最后,由于这样种种原因(还有我太懒),生物课基本上一点没有学会,突别是进化论。Dobzhansky讲过,“Nothing in biology makes sense except in the light of evolution”,没有学会进化论,就无法真正学会生物学。

    不过由于我这个人一直特别讨厌拍马屁和装模作样的东西,所以学校那些赞美主的仪式,反而让我不可能去信天主教。你不是每天强迫我赞美主吗?我就天天咒骂它,于是每天我都过得很高兴,把怨气都发泄到主身上了。

    然而,这种反对宗教的立场是不牢固的。缺少了科学思想的洗礼,就无法看透这些愚昧迷信的玩意的本质,不能做到举一反三。所以在当时,我尽管反对天主教,但对中国那些传统的迷信活动,如风水,气功和中医,还有其他什么武功,人体特异功能,UFO,世界XX个未解之迷等,都抱有一种“可能有这么一回事”的想法。

    不过在科学面前,任何迷信活动都不堪一击。当年宗教就是人生的全部,宗教是社会规范,是道德标准,也解释世间万物。后来科学出现了,宗教就节节败退,到最后穷途末路了,就声称宗教和科学是两个不同的领域,企图把宗教和现实分离出去,宗教是所谓的“信”,是faith,是另外一个领域。可笑的是,宗教却处处企图“回到现实”,不断曲解科学发现,污蔑进化论和宇宙大爆炸理论,别人笑他地球只有6000年的理论,就气到跳起来。可以想象如果有一天科学证实了地球是宇宙的中心(尽管已经证明不是了……),宗教界人士一定欢恩鼓舞,说:“你看,科学不是证明了我们是正确的了吗?”完全忘了当时所谓的“科学和宗教是不同领域”这种推诿之词了。

    其他迷信活动也是类似的。科学太强,又太无情与残酷了,一次又一次戮破了人们的美梦。如果迷信活动单单是自己占了自己的老家,宣布独立,成立XX共和国,自己做大总统,那么就随便你。但那些迷信活动要生存下去(可能也是进化论在驱使他们这么做),总免不了要骗人。只要是骗人的东西我就要反对,暨大的小朋友们被我骂了,只能说句不好意思了。

    好了,就写这么多,有时间再写写这方面的感想。

    June 22

    去做核磁共振

    今天应华师心理学系研究组之约,去参加其实核磁共振(NMR)实验,这个鼠年做了回白老鼠.这个NMR实验是预约在暨大华侨医院进行.早上九点去到,填完表和知道实验步骤后就直接进行了.被实验者只要在NMR仪器扫描中,观看屏幕,做一些简单的判断题即可.由于做NMR时,你是躺在床上,然后大半个人移动至机器内部,就像躺进棺材里一样(尽管我还没进过棺材...),要观看屏幕,就要利用一个小镜子,放到你头上,把外面的屏幕内容反射进来,你才能看到.
    整个实验过程大约1个小时,做了一百多个题目.期间你的头部是不能动的,动了实验数据可能就有误差.当然你要除去身上所有能磁化的东西,衣服要更换.当机器运作时,会发出间断声响,虽然很大声,但我并不觉得十分难受.
    做完这个实验,我真的体会到完全不能动地躺一个小时,也不是件好玩的事情,当中还要集中精神做题.
    值得一提的是,NMR仪器运作时,加上了1.5T的巨大磁场,这样的巨大磁场由超导线圈产生.1.5T的磁场是非常非常强的,但尽管如此,磁场作用在你脑袋时,你是完全没有感觉的,即你并没被"磁化"而改变生理结构,从而带来本质的改变.那些声称磁场对身体有什么益处的保健产品,如磁化枕,磁化杯,磁化水什么的,都是骗人的玩意.我爷爷就是被那些卖磁化水的人骗了,装了一间叫"金岸"骗子公司生产的"高磁化自来水器","高磁化淋浴器"之类的鬼东西,花了几千元,还进了几万的货,打算卖给别人获利.爷爷直接喝磁化水,其实就是自来水,然後声称"效果很好".我批评指出他被骗了,他就拿出一本"论文",其实是宣传材料的东西,声称磁化水对人体有益是"苏联火箭专家"研究过的,问我"是什么东西?","难道比苏联火箭专家懂得还多?"我虽然不是什么东西,但至少不骗人,至少写过论文.他那本宣传材料"论文".是中文写的,写作不规范,没作者姓名和单位,不知在那期刊发表过,引用不知什么来路的文章,就像是中学生拿本大学物理教材,抄了几条电磁学公式写成的狗屁文章.拿这种东西质问我,是把我当做白痴了.我真的很遗憾,虽然读物理,但我爷爷却被人用伪科学骗了,现在只能让他自欺欺人地享用磁化水了,不忍再去打击他了.
    May 02

    之前說的論文已被PRB接收咧

    今天挺高興,1月2號日記中所說的研究,最後投至PRB的regular paper,有6版.以下是審稿過程:
    CURRENT STATUS OF MANUSCRIPT: Editorially approved for publication

    CORRESPONDENCE:
    SENT    RECEIVED    DESCRIPTION
    01May08         Editorially approved for publication
    10Apr08 30Apr08 Review request to referee; report received
    30Apr08         Reminder to referee [others sent (not shown) at 1-2 week intervals]
    07Apr08         Correspondence (miscellaneous) sent to author
    20Mar08 07Apr08 Ed. decision and/or ref. comments to author; response rcvd
    31Jan08 11Mar08 Review request to referee; report received
    31Jan08 26Feb08 Review request to referee; report received
    21Feb08         Reminder to referee [others sent (not shown) at 1-2 week intervals]
    21Feb08         Reminder to referee [others sent (not shown) at 1-2 week intervals]
    30Jan08         Acknowledgment sent to author
    29Jan08         Correspondence (miscellaneous) sent to author
    整個過程非常順利,審稿人第一次的意見就沒提出甚麼批評.審稿人A婉轉地提出要引用他的幾篇文獻,審稿人B則提出
    了幾點針對文中presentation的更改意見.審稿人A見我引了他的文獻,於是就二話不說,放過我了~
    雖然我以前都發過一篇文章在PRB,但那是comment,不是正式的文章.另外,我還有一篇第二作者(導師第一)的文章
    投到PRB的brief report去了,現在搞了N久,審稿人又說最好寫成regular paper,不知這可憐的文章還要搞多久才
    出能出來(搞了足足一年了)...
    6月2日新增:文章出来了,可看Phys. Rev. B 77, 174305 (2008).
    March 23

    我是傻瓜,我有精神病。

    宿便,大家知道宿便是甚麼嗎?如果一星期之前就在你體內的屎,到現在還拉不出去,你會驚恐嗎?對於這一點,台灣人不擔心。就算那坨屎又硬又乾,那屎遲早都能拉得出來。昨天,台灣人民就拉了一次給我們看。然而,大陸人民就不幸了點,這個屎能不能拉,不是人說了算,是那坨屎說了算。天底下還有比這更荒唐的事嗎?事實上,屎儘管知道自己是屎,但就是不愿給拉出來。它們有很多借口咧,甚麼當初是人把我們制造出來咧,甚麼人身體不好不適合拉屎咧,甚麼屎在身體內有好處咧,總是有它們的理由。有些人很可惡,自己拉不出屎就算了,還不讓別人拉。他們自己拉不了屎,就對人拉屎的結果說三道四,甚麼拉屎會搞臭自己咧,甚麼拉完屎屁股會髒咧,甚麼拉完屎擦屁股手會沾上屎咧。其實呀,你從娘胎出來就沒拉過屎,甚至連屁眼都沒有,不知道是不是給腦袋塞住了?既然屎死活也不肯出來,我也只好老實說,如果你這屎不肯乖乖的拉出去,遲早有一天你們的載體會去醫院,把你他媽的開刀硬拿出來。

    February 19

    我家的狗的拉屎癖好

    我家有条狗,它特喜欢在两种地方拉屎,十次有九次都在這兩種地方拉。第一种地方是斜坡,第二种是楼梯级上。请看下图:

    DSC00681

    DSC00685

    这样拉屎的结果是……当主人清理这些屎时:如在斜坡,则那些屎会不断地滚下斜坡;如在楼梯级上,屎经常会掉到下面几级去……

    January 02

    科研体会

    近来做的科研是把密度矩阵重整化群这种方法应用在spin-boson模型中去。开始时遇到很大的困难,这个困难其实是数值计算一个传统的困难,是难以克服的。简单来说,是玻色子的无穷自由度问题。在数值计算中,尽管只有一个玻色子,也没有办法将其空间完整地表示出来。近年来DMRG和NRG在处理这种问题上不能说有什么大的突破,不过却发现许多系统,其玻色子往往用很小的空间就可以将其很好地表示出来,以后就是在这个简化的空间中,用DMRG或NRG硬算就是了。DMRG比NRG好一点,至少把其核心概念应用在如何优化玻色子空间上,而NRG对此只是简单地折断空间或凭经验找出优化的空间。
    然而,对于像spin-boson模型这种有连续谱的声子系统,还未见有文献给出DMRG的处理方法。我于是想出一个很简单的技巧来处理这个问题,并成功实践。在我以为我是第一个想出此方法的人的时候,发现一文献在计算另一类模型时,竟然用过这种技巧,尽管该模型只有多个单模声子,而不是像我这类有多模声子库。尽管如此,别人就用过这种方法了,我只好在写文章时引用他的结果。
    好了,又有一个新的困难出现了,原来DMRG竟然是难以计算极低能量尺度的问题,这就是说低频声子模无法计算,这使得计算spin-boson模型的局域-非局域相变问题无法完成。这个困难不会出现在NRG上,原因在于NRG那种简单的重整化方法。这就是说,对于spin-boson模型来说,DMRG根本不是一种好的计算方法,是“以己之短攻彼之长”,注定无法像NRG这般计算出这么多结果。不过为了发文章,这个研究又做这么长时间了,无论如何也要用DMRG把相变点给算出来。
    我想了又想,突然想到一种“过渡性”的技巧,可以把结变点通过曲线拟合外推出来。我立即进行验证,果然算出非常符合NRG的结果。这种方法虽然笨拙,而且每个相变点需要近30个小时才能算出来,不过这也是种能得出正确结果的方法啊。
    在电脑痛苦地进行计算的时候,我又再一次发现,原来我想出的那种方法别人也想出来了,而且跟我想的分毫不差,整个概念完全一样,弄了个方程出来,还美名曰XX重整化群方程……我文章中也只好再引用那文献……
    无语了,彻底无语了,现在研究做到这个样子,不知道算不算有“创新”,写个文章投PRB的brief report算了,还很可能要被退稿……现在文章快写好了,就差几个相变点没算出来,无法画出完整图,估计还要算几天……如果没四核电脑,画一个相图要用一个月……
     
    December 15

    MATLAB中的图加inset(插图)

    论文中经常要在图中再加插图,这样可以省下论文的版图,在Letters这类文章中很重要,因为一般限制你最多3-4版。
    现在要在y = sin(x)这幅图中插入y = cos(x)和y = sin(x) * cos(x)这两个小图,分别位于原图的右上方和左下方:
    >> x = 0 : 0.01 : 2 * pi;
    >> y1 = sin(x); y2 = cos(x); y3 = sin(x) .* cos(x);
    >> plot(x, y1)
    >> axes('position', [0.55 0.65 0.3 0.2])
    >> plot(x, y2)
    >> axes('position', [0.15 0.15 0.3 0.2])
    >> plot(x, y3)
    其中axes函数中用'position'参数就是为了在原图中加多一个坐标轴,后的参数说明该坐标轴在原图的位置和其大小。
    September 28

    被referee狠批了

    前几个月和导师合作搞了遍论文投PRL,谁知编辑二话不说,马上就打回来,说这文章明显不适合,不需要送审,还附带说"the English usage does not meet our minimum standard"。那我们就只好把文章的英文写好点,内容写清楚点,再去appeal。
    接着很顺利,编辑肯把论文送审,结果也很快收到,谁知……那两个referees都没看懂文章,完全误解了文章的用意,还自以为是,说这文章想研究什么什么,可惜别人早就研究过了,这文章只是个"minor extensions",但问题是,这文章根本不是根种方法的"extensions"……更难以想象的是,有个referee竟然说,这文章不足以发在"any scientific journal"。这论文看上去虽然简单点,但其阐明了一个很基本,而且很重要的问题,所以我导师才要去投PRL。人家都够胆投PRL,那些referees不肯认真点看,还口出狂言,以为自己是PRL的审稿人就可以牛了吗?
    由于那两个referees太恶劣了,完全不能说服我们,他们的reports也不能证明他们看懂了文章,所以我们一定要去上诉了。我今次真的怒了。
    September 02

    在MATLAB调用一些Maple函数的问题

    有时要在MATLAB中调用Maple的函数参与数值计算,像一些MATLAB本身没有的特殊函数,如Laguerre多项式和Hermite多项式等。此时要注意,Maple是会尽可能地返回解析的表达式,而不是浮点数。比如在MATLAB中输入:
    >> maple('LaguerreL', 3, 1, 2)
    ans =
    LaguerreL(3,1,2)
    返回的是解析的结果,这种细果参与不了MATLAB的数值计算,我们需要的是浮点数的结果。根据Maple的基础知识可知,你输入的参数是浮点数,那么Maple就给你返回浮点数结果。比如在Maple中输入:
    > LaguerreL(3, 1., 2);
                                    -1.333333333
    即在输入参数1后面加多一点,代表1.0,这便是个浮点数,于是LaguerreL函数给你返回浮点数结果。据此,在MATLAB中这般输入:
    >> a = maple('LaguerreL', 3, '1.', 2)
    a =
    -1.3333333333333333333333333333333
    再将a用str2double输入双精度浮点数即可使用了。结总起来,MATLAB中调用Maple的LaguerreL函数的具体函数为:
    % LaguerreL.m
    function f = LaguerreL(n, k, x)
    xn = length(x);
    y = zeros(xn, 1);
    for i = 1 : xn
        y(i) = str2double(maple('LaguerreL', [num2str(n) '.'], k, x(i)));
    end
    f = y;
    end
     
    然而,MATLAB中已提供了函数做这种事情,这就是mfun函数。例如(下面测试不计启动Maple内核时间):
    >> x = 0 : 0.01 : 3;
    >> tic, y = LaguerreL(3, 1, x); toc
    Elapsed time is 0.560188 seconds.
    >> tic, y2 = mfun('LaguerreL', 3, 1, x); toc
    Elapsed time is 0.053402 seconds.
    即提供矢量输入时,mfun要比自己所编写的函数要快得多。但有时却不能直接用矢量形式输入,要反覆去调用该函数(LaguerreL)时,由于mfun要做许多格式判断和转换,反而令计算速度下降,如:
    >> tic, for i = 1 : 300, y1 = LaguerreL(3, 1, 2); end, toc
    Elapsed time is 0.408626 seconds.
    >> tic, for i = 1 : 300, y2 = mfun('LaguerreL', 3, 1, 2); end, toc
    Elapsed time is 0.920374 seconds.
    August 31

    终于搞定第一篇paper了……

    发表在Physical Review B,可惜只是篇Comment,原因是Article过不了Referee,只好退而求其次,comment别人的文章。
    这文章的内容其实在上年七八月左右就搞定的了,投PRB的Article失败拖了几个月。在上年十二月转投Comment,审了半年左右,改了两次,又要等被comment的文章作者写回覆,该回覆又要再审……终于用了八个半月才出来,比投Article或Brief Report更麻烦。
    August 24

    关于tensor product kron(A, B)和vector phi的相乘计算

    如有一An x An矩阵A和Bn x Bn矩阵B,求其Kronecker tensor product kron(A, B)与(An x Bn) x 1矢量phi的相乘,即计算
    y = kron(A, B) * phi.
    这个计算当An和(或)Bn很大时,会变得难以计算。例如An = Bn = 100,那么kron(A, B)就是一个10000 x 10000的矩阵。如果不使用稀疏矩阵(假设A和B够稀疏)的储存方法,在MATLAB里(32位)根本表示不出来。在这种情况下,y = kron(A, B) * phi就无法计算了。
    在很多情况下,kron(A, B)会变得更大,例如在DMRG的计算中。为了解决这个问题,是有办法在不算出kron(A, B)的情况下算出y = kron(A, B) * phi的。具体的做法参考了R. M. Noack, S. R. Manmana, arxiv:cond-mat/0510321,可把y写成
    y = A * (B * psi')'.
    其中psi就是phi,只不过是对phi做了个reshape,使其变成psi = reshape(phi, Bn, An)'。注意到 ' 是转置的意思。利用这个技巧,可以轻易在MATLAB中编写程序,不需要算出kron(A, B),就完成了y = kron(A, B) * phi这个式子的计算。不用这个技巧,就难以提高DMRG中保留的状态数。
    处理这个问题的另一个原因是大型矩阵的对角化问题。要知道,如果矩阵太大,我们是无法用一般的对角化手段去处理的(如MATLAB里那eig函数)。只有使用迭代算法,如Lanczos算法,求出该矩阵最大和最小的本征值本征矢。而这类迭代算法中,最繁重的一步计算就是对该大型矩阵H乘上一矢量phi。由于这是一个迭代的过程,H * phi要计算很多很多次。如果H能写成kron(A, B),利用上述的技巧,能大大减少H * x的计算量,具体分析可看U. Schollwöck, Rev. Mod. Phys., 77, 259 (2005)中的第二节I.2。
    May 03

    在Amazon订的书终于到了

    二月中在Amazon订了本《Primer of Quantum Mechanics》,用普通的国际邮递,要寄两个月。过了预计寄达日期半个月后,书还没收到,便发了封信去询问。Amazon的客服在半小时内就回覆了我,经确认地址无误后,又让Amazon给我重新寄一本。这次用加快国际邮递,半个月就能寄到。在四月底,终于收到了那本重新寄出的书。然而,又过了几天,邮局又发来取书通知……之前那本书原来并没寄失,只是迟到了一个半月……
    April 25

    使用Maple 11的Physics Package

    近来试用Maple 11Physics Package,主要是关于量子力学计算的部份。不知道是我的水平低,还是Physics Package的功能局限,我觉得算一个么正变换,感觉用手算比用Maple 11算要方便……Maple 11那个Physics Package好像有许多古古怪怪的问题,我也搞不清楚。以下计算在压缩态|s> = SD|0>下算符Y1 = a exp(-i * phi)) + a^+ exp(i * phi)的不确定度sqrt( - ^2),其中S是压缩态算符,D为位移算符,|0>为真空态,aa^+分别为湮灭和产生算符,phi为实数。我的计算过程非常繁琐,希望高人多多指点,给我一些简单的解决方法。相关计算过程请参考D.F.Walls, G.J.Milburn, Quantum Optics, (Springer-Verlag, Berlin, 1994).
    > restart;

    > with(Physics):
    SD为量子算符:
    > Setup(quantumoperator = {S, D});
    定义湮灭和产生算符:

    > am := Annihilation(n, 1); ap := Creation(n, 1);
                             [quantumoperator = {D, S}]
                                         a-
                                         a+
    定义几个么正变换的结果:

    > DamD := Dagger(D) . am . D = am + alpha;
    > DapD := Dagger(D) . ap . D = ap + conjugate(alpha);
    > SamS := Dagger(S) . am . S = am * cosh(r) - ap * exp(2 * I * phi) * sinh(r);
    > SapS := Dagger(S) . ap . S = ap * cosh(r) - am * exp(-2 * I * phi) * sinh(r);
    还要设定S的么正性:

    > SUI := Dagger(S) . S = 1;
                         ((Dagger(D)) . a-) . D = a- + alpha
                         ((Dagger(D)) . a+) . D = a+ + alpha
            ((Dagger(S)) . a-) . S = a- cosh(r) - a+ exp(2 I phi) sinh(r)
           ((Dagger(S)) . a+) . S = a+ cosh(r) - a- exp(-2 I phi) sinh(r)
                                 (Dagger(S)) . S = 1
    定义真空态:

    > VS := Ket(n, 0);
                                      Ket(n, 0)
    定义Y1

    > Y1 := am * exp(-I * phi) + ap * exp(I * phi);
                           a- exp(-I phi) + a+ exp(I phi)
    准备计算S^+ D^+ Y1 D S

    > tmp := Dagger(S) . (Dagger(D) . Y1 . D) . S;
            exp(-I phi) ((Dagger(S)) . (((Dagger(D)) . a-) . D)) . S + exp(I
    phi) ((Dagger(S)) . (((Dagger(D)) . a+) . D)) . S
    把相关么正变换的结果代入去:

    > tmp := subs({DamD, DapD}, tmp);
                  exp(-I phi) ((Dagger(S)) . (a- + alpha)) . S
                            /              /          \\   
               + exp(I phi) \(Dagger(S)) . \a+ + alpha// . S
    > tmp := subs({SamS, SapS, SUI}, tmp);
           exp(-I phi) (a- cosh(r) - a+ exp(2 I phi) sinh(r) + alpha)
                           /                                             \
              + exp(I phi) \a+ cosh(r) - a- exp(-2 I phi) sinh(r) + alpha/
    便计算完了:

    > ry1 := Dagger(VS) . tmp . VS;
                        exp(-I phi) alpha + exp(I phi) alpha
    的计算过程也是类似的,也要定义一大堆么正变换的结果,如要令D^+ a a D = D^+ a D D^+ a D,非常麻烦,计算结果太长的我就不作显示了。

    > tmp := Dagger(S) . (Dagger(D) . (Y1 . Y1) . D) . S;
    > DamapD := Dagger(D) . (am @ ap) . D = (Dagger(D) . am . D) . (Dagger(D) . ap . D);
    > DapamD := Dagger(D) . (ap @ am) . D = (Dagger(D) . ap . D) . (Dagger(D) . am . D);
    > DamamD := Dagger(D) . (am . am) . D = (Dagger(D) . am . D) . (Dagger(D) . am . D);
    > DapapD := Dagger(D) . (ap . ap) . D = (Dagger(D) . ap . D) . (Dagger(D) . ap . D);
    > tmp := subs({DamapD, DapamD, DamamD, DapapD}, tmp);
    > tmp := subs({DamD, DapD}, tmp);
    > SamapS := Dagger(S) . (am @ ap) . S = (Dagger(S) . am . S) . (Dagger(S) . ap . S);
    > SapamS := Dagger(S) . (ap @ am) . S = (Dagger(S) . ap . S) . (Dagger(S) . am . S);
    > SamamS := Dagger(S) . (am . am) . S = (Dagger(S) . am . S) . (Dagger(S) . am . S);
    > SapapS := Dagger(S) . (ap . ap) . S = (Dagger(S) . ap . S) . (Dagger(S) . ap . S);
    > tmp := subs({SamapS, SapamS, SamamS, SapapS}, tmp);
    > tmp := subs({SamS, SapS, SUI}, tmp);
    算出来了:

    > ry2 := Dagger(VS) . tmp . VS;
    不确定度sqrt( - ^2)的计算就是好几个代数化简:

    > expand(ry2 - ry1^2);
                                               2          2
                      -2 sinh(r) cosh(r) + sinh(r)  + cosh(r)
    > sqrt(factor(%));
                                                   (1/2)
                             /                  2 \    
                             \(cosh(r) - sinh(r)) /    
    > convert(%, exp);
                                              (1/2)
                                  /         2\    
                                  \(exp(-r)) /    
    > simplify(%) assuming r >= 0;
                                       exp(-r)
    于是得出了和Walls书中相同的结果。可见,这种计算过程非常麻烦,主要原因有几个:1、不知道怎么定义算符的么正性,使得如S^+ S这种本该等于1的结果也要自己去做代入;2、不知道如何定义么正变换(或其他什么变换)的结果。如果能用Setup函数去定义D^+ a D的结果,并且能自动根据D的么正性得出D^+ a a D = D^+ a D D^+ a D,免得又要自己设定一个变量去做代入。这种人为代入很容易发生错误,而且设定这种代入式子也很麻烦;3、如果直接算,而不是先算出S^+ D^+ Y1 D S再代入<0|..|0>内,会发生代入不了那些么正变换结果的情况。具体把式子代入S^+ D^+ Y1 D S时,也会发生一些奇怪的代入不成功的情况,使得代入过程要分两步去做。

    April 23

    TTC的讲课录像(录音)挺不错

    近来在网上下了一些TTC(The Teaching Company)出的讲课录像或录音(我怎么觉得每次都介绍违法的事情……),例如:
    Particle Physics for Non-Physicists
    Physics in Your Life
    My Favourite Universe
    Great Scientific Ideas That Changed the World
    Great Ideas of Classical Physics
    The History of Science 1700 to 1900
    等等,都是邀请大学教授讲授,质量很有保证。课程内容面向普通群众,不要求你是相关专业人员。
    March 31

    OpenMP怪问题

    我近日遇到一个奇怪的问题,想不通……
    我写了个OpenMP的测试程序,放在不同CPU的机上使用相同的编译器(Intel Visual Fortran Compiler 9.1)编译,运行时间差别很大。例如下面这程序:
    !  OMPtest.f90
        program OMPtest
            implicit none
            integer, parameter :: N = 100
            real(8) :: A(N, N), B(N, N), C(N, N), D(N, N)     
            integer :: i
    LN = 1000000
            integer :: timediff, time(2)
            integer :: num_threads = 2
           
           
    call omp_set_num_threads(num_threads)
            call random_number(A)
            call random_number(B)

           
           
    ! clock
            call system_clock(time(1))

           
           
    !$OMP PARALLEL
            !$omp do
            do i = 1, LN
                C =  A + B
           
    end do
            !$omp end do

            call system_clock(time(2))
            timediff = time(2) - time(1)
           

            print *, "Elapsed time is", timediff / 10000e0, "seconds"
           
    print *, C(1 : 3, 1 : 3)
       
    end program OMPtest
    这程序是有毛病的,主要是!$omp do这句,后面应该加上private(C)lastprivate(C)字句,避免下面的循环在多线程运算时,使用相同的C
    这程序在E6400中编译运行时,竟然毫无问题,使用10秒左右就算完(单线程时要约17秒)。然而,把这相同的程序,放到Pentium D 925上运算,也是使用双线程,竟然要50多秒才算完(单线程时要约18秒)。尽管CPU不同,但我是用相同的编译器,用相同的参数去编译,实在不能理解为什么结果会差那么多。当然,在!$omp do后面加上private(C)lastprivate(C)字句,Pentium D 925也能用10秒多一点算完这个程序。

    March 30

    关于Matlab R2007a

    昨天又用不太正大光明的手段,搞了个Matlab R2007a,决定“试用”一下。我也不会“试用”太久,就半年左右吧……(接着“试用R2007b”……)
    个人认为Matlab R2007a比起上一个版本来说改进不大,其中最重要的改进是增加了多线程的启动开关,可以让Matlab自动决定用多少个线程。Intel MKL那些能多线程化的函数,应该都能多线程运算。另外,Matlab那些element-wise,即逐个元素操作的函数,如sin,log等都可以多线程运算。另外,现在可以用键盘箭头键来移动图中的物件,这功能对我来说有用……
    March 21

    我的space在国内不能登入了

    此问题也出现在许多人的space中,MSN好像也没办法解决。目前只能用手机版的形式进入:http://frenselx.mobile.spaces.live.com 看来我要找个新地盘才成了……遗憾……

    *今天3月22日,又能进入了……