编写C++风格的程序,用二分法求解f(x)=0的根。要求使用内联函数。f(x)=2x3-4x2+3x-6
1条回答 默认 最新
- bostonAlen 2021-11-05 16:02关注
#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
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报