计算机仿真实验(部分)
N = 100000;
cube = -1+2*rand(6,N);x1 = cube(1,:); y1 = cube(2,:); z1 = cube(3,:); %点1
x2 = cube(4,:); y2 = cube(5,:); z2 = cube(6,:); %点2
%cube为double型变量,此处仅仅创立一个普通数组dis1 = x1.^2+y1.^2+z1.^2;
dis2 = x2.^2+y2.^2+z2.^2;
I1 = find(dis1 < 1& dis2 <1); % 只选出落在球体内的2个点
x1 = x1(I1); x2 = x2(I1);
y1 = y1(I1); y2 = y2(I1);
z1 = z1(I1); z2 = z2(I1);
d = sqrt((x1-x2).^2+(y1-y2).^2+(z1-z2).^2);
avg_d = sum(d)/length(d) % 球体内任取2点的平均距离
计算的结果并不唯一,但是结果绝大部分分布于准确值周围
2.蒙特卡洛模拟
蒙特卡洛模拟我们在最优化方法中已经有过提及,此处再次对其做出详细的声明:
蒙特卡罗方法也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法
蒙特卡洛法最常见的应用就是求积分。
蒙特卡洛法求积分的基本思想:大量采样(随机投点)求取期望
例题2:求解圆周率
N = 1e4;
x = -1+2*rand(1,N);
y = -1+2*rand(1,N); %随机取点
m = sum(x.*x + y.*y <=1); %统计落在圆域内的点的数量
my_PI2quick = 4*m/N %由圆和与它外切的正方形的面积之比计算圆周率Π
3.排队问题
01.单服务器下的排队问题
单服务台系统模拟:
clk =0;
TMAX=5*60 ;
(1)=0; %主循环外初始化首位顾客信息--可以简化循环体的处理
(1)=(10,2); cc = 1;%下一位顾客编号
while 函数*
转为类型为什么"*4"?----*