首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python math.sqrt() 平方根函數完整教學:語法、定義域、精度與實務應用

     編輯:更多程式設計知識

math.sqrt(x) 回傳 x 的算術平方根(主平方根),定義域為 x >= 0。本文涵蓋語法、參數、回傳值、錯誤處理、精度考量、複數支援替代方案與常見應用場景。

函數簽名


import math
math.sqrt(x)  # x 為非負數值

基本範例


import math

print(math.sqrt(100))      # 10.0
print(math.sqrt(2))        # 1.4142135623730951
print(math.sqrt(0))        # 0.0
print(math.sqrt(0.25))     # 0.5
print(math.sqrt(math.pi))  # 1.7724538509055159

定義域錯誤


try:
    math.sqrt(-1)
except ValueError as e:
    print(e)  # math domain error

複數平方根:用 cmath


import cmath
print(cmath.sqrt(-1))      # 1j
print(cmath.sqrt(4))       # (2+0j)
print(cmath.sqrt(2+3j))    # (1.6741492280355401+0.8959774761298381j)

精度與效能

  • math.sqrt 採用硬體指令(通常為 IEEE 754 sqrt),單精度約 1 ULP 誤差,極快。
  • 大量陣列運算請用 numpy.sqrt 或 np.ndarray ** 0.5,向量化並支援廣播。
  • 整數完全平方數判斷:int(math.sqrt(n)) ** 2 == n(注意大數精度)。

實務應用場景

  1. 幾何距離:歐氏距離 math.hypot(dx, dy)(內部用 sqrt,更穩定)。
  2. 標準差/變異數:math.sqrt(variance)。
  3. 物理公式:振動週期 T = 2*math.pi*math.sqrt(m/k)、逃逸速度 v = math.sqrt(2*G*M/r)。
  4. 機率統計:常態分佈標準化 z = (x - mu) / sigma、信賴區間邊界。
  5. 圖形學:向量正規化 v / math.sqrt(v.x**2 + v.y**2 + v.z**2)。

替代寫法比較

寫法優點缺點
math.sqrt(x)語意清晰、速度最快、錯誤訊息明確不支援負數
x ** 0.5支援複數(回傳 complex)、可用於任意冪次負數回傳複數可能非預期、略慢
pow(x, 0.5)同 **,支援三引數模冪同上
cmath.sqrt(x)完整支援複數、分支切割標準回傳 complex、較慢

常見誤區

  • 以為 math.sqrt(4) 回傳 2 (int) → 實為 2.0 (float)。
  • 傳入負整數未捕獲 ValueError 導致程式中斷。
  • 大整數 math.sqrt(10**30) 精度足夠,但 math.isqrt (Python 3.8+) 可精確求整數平方根。

Python 3.8+ 新增:math.isqrt()


print(math.isqrt(10))   # 3 (floor(sqrt(10)))
print(math.isqrt(100))  # 10
# 適用於大整數完全平方判斷、密碼學等需精確整數根的場合

選對平方根函數(math.sqrt 實數、cmath.sqrt 複數、math.isqrt 整數),並注意定義域與回傳型別,能避免隱性 Bug 並寫出高效能數值代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved