学习笔记|蒙特卡罗方法(用matlab解决n次微积分问题)

蒙特卡罗方法

是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。

蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

基本思想

当所求问题的解是某个事件的概率,或某个随机变量的数学期望,或者是与概率数学期望有关的量时,通过试验的方法,得出事件的概率。

优点:

①能够比较逼真地描述具有随机性质的事物的特点及物理实验过程。
②受几何限制小
③误差已确定
④程序结构简单,易于实现
⑤收敛速度与问题的维数无关

缺点:

①收敛速度较慢
②误差具有概率性

生成随机数的方法:
①随机数表方法
②物理方法(外置设备)

基本步骤:

①在区间【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主:老师好我是小小白

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值