二分法的知识整理和代码的实现

来源:互联网 发布:怎么找淘宝大v合作 编辑:程序博客网 时间:2024/06/05 16:25

 

数学方面:

  一般地,对于函数f(x),如果存在实数c,当x=c时f(c)=0,那么把x=c叫做函数f(x)的零点。

  解方程即要求f(x)的所有零点。

  先找到a、b,使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f[(a+b)/2],

  现在假设f(a)<0,f(b)>0,a<b

  ①如果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)零点近似值的步骤如下:

  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.

  由于计算过程的具体运算复杂,但每一步的方式相同,所以可通过编写程序来运算。

  例:(C语言)

  方程式为:f(x) = 0,示例中f(x) = 1+x-x^3

  使用示例:

  input a b e: 1 2 1e-5

  solution: 1.32472

  源码如下:

例:C++语言[类C编写].

原创粉丝点击