📜  二次方程 - Python (1)

📅  最后修改于: 2023-12-03 14:49:01.672000             🧑  作者: Mango

二次方程 - Python

在数学中,二次方程是形如 $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 语句来处理异常情况。