二分模板
来源:互联网 发布:java行业 编辑:程序博客网 时间:2024/06/07 07:40
基本思想
把函数f(x)的零点所在的区间[a,b](满足f(a)●f(b)<0)“一分为二”,得到[a,m]和[m,b]。根据“f(a)●f(m)<0”是否成立,取出零点所在的区间[a,m]或[m,b],仍记为[a,b]。所对得的区间[a,b]重复上述步骤,直到包含零点的区间[a,b]“足够小”,则[a,b]内的数可以作为方程的近似解。
证明方法
二分法(dichotomie) 即一分为二的方法. 设[a,b]为R的闭区间. 逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的中点.
求法
给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:
1 确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ.
2 求区间(a,b)的中点c.
3 计算f(c).
(1) 若f(c)=0,则c就是函数的零点;
(2) 若f(a)·f(c)<0,则令b=c;
(3) 若f(c)·f(b)<0,则令a=c.
(4) 判断是否达到精确度ξ:即若|a-b|<ξ,则得到零点近似值a(或b),否则重复2-4.
模板代码:
left = 0, right = n-1;//定义边界时要注意度while(left <= right)//退出循环的条件{mid = (left + right) / 2; //或者(left + right) << 1 if(solve(mid) /*判断方案*/ ){ans = a[mid];//答案存放点left = mid + 1;//满足之后往右走一步,因为左边的都已经满足条件,且已经存入答案,放弃}else{right = mid - 1;//不满足的时候往左走一步,因为右边的都不满足条件,放弃}}
阅读全文
0 0
- 【模板】二分
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 【模板整合】整体二分模板
- 二分图模板
- 二分多重匹配模板
- 二分查找模板 nyoj626
- 二分答案 模板
- Android Error之BufferOverflowException
- Mathf.Rad2Deg
- React-Native--多图选择上传
- slf4j中的MDC
- RN开发实践——仿携程App(一)
- 二分模板
- 服务器安装后的系统优化
- 二十三种设计模式之状态模式
- hive 客户端连接hive server出现Query returned non-zero code: 10001 SemanticException
- windows64上python2.7连接mysql
- 关于对SWS插件的一些扩展
- Springboot 集成阿里短信 ClassNotFound的坑
- Android 获取ROOT权限原理解析
- Accelerate the downloading of docker images through Ali