📅  最后修改于: 2023-12-03 14:49:01.672000             🧑  作者: Mango
在数学中,二次方程是形如 $ax^2+bx+c=0$ 的二次多项式方程,其中 $a\neq 0$。在 Python 语言中,我们可以使用以下方式来解二次方程。
import cmath
a = float(input('请输入二次方程中 x^2 的系数:'))
b = float(input('请输入二次方程中 x 的系数:'))
c = float(input('请输入二次方程的常数项:'))
# 计算判别式
d = (b ** 2) - (4 * a * c)
# 两个实根
sol1 = (-b-cmath.sqrt(d))/(2*a)
sol2 = (-b+cmath.sqrt(d))/(2*a)
# 输出结果
print('二次方程 {}x^2 + {}x + {} = 0 的解为:'.format(a,b,c))
print(' x1 = {}'.format(sol1))
print(' x2 = {}'.format(sol2))
在上面的代码中,我们首先引入了 cmath
模块。这是因为一般情况下,二次方程可能存在无理根或负数根。如果只用 math
模块,那么程序会抛出 ValueError
异常。
接下来,我们对用户输入的系数和常数项进行处理,并使用上文提到的公式求解两个实根。最后,我们将结果输出到屏幕上。
除了使用 cmath
模块外,如果您想要求二次方程的实根,可以将 cmath
模块替换为 math
模块,并修改计算实根的代码段。
import math
a = float(input('请输入二次方程中 x^2 的系数:'))
b = float(input('请输入二次方程中 x 的系数:'))
c = float(input('请输入二次方程的常数项:'))
# 计算判别式
d = (b ** 2) - (4 * a * c)
# 两个实根
if d > 0:
sol1 = (-b + math.sqrt(d)) / (2 * a)
sol2 = (-b - math.sqrt(d)) / (2 * a)
print('二次方程 {}x^2 + {}x + {} = 0 的解为:'.format(a,b,c))
print(' x1 = {}'.format(sol1))
print(' x2 = {}'.format(sol2))
elif d == 0:
sol1 = (-b) / (2 * a)
print('二次方程 {}x^2 + {}x + {} = 0 的解为:'.format(a,b,c))
print(' x = {}'.format(sol1))
else:
print('二次方程 {}x^2 + {}x + {} = 0 没有实根'.format(a,b,c))
在上面的代码中,我们使用 if
语句,判断了判别式 $D$ 的大小来确定是否有实根。如果 $D>0$,则有两个实根;如果 $D=0$,则有一个实根;如果 $D<0$,则没有实根。在实际运行中,我们可能会使用 try...except
语句来处理异常情况。