用迭代法求立方根的问题
问题:已知求X立方根的迭代公式(递推公式)是:Xn+1=(2Xn+X/Xn*Xn)/3,写一个函数,利用这个公式求X的立方根的近似值,要求达到精度
|(Xn+1-Xn)/Xn|<1E-6。
程序例子:
double cbrt (double x) {
double x1, x2;
if (x == 0.0) return 0.0;
x1 = x;
x2 = (2.0 * x1 + x / (x1 * x1)) / 3.0;
while (fabs((x2 - x1) / x1) >= 1E-6) {
x1 = x2;
x2 = (2.0 * x1 + x / (x1 * x1)) / 3.0;
}
return x2;
}
我不明白的是为什么刚开始要 用x1 = x这句话, 这句是什么意思 有什么作用呢?