牛頓迭代法求開方值

        牛頓迭代法Newton's method)又稱爲牛頓-拉夫遜(拉弗森)方法(Newton-Raphson method),它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。方法使用函數f(x)的泰勒級數的前面幾項來尋找方程f(x) = 0的根。牛頓迭代法是求方程根的重要方法之一,其最大優點是在方程f(x) = 0的單根附近具有平方收斂,而且該法還可以用來求方程的重根、復根,此時線性收斂,但是可通過一些方法變成超線性收斂。另外該方法廣泛用於計算機編程中。牛頓迭代公式爲:x[n+1] = x[n] - f(x[n])/f'(x[n]) 。那麼求K的平方根的迭代公式爲x[n+1] = 1/2*(x[n]+K/x[n])。

代碼1:

double getroot(double y)
{
	/**/
	assert(y > 0);
	double u,v;
	u = y;
	int i = 0;
	while(i++ < 1000){
		v = 0.5*(u + y/u);
		if (fabs(u - v) < 0.1e-6)
			break;
		u = v;
	}
	return v;
}

代碼2:

double getroot(double y,int N)
{
	/**/
	double u,v;
	u = y;
	int i = 0;
	while(i++ < 1000){
		v = double(N-1)/(N)*u + double(y)/(N*pow(u,N-1));
		if (fabs(u - v) < 0.1e-6)
			break;
		u = v;
	}
	return v;
} 



REF:

1,百度百科-牛頓迭代法


發佈了121 篇原創文章 · 獲贊 19 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章