题目链接

\(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. linux下定时器介绍2--timer_create等函数集的使用示例

    程序1:采用新线程派驻的通知方式 程序2:通知方式为信号的处理方式 #include <stdio.h>#include <time.h>#include <stdlib ...

  2. linq和ef关于group by取最大值的两种写法

    LINQ: var temp = from p in db.jj_Credentials group p by p.ProfessionID into g select new { g.Key, Ma ...

  3. C# 所生成项目的处理器架构“MSIL”与引用“Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86”的处理器架构“x86”不匹配。这种不匹配可能会导致运行时失败。

    这个问题一般都是Oracle.DataAccess的版本不兼容问题造成的. 解决办法: 1.把Oracle.DataAccess.dll文件拿到C盘或D盘的安装文件的地方进行搜索. 2.会出现在pro ...

  4. React-Native 之 FlexBox介绍和使用

    # 前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会 ...

  5. acm专题---KMP模板

    KMP的子串长n,模式串长m,复杂度o(m+n),朴素做法的复杂度o((n-m+1)*m) 觉得大话数据结果上面这个讲得特别好 改进版本的KMP leetcode 28. Implement strS ...

  6. Java基础83 JSP标签及jsp自定义标签(网页知识)

    1.JSP标签 替代jsp脚本,用于jsp中执行java代码1.1.内置标签:  <jsp:forward></jsp:forward>  相当于:request.getReu ...

  7. HTML小工具

    一般可能用的到的符号代码: 符号 HTML 符号 HTML     & & < < > > ⁄ ⁄ " " ¸ ¸ ° ° ½ ½ ¼ ¼ ...

  8. linux 101 hacks 4stat diff ac

    stat 命令 stat 命令那个可以用来查看文件或者文件系统的状态和属性.显示一个文件或目录的属性 $ stat /etc/my.cnf File: `/etc/my.cnf' Size: Bloc ...

  9. Web前端开发最佳实践系列文章汇总

    Web前端开发最佳实践(1):前端开发概述 Web前端开发最佳实践(2):前端代码重构 Web前端开发最佳实践(3):前端代码和资源的压缩与合并 Web前端开发最佳实践(4):在页面中添加必要的met ...

  10. c++模板与泛型编程基础

    (1)定义函数模板(function template) 函数模板是一个独立于类型的函数,可以产生函数的特定类型版本. // implement strcmp-like generic compare ...