24小时热门版块排行榜    

查看: 1738  |  回复: 6

astringent

铜虫 (著名写手)

[交流] 【求助】相关函数归一化问题 已有4人参与

最近一直在看自相关函数的程序,有个问题想不通。
自相关函数的定义是A=(a(t)*a(0))/(a(0)*a(0)),当对体系中所有粒子求和时,是先算出每个例子的(a(t)*a(0)) /(a(0)*a(0))然后求和?还是先分别求a(t)*a(0)以及a(0)*a(0)和然后再相除呢?两者有什么区别?请大家指点。

[ Last edited by ghcacj on 2010-12-8 at 09:27 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)

★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
ghcacj(金币+5):谢谢 2010-12-07 16:26:07
问得好。我初学时也在这个问题上纠结过。后来我写程序把两种算法同时都用了,输出两列结果。经比较,二者在数值上差别是很小的。另外,按Leach的书(molecular modelling...),是对每个粒子,上下分别对时间原点求平均后再除,然后再对粒子求和,然后再除以总粒子数,也就是用的你的第一个方案。

也就是:
Cvv=(1/N)*sigma(i 从1到N)(/
2楼2010-12-07 10:59:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

astringent

铜虫 (著名写手)

引用回帖:
Originally posted by 老虎大王 at 2010-12-07 10:59:29:
问得好。我初学时也在这个问题上纠结过。后来我写程序把两种算法同时都用了,输出两列结果。经比较,二者在数值上差别是很小的。另外,按Leach的书(molecular modelling...),是对每个粒子,上下分别对时间原点求 ...

请问老虎大王,我在写程序的时候直接把t=0的相关函数做分母了,也就是 tcf(delt)=tcf(delt)+tcf(ntel)*tcf0(t)/ tcf0(t)*tcf0(t),可是输出错误,请问,我这样写为什么不可以呢?应该怎样写?
do i=1,10000 (粒子数)
     do ntel=1,npoints (共有npoints个数据)
          if (确定timeorigin的条件) then
             t0=t0+1
             time0(t0)=ntel
             tcf0(t0)=tcf(ntel)         
             do t=1,t0
                  delt=ntel-time0(t)+1
                  tcf(delt)=tcf(delt)+tcf(ntel)*tcf0(t)/ tcf0(t)*tcf0(t)
             enddo
           endif
    enddo
enddo
do ical=1,npoints
tcf(ical)=tcf(ical)/(npoints*ntime(t))
write(*,*) ical, tcf(ical)
enddo
3楼2010-12-07 15:57:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

astringent

铜虫 (著名写手)

问题已解决,请结贴
4楼2010-12-08 06:34:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

astringent

铜虫 (著名写手)

引用回帖:
Originally posted by 老虎大王 at 2010-12-07 10:59:29:
问得好。我初学时也在这个问题上纠结过。后来我写程序把两种算法同时都用了,输出两列结果。经比较,二者在数值上差别是很小的。另外,按Leach的书(molecular modelling...),是对每个粒子,上下分别对时间原点求 ...

为什么我用两种方法得到的结果有很大差别呢,劳烦指教。
下面是我的程序
这是我的程序:
do i=1,10000 (粒子数)
     do ntel=1,npoints (共有npoints个数据)
          if (确定timeorigin的条件) then
             t0=t0+1
             time0(t0)=ntel
             tcf0(t0)=tcf(ntel)         
             do t=1,t0
                  delt=ntel-time0(t)+1
                  if(delt.lt.npoints)
                  tcf(delt)=tcf(delt)+tcf(ntel)*tcf0(t)
                  tcf0(delt)=tcf0(delt)+tcf0(t)*tcf0(t)
                  acf(delt)=tcf(delt)+tcf(ntel)*tcf0(t)/ tcf0(t)*tcf0(t)
              endif
            enddo
           endif
    enddo
enddo
do ical=1,npoints
tcf(ical)=(tcf(ical)/(npoints*ntime(t))/(tcf0(ical)/(npoints*ntime(t))
acf(ical)=acf(ical)/(npoints*ntime(t))
write(*,*) ical, tcf(ical)
write(*,*) ical, acf(ical)
enddo
下面是我的输出结果(我只截取了一部分)
  0.0000000000000000        1.0000000000000000     
   0.0000000000000000       1.14207400639561443E-004
   1.0000000149011612       0.67655786350148372     
   1.0000000149011612       7.72679149727596715E-005
   2.0000000298023224       0.62686567164179108     
   2.0000000298023224       7.15926989083817998E-005
   3.0000000447034836       0.60360360360360366     
   3.0000000447034836       6.89359985842397961E-005
   4.0000000596046448       0.58610271903323263     
   4.0000000596046448       6.69372680485647080E-005
   5.0000000745058060       0.57012195121951215     
   5.0000000745058060       6.51121460963353292E-005
   6.0000000894069672       0.55828220858895705     
   6.0000000894069672       6.37599598662582241E-005
   7.0000001043081284       0.54629629629629639     
   7.0000001043081284       6.23910799790196834E-005
   8.0000001192092896       0.51552795031055898     
   8.0000001192092896       5.88771071620099369E-005
   9.0000001341104507       0.52187499999999998     
   9.0000001341104507       5.96019872087711250E-005
   10.000000149011612       0.52515723270440251     
   10.000000149011612       5.99768424742350986E-005
5楼2010-12-10 00:17:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yonshping

银虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
谁能把相关函数的程序发给我吗?先谢谢了
千里之行,始于足下
6楼2012-05-02 21:37:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

manutdhk

木虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
644082楼: Originally posted by astringent at 2010-12-07 05:47:32:
最近一直在看自相关函数的程序,有个问题想不通。
自相关函数的定义是A=(a(t)*a(0))/(a(0)*a(0)),当对体系中所有粒子求和时,是先算出每个例子的(a(t)*a(0)) /(a(0)*a(0))然后求和?还是先分别求a(t)*a(0)以及a( ...

第二种方案才对。。。
分母只是一个归一化作用的常数,如果不计算分母,对最后的结果不会有影响的,只是Amplitude相差一个倍数。

两种方案在什么时候才会得到一致结果呢?当你所有的原子都同一的时候,也就是说,周期性边界条件下的单质材料。只要有一个原子跟其他的不一致,两种方案就不能得到一致的结果。

此外,分母部分完全没有必要放在循环里计算。
所以,我的建议,先双重循环把分子搞定,然后在另一个版块,把分母搞定,最后二者相除。
7楼2012-05-02 22:38:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 astringent 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 j5mmowWXNWxv 2026-09-05 3/150 2026-09-06 13:09 by eObJPa4gWmp6
[教师之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 j5mmowWXNWxv 2026-09-05 3/150 2026-09-06 13:09 by eObJPa4gWmp6
[基金申请] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 j5mmowWXNWxv 2026-09-05 3/150 2026-09-06 12:49 by eObJPa4gWmp6
[考博] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 j5mmowWXNWxv 2026-09-05 4/200 2026-09-06 12:29 by eObJPa4gWmp6
[找工作] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 7/350 2026-09-06 11:40 by eObJPa4gWmp6
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 7/350 2026-09-06 11:20 by eObJPa4gWmp6
[基金申请] 科研人应该花精力去思考如何解决问题,而不是去凝练问题 +10 瞬息宇宙 2026-09-01 19/950 2026-09-06 11:15 by jiangxuan2004
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 8/400 2026-09-06 11:09 by eObJPa4gWmp6
[教师之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 8/400 2026-09-06 11:00 by eObJPa4gWmp6
[论文投稿] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-04 8/400 2026-09-06 11:00 by eObJPa4gWmp6
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 4/200 2026-09-06 07:20 by E1iiBLMU2XnD
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +6 7ZYIEW2YWn72 2026-09-04 9/450 2026-09-06 06:00 by E1iiBLMU2XnD
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +8 CRJ0Aq2FtVH0 2026-09-03 15/750 2026-09-06 05:48 by E1iiBLMU2XnD
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 5/250 2026-09-06 02:39 by E1iiBLMU2XnD
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 5/250 2026-09-06 02:19 by E1iiBLMU2XnD
[文学芳草园] 两块石头 +6 阿美_Lml888 2026-09-03 8/400 2026-09-05 13:52 by 阿美_Lml888
[文学芳草园] 初秋的晨风 +4 阿美_Lml888 2026-09-04 6/300 2026-09-05 13:51 by 阿美_Lml888
[博后之家] 广西大学-广州大学招聘博士后 欢迎广大优秀人才!!! +4 SCSIOyxguo 2026-09-03 7/350 2026-09-05 10:39 by Honglianlian
[硕博家园] 哈尔滨工业大学韩晓军教授课题组招收2027年硕士推免生及博士研究生 +3 灯灯灯灯DDDD 2026-09-03 3/150 2026-09-03 21:22 by 科研皮皮猪
[基金申请] 要骂人了,新模版改版就是要淡化问题凝练这种虚的东西,结果有个评委还在说凝练得不够 +9 瞬息宇宙 2026-08-31 17/850 2026-09-02 14:04 by anjeeshine
信息提示
请填处理意见