二分的前提是单调
#include<stdio.h>
#include<string.h>
#include<math.h>
const double eps=1e-9;
double p,q,r,s,t,u;
double f(double x)
{
return p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u;
}
int main()
{
while(scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&r,&s,&t,&u)!=EOF)
{
if(f(0)<-eps||f(1)>eps) printf("No solution\n");
else
{
double l=0,r=1;
while(l+eps<r)
{
double m=(l+r)/2;
if(f(m)>0) l=m;
else r=m;
}
printf("%.4lf\n",l);
}
}
return 0;
}
本文介绍了一个基于二分搜索法求解非线性方程的算法实现,该算法利用C语言完成,通过调整搜索区间来逼近方程的根。文中详细解释了二分法的应用前提,并给出了具体的实现代码。

3055

被折叠的 条评论
为什么被折叠?



