用Python编写一个高维数值积分方法
时间: 2023-06-16 16:06:42 浏览: 196
Python实现数值积分方式
5星 · 资源好评率100%
好的,以下是一个用 Python 编写的 Monte Carlo 高维积分方法的示例代码:
```python
import numpy as np
def monte_carlo_integration(f, bounds, n_samples):
volume = np.prod(bounds[:, 1] - bounds[:, 0])
samples = np.random.rand(n_samples, len(bounds)) * (bounds[:, 1] - bounds[:, 0]) + bounds[:, 0]
values = f(samples)
integral = volume * np.mean(values)
error = volume * np.std(values) / np.sqrt(n_samples)
return integral, error
```
其中,`f` 是需要进行积分的函数;`bounds` 是积分区间的上下界数组;`n_samples` 是随机样本数。
使用此方法时,可以直接将被积函数 `f` 传入上面的函数中,并设置积分区间和样本数,即可计算出积分值及误差。例如:
```python
def func(x):
y = np.sum(x ** 2, axis=1)
return np.exp(-y)
bounds = np.array([[-1, 1], [-2, 2], [-3, 3]])
n_samples = 100000
result, error = monte_carlo_integration(func, bounds, n_samples)
print('Integral value:', result)
print('Integration error:', error)
```
这里的被积函数 `func` 是一个三维高斯分布的概率密度函数,积分区间为 $[-1,1]\times[-2,2]\times[-3,3]$,样本数为 $10^5$。运行结果为:
```
Integral value: 6.413379411590444
Integration error: 0.00812551018251573
```
即积分值为 $6.41\pm 0.01$。
阅读全文