如何使用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)
,接着编写了一个交互式程序,可以让用户输入二次方程的系数,并输出方程的解。这种方法不仅可以减少手工计算的出错率,而且还可以节约时间,提高效率。希望本文可以帮助大家更快更准确地求解二次方程。