Python Квадратное уравнение

Document 对象参考手册Python3 Примеры

Квадратное уравнение имеет вид:ax2+bx+c=0。

Его решение можно найти, вычислив дискриминантΔ=b2−4ac\Delta = b^2 - 4acчтобы определить:

  1. ЕслиΔ>0\Delta > 0, уравнение имеет два действительных корня.
  2. ЕслиΔ=0\Delta = 0, уравнение имеет один действительный корень (двойной корень).
  3. ЕслиΔ<0\Delta < 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)

Document 对象参考手册Python3 Примеры

Другие расширения