使用scipy.integrate模块中的quad和dblquad方法分别进行单重积分和多重积分

一、单重积分

    一般而言,使用求解微积分可以分为两大类:符号积分(即求出解析解)和数值积分(即求出数值解)。在计算机的处理当中,数值解往往更有意义。

     q u a d quad quad函数是 s c i p y scipy scipy 积分函数的主力。 数值积分有时称为正交积分,因此称为名称。 它通常是在 a a a b b b 给定的固定范围内执行函数 f ( x ) f(x) f(x) 的单个积分的默认选择,即
∫ a b f ( x )   d x \int_a^b {f(x)} \,{\rm d}x abf(x)dx

举例:

from scipy import integrate
# 基本使用格式:integrate.quad(func,a,b)
# func是一个函数名,a是积分下限,b是积分上限
# 值得注意的是,使用该积分函数,需要将被积表达式封装在函数内,比如被积表达式是2*x
# 则积分上下限分别为1和2,口算可得,积分结果为:3;那么编程实现如下

#先定义函数
print('***********************')
print('方法一:')
def f(x):
    return 2*x
a = integrate.quad(f,1,2)
print(a)
print('***********************')

print('***********************')
print('方法二:')
a = integrate.quad(lambda x : 2*x,1,2) #在quad方法中使用lambda定义函数
print(a)
print('***********************')

输出

方法一:
(3.0, 3.3306690738754696e-14)
***********************
***********************
方法二:
(3.0, 3.3306690738754696e-14)
***********************

进程已结束,退出代码0

二、多重积分

    双重、三重和多重积分的机制已被包含到函数dblquad,tplquad和nquad中。 这些函数分别积分了四个或六个参数。 所有内积分的界限都需要定义为函数。

双重积分

∫ a b ∫ g f u n c h f u n c f ( x )   d x \int_a^{b}\int_{gfunc}^{hfunc}{f(x)} \,{\rm d}x abgfunchfuncf(x)dx

举例

from scipy import integrateg
# 基本使用格式:integrate(func, a, b,gfunc, hfunc)
# func 是要被积分的函数名,a、b 分别是 x 变量的积分上限和下限
# 而 gfunc 和 hfunc 是定义变量 y 的下限和上限的函数名称。

print('***********************')
print('方法一:')
# 被积函数
def f(y, x):
	return 16*x*y
# 虽然下限是常数,但是还是写成函数形式
def g(x):
	return 0
# 上限x
def h(y):
	return 4*y**2
r = integrate.dblquad(f, 1, 2, g, h)
print(r)
print('***********************')

print('***********************')
print('方法二:')
f = lambda x, y : 16*x*y
g = lambda x : 0
h = lambda y : 4*y**2
i = integrate.dblquad(f, 1, 2, g, h)
print(i)
print('***********************')

输出

***********************
方法一:
(1343.9999999999998, 4.52284088458721e-11)
***********************
***********************
方法二:
(1343.9999999999998, 4.52284088458721e-11)
***********************

进程已结束,退出代码0

    除上述例程外,scipy.integrate还有许多其他积分的程序,其中包括执行n次多重积分的nquad以及实现各种集成算法的其他例程。 但是,quad和dblquad将满足对数值积分的大部分需求。

你可能感兴趣的:(Python基础知识,python,lambda,算法)