题目链接

\(Description\)

  求函数\(F(x)=6\times x^7+8\times x^6+7\times x^3+5\times x^2-y\times x\)在\(x\in \left[0,100\right]\)时的最小值。

\(Solution\)

  \(x\geq 0\)时\(F(x)\)为单峰凹函数,三分即可。

  而且由此可知\(F(x)\)的导数应是单增的。函数最值可以转化为求导数零点问题,于是也可以二分求\(F'(x)\)的零点,或者用牛顿迭代求。

  峰值函数最值也可以用模拟退火求。

  练习下牛顿迭代。其它代码可以见这

  牛顿迭代:$$x=x_0-\frac{F(x_0)}{F'(x_0)}$$

  对\(F(x)\)泰勒展开,\(F(x)=F(x_0)+F'(x_0)(x-x_0)+\frac{F''(x_0)}{2!}(x-x_0)^2+\ldots+\frac{F^{(n)}(x_0)}{n!}(x-x_0)^n+R_n(x)\)

  为方便计算?只保留线性部分\(F(x)=F(x_0)+F'(x_0)(x-x_0)\),令其等于\(0\)。

  就可以得到\(x=x_0-\frac{F(x_0)}{F'(x_0)}\)

  多次迭代、多次选取\(x_0\)即可。

//0MS	1628K
#include <cmath>
#include <cstdio>
#include <algorithm>
#define eps (1e-7) double y;
inline double f(double x){
return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*x*x-y*x;
}
inline double fd(double x){
return 42*pow(x,6)+48*pow(x,5)+21*x*x+10*x-y;
}
inline double fdd(double x){
return 252*pow(x,5)+240*pow(x,4)+42*x+10;
}
double Get_zero(double x)//求导函数零点
{
double las=x+1;
while(fabs(las-x)>eps) las=x, x=x-fd(x)/fdd(x);
return x;
} int main()
{
int T; scanf("%d",&T);
while(T--)
{
scanf("%lf",&y);
double ans=1e15;
for(int i=0; i<=100; i+=10) ans=std::min(ans,f(Get_zero(i)));
printf("%.4lf\n",ans);
}
return 0;
}

HDU.2899.Strange fuction(牛顿迭代)的更多相关文章

  1. hdu 2899 Strange fuction

    http://acm.hdu.edu.cn/showproblem.php?pid=2899 Strange fuction Time Limit: 2000/1000 MS (Java/Others ...

  2. ACM : HDU 2899 Strange fuction 解题报告 -二分、三分

    Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  3. hdu 2899 Strange fuction (二分法)

    Strange fuction Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  4. hdu 2899 Strange fuction (二分)

    题目链接:http://acm.hdu.edu.cn/showproblem.pihp?pid=2899 题目大意:找出满足F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x ( ...

  5. hdu 2899 Strange fuction——模拟退火

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2899 还可三分.不过只写了模拟退火. #include<iostream> #include& ...

  6. hdu 2899 Strange fuction —— 模拟退火

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2899 模拟退火: 怎么也过不了,竟然是忘了写 lst = tmp ... 还是挺容易A的. 代码如下: # ...

  7. HDU 2899 Strange fuction 【三分】

    三分可以用来求单峰函数的极值. 首先对一个函数要使用三分时,必须确保该函数在范围内是单峰的. 又因为凸函数必定是单峰的. 证明一个函数是凸函数的方法: 所以就变成证明该函数的一阶导数是否单调递增,或者 ...

  8. hdu 2899 Strange fuction 模拟退火

    求  F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)的最小值 模拟退火,每次根据温度随机下个状态,再根据温度转移 #include& ...

  9. HDU 2899 Strange fuction [二分]

    1.题意:给一个函数F(X)的表达式,求其最值,自变量定义域为0到100 2.分析:写出题面函数的导函数的表达式,二分求导函数的零点,对应的就是极值点 3.代码: # include <iost ...

随机推荐

  1. 网站发布IIS后堆栈追踪无法获取出错的行号

    一.问题起因 系统发布上线后,有时会发生错误,那么错误的记录就很重要,它对于错误的排查和问题的发现有着重要的作用,通常我们采取的方式为Log日志文件记录和数据库错误记录.文本不会讨论错误记录的方式以及 ...

  2. 深入理解KS

    一.概述 KS(Kolmogorov-Smirnov)评价指标,通过衡量好坏样本累计分布之间的差值,来评估模型的风险区分能力. KS.AUC.PR曲线对比: 1)ks和AUC一样,都是利用TPR.FP ...

  3. PHP 中 int 和 integer 类型的区别

    半夜整理东西,发现一个以前没留意到的小问题. function show($id) : int { return $id; } function show($id) : integer { retur ...

  4. 【写在NOIP前】

    快NOIP了,感觉自己得总结一下吧. 1.要自信啊,相信自己啊,我明明还是有些实力的是吧. 哪怕之前被教练怎么怼,自己别放弃啊 一定要注意心态吧,考试的时候怎么都不能慌,你不会的题也不会有多少人会做的 ...

  5. 03.JavaScript简单介绍

    一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) N ...

  6. Java内存优化和性能优化的几点建议

    1.没有必要时请不用使用静态变量 使用Java的开发者都知道,当某个对象被定义为stataic变量所引用,这个对象所占有的内存将不会被回收.有时,开发者会将经常调用的对象或者变量定义为static,以 ...

  7. Maven3 生命周期与插件(笔记五)

    第一节:Maven 生命周期 Maven 生命周期简介:Maven 通过插件的方式完成一系列过程来实现功能. Maven 拥有三套独立的生命周期: Clean 清理项目 Default 构建项目 Si ...

  8. 涨姿势系列之——内核环境下花式获得CSRSS进程id

    这个是翻别人的代码时看到的,所以叫涨姿势系列.作者写了一个获取CSRSS进程PID的函数,结果我看了好久才看懂是这么一个作用.先放上代码 HANDLE GetCsrPid() { HANDLE Pro ...

  9. php安装amqp扩展

    1.要安装AMQP PHP扩展,必须先安装librabbitmq库 1.1使用以下步骤下载并安装库: # 下载 git clone git://github.com/alanxz/rabbitmq-c ...

  10. C#基础系列 - 反射基础

    反射用于在程序运行过程中,获取类里面的信息或发现程序集并运行的一个过程.通过反射可以获得.dll和.exe后缀的程序集里面的信息.使用反射可以看到一个程序集内部的类,接口,字段,属性,方法,特性等信息 ...