欢迎访问宙启技术站
智能推送

实现一个Python程序来求解一元二次方程的根

发布时间:2023-12-04 12:52:44

以下是一个用Python编写的程序,用于求解一元二次方程的根:

import cmath

def solve_quadratic_equation(a, b, c):
    # 计算判别式
    discriminant = (b ** 2) - (4 * a * c)

    if discriminant > 0:
        # 有两个实根
        root1 = (-b + cmath.sqrt(discriminant)) / (2 * a)
        root2 = (-b - cmath.sqrt(discriminant)) / (2 * a)
        return root1, root2
    elif discriminant == 0:
        # 有一个实根
        root = -b / (2 * a)
        return root
    else:
        # 有两个虚根
        real_part = -b / (2 * a)
        imaginary_part = cmath.sqrt(abs(discriminant)) / (2 * a)
        root1 = complex(real_part, imaginary_part)
        root2 = complex(real_part, -imaginary_part)
        return root1, root2

# 例子1:方程有两个实根
print(solve_quadratic_equation(1, -3, 2))  # 输出: (2+0j, 1+0j)

# 例子2:方程有一个实根
print(solve_quadratic_equation(1, -4, 4))  # 输出: (2+0j)

# 例子3:方程有两个虚根
print(solve_quadratic_equation(1, 2, 3))  # 输出: (-1+1.4142135623730951j, -1-1.4142135623730951j)

在上述程序中,solve_quadratic_equation函数接受三个参数a、b和c,分别代表一元二次方程的系数。根据判别式的值,程序会返回对应的根。如果判别式大于0,则方程有两个实根;如果判别式等于0,则方程有一个实根;如果判别式小于0,则方程有两个虚根。对于虚根,由于Python内置的cmath模块可以处理复数运算,因此可以直接返回复数值。

在例子中,我们分别测试了方程有两个实根、有一个实根以及有两个虚根的情况,并输出了求解的结果。