f*******i 发帖数: 8492 | 1 我的最终目的是想得到radial distribution function的曲线,类似于附件中的图形。
我设计的程序如下,在一维空间中,20个小球两两互相撞击,每隔一定时间,就记录一
下所有小球距离中间位置的小球的距离。这样,每次可以得到19个数据。
如果程序运行1000次,就有19000个数据点。
另外,如果输入30个小球的话,且程序运行10000次的话,就会有290000个数据点。
理论上,应该模拟的次数越多,就越接近理想的图形(图示中的)。
在图示中,纵坐标是g(r),定义为g(r)=(dN/dr)/(N/r);横坐标是r
而我的程序运行完后,会进行类似于excel中的Histogram命令,既以0.1为bin的步长,
把0.1-0.2,0.2-0.3...把所有在此范围内的点计数,最终得到的是以frequency为纵坐标,以
bin的长度为横坐标的图形。
现在,我的问题是这个图形和目标图形的样子差距还是很大的。请问该用哪种数据处理
方法来处理呢?另外,如何消除运行次数,与小球个数的不同所造成的图形差异?谢谢 |
f*******i 发帖数: 8492 | |
l*********s 发帖数: 5409 | 3 Your target curve has a spike between 0.25-0.4, wouldn't a bin size of 0.1
be too big? In addition, maybe you can use kernel smoothing to reduce the
random noises due to small sample sizes. |
D******n 发帖数: 2836 | 4 hehe,做MD的啊。
20个小球怎么来个中间小球啊?
1) 如楼上所说,你可以kde一下你的数据。
2) 或者比较简单bin一下你的目标distribution,再跟你的observed binned
distribution 比较,还可以做个goodness of fit test。
btw,双簧包?a prank?
坐标,
以
【在 f*******i 的大作中提到】 : 我的最终目的是想得到radial distribution function的曲线,类似于附件中的图形。 : 我设计的程序如下,在一维空间中,20个小球两两互相撞击,每隔一定时间,就记录一 : 下所有小球距离中间位置的小球的距离。这样,每次可以得到19个数据。 : 如果程序运行1000次,就有19000个数据点。 : 另外,如果输入30个小球的话,且程序运行10000次的话,就会有290000个数据点。 : 理论上,应该模拟的次数越多,就越接近理想的图形(图示中的)。 : 在图示中,纵坐标是g(r),定义为g(r)=(dN/dr)/(N/r);横坐标是r : 而我的程序运行完后,会进行类似于excel中的Histogram命令,既以0.1为bin的步长, : 把0.1-0.2,0.2-0.3...把所有在此范围内的点计数,最终得到的是以frequency为纵坐标,以 : bin的长度为横坐标的图形。
|
f*******i 发帖数: 8492 | 5 我不是专业做MD的,这个只是我上的一门课的期末project
其实中间小球取哪个无所谓,我选的的是10号球,当然我也可以运行21个球,选择11号
球作为中心。这些都不是主要问题。
因为我要把数据处理的部分,写入程序,最后用程序生成function的图形,所以需要数
学的表达方式。你们回答的部分,太专业了,能否用数学运算来解释一下?
我的bin是以0.1为步长,一直到25为止。
现在计算出了每个步长范围内有多少个小球,问题是想如何把我已经得到的数据转换成
我要的图形。
请楼上两位查收包子。顺便请详细帮我解答一下。谢谢
【在 D******n 的大作中提到】 : hehe,做MD的啊。 : 20个小球怎么来个中间小球啊? : 1) 如楼上所说,你可以kde一下你的数据。 : 2) 或者比较简单bin一下你的目标distribution,再跟你的observed binned : distribution 比较,还可以做个goodness of fit test。 : btw,双簧包?a prank? : : 坐标, : 以
|
f*******i 发帖数: 8492 | 6 贴出来的图片只是网上找来的理想图
我的图形没贴出来 |
k*******a 发帖数: 772 | 7 考虑进去势能分布了吗?
随便瞎撞,怎么能撞出这个distribution呢? |
f*******i 发帖数: 8492 | 8 这个是hard sphere的模型,只有接触的时候,才有作用力
而且仅仅是一维空间,所以只有相邻的两个球才会互相撞。
【在 k*******a 的大作中提到】 : 考虑进去势能分布了吗? : 随便瞎撞,怎么能撞出这个distribution呢?
|
f*******i 发帖数: 8492 | 9 这个是我目前的图形
和目标的好像还差很远
【在 f*******i 的大作中提到】 : 这个是hard sphere的模型,只有接触的时候,才有作用力 : 而且仅仅是一维空间,所以只有相邻的两个球才会互相撞。
|
D*********2 发帖数: 535 | |
|
|
k*******a 发帖数: 772 | 11 你这个没有势能的话,那么距离肯定是均匀分布的,你怎么能得到那个分布呢
在物理中,那个分布是有条件的,势能分布是lennard-jones 分布
g(r)似乎应该也有close form
如果g(r)有close form,你可以用很多办法generate这个分布
【在 f*******i 的大作中提到】 : 这个是我目前的图形 : 和目标的好像还差很远
|
f*******i 发帖数: 8492 | 12 r应该是距离选定的中心的距离,或者半径
在一维空间下,g(r)=(dN/dr)/(N/r),N应该是小球的个数,N/r就是平均密度。
这样的话,如道g(r),知道平均密度,在知道距离中心小球的距离,就可以知道在这个
范围内有多少个小球。
【在 D*********2 的大作中提到】 : 啥是r,啥是g(r)?
|
l*********s 发帖数: 5409 | 13 en, kernel smoothing won't help as your graph is drastically different from
your target.
It seems the issue lies within your codes or model, other than the post-
processing of data.
【在 f*******i 的大作中提到】 : 这个是我目前的图形 : 和目标的好像还差很远
|
f*******i 发帖数: 8492 | 14 lennard-jones我做了了,那个是project的第二个部分
第一个部分是硬球模型
所以根据动能和动量守恒,就是简单交换速度。
而且我假定第一个球和最后一个球是不动的。
开始的时候,小球的分布是均匀的。但是我每个小球的起始速度和方向是随机的。
所以,我每隔一定时间,就捕捉一下各个小球距离中心小球的距离,就得到了这组数据。
【在 k*******a 的大作中提到】 : 你这个没有势能的话,那么距离肯定是均匀分布的,你怎么能得到那个分布呢 : 在物理中,那个分布是有条件的,势能分布是lennard-jones 分布 : g(r)似乎应该也有close form : 如果g(r)有close form,你可以用很多办法generate这个分布
|
l*********s 发帖数: 5409 | 15 cong!
【在 k*******a 的大作中提到】 : 你这个没有势能的话,那么距离肯定是均匀分布的,你怎么能得到那个分布呢 : 在物理中,那个分布是有条件的,势能分布是lennard-jones 分布 : g(r)似乎应该也有close form : 如果g(r)有close form,你可以用很多办法generate这个分布
|
k*******a 发帖数: 772 | 16 试试把小球的速度定义为normal,这样才是实际情况 |
f*******i 发帖数: 8492 | 17 请问可以详细一点吗?
我上周才开始自学matlab,以为以前从来没有用过,但是老师又要求用matlab编程
我自己仅有一点点C的基础
请问你说定义为normal,如何写那个语句?
另外,请问,你认为如果刨除程序设计的问题,仅仅就我的数据处理方法而言,是否有
问题?
【在 k*******a 的大作中提到】 : 试试把小球的速度定义为normal,这样才是实际情况
|
k*******a 发帖数: 772 | 18 我不是很清楚1D是不是reasonable
如果1D的话,时间t之后小球的位置是predictable的,网上有很多pair correlation
function也就是g(r)的模拟,你可以参考一下
【在 f*******i 的大作中提到】 : 请问可以详细一点吗? : 我上周才开始自学matlab,以为以前从来没有用过,但是老师又要求用matlab编程 : 我自己仅有一点点C的基础 : 请问你说定义为normal,如何写那个语句? : 另外,请问,你认为如果刨除程序设计的问题,仅仅就我的数据处理方法而言,是否有 : 问题?
|
k*******a 发帖数: 772 | 19 我的意思是小球初始速度分布是 normal distribution
【在 f*******i 的大作中提到】 : 请问可以详细一点吗? : 我上周才开始自学matlab,以为以前从来没有用过,但是老师又要求用matlab编程 : 我自己仅有一点点C的基础 : 请问你说定义为normal,如何写那个语句? : 另外,请问,你认为如果刨除程序设计的问题,仅仅就我的数据处理方法而言,是否有 : 问题?
|
f*******i 发帖数: 8492 | 20 好的,我去试试
我上一个问题的意思是说,如果按照我的这个思路做下去
你觉得我以frequency和bin来作图,得到的东西就该是RDF吗?
还是应该再加入一些其他的处理?
【在 k*******a 的大作中提到】 : 我的意思是小球初始速度分布是 normal distribution
|
k*******a 发帖数: 772 | 21 我用R,用你的方法算了一下,似乎得不到你要的图形
(不过我的假设,小球size忽略不计)给定一个初始条件,然后随机生成很多时间点,
算这个时间每个小球的位置,我取了第9个和第10个小球的距离。
x<-runif(20)*20
x<-sort(x)
v<-rnorm(20,0,10)
d<-c()
for (i in 1:10000){
t<-runif(1)*100000
pos<-x+v*t
pos<-pos%%40
pos<-pos*(pos<20)+(40-pos)*(pos>=20)
pos<-sort(pos)
d<-c(d,pos[10]-pos[9])
} |
d*******o 发帖数: 493 | 22 楼主这么有钱,千金买马骨,发我一个双黄包吧。
奉献SAS码如下
data one;
ball=30;
amp=10;
do Time=0 to 2 by .01;
freq=sin(ball*time)*constant("e")**(-amp*time);
output;
end;
run;
proc sgplot data=one;
series x=time y=freq;
run; |