• 基于蒙特卡洛方法求解数值积分的一个小例子


    对随机变量X的概率密度函数f(x)做积分运算,我们就可以通过

    [E(g(X))=int_{-infty}^{+infty}{g(x)f(x)}dx ]

    这样的积分形式来表示指定函数g在参数X时函数值的期望值。

    基于蒙特卡洛方法的数值积分正好是这种方法的逆推。如果我们需要计算某个定积分的值,只要将其变换为某一随机变量的期望的形式,再借用蒙特卡洛方法即可。

    例如,如果需要计算

    [c=int_a^b{h(x)}dx ]

    我们应令X遵从[a,b]上的均匀分布,且g(x)=(b-a)h(x),对g(x)施加蒙特卡洛方法,就可以得到E(g(X))=c。之后,只要将生成的伪随机数序列x1,x2....xn来模拟[a,b]上的均匀分布,就可以通过计算(b-a)(h(x1)+....h(xn))/n来得到c的估计值。

    下面通过例子来用蒙特卡洛方法来计算

    [int_0^2{x^2}dx ]

    [g(x)=2x^2 ]

    已知c的理论解是8/3

    python代码:

    import numpy as np
    n=100000  #随机数的数量
    x=2*np.random.rand(n) #在[0,2]上的n个随机数
    c=np.sum(2*x**2)/n
    

    image-20210126142627165

    可见,用蒙特卡洛法求得的积分值与理论解非常接近。

    附:md编辑公式 https://www.cnblogs.com/daizongqi/p/11525397.html

    ##### 愿你一寸一寸地攻城略地,一点一点地焕然一新 #####
  • 相关阅读:
    HTML5表单元素的学习
    微博账号注册
    微博三方登陆流程
    Vue发送短信逻辑
    celery异步发送短信
    celery
    celery
    jwt安装配置与原理
    图片验证
    Vue组件
  • 原文地址:https://www.cnblogs.com/johnyang/p/14330130.html
Copyright © 2020-2023  润新知