平方根,又叫二次方根,表示為〔±√ ̄〕,其中屬於非負數的平方根稱之為算術平方根(arithmetic square root)。一個正數有兩個實平方根,它們互為相反數,負數沒有平方根
基本介紹
- 中文名:平方根
- 外文名:Square root
- 所屬學科:數學
- 別名:二次方根
- 分類:數學代數類
- :
公式
運算
描述
過程1
過程2
過程3
例子
3. 1 6 2 2 7--------
-----------------------------
√10’00’00’00’00’--------
3| 9 3 第1位3
-------
6 1|100 2*3*10+1 =61 第2位1
| 61
-------
626 | 3900 2*31*10+6 =626 第3位6
| 3756
--------
6322|14400 2*316*10+2 =6322 第4位2
|12644
---------
63242|175600
|126484
-----------
632447|4911600
|4427129
---------
××××××00(如此循環下去)
所以,√10=3.16227…
---------------------
2 | 7
4
--------------
4 6 |300
276
--------------------
52 4 | 2400
2096
-----------------------------
528 5 | 30400
26425
-------------------------------
5290?| 3 9 75 00
牛頓疊代法
我們先計算0.5(350+136161/350),結果為369.5。
然後我們再計算0.5(369.5+136161/369.5)得到369.0003,我們發現369.5和369.0003相差無幾,並且3692末尾數字為1。我們有理由斷定3692=136161。
一般來說,能夠開方開的盡的,用上述方法算一兩次基本結果就出來了。再舉個例子:計算 。首先我們發現6002<469225<7002,我們可以挑選650作為第一次計算的數。即算0.5(650+469225/650)得到685.9。而685附近只有6852末尾數字是5,因此6852=469225。從而 。
對於那些開方開不盡的數,用這種方法算兩三次精度就很可觀了,一般達到小數點後好幾位。
實際中這種算法也是計算機用於開方的算法。
module MyMath def sqrt(num,rx=1,e=1e-10) #參數1,需要求平方根的目標;參數2,疊代區間;參數3,精度 num*=1.0 #目標初始化 (num-rx*rx).abs < e ? rx : sqrt(num,(num/rx+rx)/2,e) #計算平方根 endendinclude MyMathputs sqrt(2) #求2的平方根puts sqrt(2,5,0.01) #求2的平方根+疊代區間與精度。
double Sqrt(double a,double p)//a是被開平方根數,p是所求精度{ double x=1.0;double cheak; do { x = (a / x + x) / 2.0; cheak = x * x - a; } while((cheak >= 0 ? cheak : -cheak) > p); return x;}int main(){ printf("%.4f\n",Sqrt(2.0,0.0001)); printf("%.4f\n",Sqrt(0.09,0.0001)); return 0;}