xjh2527 2021-11-05 15:25 采纳率: 91.7%
浏览 344
已结题

编写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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月13日
  • 已采纳回答 11月5日
  • 创建了问题 11月5日

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办