clear;clc
N=10000;v0=1; %粒子个数,初始速度
v(1:N)=v0; %定义所有粒子的初始速度为v0
deltv=3*v0/20;
for i=1:20
vbin(i)=(i-0.5)*deltv; %定义一个速度分布区间,用于绘图
end
subplot(3,1,1),hist(v,vbin);
xlabel('v')
ylabel('N')
title('初始速度分布')
for i=1:10*N %碰撞总次数为10*N
j=ceil(rand*N); %随机选取粒子j
k=ceil(rand*N); %随机选取粒子k
while k==j %如果粒子k和j相同,则重新选粒子k,直到k和j不是同一个粒子
k=ceil(rand*N);
end
phij=2*pi*rand;
phik=2*pi*rand;
vj=[v(j)*cos(phij);v(j)*sin(phij)]; %粒子j在x方向和y方向的初始速度
vk=[v(k)*cos(phik);v(k)*sin(phik)]; %粒子k在x方向和y方向的初始速度
vc=(vj+vk)/2; %粒子i和j组成的质心速度(粒子质量为1)
wj=vj-vc; %粒子j在质心系里的初始速度
wk=vk-vc; %粒子k在质心系里的初始速度
phic=rand*2*pi;
cosphic=cos(phic);
sinphic=sin(phic);
vj=[cosphic,-sinphic;sinphic,cosphic]*wj+vc; %实验室系下,粒子j碰撞之后的速度,包括vx分量和vy分量
vk=[cosphic,-sinphic;sinphic,cosphic]*wk+vc; %实验室系下,粒子k碰撞之后的速度,包括vx分量和vy分量
v(j)=sqrt(vj'*vj); %求出粒子j在实验室系下的速度(x方向速度和y方向速度合成)
v(k)=sqrt(vk'*vk); %求出粒子k在实验室系下的速度(x方向速度和y方向速度合成)
if i==N %输出碰撞N次之后的速度分布
subplot(3,1,2),hist(v,vbin);
xlabel('v')
ylabel('N')
title([num2str(N) '次碰撞之后,速度分布'])
end
end
subplot(3,1,3),hist(v,vbin);
xlabel('v')
ylabel('N')
title([num2str(10*N) '次碰撞之后,速度分布'])
%绘制与理论值比较的曲线
nv=hist(v,vbin);
p=nv/N/deltv;
for i=1:20
f(i)=exp(-vbin(i)^2/v0^2)*2*vbin(i)/v0^2;
end
figure
plot(vbin,p,'o',vbin,f,'-')
xlabel('v')
ylabel('f(v)')
title('理论曲线比较')
MarcoPage
- 粉丝: 4421
- 资源: 8835
最新资源
- 条件方差总和 (SCV) 是多模态图像配准的新相似性指标Matlab代码.rar
- 通过 FFT 按总(广义)变化进行图像降噪Matlab代码.rar
- 填充圆圈或麦田圈区域Matlab代码.rar
- 通过 RGB-HSI 图像融合提高图像空间分辨率的 GUI Matlab.rar
- 通过 HSV 色彩空间中的阈值检测图像中的彩色区域。.rar
- 通过 RGB-HSI 图像融合提高图像空间分辨率的 GUI MATLAB代码.rar
- 通过使用强度平均值度量从用户定义的种子点生长区域来进行分割。.rar
- 通过使用强度平均度量从种子点生长区域进行分割Matlab代码.rar
- 通过基于 Adaptive Cuckoo 搜索的 Wiener 滤波器进行多光谱图像去噪Matlab代码.rar
- 通过在矩形波导中设计耦合腔体滤波器Matlab代码.rar
- 图像 2D 变换 平移 旋转 缩放Matlab代码.rar
- 图像的 Choatic Baker 映射解密Matlab代码.rar
- 图像的对比度调整Matlab代码.rar
- 通过自适应核回归实现视频超分辨率Matlab代码.rar
- 图像的哈希值Matlab代码.rar
- 图像对比度拉伸Matlab代码.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈