计算几何——求圆台内切球体积最大值

题目链接:http://codeforces.com/gym/100796/problem/I

思路:利用最大球体和圆台斜边相切,在正视图中 可二分搜索球心到腰的距离,判断是否大于等于球半径。

AC代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const double eps = 1e-8;
 4 bool check(double h,double r, double R,double m)
 5 {
 6     double af = atan(h/(R-r));
 7     double bt = atan(m/R);
 8     double gm = af - bt;
 9     double ans = sqrt(m*m+R*R) * sin(gm);
10     return ans - m >= eps;
11 }
12 int main()
13 {
14     double R,r,h;
15     scanf("%lf %lf %lf",&r,&R,&h);
16     double ll = 0, rr = h / 2.0;
17     while(rr - ll >= eps)
18     {
19         double mid = (ll + rr)/2;
20         if(check(h,r,R,mid)) ll = mid;
21         else rr = mid;
22     }
23     printf("%.12f",ll);
24     return 0;
25 }

 

转载于:https://www.cnblogs.com/Carered/p/11318281.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
设正圆台的上底半径为 $r$,下底半径为 $R$,高为 $h$,则它的表面积为 $S = \pi(r+R)\sqrt{(R-r)^2+h^2}+\pi R^2+\pi r^2$。 根据正圆台的几何性质,可以得到 $h=\frac{H(R-r)}{R-R}$,其中 $H$ 为正圆锥的高,即 $h$ 与 $H$ 成比例。将 $h$ 代入表面积式子,得到: $S = \pi(R+r)\sqrt{\frac{H^2(R-r)^2}{(R-r)^2}+\frac{(R-r)^2}{R-R}}+\pi R^2+\pi r^2$ 化简一下,得到: $S = \pi(R+r)\sqrt{H^2+(R-r)^2}+\pi R^2+\pi r^2$ 现在我们的目标是出在表面积一定的情况下正圆台最大体积 $V$。根据数学知识,可以通过解极值来实现。因此,我们要先出 $V$ 关于 $r$ 和 $R$ 的函数表达式,然后出其一阶偏导数,令其等于零,再解方程出最优解。 正圆台体积公式为 $V = \frac13\pi h(R^2+Rr+r^2)$,代入 $h$ 的表达式,得到: $V = \frac13\pi\frac{H(R-r)}{R-R}(R^2+Rr+r^2)$ 化简一下,得到: $V = \frac13\pi H\frac{(R-r)(R^2+Rr+r^2)}{R-R}$ 将上式代入表面积式子,得到: $S = \pi(R+r)\sqrt{H^2+(R-r)^2}+\pi R^2+\pi r^2$ 化简一下,得到: $S = \pi R^2+\pi r^2+\pi(R+r)\sqrt{H^2+(R-r)^2}$ 现在,我们要出 $S$ 关于 $r$ 的一阶偏导数和 $R$ 的一阶偏导数,分别令其等于零,解方程组得到最优解。 $\frac{\partial S}{\partial r} = 2\pi r+\pi\sqrt{H^2+(R-r)^2}-\pi(R+r)\frac{R-r}{\sqrt{H^2+(R-r)^2}}=0$ $\frac{\partial S}{\partial R} = 2\pi R+\pi\sqrt{H^2+(R-r)^2}-\pi(R+r)\frac{H}{\sqrt{H^2+(R-r)^2}}=0$ 将上面两式整理,得到: $r = \frac{H^2R}{2H^2-R^2}$ $R = \frac{H^2r}{2H^2-r^2}$ 将上面两式代入正圆台体积公式,得到最大体积为: $V_{max} = \frac{1}{27}\pi H^3$ 因此,已知表面积时,正圆台最大体积是 $\frac{1}{27}\pi H^3$。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值