Ⅰ 平方根的手工計算方法
演算法1: 假設被開放數為a,如果用sqrt(a)表示根號a 那麼((sqrt(x)-sqrt(a/x))^2=0的根就是sqrt(a) 變形得 sqrt(a)=(x+a/x)/2 所以你只需設置一個約等於(x+a/x)/2的初始值,代入上面公式,可以得到一個更加近似的值,再將它代入,就得到一個更加精確的值……依此方法,最後得到一個足夠精度的(x+a/x)/2的值。 如:計算sqrt(5) 設初值為2 1)sqrt(5)=(2+5/2)/2=2.25 2)sqrt(5)=(2.25+5/2.25)/2=2.236111 3)sqrt(5)=(2.236111+5/2.236111)/2=2.236068 這三步所得的結果和sqrt(5)相差已經小於0.001 或者可以用二分法: 設f(x)=x^2-a 那麼sqrt(a)就是f(x)=0的根。 你可以先找兩個正值m,n使f(m)<0,f(n)>0 根據函數的單調性,sqrt(a)就在區間(m,n)間。 然後計算(m+n)/2,計算f((m+n)/2),如果它大於零,那麼sqrt(a)就在區間(m,(m+n)/2)之間。 小於零,就在((m+n)/2,n)之間,如果等於零,那麼(m+n)/2當然就是sqrt(a)。這樣重復幾次,你可以把sqrt(a)存在的范圍一步步縮小,在最後足夠精確的區間內隨便取一個值,它就約等於sqrt(a)。
親,我在盡力幫助你,當然了,錯誤還是可能出現的,如果你還有其他問題或者關於本題的問題可以繼續與我討論哦,給好評哦,謝謝
Ⅱ 平方根倒數速演算法的介紹
平方根倒數速演算法是適用於快速計算(積的平方根的倒數,在此需取符合IEEE 754標准格式的32位浮點數)的一種演算法。平方根倒數速演算法(英語:Fast Inverse Square Root,亦常以「Fast InvSqrt()」或其使用的十六進制常數0x5f3759df代稱)是用於快速計算(積的平方根的倒數,在此需取符合IEEE 754標准格式的32位浮點數)的一種演算法。此演算法最早可能是於90年代前期由SGI所發明,後來則於1999年在《雷神之錘III競技場》的源代碼中應用,但直到2002-2003年間才在Usenet一類的公共論壇上出現。這一演算法的優勢在於減少了求平方根倒數時浮點運算操作帶來的巨大的運算耗費,而在計算機圖形學領域,若要求取照明和投影的波動角度與反射效果,就常需計算平方根倒數。此演算法首先接收一個32位帶符浮點數,然後將之作為一個32位整數看待,以將其向右進行一次邏輯移位的方式將之取半,並用十六進制「魔術數字」0x5f3759df減之,如此即可得對輸入的浮點數的平方根倒數的首次近似值;而後重新將其作為浮點數,以牛頓法反復迭代,以求出更精確的近似值,直至求出符合精確度要求的近似值。在計算浮點數的平方根倒數的同一精度的近似值時,此演算法比直接使用浮點數除法要快四倍。
Ⅲ 平方根的計算方法
67081的平方根=259
演算法1:
假設被開放數為a,如果用sqrt(a)表示根號a 那麼((sqrt(x)-sqrt(a/x))^2=0的根就是sqrt(a)
變形得
sqrt(a)=(x+a/x)/2
所以你只需設置一個約等於(x+a/x)/2的初始值,代入上面公式,可以得到一個更加近似的值,再將它代入,就得到一個更加精確的值……依此方法,最後得到一個足夠精度的(x+a/x)/2的值。
如:計算sqrt(5)
設初值為2
1)sqrt(5)=(2+5/2)/2=2.25
2)sqrt(5)=(2.25+5/2.25)/2=2.236111
3)sqrt(5)=(2.236111+5/2.236111)/2=2.236068
這三步所得的結果和sqrt(5)相差已經小於0.001
或者可以用二分法:
設f(x)=x^2-a
那麼sqrt(a)就是f(x)=0的根。
你可以先找兩個正值m,n使f(m)<0,f(n)>0
根據函數的單調性,sqrt(a)就在區間(m,n)間。
然後計算(m+n)/2,計算f((m+n)/2),如果它大於零,那麼sqrt(a)就在區間(m,(m+n)/2)之間。
小於零,就在((m+n)/2,n)之間,如果等於零,那麼(m+n)/2當然就是sqrt(a)。這樣重復幾次,你可以把sqrt(a)存在的范圍一步步縮小,在最後足夠精確的區間內隨便取一個值,它就約等於sqrt(a)。
Ⅳ 如何快速計算平方根
比如136161這個數字,首先找到一個和136161的平方根比較接近的數,任選一個,比方說300到400間的任何一個數,這里選350,作為代表。
先計算0.5(350+136161/350),結果為369.5。然後再計算0.5(369.5+136161/369.5)得到369.0003,可以發現369.5和369.0003相差無幾,並且369²末尾數字為1。斷定369²=136161。
一般來說,能夠開方開的盡的,用上述方法算一兩次基本結果就出來了。再舉個例子:計算
(4)平方根速演算法擴展閱讀
1、因為每次補數需要補兩位,所以被開方數不只一個數位時,要保證補數不能夾著小數點。例如三位數,必須單獨用百位進行運算,補數時補上十位和個位的數。
2、每一個過渡數都是由上一個過渡數變化而後,上一個過渡數的個位數乘以2,如果需要進位,則往前面進1,然後個位升十位。以此類推,而個位上補上新的運算數字。
簡單地講,過渡數27,是第一次商的1乘以20,把個位上的0用第二次商的7來換,過渡數343是前兩次商的17乘以20=340。
其中個位0用第三次商的3來換,第三個過渡數3462是前三次商173乘以20=3460,把個位0用第四次的商2來換,依次類推。
3、誤差值的作用。如果要求精確到更高的小數數位,可以按規則,對誤差值繼續進行運算。
Ⅳ 平方根倒數速演算法的演算法的切入點
浮點數的平方根倒數常用於計算正規化矢量。 3D圖形程序需要使用正規化矢量來實現光照和投影效果,因此每秒都需做上百萬次平方根倒數運算,而在處理坐標轉換與光源的專用硬體設備出現前,這些計算都由軟體完成,計算速度亦相當之慢;在1990年代這段代碼開發出來之時,多數浮點數操作的速度更是遠遠滯後於整數操作,因而針對正規化矢量演算法的優化就顯得尤為重要。下面陳述計算正規化矢量的原理:
要將一個矢量標准化,就必須計算其歐幾里得范數以求得矢量長度,而這時就需對矢量的各分量的平方和求平方根;而當求取到其長度並以之除該矢量的每個分量後,所得的新矢量就是與原矢量同向的單位矢量,若以公式表示: 可求得矢量v的歐幾里得范數,此演算法正類如對歐幾里得空間的兩點求取其歐幾里得距離, 而求得的就是標准化的矢量,若以代表,則有, 可見標准化矢量時需要用到對矢量分量的平方根倒數計算,所以對平方根倒數計算演算法的優化對計算正規化矢量也大有裨益。
為了加速圖像處理單元計算,《雷神之錘III競技場》使用了平方根倒數速演算法,而後來採用現場可編程邏輯門陣列的頂點著色器也應用了此演算法。
Ⅵ 平方根怎麼算
步驟:
1、將被開方數的整數部分從個位起向左每隔兩位劃為一段,用撇號分開,分成幾段,表示所求平方根是幾位數;
2、根據左邊第一段里的數,求得平方根的最高位上的數;
3、從第一段的數減去最高位上數的平方,在它們的差的右邊寫上第二段數組成第一個余數;
4、把求得的最高位數乘以2去試除第一個余數,所得的最大整數作為試商;
5、用商的最高位數的2倍加上這個試商再乘以試商.如果所得的積小於或等於余數,試商就是平方根的第二位數;如果所得的積大於余數,就把試商減小再試。
註:一個正數如果有平方根,那麼必定有兩個,它們互為相反數。顯然,如果知道了這兩個平方根的一個,那麼就可以及時的根據相反數的概念得到它的另一個平方根。
負數在實數系內不能開平方。只有在復數系內,負數才可以開平方。負數的平方根為一對共軛純虛數。
例如:-1的平方根為±i,-9的平方根為±3i,其中i為虛數單位。
例如,A=5,,即求
5介於1的3次方;至2的3次方;之間(1的3次方=1,2的3次方=8)
初始值X0可以取1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,都可以。例如我們取X0 = 1.9按照公式:
第一步:X1=1.9+(5/1.9^2;-1.9)1/3=1.7。
即5/1.9×1.9=1.3850416,1.3850416-1.9=-0.5149584,-0.5149584×1/3=-0.1716528,1.9+(-0.1716528)=1.7。即取2位數值,,即1.7。
第二步:X2=1.7+(5/1.7^2;-1.7)1/3=1.71。
即5/1.7×1.7=1.73010,1.73-1.7=0.03,0.03×1/3=0.01,1.7+0.01=1.71。取3位數,比前面多取一位數。
第三步:X3=1.71+(5/1.71^2;-1.71)1/3=1.709.
第四步:X4=1.709+(5/1.709^2;-1.709)1/3=1.7099
這種方法可以自動調節,第一步與第三步取值偏大,但是計算出來以後輸出值會自動轉小;第二步,第四步輸入值
偏小,輸出值自動轉大。即5=1.7099^3;
當然初始值X0也可以取1.1,1.2,1.3,。。。1.8,1.9中的任何一個,都是X1 = 1.7 > 。當然,我們在實際中初始值最好採用中間值,即1.5。 1.5+(5/1.5²-1.5)1/3=1.7。
Ⅶ 平方根怎麼計算
一般學習中數學考試的開方數一般都是整數的平法...非整數根的開方數不會出現在高考以及高考之前的考試中,
整數根的開方數就不說了
計算非整數根的開方數也有很多種類方法...建議直接看第二種,第一種就是爆破...(暴力破解)我更傾向於爆破...因為不用記那麼多內容,而且我也不經常去計算這些數
一:
最簡單的就是式商,,也就是說大概估算一下這個數的結果,需要非常了解100以內的數的平法值(可以很快計算10000以內的數的開方)比如開方40,根據平時的經驗平方數是在6~7之間(6*6=36
7*7=49)並且更接近於6,那麼就設定值為6.5
,6.5*6.5
=
42.25大於40---則設定為6.3
,6.3*6.3
=
39.69
---則設定6.35,6.35*6.35
=
40.3225
---則設定6.32
,6.32*6.32
=
39.9424這個數已經很接近40了,可以使用.....
二:
述求平方根的方法,稱為筆算開平方法,用這個方法可以求出任何正數的算術平方根,它的計算步驟如下:
1.將被開方數的整數部分從個位起向左每隔兩位劃為一段,用撇號分開(豎式中的11'56),分成幾段,表示所求平方根是幾位數;
2.根據左邊第一段里的數,求得平方根的最高位上的數(豎式中的3);
3.從第一段的數減去最高位上數的平方,在它們的差的右邊寫上第二段數組成第一個余數(豎式中的256);
4.把求得的最高位數乘以20去試除第一個余數,所得的最大整數作為試商(3×20除
256,所得的最大整數是
4,即試商是4);
5.用商的最高位數的20倍加上這個試商再乘以試商.如果所得的積小於或等於余數,試商就是平方根的第二位數;如果所得的積大於余數,就把試商減小再試(豎式中(20×3+4)×4=256,說明試商4就是平方根的第二位數);
6.用同樣的方法,繼續求平方根的其他各位上的數.
Ⅷ 平方根倒數速演算法的注釋
由於現代計算機系統對長整型的定義有所差異,使用長整型會降低此段代碼的可移植性。具體來說,由此段浮點轉換為長整型的定義可知,如若這段代碼正常運行,所在系統的長整型長度應為4位元組(32位),否則重新轉為浮點數時可能會變成負數;而由於C99標準的廣泛應用,在現今多數64位計算機系統(除使用LLP64數據模型的Windows外)中,長整型的長度都是8位元組。 此處「浮點數」所指為標准化浮點數,也即有效數字部分必須滿足,可參見David Goldberg. What Every Computer Scientist Should Know About Floating-Point Arithmetic. ACM Computing Surveys. 1991.March, 23 (1): 5–48. doi:10.1145/103162.103163. Lomont 2003確定R的方式則有所不同,他先將R分解為與,其中與分別代表R的有效數字域和指數域。
Ⅸ 快速算平方根的技巧
比較小的數用二分法,大數用以下方法:
述求平方根的方法,稱為筆算開平方法,用這個方法可以求出任何正數的算術平方根,它的計算步驟如下:
1.將被開方數的整數部分從個位起向左每隔兩位劃為一段,用撇號分開(豎式中的11'56),分成幾段,表示所求平方根是幾位數;
2.根據左邊第一段里的數,求得平方根的最高位上的數(豎式中的3);
3.從第一段的數減去最高位上數的平方,在它們的差的右邊寫上第二段數組成第一個余數(豎式中的256);
4.把求得的最高位數乘以20去試除第一個余數,所得的最大整數作為試商(3×20除 256,所得的最大整數是 4,即試商是4);
5.用商的最高位數的20倍加上這個試商再乘以試商.如果所得的積小於或等於余數,試商就是平方根的第二位數;如果所得的積大於余數,就把試商減小再試(豎式中(20×3+4)×4=256,說明試商4就是平方根的第二位數);
6.用同樣的方法,繼續求平方根的其他各位上的數.
一般學生用不著學這個,大部分習題求的平方根都是整數,常用數,需要識記的,學生應當可以適當識記一些常用數的平方根
Ⅹ 怎樣速算平方根
假設被開放數為a,如果用sqrt(a)表示根號a 那麼((sqrt(x)-sqrt(a/x))^2=0的根就是sqrt(a)
變形得
sqrt(a)=(x+a/x)/2
所以你只需設置一個約等於(x+a/x)/2的初始值,代入上面公式,可以得到一個更加近似的值,再將它代入,就得到一個更加精確的值……依此方法,最後得到一個足夠精度的(x+a/x)/2的值。
如:計算sqrt(5)
設初值為2
1)sqrt(5)=(2+5/2)/2=2.25
2)sqrt(5)=(2.25+5/2.25)/2=2.236111
3)sqrt(5)=(2.236111+5/2.236111)/2=2.236068
這三步所得的結果和sqrt(5)相差已經小於0.001
或者可以用二分法:
設f(x)=x^2-a
那麼sqrt(a)就是f(x)=0的根。
你可以先找兩個正值m,n使f(m)<0,f(n)>0
根據函數的單調性,sqrt(a)就在區間(m,n)間。
然後計算(m+n)/2,計算f((m+n)/2),如果它大於零,那麼sqrt(a)就在區間(m,(m+n)/2)之間。
小於零,就在((m+n)/2,n)之間,如果等於零,那麼(m+n)/2當然就是sqrt(a)。這樣重復幾次,你可以把sqrt(a)存在的范圍一步步縮小,在最後足夠精確的區間內隨便取一個值,它就約等於sqrt(a)。