用python蒙特卡洛法计算积分y=sin(x)在区间[0,π]内定积分
时间: 2024-09-23 22:16:31 浏览: 91
python编程通过蒙特卡洛法计算定积分详解
5星 · 资源好评率100%
在Python中,我们可以使用蒙特卡洛方法估计给定函数在一定范围内的积分。这里我们以计算`sin(x)`在区间 `[0, π]` 内的定积分为例:
首先,我们需要明确 `sin(x)` 的区间上正弦曲线包围的面积是有限的,但直接通过公式计算会比较困难。蒙特卡洛方法则是通过大量的随机点落在该区域,并计算落在函数图形下方的点的比例来逼近积分。
以下是简单的Python代码实现:
```python
import numpy as np
import math
def monte_carlo_integral(func, a, b, n_points=1000000):
total_points = n_points
under_curve_points = 0
for _ in range(total_points):
x = np.random.uniform(a, b)
y = np.random.uniform(-1, 1) # 随机生成 [a, b] 区间的y值
if func(x) >= -y: # 检查点是否位于 sin(x) 图形下方
under_curve_points += 1
area_ratio = (under_curve_points / total_points) * (b - a)
integral_estimate = (func(b) - func(a)) / 2 + math.sqrt(area_ratio)
return integral_estimate, area_ratio
# 定义函数 sin(x)
def f(x):
return math.sin(x)
# 计算并打印结果
integral, ratio = monte_carlo_integral(f, 0, math.pi)
print(f"Approximate integral of y = sin(x) from 0 to π using Monte Carlo method: {integral}")
阅读全文