Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3380755
А
Аноним
11 сентября 2025 18:06 · публичный вопрос
А
Аноним

Скинь код

Ответ нейросети
11 сентября 2025 18:06

Ниже пример кода на Python, который даст детальное пошаговое решение для линейных и квадратных уравнений. Введите уравнение в форме:

  • линейное: ax + b = c
  • квадратное: ax^2 + bx + c = 0

Требуется установленный пакет sympy (pip install sympy).

# solve_step_by_step.py
import sys

try:
    import sympy as sp
except ImportError:
    print("Пожалуйста, установите SymPy: pip install sympy")
    sys.exit(1)

def step_by_step_solve(problem: str):
    x = sp.symbols('x')

    if '=' not in problem:
        print("Ошибка: уравнение должно содержать знак '='.")
        return

    left_s, right_s = problem.split('=', 1)
    left = sp.sympify(left_s.strip(), locals={'x': x})
    right = sp.sympify(right_s.strip(), locals={'x': x})

    print("Шаг 1. Запишем уравнение в виде: left = right")
    print("Уравнение: {} = {}".format(left, right))
    expr = sp.expand(left - right)

    print("Шаг 2. Перепишем уравнение слева в одну сторону: (left - right) = 0")
    print("Получаем: {} = 0".format(expr))

    # Определяем степень по x
    deg = sp.Poly(sp.expand(expr), x).degree()
    if deg is None:
        deg = 0  # на случай пустого выражения

    if deg == 0:
        # константа слева: либо 0 = 0 (бесконечно много решений), либо противное
        const_val = expr.subs(x, 0)
        if sp.simplify(const_val) == 0:
            print("Шаг 3. Константа равна 0: бесконечно много решений.")
        else:
            print("Шаг 3. Константа не равна 0: решений нет.")
        return

    if deg == 1:
        # линейное уравнение: a*x + c = 0
        a = sp.expand(expr).coeff(x)
        c = sp.expand(expr).subs(x, 0)

        print("Шаг 3. Найдём коэффициент при x: a = {}".format(a))
        print("Шаг 4. Найдём свободный член: c = {}".format(c))

        if a == 0:
            if c == 0:
                print("Уравнение превращается в 0 = 0: бесконечно много решений.")
            else:
                print("Уравнение не имеет решений (0*x + c ≠ 0).")
            return

        x_sol = -c / a
        print("Шаг 5. Решаем: a*x + c = 0 → x = -c/a")
        print("Ответ: x = {}".format(sp.simplify(x_sol)))
        return

    if deg == 2:
        # квадратное уравнение: a*x^2 + b*x + c = 0
        poly = sp.Poly(sp.expand(expr), x)
        a = poly.coeffs()[0] if poly.degree() == 2 else poly.coeffs()[0]  # корректно для deg 2
        # Более надёжно извлечём коэффициенты
        a = poly.coeff_monomial(x**2)
        b = poly.coeff_monomial(x)
        c = poly.coeff_monomial(1)

        print("Шаг 3. Коэффициенты: a = {}, b = {}, c = {}".format(a, b, c))

        if a == 0:
            print("Уравнение не является квадратным (a=0). Перепроверьте форму.")
            return

        D = sp.simplify(b**2 - 4*a*c)
        print("Шаг 4. Дискриминант: D = b^2 - 4ac = {}".format(D))

        sqrtD = sp.sqrt(D)
        x1 = (-b - sqrtD) / (2*a)
        x2 = (-b + sqrtD) / (2*a)

        print("Шаг 5. Корни: x1 = (-b - sqrt(D)) / (2a) = {}".format(sp.simplify(x1)))
        print("Шаг 6.            x2 = (-b + sqrt(D)) / (2a) = {}".format(sp.simplify(x2)))
        return

    # Не реализовано более высокие степени
    print("Решение для степеней выше 2 не реализовано в этом примере.")
    return

if __name__ == "__main__":
    print("Введите уравнение. Примеры:\n 2*x + 5 = 15\n 2*x**2 - 3*x - 2 = 0")
    problem = input("Уравнение: ")
    step_by_step_solve(problem)

Как использовать

  • Сохраните файл как solve_step_by_step.py.
  • Установите SymPy: pip install sympy.
  • Запустите: python solve_step_by_step.py
  • Введите уравнение, например:
    • 2*x + 5 = 15
    • 2x**2 - 3x - 2 = 0

Примечания

  • Код печатает пошаговое объяснение на русском языке.
  • Это базовый пример для линейных и квадратных уравнений. Для более сложных задач можно расширять парсер и логику. Если задача другая или требуется другой уровень сложности, скажите параметры задачи — адаптирую решение.