本文實(shí)例講述了javascript基于牛頓迭代法實(shí)現(xiàn)求浮點(diǎn)數(shù)的平方根。分享給大家供大家參考,具體如下:
今天在網(wǎng)上看到一則利用牛頓迭代法求浮點(diǎn)數(shù)的平方根的方法,發(fā)現(xiàn)很好,比一些語言自帶的sqrt方法運(yùn)行要快,在這里備份一下,以待后用,這里稍微做了些改動(dòng).
首先是牛頓迭代法原理:
比如我們要求a的平方根,首先隨便猜一個(gè)近似值x,然后不斷令x等于x和a/x的平均數(shù),迭代幾次后x的值就已經(jīng)相當(dāng)精確了。
如我們要求的數(shù)學(xué)假設(shè)為 a=7, var x=a;
( 7 + 7/7 ) / 2 = 3.64287514
( 3.64287514 + 7/3.64287514 ) / 2 = ?
..
..
下面是利用JavaScript實(shí)現(xiàn)
var G={ result:0 ,sqrt:function(a){ var x=a; for(var i=0;i<=Math.floor(a);i++) { x=(x+a/x)/2; if(x-this.result===0){ //用來減少循環(huán)次數(shù) break; } this.result=x; document.body.innerHTML+="this.result-->"+this.result+"-->X:"+x+"<br/>"; } }};運(yùn)行
G.sqrt(16) : 結(jié)果為4
G.sqrt(2) : 結(jié)果為1.414
G.sqrt(100.2565)
當(dāng)然,網(wǎng)上對牛頓迭代法的算法好像還有其他實(shí)現(xiàn),讀者可以根據(jù)需要選擇適合自己理解的方法.
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答