-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
编程与数学(3): Newton‘s Method #13
Labels
Comments
昨天写的时候太迟了,有时间加下开 K 次方的推导 |
在推导 K 次方的时候发现一个 bug,Newton's Method 本身只是逼近零点,并没有保证是从左边还是右边逼近。
看了下其他人的写法终止条件是 while abs(x_n_plus_1 - x_n) > 0.01 而不是 while int(x_n_plus_1) != int(x_n): 此时的逼近过程:
经过测试,我原本的写法开 2 次方的时候,在 1 到 1e9 上都正常,但是 3 次方很快就出现了错误。 while abs(x_n_plus_1 - x_n) > 0.01 测试是对的,但是对应的作者都没有给出严格的证明,这估计需要等我后面学到 Newton's Method 的收敛性质的时候才能判断,到时候再来补完。 |
完结,已补充求 k 次方的推导。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
编程与数学(3): Newton‘s Method
缘起
前几天看到一道题目,是关于“对整数 n 开平方,求其整数部分”,解法用到了 Newton's Method,因为之前刚刚学过,就顺便复习下什么是 Newton's Method,为什么可以用于求解这道题?
Newton's Method
本身是用于逼近函数零点的一种技巧。因为对没有求根公式的函数,求解它的零点是非常困难的,因此就发明了 Newton‘s Method 来逼近该函数的零点。具体方法如下图所示:
应用
至于为什么用于逼近函数零点的 Newton's Method 会跟 “对整数 n 开平方” 有关
代码实现如下:
如果是开 k 次方呢?
代码实现如下:
The text was updated successfully, but these errors were encountered: