课程名称:matlab通信工程**。
设计题目:基于蒙特卡洛下的正三角形面积算法。
姓名:专业班级:
所在学院:学校:
时间:1.蒙特卡洛计算图形面积的原理。
设想有一袋豆子,把豆子均匀地朝图形上撒(假定豆子都在一个平面上,相互之间没有重叠),然后数这个图形之中有多少颗豆子,得出豆子数目就是图形面积。当豆子越小,散得越多、越均匀的时候,结果就越精确。以数学语言来描述就是:
对于求平面上一个边长为1的正方形的内部一个形状不规则的“图形”面积,monte carlo方法为:向该正方形均匀地随机投掷m个点,如果其中有n个点落于“图形”内,则该“图形”的面积近似为n/m。投掷的点数越多,结果越准确。
2.数学模型。
如图一所示,可以很容易得到一个边长为1的正三角形的面积:
图一正三角形面积求解图二用monte carlo方法求正三角形面积。
设有两个相互独立的随机变量,,服从上均匀分布。那么,由它们所确定的坐标点是均匀分布于半径为的一个圆区域中,又该圆内的正三角形的边长为1,如图二所示。显然,坐标点落入正三角形中的概率等于该正三角形的面积与圆的面积的比,即:
因此,只要通过随机试验统计出落入正三角形中的频度,即可计算出正三角形的近似面积来。当随机试验的次数充分大的时候,计算结果就趋近于理论真值。
3.**试验。
其实现的matlab程序**如下:
clear all;
s=0:0.01:2*pi;
x=sin(s);
y=cos(s);
n=3;r=sqrt(3)/3;
theta = 0:1/n:1)*2*pi;
x,y]=pol2cart(theta,r);
m=0;x1=2*r*rand(999,1)-r;
y1=2*r*rand(999,1)-r;
index=find(x1.^2+y1.^2>r.^2);
x1(index)=[
y1(index)=[
n=999;
for n=1:n
p1=x1(1:n);
q1=y1(1:n);
if (y1(n)<(sqrt(3)/3).*x1(n)+1/3)&&y1(n)>(sqrt(3)/3).*x1(n)-1/3)&&sqrt(3)/6m=m+1;
endplot(p1,q1,'.x,y);
axis equal;
axis([-1 1 -1 1]);
text(-0.5,-0.6,['试验总次数n=',num2str(n)])
text(-0.5,-0.7,['落入正三角形的数目m=',num2str(m)])
text(-0.5,-0.8,['近似正三角形面积s`='num2str(m/n)])
set(gcf,'doublebuffer','on');
drawnow;
end图三 monte carlo方法随机试验计算正三角形面积的过程。
程序执行中,将动态显示随机落点情况和当前的统计计算结果。图三为重复落点999次的计算结果。随着试验次数增加,计算结果将趋近于边长为1的正三角形的面积0.4330127。
动画模式适合于原理演示。但是,如果要提高程序效率,就应该取消**过程中的可视化显示,并利用matlab的矩阵运算机制来改造程序。下面的程序将随机试验次数提高到了1000万次,计算得到的结果精度提高到了小数点后大约2位。
程序中同时使用了矩阵运算机制和循环结构来负责完成重复随机试验,其目的是为了兼顾计算速度和程序内存占用量。矩阵运算是一种并行计算机制,计算速度快,但是矩阵越大,内存占用就越多;而循环结构则可重复使用相同的内存区域,尽管速度较慢。这是matlab语言固有的特点,在编程中因当就具体问题作出权衡。
ticn=10000;
r=sqrt(3)/3
for k=1:1000
x1=2*r*rand(999,1)-r;
y1=2*r*rand(999,1)-r;
index=find(x1.^2+y1.^2>r.^2);
x1(index)=[
y1(index)=[
m(k)=sum((y1<(-sqrt(3)/3).*x1+1/3)&(y1>(sqrt(3)/3).*x1-1/3)&(sqrt(3)/6end
s=mean(m)./n
time=toc
由于是随机试验,重复运行的结果也不完全相同,且不同计算机配置上的运行耗时也不一样,运行结果如下:s =
time =
MATLAB课程设计报告
基于matlab的图像处理 课程设计。学生姓名 徐清福。学号 110700136 专业班级 信通一班 指导教师 郑晓明 二 一零年 4 月 8 日。目录 二号字体 一。课程设计目的2 二。课程设计要求2 三。课程设计报告内容2 四。程序需求和模块分析2 五。详细设计过程3 六。调试及分析16 七。心...
MATLAB课程设计报告
2 整流电路 2.1 单相半波可控整流系统。2.1.1 晶闸管元件的符号和 模型。晶闸管是一种可以通过门极信号触发导通的半导体器件。晶闸管 模型由一个电阻r 一个电感l 一个直流电压源v,和一个开关串联组成。开关受逻辑信号控制,该逻辑信号由电压 电流和门极触发信号 g 决定。晶闸管元件的符号和 模型...
matlab课程设计报告
matlab 软件的使用。姓名 专业 通信技术 班级 通技102 学号 指导老师 史兆强 时间 2013 01 04 用mtlab编程实现句柄图形应用。摘要 本文利用mtlab的算法设计和程序设计的原理和方法,着重介绍了句柄图形的实际运用。根据提出的实际问题,即画出沿曲线移动的小球,给出具体句柄图形...