编写C++风格的程序,用二分法求解f(x)=0的根。要求使用内联函数。f(x)=2x3-4x2+3x-6

编写C++风格的程序,用二分法求解f(x)=0的根。要求使用内联函数。f(x)=2x3-4x2+3x-6

问题描述:

编写C++风格的程序,用二分法求解f(x)=0的根。要求使用内联函数。f(x)=2x3-4x2+3x-6

img

#include <iostream>
using namespace std;

inline double fx(double x)//函数式只需要对返回值进行修改即可
{
    return 2.0 * x * x * x - 4.0 * x * x + 3.0 * x - 6.0;
}
inline void printResult(double ax, double bx,int k)
{
    cout<<k<<"\t" << ax << "\t" << bx << "\t" << (ax+bx)*0.5 << "\t";
    if (fx((ax + bx) * 0.5) > 0)
    {
        cout << "+" << endl;
    }
    else
    {
        cout << "-" << endl;
    }
}

double fun(double a, double b,double ep)//二分法,[a,b]区间进行迭代递归,ep是精度
{
    int k = 0;
    while (abs(a - b) > 2 * ep)
    {
        double x0 = (a + b) * 0.5;
        double fx0 = fx(x0);
        double fa = fx(a);
        double fb = fx(b);
        if (fa * fx0 < 0)
        {
            b = x0;
        }
        else if (fa * x0 == 0)
        {
            break;
        }
        else
        {
            a = x0;
        }
        k++;
        //printResult(a, b, k);
    }
    return (a + b )*0.5;
}

int main()
{
   //cout<<fx(0.0)<<fx(5.0);  //fx(0)*fx(5)<0
   cout << "方程的根是:";
   cout<<fun(0,5,0.00000001)<<endl;
   return 0;
}

输出:方程的根是:2