数值计算笔记之非线性方程的求解(一)二分法
二分法
若 在上连续,且,则在上必有解。
二分法的步骤:
第一步:取边界上的中点,求。
如图,是正确解,是第一个中点。考虑存在以下情况:
- ,则即为方程的解。这种情况很极端,极少出现。
- ,那么、同号,则令 ,。(范围缩小一半)
- ,那么、同号,则令 ,。
第二步:用取代,重复步骤一,直到 为止。作为的数值解(是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一致,为
数值计算笔记之非线性方程的求解(一)二分法相关推荐
- 数值计算笔记之非线性方程的求解(二)迭代法
0.基本原理:逐次逼近 给定某初始解,按 若{}收敛于,且 连续,则即为的解 ( ) 迭代法收敛的充分条件 定理:若迭代函数满足 在区间上存在,且存在,使 则(1).任取初值,迭代法都收 ...
- python迭代法求解非线性方程_荐【数学知识】非线性方程求解的二分法以及牛顿迭代法...
[数学知识]非线性方程求解的二分法以及牛顿迭代法 本博客不谈及理论推导,只提供代码实现,关于理论推导,大家可以查看其它博客文章. 导入包 import sys import math import s ...
- 视觉SLAM笔记(39) 求解 ICP
视觉SLAM笔记(39) 求解 ICP 1. SVD 方法 2. 非线性优化方法 1. SVD 方法 使用 SVD 以及非线性优化来求解 ICP 使用两个 RGB-D 图像,通过特征匹配获取两组 3D ...
- 视觉SLAM笔记(37) 求解 PnP
视觉SLAM笔记(37) 求解 PnP 1. 使用 EPnP 求解位姿 2. 使用 BA 优化 2.1 李代数位姿 2.2 空间点位置 2.3 投影方程边 2.4 Bundle Adjustment ...
- 【工具笔记】Microsoft数学求解器Math Solver
[工具笔记]Microsoft数学求解器Math Solver 工具笔记用于记录各种有用的工具,这里记录的是一个由Microsoft提供的数学求解器Math Solver. 可以用于求解代数,三角学, ...
- 数值计算大作业:非线性方程求根(二分法、牛顿法、弦截法在Matlab实现)
作为研究生的入门课,数值计算的大作业算是所有研究生开学的重要编程作业. 我把二分法.牛顿法.弦截法求解非线性方程求根的数值计算作业在MATLAB中编程实现.具体的程序详细标注后放在文章附录了,算法数学 ...
- matlab如何用二分法求非线性方程,Matlab学习手记——非线性方程求解:二分法
功能:二分法求解非线性方程的一个解,采用递归的方式. 源码 function root = HalfInterval_Search(fun, a, b, eps) % 二分法求函数fun在区间[a b ...
- Bailian4140 方程求解【二分法】
4140:方程求解 总时间限制: 1000ms 内存限制: 65536kB 描述 求下面方程的根:f(x) = x3- 5x2+ 10x - 80 = 0. 输入 - 输出 精确到小数点后9位. 样例 ...
- 非线性方程(组):一维非线性方程(一)二分法、不动点迭代、牛顿法 [MATLAB]...
1. 二分法(Bisection) 1) 原理 [介值定理] 对于连续的一元非线性函数,若其在两个点的取值异号,则在两点间必定存在零点. [迭代流程] 若左右两端取值不同,则取其中点,求其函数值,取中 ...
最新文章
- php查看隐藏内容,隐藏index.php
- 遥遥无期还是近在咫尺?长文展望「大模型」商业化前景
- 学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!附下载链接!...
- c++ eos智能合约开发_[EOS智能合约]第二节:用EOS开发一个To-do List小应用
- [Java基础]System类的常用方法
- 数据揭秘:低学历成功逆袭概率有多少?感谢父母送我读书!
- 美团门票公布清明假期数据:单日入园人次超200万
- CStdioFile读写文件的问题
- 在要求或期待别人做到某事的时候,先反思下自己是否值得。就好比我常会期望有很多人会记住我生日是哪天,但......
- Android P2P语音通话实现 【转】http://macleo.iteye.com/blog/1707455
- 钓鱼网站新花招 福彩赌球成噱头
- HTML+CSS+JavaScript仿京东购物商城网站 web前端制作服装购物商城 html电商购物网站...
- 光遇服务器修复暴风眼刷新了吗,光遇暴风眼怎么进 光遇暴风眼刷新时间
- 无限循环小数转化分数
- window.print()实现分页打印
- shen_tian_hao的C++快快编程AC代码库(每周更新)
- 华为和H3C--VRP基础和基本的操作
- 888d标签软件 deli_得力DL-888D条码标签打印机驱动
- The requested contract was not found
- AVProVideo在Android端不显示画面问题
热门文章
- ubuntu kylin mysql_Ubuntu Kylin 安装和配置mysql
- 数据挖掘与数据分析(快速入门)
- 基于python的批量网页爬虫
- 什么是你的核心竞争力之三?
- 【AI理论学习】多模态介绍及当前研究方向
- 色彩大全,色彩配色大全
- 关于Textview maxline=1 ellipsize=end 导致中英文数字混合分割错误的问题
- 景观设计主题命名_景观设计主题
- python中显示第三行数据_在Python中Dataframe通过print输出多行时显示省略号的实例...
- ais解码_解决ais cassandra问题