Python3 求解二次方程

一、二次方程求解核心原理

 
  1. 判别式判定根的类型:定义 Δ=b24ac,通过Δ的正负判断根的性质:
    • Δ>0:方程有两个不相等的实数根
    • Δ=0:方程有两个相等的实数根(重根)
    • Δ<0:方程有一对共轭复数根
  2. 求根公式:无论实根还是复根,均满足求根公式 x=2ab±Δ,Python 中通过cmath模块可直接处理复数平方根计算,无需额外判断。
 

二、完整代码实例(交互式输入,支持所有根场景)

 
该实例支持用户手动输入二次项系数a、一次项系数b、常数项c,自动判定根的类型并输出结果,同时处理a=0的异常情况。
 
# 导入复数数学库,用于处理负数平方根(兼容复根求解)
import cmath

def solve_quadratic_equation():
    try:
        # 1. 交互式输入三个系数,转换为浮点数
        a = float(input("请输入二次项系数 a(a ≠ 0):"))
        b = float(input("请输入一次项系数 b:"))
        c = float(input("请输入常数项 c:"))

        # 2. 判断a是否为0,若为0则不是二次方程
        if a == 0:
            print("错误:a 不能为 0,这不是二次方程!")
            return

        # 3. 计算判别式 Δ = b² - 4ac
        delta = b ** 2 - 4 * a * c

        # 4. 根据求根公式计算两个根
        x1 = (-b + cmath.sqrt(delta)) / (2 * a)
        x2 = (-b - cmath.sqrt(delta)) / (2 * a)

        # 5. 判定根的类型并输出结果
        print("\n二次方程 {}x² + {}x + {} = 0 的求解结果:".format(a, b, c))
        if delta > 0:
            # Δ>0:两个不相等实数根
            print("根的类型:两个不相等的实数根")
            print("x1 =", x1.real)  # 取实数部分输出,更简洁
            print("x2 =", x2.real)
        elif delta == 0:
            # Δ=0:两个相等实数根(重根)
            print("根的类型:两个相等的实数根(重根)")
            print("x1 = x2 =", x1.real)
        else:
            # Δ<0:一对共轭复数根
            print("根的类型:一对共轭复数根")
            print("x1 =", x1)
            print("x2 =", x2)

    except ValueError:
        # 捕获非数字输入的异常
        print("错误:请输入有效的数字!")

# 调用函数执行求解
if __name__ == "__main__":
    solve_quadratic_equation()
 
 

三、三种场景测试示例

 

场景 1:Δ>0(两个不相等实数根)

 
输入:
请输入二次项系数 a(a ≠ 0):1
请输入一次项系数 b:-5
请输入常数项 c:6
 
 
输出:
二次方程 1.0x² + -5.0x + 6.0 = 0 的求解结果:
根的类型:两个不相等的实数根
x1 = 3.0
x2 = 2.0
 
 

场景 2:Δ=0(两个相等实数根)

 
输入:
请输入二次项系数 a(a ≠ 0):1
请输入一次项系数 b:4
请输入常数项 c:4
 
 
输出:
二次方程 1.0x² + 4.0x + 4.0 = 0 的求解结果:
根的类型:两个相等的实数根(重根)
x1 = x2 = -2.0
 
 

场景 3:Δ<0(一对共轭复数根)

 
输入:
请输入二次项系数 a(a ≠ 0):1
请输入一次项系数 b:2
请输入常数项 c:5
 
 
输出:
二次方程 1.0x² + 2.0x + 5.0 = 0 的求解结果:
根的类型:一对共轭复数根
x1 = (-1+2j)
x2 = (-1-2j)
 

posted on 2026-01-05 09:36  小陶coding  阅读(6)  评论(0)    收藏  举报