SciPy 积分的计算

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SciPy 积分的计算相关的知识,希望对你有一定的参考价值。

Scipy中的integrate模块提供了很多数值积分方法,例如,一重积分、二重积分、三重积分、多重积分、高斯积分等等。

一重积分

SciPy积分模块中,quad函数是一个重要函数,用于求一重积分。例如,在给定的a到b范围内,对函数f(x)求一重积分。

\\int_{a}^{b}f(x)dx

 quad的一般形式是scipy.integrate.quad(f, a, b),其中f是求积分的函数名称,ab分别是下限和上限。

 

求0到5范围内的积分,首先需要定义函数→f(x)=e^{-x^{2}}

import scipy.integrate
from numpy import exp
f = lambda x:exp(-x**2)
i = scipy.integrate.quad(f, 0, 5)
print(i)

结果:

(0.8862269254513955, 2.3183115159980698e-14)

注意:quad函数返回两个值,第一个值是积分的值,第二个值是对积分值的绝对误差估计。

积分的函数f带系数参数:

I(a,b)=\\int_{0}^{1}(ax^{2}+b)dx

 

那么a和b可以通过args传入quad函数:

from scipy.integrate import quad

def f(x, a, b):
    return a * (x ** 2) + b

ret = quad(f, 0, 1, args=(3, 1))
print (ret)

结果:

(2.0, 2.220446049250313e-14)

重积分

要计算二重积分、三重积分、多重积分,可使用dblquad、tplquad和nquad函数。

二重积分

dblquad的一般形式是scipy.integrate.dblquad(func, a, b, gfun, hfun),其中,func是待积分函数的名称,ab是x变量的上下限,gfunhfun为定义y变量上下限的函数名称。

求二重积分:

\\int_{0}^{2}dy\\int_{0}^{\\sqrt{1-4y^{2}}}19xydx

使用lambda表达式定义函数fgh。注意,在很多情况下gh可能是常数,但是即使gh是常数,也必须被定义为函数。

import scipy.integrate
from numpy import exp
from math import sqrt
f = lambda x, y : 19*x*y
g = lambda x : 0
h = lambda y : sqrt(1-4*y**2)
i = scipy.integrate.dblquad(f, 0, 0.5, g, h)
print (i)

结果:

(0.59375, 2.029716563995638e-14)

Scipy的integrate模块中还有许多其他积分方法,例如nquad,用于求多重积分。不过,大部分场景quad和dblquad就够用了。

 

以上是关于SciPy 积分的计算的主要内容,如果未能解决你的问题,请参考以下文章

SciPy 积分 | Python技能树征题

SciPy 积分

SciPy 科学计算基础

Scipy---5.数值积分

Python的数学计算库scipy介绍

Python的数学计算库scipy介绍