一、一元二方程求解公式
对于一元二次方程 a x 2 + b x + c = 0 ax^2+bx+c=0 ax2+bx+c=0
假设二次项系数 a ≠ 0 a≠0 a=0
判别式 Δ = b 2 − 4 a c \Delta=b^2-4ac Δ=b2−4ac
I f Δ ≥ 0 T h e n x 1 = − b + b 2 − 4 a c 2 a x 2 = − b − b 2 − 4 a c 2 a E l s e x 1 = − b 2 a + 4 a c − b 2 2 a i x 2 = − b 2 a − 4 a c − b 2 2 a i E n d I f If \quad \Delta \geq 0 \quad Then \\ \quad x_1=\displaystyle \frac{-b+\sqrt{b^2-4ac}}{2a} \\ \quad x_2=\displaystyle \frac{-b-\sqrt{b^2-4ac}}{2a} \\ Else \\ \quad x_1=\displaystyle -\frac{b}{2a}+\frac{\sqrt{4ac-b^2}}{2a}i \\ \quad x_2=\displaystyle -\frac{b}{2a}-\frac{\sqrt{4ac-b^2}}{2a}i \\ End \ If IfΔ≥0Thenx1=2a−b+b2−4acx2=2a−b−b2−4acElsex1=−2ab+2a4ac−b2ix2=−2ab−2a4ac−b2iEnd If
二、编程求解一元二次方程
1、直接求解一元二次方程
- 创建程序 - 求解一元二次方程01.py
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 14 11:02:18 2020
@author: howard
求解一元二次方程01
"""
import math
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a == 0:
print('异常信息:不是一元二次方程!')
else:
d = b**2 - 4 * a * c
if d < 0:
print('异常信息:此方程没有实数解!')
else:
x1 = (-b + math.sqrt(d)) / (2 * a)
x2 = (-b - math.sqrt(d)) / (2 * a)
print('x1 = {}, x2 = {}'.format(x1, x2))
- 运行三次程序,查看结果
2、编写一元二次方程求解函数
- 创建程序 - 求解一元二次方程02.py
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 14 10:30:18 2020
@author: howard
求解一元二次方程02
"""
import math
def quadratic(a, b, c):
if a == 0:
raise ValueError('异常信息:不是一元二次方程!')
else:
d = b**2 - 4 * a * c
if d < 0:
raise ValueError('异常信息:此方程没有实数解!')
else:
x1 = (-b + math.sqrt(d)) / (2 * a)
x2 = (-b - math.sqrt(d)) / (2 * a)
return x1, x2
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
try:
x1, x2 = quadratic(a, b, c)
except ValueError as err:
print(err)
else:
print('x1 = {}, x2 = {}'.format(x1, x2))
- 运行三次程序,查看结果
3、编写一元二次方程类
- 创建程序 - 求解一元二次方程03.py
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 14 10:30:18 2020
@author: howard
求解一元二次方程03
"""
import math
class Quadratic:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def get_solutions(self):
a = self.a
b = self.b
c = self.c
if a == 0:
raise ValueError('异常信息:不是一元二次方程!')
else:
d = b**2 - 4 * a * c
if d < 0:
raise ValueError('异常信息:此方程没有实数解!')
else:
x1 = (-b + math.sqrt(d)) / (2 * a)
x2 = (-b - math.sqrt(d)) / (2 * a)
return x1, x2
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
try:
quadratic = Quadratic(a, b, c)
x1, x2 = quadratic.get_solutions()
except ValueError as err:
print(err)
else:
print('x1 = {}, x2 = {}'.format(x1, x2))
- 运行三次程序,查看结果
4、考虑一元二次方程复数解
- 创建程序 - 求解一元二次方程04.py
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 14 10:30:18 2020
@author: howard
求解一元二次方程04
"""
import math
class Quadratic:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def get_solutions(self):
a = self.a
b = self.b
c = self.c
if a == 0:
raise ValueError('异常信息:不是一元二次方程!')
else:
d = b**2 - 4 * a * c
if d < 0:
real = -b / (2 * a)
imagery = math.sqrt(-d) / (2 * a)
x1 = complex(real, imagery)
x2 = complex(real, -imagery)
else:
x1 = (-b + math.sqrt(d)) / (2 * a)
x2 = (-b - math.sqrt(d)) / (2 * a)
return x1, x2
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
try:
quadratic = Quadratic(a, b, c)
x1, x2 = quadratic.get_solutions()
except ValueError as err:
print(err)
else:
print('x1 = {}, x2 = {}'.format(x1, x2))
- 运行三次程序,查看结果