• 常用
  • 百度
  • google
  • 站内搜索

科技

Python编程实战,求解一元二次方程的根

  • 更新日期:2025-12-03
  • 查看次数:7045

<ol><li>一元二次方程 $ ax^2 + bx + c = 0 $($ a \neq 0 $)的根由判别式 $ D = b^2 - 4ac $ 决定:当 $ D &gt; 0 $ 时有两个不等实根,$ D = 0 $ 时有重根,$ D &lt; 0 $ 时无实根。</li></ol>

Python编程实战:求取一元二次方程的根

一元二次方程是形如 $ ax^2 + bx + c = 0 $ 的方程,其中 $ a \neq 0 $。求解它的根可以使用判别式法,通过判断判别式的正负来确定根的类型。下面我们将用 Python 编写一个完整的程序,计算一元二次方程的根。

理解判别式与根的关系

对于方程 $ ax^2 + bx + c = 0 $,其判别式为:

$ D = b^2 - 4ac $

根据 $ D $ 的值,可以得出以下结论:

  • 若 $ D > 0 $:有两个不相等的实数根
  • 若 $ D = 0 $:有一个重根(两个相等的实数根)
  • 若 $ D < 0 $:有两个共轭复数根

编写Python函数求解方程

我们可以定义一个函数 solve_quadratic,接收系数 $ a, b, c $,返回对应的根。

import math

def solve_quadratic(a, b, c):
    if a == 0:
        raise ValueError("a 不能为 0,否则不是二次方程")

    discriminant = b**2 - 4*a*c

    if discriminant > 0:
        root1 = (-b + math.sqrt(discriminant)) / (2 * a)
        root2 = (-b - math.sqrt(discriminant)) / (2 * a)
        return f"两个实数根: {root1:.4f}, {root2:.4f}"
    elif discriminant == 0:
        root = -b / (2 * a)
        return f"一个重根: {root:.4f}"
    else:
        real_part = -b / (2 * a)
        imaginary_part = math.sqrt(-discriminant) / (2 * a)
        return f"两个复数根: {real_part:.4f} + {imaginary_part:.4f}i, {real_part:.4f} - {imaginary_part:.4f}i"

# 示例调用
print(solve_quadratic(1, -5, 6))  # 两个实根
print(solve_quadratic(1, -2, 1))  # 重根
print(solve_quadratic(1, 2, 5))   # 复数根

处理用户输入与异常情况

为了让程序更实用,可以加入用户输入功能,并做必要的错误处理。

def main():
    print("求解一元二次方程 ax² + bx + c = 0")
    try:
        a = float(input("请输入 a: "))
        b = float(input("请输入 b: "))
        c = float(input("请输入 c: "))

        result = solve_quadratic(a, b, c)
        print(result)
    except ValueError as e:
        print(f"输入错误: {e}")
    except Exception as e:
        print(f"发生错误: {e}")

# 启动程序
# main()

运行后,用户可输入任意实数系数,程序会自动判断并输出对应类型的根。注意要确保输入的是数字,避免因输入非数值导致程序崩溃。

基本上就这些。这个小项目锻炼了条件判断、数学运算和异常处理能力,适合初学者巩固 Python 基础。实际应用中还可以扩展支持分数输入或图形化界面。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

imtoken下载 im钱包 imtoken imtoken 快连官网 imtoken imtoken imtoken imtoken imtoken wallet imtoken imtoken官网 imtoken钱包 imtoken下载 imtoken官网 imtoken钱包 imtoken安卓下载 imtoken下载 imtoken官方下载 imtoken官网 imtoken安卓下载 imtoken下载 imtoken下载 imtoken imtoken imtoken imtoken imtoken imtoken imtoken imtoken imtoken bitget wallet telegram下载 quickq VPN trust wallet v2rayn imtoken