1.实现过程
首先定义几个变量:
1)up_point(在y=e^x图像之上的点)
2) down_point(在y=e^x图像之下的点)
x(随机生成的x)
y(随机生成的y)
yy(将x代入y=e^x求出的值)
使用python中的random.uniform(),在区间[0,3]内随机生成一个x,在区间[0,22]随机生成一个y。将x代入y=e^x求出yy,比较y和yy的大小,如果y>yy,就将up_point++,否则就把down_point++。
然后我们要做的就是生成足够多的点,利用蒙塔卡罗算法求出该积分的结果。
e^x在[0,3]上的积分:=down_point/(up_point+down_point)*S(S为已知的包含e^x图像的面积)
2.具体实现
import math
import random
x = 0
y = 0
yy = 0
xx = 0
sum = 0
up_point = 0
down_point = 0
for i in range(10000):
x = random.uniform(0,3)
y = random.uniform(0,22)
yy = math.exp(x)
if y < yy:
down_point = down_point + 1
else:
up_point = up_point + 1
sum = 66*(down_point/(down_point+up_point))
print(sum)
3.运行结果