1. 在 C 中計算平方根的方法:概觀與基本的 sqrt 函式
C 程式語言的標準函式庫中提供了 sqrt 函式,讓您可以輕鬆計算數值的平方根。這使得平方根的計算變得高效,避免了複雜的手動實作。本文將說明如何使用 sqrt 函式、探討各種應用情境,甚至示範如何自行實作演算法,適合從入門到進階的程式設計師閱讀。
2. 計算平方根的基本方法
首先說明在 C 中計算平方根的基本方法。
sqrt 函式的概觀與使用方式
sqrt 函式是 math.h 函式庫提供的函式之一,用來計算任意數值的平方根。函式原型如下:
#include <math.h>
double sqrt(double x);
此函式會回傳傳入參數 x 的平方根。
基本使用範例
以下是一個計算並印出使用者輸入數字平方根的程式範例。
#include <stdio.h>
#include <math.h>
int main() {
double num;
printf("Enter a number: ");
scanf("%lf", &num);
if (num < 0) {
printf("Cannot compute square root of a negative number.n");
} else {
printf("Square root: %lfn", sqrt(num));
}
return 0;
}
在此程式中,使用者輸入一個數字,程式會計算並顯示其平方根。若輸入負數,則會顯示錯誤訊息並結束程式。
處理負數與重要注意事項
sqrt 函式不接受負數作為參數,傳入負數會導致錯誤。因此必須加入檢查輸入值是否為負數的邏輯。若需要計算負數(複數)的平方根,請使用 complex.h 函式庫中的 csqrt 函式。
3. 應用:平方根計算的各種使用情境
sqrt 函式在數值分析與科學計算中被廣泛使用。以下介紹幾個具代表性的應用範例。
計算歐氏距離
歐氏距離是指兩點在二維或三維空間中的距離,計算時會使用平方根。例如,在二維平面上,兩點 (x1, y1) 與 (x2, y2) 的歐氏距離計算方式如下:
#include <stdio.h>
#include <math.h>
int main() {
double x1 = 1.0, y1 = 2.0;
double x2 = 4.0, y2 = 6.0;
double distance = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
printf("Euclidean distance: %lfn", distance);
return 0;
}
在圖形程式設計中的應用
sqrt 函式也常用於計算向量的長度。例如,對於二維向量 (vx, vy),其長度的計算方式如下:
#include <stdio.h>
#include <math.h>
int main() {
double vx = 3.0, vy = 4.0;
double length = sqrt(vx * vx + vy * vy);
printf("Vector length: %lfn", length);
return 0;
}
複數的平方根
由於標準的 sqrt 函式無法處理複數的平方根,必須使用 complex.h 函式庫中的 csqrt 函式。以下是一段計算複數平方根的程式範例:
#include <stdio.h>
#include <complex.h>
int main() {
double complex z = -4.0 + 0.0 * I;
double complex result = csqrt(z);
printf("Square root: %.2f + %.2fin", creal(result), cimag(result));
return 0;
}
4. 不使用標準函式庫的平方根計算
也可以在不使用標準 sqrt 函式的情況下自行實作平方根演算法。以下示範使用牛頓法(Newton’s method)實作的範例。
使用牛頓法的自訂實作
牛頓法(Newton–Raphson 方法)是數值計算中廣為人知的技術,可用於求根,包括求平方根。以下是一個使用牛頓法計算平方根的範例。
#include <stdio.h>
double mySqrt(double num) {
double x = num;
double dx;
if (num == 0) return 0;
while (1) {
dx = (x * x - num) / (2.0 * x);
if (fabs(dx) < 0.00001) break;
x -= dx;
}
return x;
}
int main() {
double num = 9.0;
printf("Square root: %lfn", mySqrt(num));
return 0;
}
此程式碼使用牛頓法計算給定數字的平方根。它會持續迴圈直到滿足條件,逐步逼近解答。

5. 平方根計算的優點與限制
使用 sqrt 函式可帶來許多好處,但也必須了解其限制。
sqrt 函式的優勢
- 由標準函式庫提供:不需額外安裝,與環境無關。
- 效能:針對數值計算進行最佳化,處理速度快速。
- 精度:對浮點運算保證準確性。
sqrt 函式的限制與因應措施
- 負數限制:對負數求平方根會觸發錯誤。若需要計算複數的平方根,請使用
complex.h中的csqrt函式。 - 浮點精度:在計算極小或極大數值時,可能會產生誤差。此時需採取演算法上的調整。
6. 小結
本文說明了在 C 語言中如何計算平方根,從標準函式庫的 sqrt 函式說起,並介紹了歐氏距離與圖形程式設計等應用範例。亦說明了使用牛頓法自行實作平方根計算,涵蓋多種方法與其應用。
平方根的計算是 C 語言中最基本的數值處理工作之一,但其應用範圍相當廣泛。



