如何使用Python解决二次方程?

如何使用Python解决二次方程?

阅读更多:Python 教程

背景

二次方程是高中数学中的基础内容,求解二次方程的公式为 ax^2 + bx + c = 0,其中 a, b, c 是实数且 a\neq 0。公式的解为 x = \frac{-b\pm\sqrt{b^2-4ac}}{2a}。在实际应用中,我们可能需要解决大量的二次方程,手动计算比较繁琐,而计算机既可以大幅降低出错率,又可以快速求解,因此本文将介绍如何使用Python解决二次方程。

实现

为了方便实现,我们首先将二次方程的求根公式封装为一个函数 quadratic(a, b, c),接收三个参数 a, b, c,返回二次方程的两个根。

import math

def quadratic(a, b, c):
    delta = b**2 - 4 * a * c
    if delta < 0:
        return ()
    elif delta == 0:
        return (-b / (2 * a),)
    else:
        root1 = (-b + math.sqrt(delta)) / (2 * a)
        root2 = (-b - math.sqrt(delta)) / (2 * a)
        return (root1, root2)

其中,math 模块提供了许多数学函数,如 math.sqrt() 是求平方根的函数。

函数中首先计算二次方程的判别式 delta,若 \Delta<0,则方程无实数根,返回一个空元组 ()。若 \Delta = 0,则方程有唯一解,返回一个只包含一个根的元组 (-b / (2 * a),)。否则,计算方程的两个根并返回一个包含根的元组 (root1, root2)

我们来测试一下这个函数:

print(quadratic(1, -2, 1))  # (-1.0,)
print(quadratic(1, 2, 1))  # (-1.0,)
print(quadratic(1, -7, 12))  # (4.0, 3.0)
print(quadratic(1, 2, 3))  # ()

可以看到,函数成功地求解了不同情况下的二次方程,并返回了正确的根。

接下来,我们可以编写一个交互式程序,让用户输入三个实数作为二次方程的系数,并输出方程的解。

while True:
    try:
        a = float(input('请输入一次项系数 a:'))
        b = float(input('请输入常数项系数 b:'))
        c = float(input('请输入常数 c:'))
        roots = quadratic(a, b, c)
        if len(roots) == 0:
            print('这个二次方程没有实数根')
        elif len(roots) == 1:
            print('这个二次方程有一个根:{}'.format(roots[0]))
        else:
            print('这个二次方程有两个根:{} 和 {}'.format(roots[0], roots[1]))
        break
    except ValueError:
        print('输入错误,请重新输入。')

上述程序运行后,会提示用户输入三个实数,并进行输入检查。如果输入格式不正确,会提示输入错误并重新要求输入。如果输入正确,则调用 quadratic() 函数求解二次方程,并根据根的个数输出结果。

总结

本文介绍了如何使用Python解决二次方程。我们首先封装了二次方程的求根公式为一个函数 quadratic(a, b, c),接着编写了一个交互式程序,可以让用户输入二次方程的系数,并输出方程的解。这种方法不仅可以减少手工计算的出错率,而且还可以节约时间,提高效率。希望本文可以帮助大家更快更准确地求解二次方程。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程