24小时热门版块排行榜    

查看: 1562  |  回复: 4

astringent

铜虫 (著名写手)

[交流] 【求助】相关函数归一化后,输出值怎么变成NaN了?? 已有3人参与

我编程计算相关函数时,未归一化时求出的相关函数趋势是对的,可是我加了归一化的语句后(也就是程序中的tcf0(delt)=tcf0(delt)+tcf0(t)*tcf0(t)),输出的相关函数的值就变成NaN了,我查了一下,NaN可能是运算错误,请大家帮忙看看,是我的归一化条件加的不对吗??先谢谢了
下面是我的程序:
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(delt)=tcf0(delt)+tcf0(t)*tcf0(t)
             enddo
           endif
    enddo
enddo
do ical=1,npoints
tcf(ical)=tcf(ical)/tcf0(ical)

[ Last edited by ghcacj on 2010-12-8 at 09:28 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qphll

金虫 (正式写手)

★ ★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
zh1987hs(金币+3):thank you 2010-12-07 10:30:54
zh1987hs(金币+3):thank you 2010-12-07 10:31:09
引用回帖:
Originally posted by astringent at 2010-12-07 03:59:01:
我编程计算相关函数时,未归一化时求出的相关函数趋势是对的,可是我加了归一化的语句后(也就是程序中的tcf0(delt)=tcf0(delt)+tcf0(t)*tcf0(t)),输出的相关函数的值就变成NaN了,我查了一下,NaN可能是运算错 ...

一般而言, 如果出现NaN, 那么检查你的输入文件和你程序中的read, 循环语句是不是匹配. 大多数, 这是文件格式的问题.
Life, Love, Laugh.
2楼2010-12-07 04:56:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

astringent

铜虫 (著名写手)


zh1987hs(金币+1):thank you 2010-12-07 10:31:05
引用回帖:
Originally posted by qphll at 2010-12-07 04:56:09:



一般而言, 如果出现NaN, 那么检查你的输入文件和你程序中的read, 循环语句是不是匹配. 大多数, 这是文件格式的问题.

我原来的程序是这样的,此时没出现输出错误的问题,
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)  
             enddo
           endif
    enddo
enddo
do ical=1,npoints
tcf(ical)=tcf(ical)/nparticle*ntime(t)
enddo
但是我需要算归一化的相关函数,于是我就把tcf(delt)=tcf(delt)+tcf(ntel)*tcf0(t) 改成了tcf(delt)=tcf(delt)+(tcf(ntel)*tcf0(t))/(tcf0(t)*tcf0(t) ) ,就出现输出错误了,是怎么回事呢?
3楼2010-12-07 05:01:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
ghcacj(金币+2):谢谢 2010-12-07 16:27:48
被零除了。你追踪一下你的分母,可能没有赋值的时候就用上了。
4楼2010-12-07 10:44:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

astringent

铜虫 (著名写手)

引用回帖:
Originally posted by 老虎大王 at 2010-12-07 10:44:19:
被零除了。你追踪一下你的分母,可能没有赋值的时候就用上了。

多谢提醒,已解决。
5楼2010-12-08 06:31:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 astringent 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见