ACM第二次练习—1002
2016-04-08 11:52
465 查看
题意:函数F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x ,输入y的值,输出它在(0,100)内的极小值。
思路:不难发现F'(x)=0在(0,100)内有唯一解X,当x>X时F'(x)>0,当x<X时F'(x)<0。所以编写两个函数计算F(x)和F'(x)然后对F'(x)进行二分搜索,找到X,输出F(X)即可。
感想:一开始以为要用到三分搜索,后来研究了一下给出的函数,发现二分搜索就可以实现,所以有时候编程要联系数学知识。
代码:
#include<cmath>
#include<stdio.h>
using namespace std;
double F(double x,double y)
{
double res=-(y*x),t=x;
t*=x;
res+=5*t;
t*=x;
res+=7*t;
t*=t;
res+=8*t;
t*=x;
res+=6*t;
return res;
}
double f(double x,double y)
{
double res=-y,t=x;
res+=10*t;
t*=x;
res+=21*t;
t*=t*x;
res+=48*t;
t*=x;
res+=42*t;
return res;
}
int main()
{
int T;
double y;
scanf("%d",&T);
while(T--)
{
scanf("%lf",&y);
double l=0.0,r=100.0,mid,res;
while(l<r)
{
mid=(l+r)/2.0;
res=f(mid,y);
if(fabs(res)<1e-10)
break;
if(res>0)
r=mid;
else
l=mid;
}
printf("%.4lf\n",F(mid,y));
}
return 0;
}
思路:不难发现F'(x)=0在(0,100)内有唯一解X,当x>X时F'(x)>0,当x<X时F'(x)<0。所以编写两个函数计算F(x)和F'(x)然后对F'(x)进行二分搜索,找到X,输出F(X)即可。
感想:一开始以为要用到三分搜索,后来研究了一下给出的函数,发现二分搜索就可以实现,所以有时候编程要联系数学知识。
代码:
#include<cmath>
#include<stdio.h>
using namespace std;
double F(double x,double y)
{
double res=-(y*x),t=x;
t*=x;
res+=5*t;
t*=x;
res+=7*t;
t*=t;
res+=8*t;
t*=x;
res+=6*t;
return res;
}
double f(double x,double y)
{
double res=-y,t=x;
res+=10*t;
t*=x;
res+=21*t;
t*=t*x;
res+=48*t;
t*=x;
res+=42*t;
return res;
}
int main()
{
int T;
double y;
scanf("%d",&T);
while(T--)
{
scanf("%lf",&y);
double l=0.0,r=100.0,mid,res;
while(l<r)
{
mid=(l+r)/2.0;
res=f(mid,y);
if(fabs(res)<1e-10)
break;
if(res>0)
r=mid;
else
l=mid;
}
printf("%.4lf\n",F(mid,y));
}
return 0;
}
相关文章推荐
- C++第三次上机实验作业
- dbm的功率计算方法
- tomcat虚拟主机虚拟目录配置
- JavaPersistenceWithHibernate第二版笔记-第六章-Mapping inheritance-006Mixing inheritance strategies(@SecondaryTable、@PrimaryKeyJoinColumn、<join fetch="select">)
- CSS3的Flexbox布局的简明入门指南
- linux lcd设备驱动剖析二
- CGAL VS2010环境变量
- 大数据分析--用户画像
- apk打包后如何查看VersionCode和VersionName等信息
- sqlite学习笔记8:C语言中使用sqlite之创建表
- C++实验3
- C#调用C++ 动态链接库dll
- mybatis 插入数据获取当条数据的id
- C++第三次实验
- 【LeetCode】62. Unique Paths解法及注释
- Linux远程管理器xshell和xftp使用教程
- OpenCV 图像几何变换:旋转,缩放,斜切
- Redis事务和分布式锁
- 利用MiddleGen-hibernate-r5生成hbm文件及POJO文件
- java时间戳与日期字符串相互转换方法