描述
蒙特卡洛积分是利用随机试验求函数的数值积分的方法。请考虑定义一个蒙特卡洛函数mt_int,通过生成平面区域[x1,x2]*[y1,y2]里的随机点数据,检查其位于被积函数f的值之下的比率,得到函数积分的近似值。
本题目中被积函数为f(x)=(x2+x+ex)/(x3-x+1)
用蒙特卡洛积分求该函数与x轴的面积。
输入
N+1行
第一行输入整数N,表示接下来会有N行输入
接下来每行输入一个浮点数x。( 0 <= x <= 7.0)
输出
被积函数f在区间[0,x]内曲线与x轴的面积,结果保留一位小数。
样例输入
2 1.0 4.7
样例输出
3.5 10.2
提示
使用蒙特卡洛方法随机一百万次即可。
在确定方法正确的情况下,如果Wrong Answer,请再提交一次。
可以通过 x = random.random() * 3.5 得到[0, 3.5]之间的随机数
# endcoding : UTF-8
"""
@author = 寻找任大侠
@email = renjx@stu.pku.edu.cn
@create_time = 2021/11/27 17:11
"""
import random
import math
def f(x):
return (x * x + x + math.e ** x) / (x ** 3 - x + 1)
def mt_int(n, x):
sum = 0
for i in range(n):
sum += f(random.random() * x)
return (sum / n) * x
n = int(input())
for i in range(n):
print("%.1f" % (mt_int(1000000, float(input()))))