Python Квадратное уравнение
Квадратное уравнение имеет вид:ax2+bx+c=0。
Его решение можно найти, вычислив дискриминантчтобы определить:
- Если, уравнение имеет два действительных корня.
- Если, уравнение имеет один действительный корень (двойной корень).
- Если, уравнение не имеет действительных корней, но имеет два комплексных корня.
В следующем примере принимаются введённые пользователем числа и решается квадратное уравнение:
Пример (Python 3.0+)
# Имя файла: quadratic_solver.py
# Автор: www.example.com (оптимизировано ChatGPT)
# Назначение программы: Решить квадратное уравнение ax**2 + bx + c = 0
# Примечание: a ≠ 0, a, b, c — действительные числа, введённые пользователем
import cmath # Импорт модуля cmath для поддержки операций с комплексными числами
def get_float_input(prompt):
"""Получить число с плавающей точкой, введённое пользователем, и обработать некорректный ввод.
:param prompt: Приглашение к вводу
:return: Число с плавающей точкой, введённое пользователем"""
while True:
try:
return float(input(prompt))
except ValueError:
print("Пожалуйста, введите корректное число!")
def solve_quadratic(a, b, c):
"""Вычислить решения квадратного уравнения.
:param a: Коэффициент при квадратичном члене
:param b: Коэффициент при линейном члене
:param c: Свободный член
:return: Два решения квадратного уравнения"""
discriminant = b**2 - 4*a*c # Вычислить дискриминант
root1 = (-b - cmath.sqrt(discriminant)) / (2 * a)
root2 = (-b + cmath.sqrt(discriminant)) / (2 * a)
return root1, root2
def main():
print("Решите квадратное уравнение ax^2 + bx + c = 0")
# Получить ввод пользователя
a = get_float_input("Пожалуйста, введите коэффициент при квадратичном члене a (a ≠ 0):")
while a == 0:
print("Коэффициент a при квадратичном члене не может быть равен 0!")
a = get_float_input("Пожалуйста, повторно введите коэффициент при квадратичном члене a (a ≠ 0):")
b = get_float_input("Пожалуйста, введите коэффициент при линейном члене b:")
c = get_float_input("Введите свободный член c:")
# Вычислить и вывести результат
root1, root2 = solve_quadratic(a, b, c)
print(f"Решения уравнения: {root1} и {root2}")
if __name__ == "__main__":
main()
Вывод после выполнения приведённого выше кода:
求解二次方程 ax^2 + bx + c = 0 请输入二次项系数 a(a ≠ 0):1 请输入一次项系数 b:5 请输入常数项 c:6 方程的解为:(-3+0j) 和 (-2+0j)
В этом примере мы использовали метод sqrt() модуля cmath (комплексная математика) для вычисления квадратного корня.
Пример 2
import math
import cmath
def solve_quadratic(a, b, c):
"""
Решите квадратное уравнение ax^2 + bx + c = 0
:param a: Коэффициент квадратичного члена
:param b: Коэффициент линейного члена
:param c: Свободный член
:return: Решения уравнения (могут быть действительными или комплексными)
"""
if a == 0:
# Обработка неквадратных уравнений
if b == 0:
return "Нет решения" if c != 0 else "Уравнение имеет бесконечно много решений"
return f"Уравнение линейное, и решение: x = {-c / b}"
# Вычислить дискриминант
дельта = b**2 - 4*a*c
if delta > 0:
# Два действительных корня
root1 = (-b + math.sqrt(delta)) / (2 * a)
root2 = (-b - math.sqrt(delta)) / (2 * a)
return f"Уравнение имеет два действительных корня: x1 = {root1}, x2 = {root2}"
elif delta == 0:
# Один действительный корень
root = -b / (2 * a)
return f"Уравнение имеет двукратный действительный корень: x = {root}"
else:
# Два комплексных корня
root1 = (-b + cmath.sqrt(delta)) / (2 * a)
root2 = (-b - cmath.sqrt(delta)) / (2 * a)
return f"Уравнение имеет два комплексных корня: x1 = {root1}, x2 = {root2}"
# Пример вызова
a, b, c = 1, -3, 2
result = solve_quadratic(a, b, c)
print(result)
import cmath
def solve_quadratic(a, b, c):
"""
Решите квадратное уравнение ax^2 + bx + c = 0
:param a: Коэффициент квадратичного члена
:param b: Коэффициент линейного члена
:param c: Свободный член
:return: Решения уравнения (могут быть действительными или комплексными)
"""
if a == 0:
# Обработка неквадратных уравнений
if b == 0:
return "Нет решения" if c != 0 else "Уравнение имеет бесконечно много решений"
return f"Уравнение линейное, и решение: x = {-c / b}"
# Вычислить дискриминант
дельта = b**2 - 4*a*c
if delta > 0:
# Два действительных корня
root1 = (-b + math.sqrt(delta)) / (2 * a)
root2 = (-b - math.sqrt(delta)) / (2 * a)
return f"Уравнение имеет два действительных корня: x1 = {root1}, x2 = {root2}"
elif delta == 0:
# Один действительный корень
root = -b / (2 * a)
return f"Уравнение имеет двукратный действительный корень: x = {root}"
else:
# Два комплексных корня
root1 = (-b + cmath.sqrt(delta)) / (2 * a)
root2 = (-b - cmath.sqrt(delta)) / (2 * a)
return f"Уравнение имеет два комплексных корня: x1 = {root1}, x2 = {root2}"
# Пример вызова
a, b, c = 1, -3, 2
result = solve_quadratic(a, b, c)
print(result)
Python3 Примеры