二分法

上连续,且,则上必有解。

二分法的步骤:

第一步:取边界上的中点,求

如图,是正确解,是第一个中点。考虑存在以下情况:

  1. ,则即为方程的解。这种情况很极端,极少出现。
  2. ,那么同号,则令 。(范围缩小一半)
  3. ,那么同号,则令 

第二步:用取代,重复步骤一,直到 为止。作为的数值解(是n次迭代后的近似解,是准确解,是误差限)。

这时我们发现 中的我们还是不怎么了解,仅仅知道它是个误差。而实际上是可以对它有一个预估的。

误差的预估

从图中我们可以得到:

那么就可以得到

自然的,就很清楚二分法的优点:给定误差限,可估计迭代次数。

代码实现

1、matlab代码

%二分法
function root = dichotomyRoot()
clear;
clc;
f=@(x) sin(x)+x+1;        %求给定的函数,可修改,也可以将其单独作为一个调用函数
U=input('输入求根区域上限upper,U=');
L=input('输入求根区域下限lower,L=');
e=input('输入误差限,e=');
while U-L > e             %设定一个求根区域精度,然后进行判断root = (U+L)/2;       %当根的区间大于所给精度时,利用二分法重新规划求根区间if f(root)==0    break;            %r恰好为所求根,直接跳出循环endif f(root)*f(U)> 0    %用零点存在定理判断根所在的区域U = root;elseL = root;end
end
root    %直接输出所求根的值end

在matlab的命令行窗口输入 dichotomyRoot()  ,其结果为:

2、C++实现

#include <iostream>
using namespace std;double fun(double x);int main()
{double L, U, e, result;cout << "请输入求根区域下限lower,L=";cin >> L;cout << "请输入求根区域上限upper,U=";cin >> U;cout << "请输入误差限error,e=";cin >> e;while (abs(U - L) > e) {double root = (U + L) / 2.0;//double y = fun(root);if (fun(root) == 0)break;if (fun(root) * fun(U) > 0)U = root;elseL = root;result = root;}cout << "方程的根为" << result << endl;
}double fun(double x) {double y = sin(x) + x + 1;return y;
}

其结果与matlab一致,为

数值计算笔记之非线性方程的求解(一)二分法相关推荐

  1. 数值计算笔记之非线性方程的求解(二)迭代法

    0.基本原理:逐次逼近 给定某初始解,按      若{}收敛于,且 连续,则即为的解 (   ) 迭代法收敛的充分条件 定理:若迭代函数满足 在区间上存在,且存在,使 则(1).任取初值,迭代法都收 ...

  2. python迭代法求解非线性方程_荐【数学知识】非线性方程求解的二分法以及牛顿迭代法...

    [数学知识]非线性方程求解的二分法以及牛顿迭代法 本博客不谈及理论推导,只提供代码实现,关于理论推导,大家可以查看其它博客文章. 导入包 import sys import math import s ...

  3. 视觉SLAM笔记(39) 求解 ICP

    视觉SLAM笔记(39) 求解 ICP 1. SVD 方法 2. 非线性优化方法 1. SVD 方法 使用 SVD 以及非线性优化来求解 ICP 使用两个 RGB-D 图像,通过特征匹配获取两组 3D ...

  4. 视觉SLAM笔记(37) 求解 PnP

    视觉SLAM笔记(37) 求解 PnP 1. 使用 EPnP 求解位姿 2. 使用 BA 优化 2.1 李代数位姿 2.2 空间点位置 2.3 投影方程边 2.4 Bundle Adjustment ...

  5. 【工具笔记】Microsoft数学求解器Math Solver

    [工具笔记]Microsoft数学求解器Math Solver 工具笔记用于记录各种有用的工具,这里记录的是一个由Microsoft提供的数学求解器Math Solver. 可以用于求解代数,三角学, ...

  6. 数值计算大作业:非线性方程求根(二分法、牛顿法、弦截法在Matlab实现)

    作为研究生的入门课,数值计算的大作业算是所有研究生开学的重要编程作业. 我把二分法.牛顿法.弦截法求解非线性方程求根的数值计算作业在MATLAB中编程实现.具体的程序详细标注后放在文章附录了,算法数学 ...

  7. matlab如何用二分法求非线性方程,Matlab学习手记——非线性方程求解:二分法

    功能:二分法求解非线性方程的一个解,采用递归的方式. 源码 function root = HalfInterval_Search(fun, a, b, eps) % 二分法求函数fun在区间[a b ...

  8. Bailian4140 方程求解【二分法】

    4140:方程求解 总时间限制: 1000ms 内存限制: 65536kB 描述 求下面方程的根:f(x) = x3- 5x2+ 10x - 80 = 0. 输入 - 输出 精确到小数点后9位. 样例 ...

  9. 非线性方程(组):一维非线性方程(一)二分法、不动点迭代、牛顿法 [MATLAB]...

    1. 二分法(Bisection) 1) 原理 [介值定理] 对于连续的一元非线性函数,若其在两个点的取值异号,则在两点间必定存在零点. [迭代流程] 若左右两端取值不同,则取其中点,求其函数值,取中 ...

最新文章

  1. php查看隐藏内容,隐藏index.php
  2. 遥遥无期还是近在咫尺?长文展望「大模型」商业化前景
  3. 学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!附下载链接!...
  4. c++ eos智能合约开发_[EOS智能合约]第二节:用EOS开发一个To-do List小应用
  5. [Java基础]System类的常用方法
  6. 数据揭秘:低学历成功逆袭概率有多少?感谢父母送我读书!
  7. 美团门票公布清明假期数据:单日入园人次超200万
  8. CStdioFile读写文件的问题
  9. 在要求或期待别人做到某事的时候,先反思下自己是否值得。就好比我常会期望有很多人会记住我生日是哪天,但......
  10. Android P2P语音通话实现 【转】http://macleo.iteye.com/blog/1707455
  11. 钓鱼网站新花招 福彩赌球成噱头
  12. HTML+CSS+JavaScript仿京东购物商城网站 web前端制作服装购物商城 html电商购物网站...
  13. 光遇服务器修复暴风眼刷新了吗,光遇暴风眼怎么进 光遇暴风眼刷新时间
  14. 无限循环小数转化分数
  15. window.print()实现分页打印
  16. shen_tian_hao的C++快快编程AC代码库(每周更新)
  17. 华为和H3C--VRP基础和基本的操作
  18. 888d标签软件 deli_得力DL-888D条码标签打印机驱动
  19. The requested contract was not found
  20. AVProVideo在Android端不显示画面问题

热门文章

  1. ubuntu kylin mysql_Ubuntu Kylin 安装和配置mysql
  2. 数据挖掘与数据分析(快速入门)
  3. 基于python的批量网页爬虫
  4. 什么是你的核心竞争力之三?
  5. 【AI理论学习】多模态介绍及当前研究方向
  6. 色彩大全,色彩配色大全
  7. 关于Textview maxline=1 ellipsize=end 导致中英文数字混合分割错误的问题
  8. 景观设计主题命名_景观设计主题
  9. python中显示第三行数据_在Python中Dataframe通过print输出多行时显示省略号的实例...
  10. ais解码_解决ais cassandra问题