牛顿法求算数平方根

package com.mercurylake.test.stack;


public class Sqrt {
static double sqrt_(double x)         
{
   double g=x;
   while(Math.abs(g*g-x)>0.000001)
   {
       g=(g+x/g)/2;
   }
   return g;
}
public static void main(String[] args) {
double x=sqrt_(4);
System.out.println((int)x);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
利用牛顿迭代法解整数的算术平方根是一个常用数学技巧,它基于牛顿-拉弗森方法,一种用于逼近方程根的迭代算法。对于整数的算术平方根,我们通常需要找到满足 \(x^2 = n\) 的 \(x\)。 牛顿迭代法的基本思想是在已知某一点附近函数近似的情况下,通过不断地更新这个点来逼近函数的实际根。对于平方根,我们的目标函数是 \(f(x) = x^2 - n\),其中 \(n\) 是给定的正整数。我们需要找到使得 \(f(x) = 0\) 的 \(x\) 的值。 ### 步骤描述: 1. **选择初始猜测** (\(x_0\)):可以选择 \(n\) 自身作为初始猜测,因为对于大多数情况而言,这会给出一个比较接近实际平方根的起始点。 2. **迭代公式**:迭代步骤可以通过下面的公式完成: \[ x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)} \] 对于平方根计算,这意味着: \[ x_{k+1} = x_k - \frac{x_k^2 - n}{2x_k} \] 这简化为: \[ x_{k+1} = \frac{x_k + \frac{n}{x_k}}{2} \] 3. **终止条件**:当两次连续的迭代结果之差小于预设的精度阈值时,停止迭代,将最后一次迭代的结果视为最终的平方根估计。 ### Python 实现: ```python def newton_sqrt(n, tolerance=1e-10): if n < 0: raise ValueError("Cannot compute the square root of a negative number.") # 初始猜测可以取 n 或者设置为 1 如果不知道从哪里开始 x_k = n while True: next_x = (x_k + n / x_k) / 2 if abs(next_x - x_k) < tolerance: return next_x x_k = next_x # 示例: 16 的平方根 result = newton_sqrt(16) print(f"Square root of 16 is approximately {result}") ``` 上述代码段实现了牛顿迭代法来计算任意正整数的算术平方根,并提供了一个简单的错误处理机制来防止对负数的处理。您可以调整 `tolerance` 参数以达到所需的精确度级别。此外,这个函数也可以轻松地应用于浮点数的情况,只需稍作修改即可处理非整数值。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值