1.符号积分:#通过integrate()功能(facility),SymPy对基本和特殊函数定与不定积分有卓越的支持。
#该功能使用有力的扩展Risch-Norman算法,启发算法和模式匹配:
from sympy import integrate, exp, sin, log, oo, pi,symbols
x, y = symbols(‘x,y’)#定义符号变量x,y
#求不定积分
integrate(6*x**5, x)
integrate(log(x), x)
#求定积分
integrate(x**3, (x, -1, 1))
#反常积分
integrate(exp(-x), (x, 0, oo))
#运行结果:x**6,x*log(x) – x,0,1
2.数值积分:
#符号积分与数值积分各有优劣,下面介绍数值积分
from scipy import integrate#导入数值积分模块
import numpy as np
#读者可以dir(integrate)来查看里面有哪些数值积分函数并help他们的用法
#quad命令(该命令使用了Fortran library QUADPACK)
f=lambda x:x**3#注意这里匿名函数的用法,不懂请百度
integrate.quad(f,-1,1) #(0.0, 5.551208455924673e-15)后面那个超小的是浮点运算产生的误差
#fixed_quad命令(使用fixed-order Gaussian quadrature)
f=lambda x:np.exp(-x)
integrate.fixed_quad(f,0,1) #(0.63212055882831653, None)
#trapz(复化梯形求积分)
f=lambda x:np.exp(-x)
x=np.linspace(0,1,10)
integrate.trapz(f(x),x) #0.63277075484819789
#simps(抛物线求积公式)
def f(x):
return
np.exp(-x)
x=np.linspace(0,1,10)
integrate.simps(f(x),x) #0.63219734897921753
#romberg(龙贝格求积)
f=lambda x:np.exp(-x)
integrate.romberg(f,0,1) #0.63212055882856977