描述
格式
样例
题解及注释
是数学的最小二分法
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
double m, n;
double i , j, sum;
double eps = 1e-7;//eps是精度控制,此处为10^-7
double a, b, c, d;
double f1, f2;
int r;
scanf("%lf%lf%lf%lf", &a, &b, &c, &d);//四个常数
scanf("%lf%lf", &m, &n);//注意abcdmn都是%lf而不是%d
f1 = a*pow(m, 3) + b*pow(m, 2) +c*m +d;
f2 = a*pow(n, 3) + b*pow(n, 2) +c*n +d;
if (f1*f2 < 0)//pow(x,y)=x^y,幂函数
{
while (fabs(m - n) > eps)
{
i = (m + n)/2;
sum = a*pow(i, 3) + b*pow(i, 2) +c*i +d;
if (fabs(sum) < eps)
{
printf("%lf\n", i);
return 0;
}
else if (sum*f2 < 0)
{
m = i;
}
else if (f1*sum < 0)
{
n = i;
}
}
}
//如果刚好区间取值为方程解
else if(f1*f2==0)
{
if(f1==0)
{
printf("%lf\n",m);
return 0;
}
if(f2==0)
{
printf("%lf\n",n);
return 0;
}
}
j = (m + n)/2;
printf("%lf\n", j);
}
写于2021年7月22日11:45分。
如果这篇文章对你帮助很大,麻烦帮忙,点下友情链接: 鱼儿项目网(直接点这里),进去之后切换几个页面,停留几十秒。感激不尽。本站采集全网自媒体,网赚类,电商营销课程。里面有一些免费项目大家也可以看看