//計算乙個數字的立方根,不使用庫函式
//詳細描述:
//介面說明
//原型:
//public static double getcuberoot(double input)
//輸入:double 待求解引數
//返回值:double 輸入引數的立方根
牛頓迭代法原理:
對於求a的立方根,可以設f(x)=x^3-a,從而轉換成求解f(x)=0,即求方程的根。
f(x)展開泰勒公式:f(x)=f(x0)+(x-x0)*f'(x0)=0,得出的x=x0-f(x0)/f'(x0)=g(x0),此時遞迴呼叫該式子可以逐步接近於最終結果。
為什麼會接近於最終結果?當然,牛頓迭代並不是無條件收斂的。
首先,要保證f'(x0)!=0,這樣f(x)=0將等價於x=x-f(x)/f'(x)。而x_k+1=xk-f(xk)/f'(xk)=g(xk),由迭代過程收斂性定理可得abs(g'(xk))<=l<1(具體證明請讀者自行查詢)。
g'(x*)=f(x*)*f''(x*)/[f'(x)]^2,x*為f(x)的乙個根,所以g『(x*)=0,g''(x*)=f''(x*)/f'(x*)!=0,只要f』『(x*)!=0,則牛頓迭代法收斂。
#include #include #define jingdu 0.0001
double newton_diedai(double a)
return xn_1;
}int main(void)
求解立方根
計算乙個數字的立方根,不使用庫函式 詳細描述 介面說明 原型 public static double getcuberoot double input 輸入 double 待求解引數 返回值 double 輸入引數的立方根 輸入描述 待求解引數 double型別 輸出描述 輸入引數的立方根 也是d...
牛頓迭代法求解
牛頓迭代法又稱為牛頓 拉弗森方法,是牛頓在17世紀提出的一種在實數和複數域上近似求解方程的方法。牛頓迭代法的操作簡單來說就是通過不斷取切線,然後通過切線再不斷逼近相應的解,廢話不多說,我們來看例子。例如如下曲線 y x 2 1 我們在其上面任取一點,不妨取點 a 2,3 以該點做切線,切線方程為 y...
牛頓迭代法求n方根
借助上述公式,理論上可以求任意次方根,假設要求a 假設非負 的n次方根,則有xn a,令f x xn a,則只需求f x 0時x的值即可。由上述簡單推導知,當f x 0時,xn 1 xn,因此把f x xn a 代入上述迭代式進行迭代直至xn 1 xn即可。實際中xn 1 xn可能永遠達不到,可以根...