二分法求根与二分次数
2012-10-11 20:13
176 查看
#include<iostream> #include<cmath> using namespace std; float Formula(float x)//方程表达式 { float y; y=x*x*x-x-1; //范例方程 return y; } float Dimidiate(float x0,float x1)//二分表达式 { float k; k=(x0+x1)/2; return k; } int Binary(float a,float b,float e)//计算二分次数Exact_Binary { int l=2; for(int k=0;k<100;k++) { if(pow(l,k)>=(b-a)/(2*e)) break; //|x-x'|≤(b'-a')/2=(b-a)/pow(2,k+1). } return k; } void main() { float a,b,e; //区间与精度 float x,y,y0,y1; //临时变量 int k,n; cout<<"***方程求根二分法***"<<endl; cout<<"输入区间[a,b]与精度ε(绝对误差限)"<<endl; cin>>a>>b>>e; k=Binary(a,b,e); //确定二分次数 // cout<<"二分次数"<<k<<endl; y0=Formula(a); y1=Formula(b); if(y0*y1<0) { for(n=0;n<=k;n++) { x=Dimidiate(a,b); cout<<"第"<<n+1<<"次二分结果:"<<x<<endl; y=Formula(x); if(y0*y>0)a=x; // 选择领域 else b=x; //确定进行下一步计算的边界 } cout<<"二分次数:"<<k<<endl; cout<<"所求实根:"<<x<<endl; } else cout<<"限定区间内没有实根"<<endl; }
相关文章推荐
- 二分法(并非要排好序才做二分)
- 二分查找--数字在排序数组中出现的次数
- 第六届省赛 E Internal Rate of Return(UVA 11881)二分求根
- python 二分求根
- 二分法 一元非线性方程求根 C语言实现
- 在序列(22,34,55,77,89,93,99,102,120,140)中,采用二分查找,分别查找77,34,99,所需的查找次数分别为()----腾讯2016研发工程师笔试题(一)
- 二分法——【Search Insert Position】【Search for a Range】【数字在排序数组中出现的次数】
- 在154个元素组成有序表进行二分法查找,可能的比较次数为()
- 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
- noiopenjudge02:二分法求函数的零点 二分
- 03-1. 二分法求多项式单根(PAT) - 二分查找问题
- 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
- 二分查找的次数
- [swustoj 1092] 二分查找的最大次数
- 方程求根(二分法和牛顿迭代法)
- 【二分】关于二分法的一些总结
- 剑指Offer--数组在排序数组中出现的次数--二分查找的应用
- 二分法计算有序数组中数字出现的次数
- 二分法实现一个整形有序数组的二分查找
- HihoCoder1084: 扩展KMP(二分+hash,求T串中S串的数量,可以失配一定次数)