用迭代法求立方根的问题

wangyangtao 2008-05-21 10:26:38
问题:已知求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这句话, 这句是什么意思 有什么作用呢?
...全文
1607 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
WingForce 2008-05-21
  • 打赏
  • 举报
回复
公式如此Xn+1=(2Xn+X/Xn*Xn)/3,就是说迭代的每一步都需要用到初始值X
也就是入参x
然后使用x1和x2两个变量进行迭代
x1的初始值为x
所以。。。
wangyangtao 2008-05-21
  • 打赏
  • 举报
回复
但是为什么X1的初始值是X呢? 应该是当n=0的时候,X1=(2X0+X/X0*X0)/3吧?

70,036

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧