美文网首页
蒙特卡洛方法求定积分及python实现(转)

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

作者: 雄关漫道从头越 | 来源:发表于2019-10-15 14:59 被阅读0次

蒙特卡洛方法求定积分

用蒙特卡洛方法计算定积分

1.原理

计算定积分

利用蒙特卡洛计算方法,核心步骤是求取随机的 g(X1),………,g(Xn),n∈[a,b],由数学期望和大数定理可以近似计算定积分,公式为


2.测试用例

原函数:


导函数:


计算导函数在[10,15]上的定积分;

3.测试语言

Python

4.测试代码

#Monte Carlo Method for Calculating Definite Integral
 
import math
import random
 
#积分区间
upper_bound=15
lower_bound=10
 
#========================================================
#导函数
#========================================================
def f_x_(x):
    outcome=3*(x**2)+4*math.cos(x)-4*x*math.sin(x)
    return outcome
 
#========================================================
#原函数
#========================================================
def F_x_(x):
    outcome=x**3+4*x*math.cos(x)
    return outcome
 
#========================================================
#生成随机数,用蒙特卡洛方法计算定积分
#========================================================
DefiniteIntegral_By_MonteCarloMethod=0
 
#随机生成10000个f(x),10<=x<=15,求和
sum=0
count=1
while count<=10000:
    sum=sum+f_x_(random.uniform(lower_bound,upper_bound))
    count=count+1
 
DefiniteIntegral_By_MonteCarloMethod=(upper_bound-lower_bound)*(sum/10000)
 
print("用蒙特卡洛方法计算的定积分:")
print(DefiniteIntegral_By_MonteCarloMethod)
print("")
 
#========================================================
#直接用原函数求定积分,用于比较结果的偏差程度
#========================================================
DefiniteIntegral_By_PrimitiveFunction=F_x_(upper_bound)-F_x_(lower_bound)
 
print("直接用原函数计算的定积分:")
print(DefiniteIntegral_By_PrimitiveFunction)
print("")
 
#========================================================
#偏差程度
#========================================================
math_deviation=abs(DefiniteIntegral_By_MonteCarloMethod-DefiniteIntegral_By_PrimitiveFunction)/DefiniteIntegral_By_PrimitiveFunction
print("偏差程度为:")
#显示百分比,小数点后保留四位
print('percent: {:.4%}'.format(math_deviation))

5.测试结果

用蒙特卡洛方法计算的定积分:

2366.508157479758

直接用原函数计算的定积分:

2362.9815863915287

偏差程度为:

percent: 0.1492%

相关文章

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

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

  • 2018-05-25

    python 1.python中数组和矩阵乘法及使用总结 对数组的运算 矩阵求逆,转置,求迹

  • 第五章定积分

    一.定积分的概念与性质 1.背景 2.定积分的定义 3.定积分的一般性质(6条) 4.补充 注意求极限的三种方法 ...

  • 你学高数了吗?我是焦头烂额!Python居然能解决高数问题?

    本文将学习Python的Sympy库,通过该库来求极限,微分,定积分与不定积分,常微分方程、偏微分方程。 求解方程...

  • 数值积分

    数值积分法是求定积分的近似值的数值方法。即用被积函数的有限个抽样值的离散或加权平均近似值代替定积分的值,是一种递推...

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

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

  • SicPy求定积分

    Sicpy求解定积分: 可以利用Scipy模块下的子模块integrate里的quad函数来求计算值。 结果:2.5

  • 定积分,你好​π

    数学公式: 求此函数求定积分后的数值为 ,慢慢看到了和高斯正态分布的某些联系(广义积分)。因为对高斯正态分布求定积...

  • 利用Python实现蒙特卡洛方法

    什么是蒙特卡洛方法? 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代...

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

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

网友评论

      本文标题:蒙特卡洛方法求定积分及python实现(转)

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