poj3737UmBasketella三分法求极值
来源:互联网 发布:西北师大知行学院几本 编辑:程序博客网 时间:2024/05/01 09:02
poj3737UmBasketella三分法求极值
分类: 三分2013-04-07 22:01 55人阅读 评论(0) 收藏 举报
三分
题目地址
题目大意:给定一个圆锥体的表面积s,求这个圆锥体的最大体积以及圆锥体体积最大时的底面半径和高。
题目分析:题意十分简单明了。根据圆锥体表面积公式:π * r * r + π * r * l = s(r是底面半径,l是母线长),l = sqrt(h* h + r * r),带入表面积方程可得圆锥高h = sqrt((s/π/r - r)^2 - r * r),根据此式可得一不等式:s/π/r >2r。由此得出底面半径上界为sqrt(s/2π).继续整理方程可得圆锥体体积v = π*sqrt(s^2*r^2/π/π - 2sr^4/π)/3。可以很清楚的看出,圆锥体的体积v是关于圆锥体底面半径的一个2次方程,开口向下,是个凸形图形求极值的问题,很容易想到三分底面半径r。
详情请见代码:
- #include <iostream>
- #include<cstdio>
- #include<cmath>
- using namespace std;
- #define eps 1e-8
- #define PI acos(-1.0)
- double s,h,r,v;
- double geth(double ra)//求当圆锥底面半径为ra时的高
- {
- double hi;
- hi = (s/PI/ra - ra) * (s/PI/ra - ra);
- hi -= (ra * ra);
- if(hi < 0)
- return -1;
- hi = sqrt(hi);
- return hi;
- }
- int main()
- {
- while(scanf("%lf",&s) != EOF)
- {
- double l,r,midl,midr,v1,v2;
- l = 0;
- r = sqrt(s / PI / 2);
- while(r - l > eps)
- {
- midl = (l + r) / 2;
- midr = (r + midl) / 2;
- v1 = geth(midl);
- v2 = geth(midr);
- v1 = PI * midl * midl * v1 / 3;
- v2 = PI * midr * midr * v2 / 3;
- if(v1 > v2)
- r = midr;
- else
- l = midl;
- }
- printf("%.2lf\n%.2lf\n%.2lf\n",v1,geth(midl),midl);
- }
- return 0;
- }
- poj3737UmBasketella三分法求极值
- poj3737UmBasketella三分法求极值
- 三分法求极值
- 三分法求极值
- 三分法求极值
- 算法-三分法求极值
- 关于三分法求函数极值
- HDU 3756 三分法求极值
- hihocoder 1142 三分法求极值
- 三分法求单峰函数极值
- 三分法求函数最大值(求导求极值)
- 和菜鸟一起学算法之三分法求极值问题
- poj 3301 Texas Trip 三分法求旋转角极值
- POJ 3301 Texas Trip 计算几何 三分法求极值点
- hdu 5105 求函数极值 函数求导/三分法
- 【算法设计与数据结构】三分法:求单峰函数的极值
- 三分法——凸函数求极值问题
- HDU 3714基础的三分法求函数极值
- android整合--添加监听事件
- 缩点
- 4、反应式( reactive )服务器 (reactor模式) 单线程轮询多个客户端
- UNIX网络编程---路由套接字(十八)
- poj2891???
- poj3737UmBasketella三分法求极值
- java之double精度丢失
- 计算机是如何启动的?
- Swing之卡片布局管理器实例
- windows server 2008 无法访问
- 搜索引擎工作原理
- sql大全
- A. Vasily the Bear and Triangle
- 光流Optical Flow介绍与OpenCV实现