题目链接:点击打开链接
题意: 给出一个方程式,求出该方程式的解;
题解:
二分法,有题可知该式为递减的,所以分析当 x =0和x = 1时的值,可以得出是否有解,如果有解,就运用二分,注意这里不能用 L<R 进行比较,最好用 循环做;
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iomanip>
using namespace std;
#define e 2.718281828459045
#define eps 1e-10
int p,q,r,s,t,u;
double get(double x)
{
return p*pow(e,-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u;
}
int main()
{
while(cin>>p>>q>>r>>s>>t>>u){
double l=0,r=1;
double mid;
if(abs(get(1.0))<eps) cout<<1.0000<<endl;
else if(abs(get(0.0))<eps) cout<<0.0000<<endl;
else if(get(0.0)*get(1.0)>eps) cout<<"No solution"<<endl;
else{
for(int i=0;i<100;i++){
mid=(l+r)/2.0;
if(get(mid)>0) l=mid;
else r=mid;
}
cout<<fixed<<setprecision(4)<<mid<<endl;
}
}
return 0;
}