1040: 方程求零点

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;
				else
					m1=l;
				count++;
			}
			cout<<"The Zero Point is "<<setprecision(5)<<(n1+m1)/2;
			cout<<" in area("<<setprecision(6)<<m<<","<<n<<")"<<endl;
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mypollyanna

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值