xjh2527
2021-11-05 15:25
采纳率: 91.7%
浏览 17

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

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

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • bostonAlen 2021-11-05 16:02
    已采纳

    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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题