蒙特卡罗方法
是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。
蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。
基本思想
当所求问题的解是某个事件的概率,或某个随机变量的数学期望,或者是与概率数学期望有关的量时,通过试验的方法,得出事件的概率。
优点:
①能够比较逼真地描述具有随机性质的事物的特点及物理实验过程。
②受几何限制小
③误差已确定
④程序结构简单,易于实现
⑤收敛速度与问题的维数无关
缺点:
①收敛速度较慢
②误差具有概率性
生成随机数的方法:
①随机数表方法
②物理方法(外置设备)
基本步骤:
①在区间【A,B】上利用计算机均匀产生N个随机数Xn,用unifrnd命令实现
②计算每一个随机数相应的被积函数值
③计算被积函数的平均值
举例:
二次积分
解题程序:
>> P = rand(1000,2); %生成一个二维的随机数表
>> x = 2*P(:,1)-1; %x的值域
>> y = 2*P(:,2); %y的值域
>> II = find(y<=2-x.^2&y.^3>=x.^2);
>> M = length(II);
>> S = 4*M/10000; %求得面积
>> plot(x(II),y(II),'g.') %绘图
三次积分
>> P = rand(10000,4); %生成一个四维的随机数表
>> x = -1+2*P(:,1); %x的值域
>> y = -1+2*P(:,2); %y的值域
>> z = P(:,3); %z的值域
>> u = 2*P(:,4); %u的值域
>> II = find(z>sqrt(x.^2+y.^2)&z<=1&u<=x.^2+y.^2+z.^2);
>> M = length(II);
>> V = 8*M/10000
注:本文中所有图片均来自B站up主:老师好我是小小白