C語言補充教材 - 一元二次方程式的求解
Quadratic Equation Solver
數學背景複習:一元二次方程式是什麼?
在國中數學中,一元二次方程式指的是如下形式的方程式:
其中:
- a$、$b$、$c 為實數常數,且
- 是未知數
- 解這個方程式的目的是找出 的值,使整個等式成立。
✅ 解法:求根公式(又稱判別式法)
我們使用以下公式來求解方程式的根(也就是 的值):
其中:
- 被稱為判別式(discriminant),記為
- 根據判別式的值,我們有以下三種情況:
判別式 | 根的情況 |
---|---|
兩個不相等的實數根 | |
兩個相等的實數根(重根) | |
無實數解(為複數根) |
✳️ 一元二次方程式的求根公式(判別式法)推導
我們從一元二次方程式的一般形式開始:
🔄 Step 1:將兩邊同除以
目的是讓前面的係數變成 1,方便操作:
🧩 Step 2:移項,把常數項移到等號右邊
🟨 Step 3:左右兩邊同時「配方」(Completing the square)
我們想讓左邊變成一個完整的平方:
- 取 加到左右兩邊:
🧮 Step 4:化簡兩邊
左邊是一個平方公式:
🧾 Step 5:開根號並解出 x
🔚 Step 6:移項得出「求根公式」
這就是我們熟悉的 一元二次方程式解公式。
🧠 判別式 的角色
在公式中,根號裡的那部分 決定了解的性質,我們稱它為「判別式」,記為 :
- 若 :有兩個不相等的實數根
- 若 :有一個實數重根
- 若 :沒有實數根(出現虛數)
📌 小提示(適合寫在黑板或投影片上)
「公式不是硬背來的,它來自基本的代數技巧 —— 配方法(completing the square)!」
這樣的理解能幫助學生不只是「套公式」,而是真正知道它的來源,也能應用在其他需要配方的地方(例如拋物線頂點公式的推導等)。
如果你有需要,我可以幫你把這段轉成簡報、或加上手寫風格圖解。是否需要圖示或 LaTeX PDF 格式教材?
💻 C語言實作:求解一元二次方程式
🔧 步驟說明
- 輸入係數 a$、$b$、$c
- 計算判別式
- 根據 的值分類討論並求出解
✅ 範例程式碼:
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double discriminant, root1, root2;
printf("輸入一元二次方程式 ax^2 + bx + c = 0 的係數 a, b, c:\n");
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
printf("這不是一元二次方程式,因為 a 不能為 0。\n");
return 1;
}
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("有兩個不同的實數根:x1 = %.2lf, x2 = %.2lf\n", root1, root2);
}
else if (discriminant == 0) {
root1 = -b / (2 * a);
printf("有一個重根:x = %.2lf\n", root1);
}
else {
double realPart = -b / (2 * a);
double imagPart = sqrt(-discriminant) / (2 * a);
printf("無實數解,為複數根:\n");
printf("x1 = %.2lf + %.2lfi\n", realPart, imagPart);
printf("x2 = %.2lf - %.2lfi\n", realPart, imagPart);
}
return 0;
}