1040: 方程求零点

来源:互联网 发布:淘宝宝贝分类视频教程 编辑:程序博客网 时间:2024/04/28 19:40

1040: 方程求零点

时间限制: 1 Sec  内存限制: 128 MB
提交: 219  解决: 88
[提交][状态][讨论版]

题目描述

 

设函数f(x)是在区间[a,b]内的连续函数,且f(a)f(b)<0, 根据Role定理,f(x)在区间内必存在零点。已知f(x)=x3-x-1, 输入区间端点的值,令精确度为eps=10-5, 判断是否存在零点,如果存在,输出该零点的近似值,否则输出No zero point.

输入

输入包括若干行,表示该区间端点

输出

每行对应每个区间的计算结果,如果根存在,保留5位小数。对于有根区间,如果|f(x*)|<=eps,则x*为零点的近似值。

样例输入

-1 00 11 1.5

样例输出

No zero point in area(-1.00000,0.00000)No zero point in area(0.00000,1.00000)The Zero Point is 1.32472 in area(1.00000,1.50000)

#include<iostream>#include<iomanip>       //包含改变数字精确的位数的函数using namespace std;double fx(double a){if((a*a*a-a-1)>0)return 1;return -1;}int main(){double m,n;while(cin>>m>>n){cout<<fixed;   //修改精确位数if(fx(m)*fx(n)>0)cout<<"No zero point in area("<<setprecision(6)<<m<<","<<n<<")"<<endl;else{double m1=m,n1=n;int count(1);double l;while((n1-m1)>0.00001)      //精确度即为区间的差值{l=(m1+n1)/2;if(fx(m1)*fx(l)<0)n1=l;elsem1=l;count++;}cout<<"The Zero Point is "<<setprecision(5)<<(n1+m1)/2;cout<<" in area("<<setprecision(6)<<m<<","<<n<<")"<<endl;}}return 0;}

1 0