美文网首页
如何用带权重的蒙特卡洛计算积分?

如何用带权重的蒙特卡洛计算积分?

作者: icfg66 | 来源:发表于2020-03-23 17:05 被阅读0次

数值积分

有时会碰到一些难以表示成一般代数形式的积分,特别是在工程上,而且工程计算时一般也不需要精确的代数表达式,往往只要一定精度的数值结果。因此如何数值计算定积分呢?

为了便于比较,我们计算如下积分:
\int_0^1 \frac{1}{1+x^2}=\arctan x|_0^1=\frac{\pi}{4}\approx{0.7854}

均匀取点

%matlab code
clear;
x=linspace(0,1,200); %平均分成200个样本
y=1./(1+x.^2);
int=mean(y) %结果为0.7852

均匀取点在积分曲线比较平缓时,效果较好,如果有变化快的地方,需要单独做更加密集的取点,这个例子中曲线比较平缓,故精度相对较高。

均匀分布的蒙特卡洛取点

%matlab code
clear;
x=rand(1,200);%产生(0,1)区间均匀分布的200个随机数
y=1./(1+x.^2);
int2=mean(y)  %结果介于0.76~0.80

从效果上看,均匀分布的蒙特卡洛法不如均匀取点,会有涨落,精度不高,是否用更高精度的方法?观察图像f(x)= \frac{1}{1+x^2}:

fx.jpg

我们发现函数单调递减,那么我们在蒙特卡洛取点时,是否可以在x=0附近多取一些,x=1附近少取一些?比如我们按概率密度取点:
w=\frac{4}{3}(2-x)
这个概率分布有以下特点:1、首先是一次函数,容易处理;2、x=0处和x=1处的概率比为2:1。最后由归一性可以确定系数。那么该如何产生这样的随机数呢?matlab有内置算法吗?请参看Matlab如何用均匀分布产生其他分布?

%matlab code
clear;
x=rand(1,200);
w=2-sqrt(4-3*x);
I=1./(1+w.^2)./(4-2*w)*3;
int3=mean(I)  %结果介于0.783~0.787

效果提高不少!可以猜想,如果我们选取的概率密度函数越接近原函数,那么蒙特卡洛的结果就越准确,但代价是求解反函数的过程会越复杂,需要折中。

相关文章

  • 如何用带权重的蒙特卡洛计算积分?

    数值积分 有时会碰到一些难以表示成一般代数形式的积分,特别是在工程上,而且工程计算时一般也不需要精确的代数表达式,...

  • 蒙特卡洛方法求定积分及python实现(转)

    蒙特卡洛方法求定积分 用蒙特卡洛方法计算定积分 1.原理 计算定积分 利用蒙特卡洛计算方法,核心步骤是求取随机的 ...

  • 蒙特卡洛积分与重要性采样

    重要性采样在强化学习有着重要作用,它是蒙特卡洛积分的一种采样策略. 目录 概率论基础 蒙特卡洛积分 重要性采样 参...

  • 如何用TOPSIS法计算权重?

    用于计算权重的方法有很多:主成分分析、专家评分法、层次分析法、熵值法等,除此之外还有一些实用的综合评价方法,如灰色...

  • 深度学习——蒙特卡洛方法

    采样和蒙特卡洛方法 当无法精确计算和或积分(例如,和具有指数数量个项,且无法被精确简化) 时,通常可以使用蒙特卡罗...

  • 蒙特卡洛算法随笔

    蒙特卡洛 蒙特卡洛可以用随机数的应用来解释,是通过随机采样来计算或模拟给定过程。经典实例就是用蒙特卡洛估计 pi ...

  • 数据分析师之路(三)蒙特卡洛算法

    在金融计算中,蒙特卡洛算法是非常常用的一种,当然,蒙特卡洛算法不仅仅用于金融计算,闻名天下的AlfaGo也采用了蒙...

  • MCMC(马尔可夫链蒙特卡罗)

    蒙特卡洛 均值方法 求积分 利用一个容易进行抽样的分布,根据大数定理可以对函数积分进行估计 拒绝采样 相当于在所围...

  • 留数与定积分题

    2016-1-1. 计算积分。 2016-2-1. 计算积分。 2016-3-1. 计算积分。 2016-4-1....

  • 人工智能通识-科普-微积分求圆周长

    欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】 如何用曲线长度积分公式来计算圆的周长? 曲线长度 曲线长度积...

网友评论

      本文标题:如何用带权重的蒙特卡洛计算积分?

      本文链接:https://www.haomeiwen.com/subject/hydpyhtx.html