6 随机模拟实验
6.1 基础训练
1. 随机变量 x 在区间[10,30]上均匀分布。编写一个语句模拟随机变量 x:产生
1000 个模拟 x 的随机数.
解:
x=10+20*rand(1,1000)
或
x=unifrnd(10,30,1,1000)
2. 在矩形区域 D 内随机投点 5000 个,
,并绘制
投点效果图。
解:
N = 5000;
x=10*rand(1,N)
y=20*rand(1,N)
plot(x,y,'.')
3. 假设学生到达图书馆的间隔时间服从在区间[0, 5](单位:秒)上的均匀分布,
请编程产生 100 个学生的到达时刻。
解:
arrival(1)= 5*rand; %产生第一个到达时刻
for i=2:100
%上一个达到时刻+间隔时间
arrival(i) = arrival(i-1) + 5*rand;
end
4. 假设在某 30 分钟内学生到达图书馆的间隔时间服从在区间[0,5](单位:秒)
上均匀分布,请编程产生 30 分钟内所有到达图书馆的学生的到达时刻,并输
出到达人数.
解:
clear all, arrival(1)= 5*rand; %产生第一个到达时刻
for i=2:10000
%上一个达到时刻+间隔时间
t = arrival(i-1) + 5*rand; %(单位:秒)
if t < 30*60,%如果当前模拟的到达时刻 在30分钟内
arrival(i) = t;
else
break;
end
}200,100|),{(yxyxD
end
sprintf('到达人数=%d',length(arrival))
6.2 随机模拟求面积
一.实验任务
(一)请向四条直线
所围平面区域内随机投 10000 个点,
绘出投点,并统计在曲线
上方的点有多少(将结果赋值给变量 num)。
(二)请用蒙特卡罗法估算曲线
与曲线
所围区域面积。
其他要求:
(1)编程绘出两条曲线,再计算出交点坐标;
(2)将蒙特卡罗法的结果与精确解比较。
二. 实验目的
认识蒙特卡罗法的原理。
熟悉蒙特卡罗法的应用过程。熟悉蒙特卡罗法的算法框架及特点。
三. 实验过程
(一)问题一程序
N = 10000;
x = 10*rand(1,N);
y = 5*rand(1,N);
plot(x,y,'.')
idx=find(y>=abs(3*sin(x)));
num=length(idx)
%前2行可以用下列代码完成
num = sum(y>=abs(3*sin(x)))
运行结果:
num =
6304
(二)问题二程序
% 提示:计算曲线交点A(-2,4),B(3,9)。
% 可用x=-2,x=3,y=0,y=9围成的矩形包含这个区域。再随机投点实验。
x=linspace(-2,3,50);
y1=x.^2; y2=x+6;
plot(x,y1,x,y2)
set(gca,'fontsize',14)
5,0,10,0yyxx|sin3|xy2xy6xy
N = 10000; d = 9; m= 0;
for i=1:N,
x = -2+5*rand;
y = d*rand;
if y>=x^2 & y
请用蒙特卡罗法求解下列优化模型。
二. 实验目的
熟悉蒙特卡罗法求解优化问题的原理。
三. 实验过程
function testmain
goodvalue = inf;
N = 10000;
for i=1:N
x(1)=15*rand; x(2)=9*rand;
x(3)=fix(26*rand);
if fun(x)