64,678
社区成员
发帖
与我相关
我的任务
分享
#include <cstdio>
#include <cmath>
int calc_iter_num(int level)
{
static int cnt = 1, i = 1;
return (i*=2) < level ? ++cnt, calc_iter_num(level) : ++cnt;
}
double p(double x)
{
return -1*pow(x,4)+5*pow(x,3);
}
double p_d(double x)
{
return -4*pow(x,3)+15*pow(x,2);
}
int main()
{
int level =10, iter_num = 0;
double res = 0.0, x1 = (-1+3)/2, x2 = 0.0;// double最高15位有效数字
iter_num = calc_iter_num(level);
for (int i=0; i<iter_num; ++i)
{
x2 = x1 - p(x1)/p_d(x1);
x1 = x2;
}
res = x2;// 0.11866847588281010
printf("%.10lf\n", p(res));// 0.0081572617
}