写MATLAB程序,画出动画来模拟粒子的布朗运动。
在二维坐标系下,假设有100个点,起始坐标都为(0,0)
,在坐标系下用.
画出这100个点。模拟这些点的布朗运动,试写出含有1000步的循环,每一步循环将计算出每个点下一步的新的x和y坐标,然后画出新位置下的这100个点,这样循环1000步,就会画出有1000个图片的动画。每个点下一步的新坐标位置,通过在当前的位置(x,y)
,对x和y分别加上服从正态分布且标准差为0.005的变量来完成。
%Brownian motion 布朗运动
%清除命令,清空工作区,关闭所有窗口
clc,clear,close all;
% 设置正态分布的均值
mean = 0;
% 点的个数
n = 100;
% 速度
s = 0.01;
% x, y的初始值
x = zeros([n, 1]);
y = zeros([n, 1]);
h = plot(x, y, '.');
title('模拟布朗运动');
for i = 1:1000
x = x + normrnd(mean, 0.005, [n,1]) * s;
y = y + normrnd(mean, 0.005, [n,1]) * s;
set(h,'XData',x,'YData',y) % 重新绘点
drawnow;
end
动态图的实现思路:
- 生成新的
xy
坐标值 - 暂时保存
- 重新绘点
视频:
matlab实现布朗运动
参考文章:https://blog.csdn.net/mygod2008ok/article/details/100855010