scipy求一重积分:点击跳转.
sympy求积分:点击跳转.
问题1:求解如下二重积分
I = ∫ y = 0 1 / 2 ∫ x = 0 1 − 2 y x y d x d y . I = \int_{y=0}^{1/2}\int_{x=0}^{1-2y} xy~dxdy . I=∫y=01/2∫x=01−2yxy dxdy.
程序1,如下:
from scipy.integrate import dblquad
area = dblquad(lambda x, y: x*y, 0, 0.5,
lambda x: 0, lambda x: 1-2*x)
print(area)
结果:(0.010416666666666668, 4.101620128472366e-16)
程序2,如下:
from scipy import integrate
def f(x, y):
return x*y
def bounds_y():
return [0, 0.5]
def bounds_x(y):
return [0, 1-2*y]
print(integrate.nquad(f, [bounds_x, bounds_y]))
结果:0.010416666666666668, 4.101620128472366e-16)
问题2:求解如下三重积分
I = ∫ 1 2 ∫ 2 3 ∫ 0 1 x y z d x d y d z . I = \int_{1}^{2}\int_{2}^{3}\int_{0}^{1} xyz~dxdydz . I=∫12∫23∫01xyz dxdydz.
程序1,如下
from scipy import integrate
f = lambda z, y, x: x*y*z
print(integrate.tplquad(f, 1, 2, lambda x: 2, lambda x: 3,
lambda x, y: 0, lambda x, y: 1))
结果:(1.8750000000000002, 3.324644794257407e-14)
程序2,如下
import scipy.integrate as integrate
def f(x,y,z):
return x*y*z
def bounds_z():
return [1, 2]
def bounds_y(*args):
return [2, 3]
def bounds_x(*args):
return [0, 1]
result = integrate.nquad(f, [bounds_x, bounds_y, bounds_z])
print(result)
结果:(1.8750000000000002, 3.324644794257407e-14)
问题3:求解如下四重积分
I = ∫ 0 1 / 2 ∫ 0 3 ∫ 0 3 ∫ 0 3 x y z t d x d y d z d t . I = \int_{0}^{1/2}\int_{0}^{3}\int_{0}^{3}\int_{0}^{3} xyzt~dxdydzdt . I=∫01/2∫03∫03∫03xyzt dxdydzdt.
程序,如下
import scipy.integrate as integrate
def f(x,y,z,t):
return x*y*z*t
def bounds_z(*args):
return [0, 1/2]
def bounds_y(*args):
return [0, 3]
def bounds_x(*args):
return [0, 3]
def bounds_t(*args):
return [0,3]
result = integrate.nquad(f, [bounds_x, bounds_y, bounds_z, bounds_t])
print(result)
结果:(0.005208333333333334, 4.092713794698356e-16)