杰瑞科技汇

integrate函数python

在Python中,integrate 函数通常来自科学计算库 SciPyscipy.integrate 模块,该模块提供了多种数值积分方法,包括定积分、不定积分、常微分方程(ODE)求解等,以下是常见用法和示例:


定积分计算(quad

quad 是最常用的数值积分函数,用于计算一维定积分。

语法

from scipy.integrate import quad
result, error = quad(func, a, b, args=(), **kwargs)
  • func: 被积函数(需接受一个参数,返回标量)。
  • a, b: 积分下限和上限。
  • args: 传递给 func 的额外参数(可选)。
  • 返回值:(积分结果, 误差估计)

示例

from scipy.integrate import quad
import numpy as np
# 定义被积函数
def f(x):
    return x**2
# 计算 ∫(0 到 1) x² dx 的积分
result, error = quad(f, 0, 1)
print(f"积分结果: {result}, 误差估计: {error}")
# 输出: 积分结果: 0.33333333333333337, 误差估计: 3.700743415417188e-15

带参数的函数

def f(x, a, b):
    return a * x + b
# 计算 ∫(0 到 1) (2x + 3) dx
result, error = quad(f, 0, 1, args=(2, 3))
print(result)  # 输出: 4.0

多重积分(dblquad, tplquad

二重积分(dblquad

from scipy.integrate import dblquad
# 定义被积函数
def f(x, y):
    return x * y
# 计算 ∫(0 到 1) ∫(0 到 1) x*y dx dy
result, error = dblquad(f, 0, 1, lambda x: 0, lambda x: 1)
print(result)  # 输出: 0.25

三重积分(tplquad

from scipy.integrate import tplquad
def f(x, y, z):
    return x + y + z
# 计算 ∫(0 到 1) ∫(0 到 1) ∫(0 到 1) (x+y+z) dx dy dz
result, error = tplquad(f, 0, 1, lambda x: 0, lambda x: 1, lambda x, y: 0, lambda x, y: 1)
print(result)  # 输出: 1.5

不定积分(quad 的替代方案)

SciPy 没有直接的不定积分函数,但可以通过 quad 计算定积分来近似不定积分(例如从固定点到变量上限的积分)。

示例

def f(x):
    return np.exp(-x**2)
# 计算 ∫(0 到 t) e^(-x²) dx 的近似值
t = 1.0
result, _ = quad(f, 0, t)
print(result)  # 输出: 0.7468241328124271

常微分方程(ODE)求解

solve_ivp

用于求解一阶常微分方程组 dy/dt = f(t, y)

语法

from scipy.integrate import solve_ivp
sol = solve_ivp(fun, t_span, y0, method='RK45', t_eval=None)
  • fun: 定义 ODE 的函数 f(t, y)
  • t_span: 时间区间 (t_start, t_end)
  • y0: 初始条件。
  • method: 积分方法(如 'RK45', 'BDF')。
  • t_eval: 指定输出的时间点(可选)。

示例

import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# 定义 dy/dt = -y
def f(t, y):
    return -y
# 初始条件 y(0) = 1
sol = solve_ivp(f, [0, 5], [1], t_eval=np.linspace(0, 5, 100))
# 绘制结果
plt.plot(sol.t, sol.y[0])
plt.xlabel('t')
plt.ylabel('y(t)')
plt.show()

其他积分方法

  • fixed_quad: 高斯积分(固定节点数)。
  • romberg: Romberg 积分(自适应方法)。
  • simps: 辛普森积分(需配合 numpy)。

示例:辛普森积分

from scipy.integrate import simps
import numpy as np
x = np.linspace(0, 1, 100)
y = x**2
result = simps(y, x)
print(result)  # 输出: 0.3333333333333333

需求 函数 模块
一维定积分 quad scipy.integrate
二重积分 dblquad scipy.integrate
三重积分 tplquad scipy.integrate
ODE 求解 solve_ivp scipy.integrate
高斯积分 fixed_quad scipy.integrate
辛普森积分 simps scipy.integrate

根据具体需求选择合适的积分方法,并注意处理函数参数和积分限。

分享:
扫描分享到社交APP
上一篇
下一篇