假設√a = x
則平方根迭代公式為:
假設有如上圖的曲線,xn點的直線為曲線的切線,容易得到xn的方程為 f(xn) +f』(xn)(x - xn)
上面的方程是根據泰勒級數展開後,去除高階項後得到。
這樣讓切線方程等於0的點的x設為xn+1,方程變為了f(xn) +f』(xn)(xn+1 - xn)(粗體是導數) = 0
解得xn+1 = xn - f(xn)/f』(xn)(粗體是導數)。
進入今天的主題,已知√a = x,所以x2 - a = 0,曲線如下圖,
我們任意取xn點,假設是上面的兩種情況。
上面的推導公式同樣適用於當前曲線情況。通過上面的迭代公式xn+1 = xn - f(xn)/f』(xn)(粗體是導數)和影象不難看出,xn+1總是向y = 0的x點趨近,這樣只要我們選擇了xn後,不斷地迭代求xn+1,它總是能夠到達y = 0的點,此時的x便是平方根的值。
我們將x2 - a = 0帶入到上面的迭代公式,得到了xn+1 = 1/2 (xn + a/xn)。
需要注意的是我們的根號後得到的x為正值,而二次函式顯然有兩個值,一正一負,這就需要我們選擇的初始xn點應該為正值。
**就是簡單的實現了一下,還有漏洞,希望讀者自己查缺補漏吧。
#include
#include
using
namespace std;
doublef(
double x,
double a)
intmain()
牛頓迭代法求平方根
sqrt 方法 public static double sqrt double c 什麼是牛頓迭代法 多數方程不存在求根公式,牛頓提出了一種用迭代來求方程近似根的方法。思路就是不斷取切線,用線性方程的根逼近非線性方程f x 0的根x 過程簡介 過點 xk,f xk 作函式的切線,切線方程是 切線與...
牛頓迭代法 求平方根
牛頓迭代法 求出根號a的近似值 首先隨便猜乙個近似值x,然後不斷令x等於x和a x的平均數,迭代個六七次後x的值就已經相當精確了。例如,我想求根號2等於多少。假如我猜測的結果為4,雖然錯的離譜,但你可以看到使用牛頓迭代法後這個值很快就趨近於根號2了 這種演算法的原理很簡單,我們僅僅是不斷用 x,f ...
牛頓迭代法求平方根
牛頓迭代法 newton s method 又稱為牛頓 拉夫遜 拉弗森 方法 newton raphson method 它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。方法使用函式f x...