找回密码
 欢迎注册
查看: 4074|回复: 13

[讨论] 一个球被两个垂直的平面切割,分成四份,已知三份体积,求剩下的那份体积?

[复制链接]
发表于 2023-8-18 09:10:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
https://bbs.emath.ac.cn/forum.ph ... 3&fromuid=14149

这个问题的推广提问
QQ截图20230818090728.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-8-18 09:12:37 | 显示全部楼层
先简单一点,只是被两个垂直的面切,然后看情况,是否被三个垂直的面切
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-8-20 09:59:23 | 显示全部楼层
一个圆球,被两个互相垂直的平面切成体积不同的四部分。求最小那一块的体积。有以下公式:

西瓜瓣的体积.png


例题:
  1. Clear["Global`*"];
  2. R = 10; Subscript[h, 1] = 3; Subscript[h, 2] = 5;
  3. V = 2/3 Subscript[h, 1] Subscript[h, 2] Sqrt[R^2 - \!\(\*SubsuperscriptBox[\(h\), \(1\), \(2\)]\) - \!\(\*SubsuperscriptBox[\(h\), \(2\), \(2\)]\)] + 2/3 R^3 ArcTan[(R Sqrt[R^2 - \!\(\*SubsuperscriptBox[\(h\), \(1\), \(2\)]\) -         
  4. \!\(\*SubsuperscriptBox[\(h\), \(2\), \(2\)]\)])/(Subscript[h, 1] Subscript[h, 2])] - 1/3 Subscript[h, 2] (3 R^2 - \!\(\*SubsuperscriptBox[\(h\), \(2\), \(2\)]\)) ArcTan[Sqrt[R^2 - \!\(\*SubsuperscriptBox[\(h\), \(1\), \(2\)]\) -        
  5. \!\(\*SubsuperscriptBox[\(h\), \(2\), \(2\)]\)]/Subscript[h, 1]] - (1/3) Subscript[h, 1] (3 R^2 - \!\(\*SubsuperscriptBox[\(h\), \(1\), \(2\)]\)) ArcTan[Sqrt[R^2 - \!\(\*SubsuperscriptBox[\(h\), \(1\), \(2\)]\) - \!\(\*SubsuperscriptBox[\(h\), \(2\), \(2\)]\)]/Subscript[h, 2]]
  6. N[V]
复制代码


运行结果:

\(10 \sqrt{66}-\frac{1375}{3} \arctan\left(\sqrt{\frac{22}{3}}\right)+\frac{2000}{3} \arctan\left(2\sqrt{\frac{22}{3}}\right)-291 \arctan\left(\frac{\sqrt{66}}{5}\right)\)

152.346

我做这个题,大概是20年前的事情了。记得在本论坛上贴出过,帖子名称记不得了。

点评

nyy
152是球体的体积吗?  发表于 2023-8-20 10:58
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-20 23:07:09 来自手机 | 显示全部楼层
球和圆的差距不大。

球的15.268
圆的15.385

BBC729E2-0894-4895-A241-7F90216B676A.png
20340D54-0C0E-43AB-8010-D577184A512B.png

点评

说我民科不是说你  发表于 2023-9-21 10:30
我没说你民科。其实,我还点进过你的微博,希望有更多的高手参与论坛。只是提醒需要调整参与的方式方法,以提高交流效率。  发表于 2023-9-21 09:35
你看我之前的每次解题都是发了思路和解题过程,有程序解方程代码的还有发代码。 这次是半夜快12点发的一个结果罢了,交流从来都是不存在装逼炫技又故意隐藏技术,说别人不懂是民科什么的。 你看我的微博、知识星球都   发表于 2023-9-21 08:58
代码应直接发code,而不是截图,以方便网友复制粘贴验证。交流应利他而非炫技,讨论才能深入。  发表于 2023-9-21 08:18
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-22 14:29:10 来自手机 | 显示全部楼层
本帖最后由 yuange1975 于 2023-9-22 20:44 编辑

前天爬山手机上写代码调试出来,今天有空整理了一下。

懒得写分析文章了,代码很简单,有兴趣的自己看代码吧。小小的打一个广告,有兴趣的可以加入我的知识星球《袁哥的技术天地》,主要是网络安全、数学、投资等方面的一些经验的随意分享。



两互相垂直平面切一球,切成四部分,依次体积为abcd。已知abc,求d=?

这题情形现实中还是很常见的,切球形西瓜、土豆等。

就是图1的圆的问题推广成球的问题。球半径R,两垂直平面交点P坐标(R*x,R*y)。

n为精度位数,可以设置成需要的求解精度要求。
求得如图1的数据d=15.2684403090431785。


abcd按逆时针顺序排列,就是分别是坐标体系里的第一二三四象限。

有三个方程:
3(a+b)/(pi*R^3)=y^3-3y+2
3(b+c)/(pi*R^3)=-x^3+3x+2

r=sqrt(1-x*x-y*y)
rx=sqrt(1-x*x)
ry=sqrt(1-y*y)

a=f(x,y)=(2*x*y*r+2*acos(x/rx*y/ry)+(x**3-3*x)*acos(y/rx)+(y**3-3*y)*acos(x/ry)/3*R^3

求d的方程
3(a+b+c+d)=4*pi*R^3

P点坐标(x*R,y*R)(x^2+y^2<=1)切的第一块a块的体积公式f(x,y)。b=f(-x,y)和c=f(-x,-y)、d=f(x,-y)都有这样的公式,但是这个公式太复杂。a+b、b+c可以消去一些复杂项,公式变得非常简单。就取一个复杂的a就行,另外两个用简单的方程。

解这3个方程组得到xyR,带入就得到d=4/3*pi*R^3-(a+b+c)。



Python 代码如下:

  1. # 两互相直平面切一球,切成四部分,依次体积为abcd。
  2. # 已知abc,求d=?
  3. # copy by yuange 2023.9.20
  4. # n 精度位数

  5. from  mpmath import *

  6. n=20

  7. mp.prec=128
  8. mp.dps=n+1
  9. rn="\r\n"


  10. '''

  11. 3(a+b)/(piR^3)=Y^3-3Y+2
  12. 3(b+c)/(piR^3)=(-X^3+3X+2)
  13. Y^3-3Y+2=(a+b)/(b+c)*(-X^3+3X+2)
  14. a=R^3*vv(x,y)

  15. '''

  16. stepn=16
  17. num=1000

  18. mpf1=mpf("1")
  19. mpf0=mpf("0")
  20. er=pow(mpf("0.1"),n)
  21.      
  22. def vv(x,y):
  23.     r=sqrt(1-x*x-y*y)
  24.     v0=(2*x*y*r+2*acos(x*y/sqrt(r*r+x*x*y*y))+(x**3-3*x)*acos(y/sqrt(r*r+y*y))+(y**3-3*y)*acos(x/sqrt(r*r+x*x)))/3
  25.     return v0

  26. def qiu(a,b,c):
  27.     step=mpf1/stepn
  28.     y=0-mpf1
  29.     stop=0
  30.     sign=0
  31.     if c>=b :
  32.        y=mpf0
  33.        stop=1
  34.     fx=lambda x :-x**3+3*x+2-mpf1*(b+c)/(a+b)*(y**3-3*y+2)
  35.     for i in range(num):
  36.         fy=(y**3-3*y+2)*(b+c)/(a+b)-2
  37.         if abs(fy)>2 :
  38.            y+=step
  39.            continue
  40.         x=findroot(fx,0)
  41.         #print(rn,"x,y=",x,y)        
  42.         if x*x+y*y > 1+1e-5 :
  43.            y+=step
  44.            if y > 1 :break
  45.            continue
  46.         a1=vv(x,y)
  47.         R1=3*(a+b)/pi/(y**3-3*y+2)
  48.         R2=a/a1      
  49.         #print(rn,"R1,R2=",R1,R2,R1-R2,step,a1)        
  50.         if abs(R1-R2) < er :
  51.            R=cbrt(R1)
  52.            d=4*pi*R1/3-a-b-c
  53.            #print(rn,"ok!X,Y,R,d=",x*R,y*R,R,d)
  54.            return x,y,R,d
  55.            break
  56.         if (R1-R2)>0 :
  57.            y-=step           
  58.            step=step/stepn
  59.            #print(rn,"step=",step)
  60.            continue      
  61.         y+=step         
  62.         if y>stop+0.1 :
  63.            break

  64. x,y,r,d=qiu(12,20,25)
  65. print(rn,"x,y,r,d=",(x,y,r,d))
  66. x,y,r,d=qiu(20,25,d)
  67. print(rn,"x,y,r,d=",(x,y,r,d))
复制代码


D3B8C3E7-4147-4406-871B-F3A461BBD3D2.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-23 10:39:32 来自手机 | 显示全部楼层
最初v(x,y)是使用的数值积分,不能直接解方程,所以等于是自己写了一个自己求解方程的代码。
得到了v(x,y)的解析表达式后就可以直接用find root 解方程组了,代码就非常简单了。

部分方程得不到解析解,可以数值积分等的可以使用那个框架自己解方程。

Python代码和结果如下,代码和结果刚好一屏。

  1. # 两互相垂直平面切一球,切成四部分,依次体积为abcd。
  2. # 已知abc,求d=?
  3. # copy by yuange 2023.9.20
  4. # n 精度位数
  5. from  mpmath import *
  6. n=20
  7. mp.dps=n+1

  8.      
  9. def v(x,y):
  10.     r=sqrt(1-x*x-y*y)
  11.     rx=sqrt(1-x*x)
  12.     ry=sqrt(1-y*y)
  13.     v0=(2*x*y*r+2*acos(x/rx*y/ry)+(x**3-3*x)*acos(y/rx)+(y**3-3*y)*acos(x/ry))/3
  14.     return v0
  15. def qiu(a,b,c):
  16.     f1=lambda x,y:y**3-3*y+2+(x**3-3*x-2)*(a+b)/(b+c)
  17.     f2=lambda x,y:a*pi/v(x,y)-3*(a+b)/(y**3-3*y+2)
  18.     x,y=findroot([f1,f2],[0,0])
  19.     d=4*(a+b)/(y**3-3*y+2)-(a+b+c)
  20.     R=cbrt((a+b+c+d)/pi*3/4)   
  21.     return (x,y,R,d)   
  22. print(qiu(12,20,25))
复制代码

86DA5E33-9B9C-4AED-B414-A558CF04B910.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-24 15:34:10 来自手机 | 显示全部楼层
这个公式非常不错,不过形式还是有点不太好。

球半径R。过球心,做垂直两垂直面的垂面,切出来横截面,取两垂直面分别水平和垂直方向,交点P的坐标(x*R,y*R)。限制P位于圆上或者圆内,有x^2+y^2<=1


切下来第一象限那块体积:

V(x,y)=1/3*(2*x*y*r+2*acos(x/rx*y/ry)+(x**3-3*x)*acos(y/rx)+(y**3-3*y)*acos(x/ry))*R^3

其中
r=sqrt(1-x*x-y*y)
rx=sqrt(1-x*x)
ry=sqrt(1-y*y)

这样的公式形式更好更漂亮,也更适用。

V(x,y)对于x或者y的负值也适用,并且第二三四象限的块体积分别为,V(-x,y)、V(-x,-y)、V(x,-y)。

这样更通用,可以一次直接适应各种大小面积分布。

得到公式很重要,还有公式的形式也很重要。
一个是公式怎么更通用,比如这个里面的xy范围不要局限于都大于0。
一个是公式各自变量怎么更独立,比如这个xy取坐标对于R的比例,而不是直接坐标,可以把R独立出来。
还有怎么写成更简洁的形式,比如这个公式里把r、rx、ry独立表示出来,原公式整体就会显得简洁很多。









毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-12-1 21:56:55 | 显示全部楼层
TSC999 发表于 2023-8-20 09:59
一个圆球,被两个互相垂直的平面切成体积不同的四部分。求最小那一块的体积。有以下公式:

您好,能请教您一下关于这个积分的思路吗?

评分

参与人数 1金币 +20 收起 理由
gxqcn + 20 首帖奖励,欢迎常来。

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-12-4 10:18:33 | 显示全部楼层
TSC999 发表于 2023-8-20 09:59
一个圆球,被两个互相垂直的平面切成体积不同的四部分。求最小那一块的体积。有以下公式:

您好,我想请教一下在计算这个问题的时候,那个包含了(x-sin(x))的那一项积分的思路。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-12-4 01:45 , Processed in 0.030649 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表