c语言二分法怎么用,求例子!!

Python013

c语言二分法怎么用,求例子!!,第1张

二分法查找还是二分法求方程式解

#include<stdio.h>

#include <math.h>

float f( float a )

{

    return a*a*a + a - 1

}

float jie( float a, float b )

{

    /* x*x*x + x -1 = 0 */

    float m = (a+b)/2

    printf( "a=%f,b=%f\n", a, b)

    printf( "fm=%f, fa=%f, fb=%f\n", f(m), f(a), f(b) )

    if ( f(a)*f(b)> 0 )

    {

        printf( "起始区间不正确\n" )

        return m

    }

    if ( fabs(f(m)) < 0.0001 )

        return m

    if ( f(m)*f(a) > 0 )

        return jie( m, b )

    else

        return jie( a, m )

}

int main()

{

    float a, b, x

    printf( "输入起始区间: " )

    scanf( "%f %f", &a, &b )

    x = jie( a, b )

    printf( "x^3+x-1=0 x= %.3f\n", x )

}

二分法所属现代词,指的是数学领域的概念,经常用于计算机中的查找过程中。数学方面牛顿二分法

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

解方程即要求f(x)的所有零点。假定f(x)在区间(x,y)上连续先找到a、b属于区间(x,y),使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f[(a+b)/2],

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

二分法查找有一个前提,数据应该是排好序的,假设从小到大排列,则:

首先用中间那个数(也可以不是正中间,差一两位没有关系,只要保证不忽略数据就行)与查找值比较,大于查找值就跳到左边。

然后重新设定新的数列。新的数列为,从最小的数值到中间那个数。

以这个新的数列为基础,重复以上步骤。