论坛首页· 友情链接申请·申请版主· 广告投放· 道具中心· 设为首页· 收藏本站
发新话题
打印

常用数值算法--二分法.cpp

本主题由 Webmaster 于 2008-8-30 00:51 移动

常用数值算法--二分法.cpp

#include<iostream.h>
#include<math.h>
#define EPS 5e-6        //根容许的误差
#define DELTA 1e-6  //|f(x)|容许的误差
float Bisection( float a,float b,float (*f)(float) )
{
        float c,fc,fa=f(a),fb=f(b);
        int n=1;
        cout<<"二分次数\tc\tf(c)\n";
        while(1)
        {
                if( fa*fb>0 )
                        return 0;
                c =(a+b)/2,fc =f(c);
                if( fabs(fc) < DELTA )
                        break;
                else if (fa*fc<0)
                {
                        b=c;
                        fb=fc;
                }
                else
                {
                        a=c;
                        fa=fc;
                }
                if( b-a< EPS )
                        break;
                cout<<'\t'<<n++<<'\t'<<c<<'\t'<<fc<<endl;
        }
        return c;
}

float f(float x)
{
        return x*x*x+x*x-3*x-3;                //求解的方程
}

TOP

发新话题