通过Python实现蒙特卡洛算法

1.蒙特卡洛方法

蒙特卡罗(Monte Carlo)方法,又称随机抽样统计试验方法,是通过使用随机数(或更常见的伪随机数)来解决很多计算问题的方法,将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解。

蒙特卡罗算法的基本步骤
蒙特卡罗算法一般分为三个步骤,包括构造随机的概率的过程,从构造随机概率分布中抽样,求解估计量。

2.案例引入:π的计算

正方形内部有一个相切的圆,假设圆形的半径为r,那么正方形的边长则为2r,因此,圆形和正方形的面积之比为:
                                   
在正方形内部,随机产生一系列的点,计算他们与中心点的距离,从而判断是否落在圆的内部,从而:   

                                    通过Python实现蒙特卡洛算法_第1张图片

3.计算 

蒙特卡洛算法求解积分问题
对被积分函数的变量在某一区间内进行随机均匀抽样,然后对抽样点的函数值求平均,从而可以得到函数积分的近似值。此种方法的理论基础是概率论的中心极限定理,其不随积分维数的改变而改变。  

实例:

通过Python实现蒙特卡洛算法_第2张图片

 思路分析:

(1)被积分函数表示的几何意义即函数在积分区域上的面积,带入x=0&x=1,可知函数的大致范围图像,根据被积分函数的图像可知:其图像面积小于1(可以看作在被积函数在面积为1的正方形内)

(2)构造随机的概率,设有足够多的随机点,即随机点将落在面积为1的正方形里(总点数)和被积函数的图像里(有随机性)

(3)求出估计量

代码

import numpy as np
import random
m = 100000
n = 0
#定义函数
def func(x):
    return np.log(1+x)/(1+x**2)

for i in range(m): #产生随机点
    x = random.random() 

    y = random.random()
    
    if func(x)>y:#保证在积分区域内
        n = n+1 
ans = n/m #比值即为面积
print(ans)

代码运行结果

通过Python实现蒙特卡洛算法_第3张图片

 

你可能感兴趣的:(人工智能,python)