二分法求方程2x3-4x2+3x=0在(-10,10)附近的根

用二分法求方程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();
}
posted @ 2007-07-02 16:47  齐心  Views(1742)  Comments(0Edit  收藏  举报