Matlab实现Galton板的动画演示
来源:互联网 发布:如何为服务器绑定域名 编辑:程序博客网 时间:2024/04/30 12:06
galton板又称为高尔顿钉板,室友生物统计学家Galton设计的。
该板即从入口处放进一个直径略小于两颗钉子之间的距离的小圆玻璃球,当小圆球向下降落过程中,碰到钉子后皆以1/2的概率向左或向右滚下,于是又碰到下一层钉子。如此继续下去,直到滚到底板的一个格子内为止。把许许多多同样大小的小球不断从入口处放下,只要球的数目相当大,它们在底板将堆成近似于正态 的密度函数图形(即:中间高,两头低,呈左右对称的古钟型),其中n为钉子的层数。
下面的程序以N=4为例,动画模拟进行100次实验。
K=100;n=zeros(1,5);delay=0.05;clf;axis([-4 4 -7 0]);aa=sqrt(3)/2;bb=1/2;dd=3/2;a=0.9*aa;b=0.9*bb;xx=[0,-aa,aa,-2*aa,0,2*aa,-3*aa,-aa,aa,3*aa];yy=[0,-dd,-dd,-2*dd,-2*dd,-2*dd,-3*dd,-3*dd,-3*dd,-3*dd];for k=1:K clf r=round(rand(1,4)); x0=0;y0=0; text(1.5,-0.5,'Galton');hold on; text(2.5,-1,'cpw');hold on; for i=1:10 x=xx(i); y=yy(i)-0.1; X=[x,x-a,x-a,x,x+a,x+a]; Y=[y,y-b,y-b-0.9,y-1.8,y-b-0.9,y-b]; fill(X,Y,'g');hold on; end n(sum(r)+1)=n(sum(r)+1)+1; plot(x0,y0,'ro'); for j=1:4 if r(j)==0 x0=x0-aa;y0=y0-bb; plot(x0,y0,'ro');hold on;pause(delay); y0=y0-1; plot(x0,y0,'ro');hold on;pause(delay); else x0=x0+aa;y0=y0-bb; plot(x0,y0,'ro');hold on;pause(delay); y0=y0-1; plot(x0,y0,'ro');hold on;pause(delay); end end for m=1:5 text((m-3)*sqrt(3),-6.5,num2str(n(m))); end pause(20*delay);end方法比较笨,如果想要进行N更大的实验的话,需要重新计算每个顶板的位置,重新设置xx和yy。
0 0
- Matlab实现Galton板的动画演示
- MATLAB实现直接插入排序的演示动画
- MATLAB实现坐标系变换动画演示
- Lissajous曲线动画演示(Matlab实现)
- 演示动画怎么实现的
- MATLAB实现寻路、布线、迷宫的递归深度优先遍历算法_动画演示
- 利用递归算法实现n层汉诺塔动画演示MATLAB代码以及解释
- 实现归并排序MergeSort的非递归动画演示
- CSS3连续动画实现的思路【演示DEMO】
- 轨迹动画演示的例子
- 利用svg技术实现在线动画演示
- JavaScript排序算法动画演示效果实现
- 小波图像融合的Matlab实现示例(添加图片演示080428)
- 栈的实现演示
- 多线程实现凸壳算法的动画演示(0)引子
- 多线程实现凸壳算法的动画演示(1)需求分析
- 多线程实现凸壳算法的动画演示(2)类设计
- PCA的数学原理Matlab演示
- UITabBarController (loading...)
- 最快的计算2的N次方
- 事件机制实现超时触发功能,同时捕捉Ctrl+C信号
- 欢迎使用CSDN-markdown编辑器
- VC++和Matlab混合编程(在VC中调用将.m文件生成的DLL)
- Matlab实现Galton板的动画演示
- Handler的经典总结
- IOS--网络监测
- Android OTA Updates
- GIT版本控制入门(一)
- 一些面试题目
- iOS之弹幕效果
- drawContours函数
- hdoj2588 GCD欧拉函数