求解立方根

思路:

采用牛顿法(数值分析中提到),采用微分的方式,从初始点开始,每次迭代,微分求解切线,然后求解切线和x轴的交点,再以这个交点作为起点,迭代进行。比如求解24,那么写出函数:

f(x) = x^2 - 24

我们目标就是求解这个函数的根,函数一阶导数是:

f'(x) = 2*x

起始点可以选择x0 = 24,通过求解,可以得到下一个迭代点的公式为:

x1 = -f(x0) / f'(x0) + x0

这样迭代下去,直到最后小于一定的阈值。

#include
#include
using namespace std;
//牛顿迭代法
//不会做
inline double abs(double x) {return x>0? x:-x;}
double cubert(const double y)
    {
    double x;
    //x1=(2x+y/x/x)/3
    //abs(x3-y)
    for(x=1.0;abs(x*x*x -y)>1e-7;x=(2*x+y/x/x)/3);
    return x;
}
int main()
{
    double y;
    
    while(cin>>y)
        {
        cout<     }
    return 0;
    
}

你可能感兴趣的:(华为OJ)