用二分法求方程2x3-4x2+3x=0在(-10,10)附近的根(二分法:先找到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)内有零点,按上述方法再求该区间中点的函数值,通过每次把f(x)的零点所有小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,该值即是方程的根)。
#include
"
Stdio.h
"
#include " Conio.h "
#include " math.h "
void main()
{
double x,fx,fa,fb,a =- 10 ,b = 10 ,z = 0.0001 ;
fa = 2 * a * a * a - 4 * a * a + 3 * a;
fb = 2 * b * b * b - 4 * b * b + 3 * b;
if (fa * fb < 0 )
{
do
{
x = (a + b) / 2 ;
fx = 2 * x * x * x - 4 * x * x + 3 * x;
if (fx < 0 )
{
a = x;
fa = 2 * a * a * a - 4 * a * a + 3 * a;
}
else
{
b = x;
fb = 2 * b * b * b - 4 * b * b + 3 * b;
}
} while (fabs(fa - fb) > z);
printf( " The root is:%lf\n " ,x);
}
getch();
}
#include " Conio.h "
#include " math.h "
void main()
{
double x,fx,fa,fb,a =- 10 ,b = 10 ,z = 0.0001 ;
fa = 2 * a * a * a - 4 * a * a + 3 * a;
fb = 2 * b * b * b - 4 * b * b + 3 * b;
if (fa * fb < 0 )
{
do
{
x = (a + b) / 2 ;
fx = 2 * x * x * x - 4 * x * x + 3 * x;
if (fx < 0 )
{
a = x;
fa = 2 * a * a * a - 4 * a * a + 3 * a;
}
else
{
b = x;
fb = 2 * b * b * b - 4 * b * b + 3 * b;
}
} while (fabs(fa - fb) > z);
printf( " The root is:%lf\n " ,x);
}
getch();
}