24小时热门版块排行榜    

查看: 1752  |  回复: 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文章,我:8O5.5.1.O.54,科目齐全,可+急 +5 LwdutQ8HoqWP 2026-09-13 5/250 2026-09-14 22:25 by vZfe6xYu34yj
[找工作] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +5 3n8v2C8RimXI 2026-09-13 5/250 2026-09-14 22:13 by vZfe6xYu34yj
[博后之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 3n8v2C8RimXI 2026-09-13 5/250 2026-09-14 22:12 by vZfe6xYu34yj
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +5 3n8v2C8RimXI 2026-09-13 5/250 2026-09-14 22:01 by vZfe6xYu34yj
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +4 QUjhNVAcOSff 2026-09-13 4/200 2026-09-14 21:37 by vZfe6xYu34yj
[考博] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +5 QUjhNVAcOSff 2026-09-13 5/250 2026-09-14 21:36 by vZfe6xYu34yj
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 QUjhNVAcOSff 2026-09-13 5/250 2026-09-14 21:25 by vZfe6xYu34yj
[考博] 上海工程技术大学激光智能制造课题组招收博士研究生 +4 两三岁ss 2026-09-14 4/200 2026-09-14 20:29 by 班主任的同桌
[考研] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 s3fFTmArrBt6 2026-09-14 3/150 2026-09-14 18:01 by Aj1rhIDL5ixY
[考博] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 s3fFTmArrBt6 2026-09-14 4/200 2026-09-14 17:49 by Aj1rhIDL5ixY
[考博] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 s3fFTmArrBt6 2026-09-14 4/200 2026-09-14 17:25 by Aj1rhIDL5ixY
[公派出国] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 LwdutQ8HoqWP 2026-09-13 5/250 2026-09-14 16:25 by Aj1rhIDL5ixY
[教师之家] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 LwdutQ8HoqWP 2026-09-13 4/200 2026-09-14 16:13 by Aj1rhIDL5ixY
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 3n8v2C8RimXI 2026-09-13 4/200 2026-09-14 15:37 by Aj1rhIDL5ixY
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +5 QUjhNVAcOSff 2026-09-13 6/300 2026-09-14 15:21 by Aj1rhIDL5ixY
[基金申请] 求教各位大神:2026教育部人文社科青年基金项目何时公示呀? +5 云宴山人 2026-09-10 7/350 2026-09-14 12:11 by ecnu2013
[找工作] 浙江师范大学是怎么坑我的 +6 recruit123 2026-09-09 6/300 2026-09-14 12:00 by 萨仁其其格
[考博] 27秋季材料博士申请求助 10+3 Cahal1 2026-09-11 4/200 2026-09-14 08:50 by 北京莱茵编辑
[基金申请] 面上有专家说实验设备不是我们单位的 +6 zj_muchong 2026-09-08 8/400 2026-09-11 06:56 by suifengdao
[有机交流] 科研求助 10+4 我吃一只鱼 2026-09-07 4/200 2026-09-10 08:32 by 0940628
信息提示
请填处理意见