C++用二分法求根.用二分法设计一个通用函数root(),求方程f(x)=0在[a,b]内的一个实根(设f(a)*f(b)

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/22 02:14:46
C++用二分法求根.用二分法设计一个通用函数root(),求方程f(x)=0在[a,b]内的一个实根(设f(a)*f(b)C++用二分法求根.用二分法设计一个通用函数root(),求方程f(x)=0在

C++用二分法求根.用二分法设计一个通用函数root(),求方程f(x)=0在[a,b]内的一个实根(设f(a)*f(b)
C++用二分法求根.
用二分法设计一个通用函数root(),求方程f(x)=0在[a,b]内的一个实根(设f(a)*f(b)

C++用二分法求根.用二分法设计一个通用函数root(),求方程f(x)=0在[a,b]内的一个实根(设f(a)*f(b)
#include <iostream>
#include <iomanip>

using namespace std;

double func(double x)
{
    return (x*x*x - 6*x -3);
}

void root(double a, double b, double e, double *pResult)
{
    while ( b - a >= e )
    {
        *pResult = (a + b) / 2;
        if ( func(*pResult) * func(a) < 0 )
        {
            b = *pResult;
        }
        else if ( func(*pResult) * func(a) > 0 )
        {
            a = *pResult;
        }
        else
        {
            break;
        }
    }
}

int main()
{
    double e = (double)0.00000001;
    double a = (double)2;
    double b = (double)3;
    double Result;

    root(a, b, e, &Result);

    cout << setiosflags(ios::fixed);
    cout << "所求实根为: " << setprecision(9) << Result << endl;

    return 0;
}