本文主要是介绍计算2½(根号2)-----二分法解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解题思路
既然要求2½的值,可以首先确定的是值的范围在1~2之间,所以可以 确定区间为[1,2],如果mid>2½,令right=mid;,如果mid<2½,令left=mid,所以之间可以借助函数f(x)=x*x来实现。
代码 实现
//由于2½是无理数,所以只能获取近似值,这里不妨以精度1e-5为例
const double esp=1e-5;
double f(double x)
{return x*x;
}
double calsqrt()
{double l=1,right=2,mid;while(right-left>esp){mid=(left+right)/2;if(f(mid)>2){right=mid;}else if(f(mid<2){left=mid;}}return mid;
}
此题的解决思路可以用来解决一个特列:给定一个定义的区间[lL,R]上的单调函数,求方程f(x)=0的根
解决这个特列的代码实现
//以精度1e-5为例
const double esp=1e-5;
double f(double x)
{return 。。。;
}
double calsqrt()
{double l=1,right=2,mid;while(right-left>esp){mid=(left+right)/2;if(f(mid)>2){right=mid;}else if(f(mid<2){left=mid;}}return mid;
}
这篇关于计算2½(根号2)-----二分法解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!