本文實(shí)例講述了javascript基于牛頓迭代法實(shí)現(xiàn)求浮點(diǎn)數(shù)的平方根。分享給大家供大家參考,具體如下:
今天在網(wǎng)上看到一則利用牛頓迭代法求浮點(diǎn)數(shù)的平方根的方法,發(fā)現(xiàn)很好,比一些語(yǔ)言自帶的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){ //用來(lái)減少循環(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)上對(duì)牛頓迭代法的算法好像還有其他實(shí)現(xiàn),讀者可以根據(jù)需要選擇適合自己理解的方法.
PS:這里再為大家推薦幾款計(jì)算工具供大家進(jìn)一步參考借鑒:
在線(xiàn)一元函數(shù)(方程)求解計(jì)算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi
科學(xué)計(jì)算器在線(xiàn)使用_高級(jí)計(jì)算器在線(xiàn)計(jì)算:
http://tools.jb51.net/jisuanqi/jsqkexue
在線(xiàn)計(jì)算器_標(biāo)準(zhǔn)計(jì)算器:
http://tools.jb51.net/jisuanqi/jsq
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript操作DOM技巧總結(jié)》及《JavaScript字符與字符串操作技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com