编写C++风格的程序,用二分法求解f(x)=0的根。要求使用内联函数。f(x)=2x3-4x2+3x-6
问题描述:
编写C++风格的程序,用二分法求解f(x)=0的根。要求使用内联函数。f(x)=2x3-4x2+3x-6
答
#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