【scipy】用python的库 scipy 求二重(多重)积分

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/2x=012yxy 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=122301xyz 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/2030303xyzt 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)
  • 8
    点赞
  • 42
    收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 8

打赏作者

kt4ngw

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值