c++实现二分法求解函数根

转载 2018年04月17日 18:55:09

非线性方程求解(二分法)

1.问题描述

非线性方程的求解除了牛顿迭代法之外,二分法也是一种简单高效的求解方法。在有的地方,二分法也称之为对分法。二分法是逐次把有根区间分半,直到找到根或有根区间的长度小于给定精度为止。

2.问题分析

对于函数f(x),如果x=c时,f(c)=0,那么把x=c称之为函数f(x)的零点。求解方程就是计算该方程所有的零点。对于二分法,假定非线性方程f(x)在区间(x,y)上连续。如果存在两个实数a和b属于区间(x,y),使得满足如下式子:

f(a)*f(b)<0

也就是说f(a)和f(b)异号,这就说明在区间(a,b)内一定有零点,也就是至少包含该方程的一个解。然后,我们计算f[(a+b)/2]。此时,假设如下的条件:

f(a)<0,f(b)>0,a<b

我们可以根据f[(a+b)/2]的值来判断方程解的位置:

如果f[(a+b)/2]=0,该点就是零点。

如果f[(a+b)/2]<0,则表示在区间((a+b)/2, b)内有零点,(a+b)/2=>a,重复前面的步骤来进行判断。

如果f[(a+b)/2]>0,则表示在区间(a,(a+b)/2)内有零点,(a+b)/2<=b,重复前面的步骤来进行判断。

这样,通过上述步骤就可以不断接近零点。由于非线性方程在很多时候都没有精确解,因此我们可以设置一个精度,当f(x)小于该精度时就认为找到了零点,也就是找到了方程的解。

这种通过每次把f(x)的零点所在区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值的方法,也就是二分法

 *输入参数a和b分别为待求解的区间  
*输入参数err为误差精度  
*返回值便是通过二分法求得的解  


计算方法-C/C++二分法求根

问题: 给出方程f(x) = x^3+10x-20,求该方程在(1,2)上的根,其精度不小于10^-4 看似很简单的一个小问题,其实有很有细节值得注意,先给出代码 方法一: #includ...
  • qq_23908539
  • qq_23908539
  • 2016-04-29 16:00:52
  • 1503

二分法解非线性方程C++代码

  • 2011年12月15日 21:20
  • 304B
  • 下载

利用matlab编写二分法求根函数

最近在学习MATLAB,它的功能真是强大无比,可以做太多的东西。刚好接触到了matlab的编程方面的内容,就想着自己编制一个简单的二分法求根的程序。 我的思路是:用户任意输入求根区间和求根精度,函数自...
  • shuoyueqishilove
  • shuoyueqishilove
  • 2016-10-13 09:21:01
  • 15757

c语言二分法递归求解函数根

  • 2010年09月08日 12:29
  • 6KB
  • 下载

求数根的简单算法

#include  using namespace std; int n; int main() { cin>>n; cout }
  • scanferror
  • scanferror
  • 2017-11-28 10:41:26
  • 154

C++:函数求数根(总算写出来了。。。。)

【问题描述】 数根问题递归求解:输入n个正整数(输入格式中第一行为整数个数n,后续行为n个整数),输出各个数的数根。数根的定义:对于一个正整数n,我们将它的各个位相加得到一个新的数字,如果这个数字是...
  • Comet_sgf
  • Comet_sgf
  • 2017-10-25 21:18:24
  • 793

编写求解一元二次方程的程序C++

  • 2011年11月14日 09:31
  • 883KB
  • 下载

【c++程序】求解一元二次方程

#include #include using namespace std; int main() { double a,b,c,d,x,y; cout
  • u012503639
  • u012503639
  • 2014-11-19 20:44:49
  • 629

二分法查找的C++实现

二分法查找,简单来说就是每次去一个有序数列的中间数,然后和目标值比对,如果不是的话,大的就在中间值的右边查找,小的话就在中间值的左边查找。是最初级的算法,用C++实现。 #include us...
  • u011707827
  • u011707827
  • 2016-03-10 15:45:35
  • 6283

计算方法 方程求根 二分法、牛顿法、弦截法

  • 2009年09月01日 19:06
  • 226KB
  • 下载
收藏助手
不良信息举报
您举报文章:c++实现二分法求解函数根
举报原因:
原因补充:

(最多只允许输入30个字)