Python 二次方程求根器

使用 Python 中的判别式求解二次方程并识别实数根和复数根。

在编辑器中尝试

概述

二次方程的形式为 ax² + bx + c = 0。求解该方程需要二次公式:“x = (-b ± sqrt(b² - 4ac)) / 2a”。

术语“b² - 4ac”称为判别式。如果为正,则有两个不同的实根。如果为零,则为一个实根。如果为负,则为两个复根。

Python 内置的 cmath 模块支持复数,即使判别式为负,我们也能找到根。

代码和执行输出

强大的求解器能够处理实数、零和复数判别式。

import cmath

def find_roots(a, b, c):
    d = (b**2) - (4*a*c) # discriminant
    
    # Calculate both roots
    sol1 = (-b - cmath.sqrt(d)) / (2*a)
    sol2 = (-b + cmath.sqrt(d)) / (2*a)
    
    return sol1, sol2

# Test equation: x^2 - 5x + 6 = 0
r1, r2 = find_roots(1, -5, 6)
print("Roots of x^2 - 5x + 6 = 0:")
print(f"Root 1: {r1.real:.1f}")
print(f"Root 2: {r2.real:.1f}")
端子输出
Roots of x^2 - 5x + 6 = 0:
Root 1: 2.0
Root 2: 3.0

逐步实施

  • 物理模型和轨迹跟踪系统
  • 几何碰撞检测向量
  • 数学求解器

常见问题解答

为什么使用“cmath”而不是“math”?

如果您尝试计算负数的平方根,标准“math”模块将引发 ValueError。 “cmath”(复数数学)模块自动处理虚根。

相关主题