- 注册时间
- 2016-5-4
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 217
- 在线时间
- 小时
|
楼主 |
发表于 2023-9-23 14:46:03
来自手机
|
显示全部楼层
圆和球的问题,因为方程是带反三角函数,不能得到显式解。可以代码得到高精度的数值解。
前面正n边形问题有漂亮的显式解。
圆和球问题的Python代码:
- # 两互相垂直平面切一圆或者球,切成四部分,依次面积或者体积为abcd。已知abc,求d=?
- # copy by yuange 2023.9.20 n 精度位数
- from mpmath import *
- n=10
- mp.dps=n+1
- rn='\r\n'
- def yuan(a,b,c):
- s=lambda x:pi+2*(x*sqrt(1-x*x)+asin(x))
- f1=lambda x,y:s(x)*(a+c)-(pi+4*x*y)*(b+c)
- f2=lambda x,y:s(-y)*(a+c)-(pi+4*x*y)*(a+b)
- x,y=findroot([f1,f2],[0,0])
- return (x,y,sqrt(2*(b+c)/s(x)),2*pi*(b+c)/s(x)-(a+b+c))
-
- def qiu(a,b,c):
- xy=lambda x,y:sqrt(1-x*x-y*y)
- r=lambda x:sqrt(1-x*x)
- v=lambda x,y: 2*x*y*xy(x,y)+2*acos(x/r(x)*y/r(y))+(x**3-3*x)*acos(y/r(x))+(y**3-3*y)*acos(x/r(y))
-
- f1=lambda x,y:(y**3-3*y+2)*(b+c)+(x**3-3*x-2)*(a+b)
- f2=lambda x,y:v(x,y)*(a+b)-pi*(y**3-3*y+2)*a
- x,y=findroot([f1,f2],[0,0])
- return (x,y,cbrt(3*(a+b)/pi/(y**3-3*y+2)),4*(a+b)/(y**3-3*y+2)-(a+b+c))
-
- print(yuan(12,20,25),rn)
- print(qiu(12,20,25),rn)
复制代码
运行结果:
- Python3IDE(Python 3.7) running!
- (mpf('0.19231802719341'), mpf('0.091107290257496'), mpf('4.8000946072789'), mpf('15.385148055037'))
- (mpf('0.16507055607961'), mpf('0.076424040881472'), mpf('2.5839653811418'), mpf('15.268440309097'))
- Pytho3IDE run end!
复制代码 |
|