leetcode 69. Sqrt(x) 牛顿法求平方根
来源:互联网 发布:淘宝买精密管警察找我 编辑:程序博客网 时间:2024/05/21 09:14
Implement int sqrt(int x)
.
Compute and return the square root of x.
class Solution {public: int mySqrt(int x) {for (int i = 0; i <= x; i++){if ((i*i) <= x && (i + 1) * (i + 1) > x)return i;if ((i + 1) * (i + 1) < i*i)return i;}return 0;}};
上面是我自己的解法,非常粗糙,看了discuss后看到大家都在讨论用牛顿法求pingfagen
其实牛顿开方法是牛顿迭代法在开平方上的应用,牛顿迭代法同时也能快速逼近很多方程的解,自然可以用来开任意平方。
求,即求的正根。
更一般地,求,即求的正根。
注意牛顿迭代法只能逼近解,不能计算精确解。不过实际应用中,我们都不要求绝对精确的解,例如计算器得出结果也不需要给出无限位,只需要给出十几位小数就足够了,所以牛顿迭代法被广泛用在各种科学计算中。
【牛顿迭代法】
假设方程 在 附近有一个根,那么用以下迭代式子:
依次计算、、、……,那么序列将无限逼近方程的根。
牛顿迭代法的原理很简单,其实是根据f(x)在x0附近的值和斜率,估计f(x)和x轴的交点,看下面的动态图:
【用牛顿迭代法开平方】
令:
所以f(x)的一次导是:
牛顿迭代式:
随便一个迭代的初始值,例如,代入上面的式子迭代。
例如计算,即a=2。
……
计算器上可给出
【用牛顿迭代法开任意次方】
求的递推式是:
long r = x; while (r*r > x) r = (r + x/r) / 2; return r;
阅读全文
1 0
- leetcode 69. Sqrt(x) 牛顿法求平方根
- Sqrt(x) 求平方根@LeetCode
- Sqrt(x) 求平方根
- Leetcode 69. Sqrt(x) 解题报告【C库函数sqrt(x)模拟-求平方根】
- Leetcode刷题记—— 69. Sqrt(x)(求整数x的平方根)
- LeetCode *** 69. Sqrt(x) 牛顿迭代法
- 牛顿法求平方根
- 牛顿法求平方根
- 牛顿法求平方根
- 牛顿法求平方根
- 牛顿法求平方根
- 牛顿法求平方根
- 牛顿法求平方根
- LeetCode 69: Sqrt(x) 求根号x(牛顿迭代法和二分查找法)
- leetcode:Sqrt(x) 牛顿迭代法求整数开方
- leetcode 69. Sqrt(x)(C语言,牛顿迭代法求开方问题)46
- leetCode 69.Sqrt(x) (平方根) 解题思路和方法
- 牛顿逼近法求平方根
- 接口隔离原则(Interface segregation principle)
- [BZOJ]4237 稻草人 CDQ分治 详细题解
- [LeetCode]112. Path Sum(判断二叉树根到叶路径和是否等于sum)
- java基础之单例设计与继承
- VTK利用BMP图像序列生成表面模型
- leetcode 69. Sqrt(x) 牛顿法求平方根
- shell基础
- GuideView让遇见不一样
- Segmentation fault in Linux
- Unity3D查找丢失材质和脚本工具
- 南阳oj-最少步数
- js实现微信抢红包
- hdu2444—The Accomodation of Students(二分图判定+最大匹配)
- java toString方法