【Python實作】求一元二次方程式的根
Python實作_求一元二次方程式的根
目的:練習if/else函數、數學運算子
題目:求一元二次方程式 ax2+bx+c=0 的根,讓使用者輸入a、b、c。
邏輯規劃:
1、使用 input() 讓使用者輸入 a, b, c,並轉成 float。然後因為是"一元二次方程式",所以a不能等於0,要寫一個if防呆。
2、計算判別式:D = b**2 -
4*a*c。
其結果可以分三種情況:
D > 0:有兩個不相等的實數解
D == 0:有一個實數重根
D < 0:沒有「實數解」,可以提示使用者
3、實數的兩個解(數學知識),一個是(-b
+ D**0.5) / (2*a);另一個是(-b + D**0.5) / (2*a)
#程式開始
# 求一元二次方程式 ax^2 +
bx + c = 0 的根
# 輸入係數
a = float(input("請輸入 a:"))
b = float(input("請輸入 b:"))
c = float(input("請輸入 c:"))
# 判斷是否為一元二次方程式(防呆)
if a == 0:
print("a 不能為 0,這就不是一元二次方程式了!")
else:
#
計算判別式
D
= b**2 - 4*a*c
#
根的情況判斷
if D > 0:
# 兩個不相等的實數解
x1 = (-b + D**0.5) / (2*a)
x2 = (-b - D**0.5) / (2*a)
print(f"有兩個實數解:x1 = {x1}, x2 = {x2}")
elif D == 0:
# 一個實數重根
x = -b / (2*a)
print(f"有一個重根:x = {x}")
else:
# 無實數解
print("沒有實數解(判別式小於 0)。")
#程式結束
程式執行結果:
(第一次)
請輸入 a:1
請輸入 b:3
請輸入 c:-10
有兩個實數解:x1 = 2.0, x2 = -5.0
(第二次)
請輸入 a:2
請輸入 b:2
請輸入 c:2
沒有實數解(判別式小於 0)。
(第三次)
請輸入 a:1
請輸入 b:0
請輸入 c:0
有一個重根:x = -0.0
結論:「其實我覺得像這種"可以簡化成固定公式"的數學題目,用程式做都不會太難。畢竟有了公式之後,剩下的就只是計算而已,而那恰恰是程式最擅長的。」
留言
張貼留言