Python 实现定积分与二重定积分的操作

木白
木白
发布时间:2026-10-15| 7人浏览过
原创

本文介绍如何利用 Python 的 SciPy 库计算定积分与二重积分,重点解析 dblquad 函数的使用及区间参数传递方式。同时结合蒙特卡洛采样与接受-拒绝法,通过数值模拟求解复杂函数期望与积分值,提供完整代码示例与注意事项。

1.概述

近期项目中涉及数学微积分的程序实现。起初尝试使用 Java,但因相关文档匮乏且实现复杂而放弃,最终选择 Python 方案。Python 实现代码量较少,主要依赖 sympy 与 scipy 两种库。本文重点记录基于 scipy 的实现方法。

2.内容

2.1 所求函数

2.2 python代码


# 引入需要的包
import scipy.integrate
from numpy import exp
from math import sqrt
import math

# 创建表达式
f = lambda x,y : exp(x**2-y**2)

# 计算二重积分:(p:积分值,err:误差)
# 这里注意积分区间的顺序
# 第二重积分的区间参数要以函数的形式传入
p,err= scipy.integrate.dblquad(f, 0, 2, lambda g : 0, lambda h : 1)	
print(p)

2.3 注意问题

1. exp尽量使用numpy的exp

2. 注意积分区间参数的顺序

3. 第二重积分的区间参数要以函数的形式传入

补充:python实现求解积分

例子 1:

假设存在随机变量 x,其定义域为 X,概率密度函数为 p(x)。若 f(x) 是定义在 X 上的函数,目标是计算 f(x) 关于概率密度 p(x) 的数学期望 。

蒙特卡洛方法依据概率分布 p(x) 独立抽取 n 个样本 x1, x2, ..., xn,从而近似得到 f(x) 的期望值:

该过程的核心在于求解具有概率密度的函数期望值。

期望值的计算逻辑为:积分(各点密度函数 × 各点价值函数)。

例子 2:

假设需计算 h(x) 在定义域 X 上的积分:

将 h(x) 分解为函数 f(x) 与概率密度函数 p(x) 的乘积,从而将问题转化为求解 f(x) 关于 p(x) 的数学期望 :

此处 Ep(x) 表示将整体分布视为概率分布,即总发生概率为 1。

若将 f(x) 表示为 ,则有:

更一般地,假设需计算 。熟悉积分的读者已知答案为 ,那么如何通过采样方法获得该值?

令 ,且 0 < x < 10,则 。

以下是相关代码实现:


'''import random
num=1000000
sum=0
for i in range(0,num):
    x=random.uniform(0,10)
    sum+=x*x*10
sum/=1000000
print(sum)'''
import random
numSamples=10000
samples=[random.uniform(0,10)for _ in range(numSamples)]
f_samples=[10*sample**2 for sample in samples]
result=1/10000.0*sum(f_samples)
print(result)

result=333.10527012455066

random.uniform(x,y) 表示在 [x, y) 区间内生成一个实数。

对于复杂的 h(x),此方法计算更为便捷(尤其适用于不熟悉积分计算技巧的场景)。

蒙特卡洛方法本质上是利用大数定律,通过大量统计模拟得出最终数值。

至此,我们简要介绍了蒙特卡洛方法,但尚未涉及如何利用复杂概率密度函数进行采样。

接下来介绍接受-拒绝法(accept-reject sampling method),这是蒙特卡洛方法的一种,适用于无法直接采样的情况。

以上为个人经验总结,希望能提供参考,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。