二分法查找还是二分法求方程式解
#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。