scipy计算三重积分

圆柱体直径4cm,长20cm,两端各有一个球,每个球直径20cm,密度为5600kg/m3计算rotational inertia matrix .坐标原点为圆柱的中心,沿长度的方向为z轴。

先在草稿纸上写出直角坐标的积分公式,将其写入程序即可。计算三重积分用到的函数是tplquad,此外还有二重积分,定积分,n重积分。f为被积函数,cyl为求圆柱的积分,sphereup求上球的积分,spheredown求下球的积分,返回一个元组,第一个元素是积分值,第二个元素是精度。

from scipy import integrate
f = lambda x, y, z: x**2+y**2

cyl=integrate.tplquad(f, -0.1, 0.1, 
             lambda y: -0.02, lambda y: 0.02,
     lambda x, y: -np.sqrt(0.0004-y**2), lambda x, y: np.sqrt(0.0004-y**2))
sphereup=integrate.tplquad(f, 0.1, 0.3, 
         lambda z: -np.sqrt(0.40*z - z**2 - 0.03), 
         lambda z: np.sqrt(0.40*z - z**2 - 0.03),
     lambda z,y: -np.sqrt(0.40*z - z**2 - 0.03 - y**2), 
     lambda z,y: np.sqrt(0.40*z - z**2 - 0.03 - y**2))
spheredown=integrate.tplquad(f, -0.3, -0.1, 
         lambda z: -np.sqrt(-0.40*z - z**2 - 0.03), 
         lambda z: np.sqrt(-0.40*z - z**2 - 0.03),
     lambda z,y: -np.sqrt(-0.40*z - z**2 -0.03 - y**2), 
     lambda z,y: np.sqrt(-0.40*z - z**2 - 0.03 - y**2))

print((cyl[0]+sphereup[0]+spheredown[0])*5600)

 

当把被积函数改为1时,即为求圆柱体和球体的体积:

f=lambda x,y,z:1

 此时计算的结果为

print(cyl[0],sphereup[0],spheredown[0])

0.0002513274461536556

0.004188790206670827

0.004188790206670827

用球体、圆柱体体积公式计算结果为:

In[5]:4/3*np.pi*0.001
Out[5]: 0.0041887902047863905
In[6]: np.pi*0.02**2*0.2
Out[6]: 0.0002513274122871835

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独孤尚亮dugushangliang

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值