代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
clear; n=10;%粒子数 step=200; %粒子前进的步数 jump=0.1; %每前进一步粒子的跳跃位置,这里认为是一个自然数,甚至程序中给出小数也可以。 figure; %创建绘图窗口 hold on; %打开重绘 grid; %显示网格 %以下是为了显示两个上下极限概率的边界 x_line=(1:step); y_line_upper=jump*x_line; %上边界的y值 y_line_lower=-jump*x_line; %下边界的y值 plot(x_line,y_line_upper); %绘制上边界 plot(x_line,y_line_lower); %绘制下边界 clear x_line;clear y_line_upper;clear y_line_lower; %清除这几个变量,节省内存 for m=1:n; %粒子数(n)个循环 move_x=zeros(100); %初始化粒子的横坐标位置数组 move_y=zeros(100); %初始化粒子的纵坐标位置数组 y=0; %初始位置的纵坐标 for x=1:step; %粒子随机前进500步 c=rand(1); %生成随机数 %以下生成的是非等概率分布 if c<=0.20 a=-jump; %概率分布为1/4 elseif c>0.10 && c<0.70 a=0; %概率分布为1/2 else a=jump; %概率分布为1/4 end y=y+a;%纵坐标y改变,横坐标是步长j move_x(x)=x; %把当前步长的粒子位置横坐标给位置数组 move_y(x)=y; %把当前步长的粒子位置纵坐标给位置数组 plot(x,y,'.'); %绘当前位置点 pause(0.00001);%延时绘图,动画显示 end plot(move_x,move_y,'r');%将点连线,形成粒子的运动轨迹 end clear all; %清除所有变量 |
视频演示:待更新
运行结果图展示:
3个粒子的轨迹:
10个粒子的轨迹
50个粒子的轨迹
100个粒子的轨迹
从这个例子中我们得到一个结果:随机性告诉了我们世界运动必须是光速的。
假设粒子最快的运动速度就是光速,假设粒子每前进一步,都可以向某处移动a个最小距离(也许是planck长度),那么对于其概率来说,a必须小于步长所允许的范围。理想化的,假设a=+1或者a=-1,那么对于以光速运动的物体来说(假设这里就是光子),它的概率分布必须保持在光速的限制之内,最大只会给出一条直线来。
错了。完全错了。那条线只是说明粒子一直取一种固定值所做的轨迹,并不是光速什么的。即把每次位移步伐变为任意实数,包括小数和大的整数,给出的图像曲线分布仍旧是一样的。
请使用手机”扫一扫”x
一条评论