Вопрос от Анонимного юзера 31 августа 2025 06:35
Дай код
Ответ нейросети
31 августа 2025 06:35
Ниже готовый готовый шаблон кода на Python для пошагового решения типичных задач средней школы. Он включает решения по:
- линейному уравнению вида a*x + b = c (с пошаговым объяснением),
- квадратному уравнению вида ax^2 + bx + c = 0 (с дискриминантом и корнями),
- системе двух линейных уравнений вида a1x + b1y = c1 и a2x + b2y = c2 (через правило Крамера).
Пример кода написан так, чтобы можно было вставлять его в файл и запускать. Также есть примеры использования в конце.
Code (Python):
import math
from typing import List, Tuple, Union
def solve_linear_steps(a: float, b: float, c: float) -> Tuple[str, Union[float, str]]:
"""
Решает линейное уравнение a*x + b = c и возвращает:
- подробные шаги как строку
- решение x или описание случая (нет решений / бесконечно много решений)
"""
steps = []
steps.append(f"Дано линейное уравнение: {a}*x + {b} = {c}")
if a != 0:
steps.append(f"1) Вычитаем b из обеих частей: {a}*x = {c} - {b} = {c - b}")
steps.append(f"2) Делим обе части на a: x = ({c} - {b}) / {a} = { (c - b) / a }")
x = (c - b) / a
return "\n".join(steps), x
else:
# a == 0 -> простое сокращение: b = c
steps.append("0) Так как коэффициент при x равен 0, переобозначим: 0*x + b = c -> b = c.")
if b == c:
steps.append("Равенство верно независимо от x: бесконечно много решений.")
return "\n".join(steps), "infinitely many solutions"
else:
steps.append("Равенство неверно: нет решений.")
return "\n".join(steps), "no solution"
def solve_quadratic_steps(a: float, b: float, c: float) -> Tuple[str, Union[List[float], str]]:
"""
Решает квадратное уравнение a*x^2 + b*x + c = 0 и возвращает:
- подробные шаги как строку
- список корней (могут быть вещественные или комплексные) или сообщение об отсутствии вещественных корней
"""
steps = []
steps.append(f"Дано квадратное уравнение: {a}*x^2 + {b}*x + {c} = 0")
if a == 0:
# Приводим к линейному виду b*x + c = 0
if b != 0:
x = -c / b
steps.append(f"Так как a = 0, уравнение становится линейным: {b}*x + {c} = 0")
steps.append(f"x = -c / b = {-c} / {b} = {x}")
return "\n".join(steps), [x]
else:
if c == 0:
steps.append("Уравнение 0 = 0: бесконечно много решений.")
return "\n".join(steps), "infinitely many solutions"
else:
steps.append("Уравнение противоречиво: нет решений.")
return "\n".join(steps), []
# Дискриминант
D = b*b - 4*a*c
steps.append(f"Вычислим дискриминант: D = b^2 - 4*a*c = {b}^2 - 4*{a}*{c} = {D}")
if D < 0:
steps.append("D < 0: вещественных корней нет. Есть комплексные корни.")
sqrtD = complex(0, math.sqrt(-D))
x1 = (-b - sqrtD) / (2*a)
x2 = (-b + sqrtD) / (2*a)
return "\n".join(steps), [x1, x2]
elif D == 0:
x = -b / (2*a)
steps.append(f"D = 0: единственный корень x = -b / (2a) = {-b} / (2*{a}) = {x}")
return "\n".join(steps), [x]
else:
sqrtD = math.sqrt(D)
x1 = (-b - sqrtD) / (2*a)
x2 = (-b + sqrtD) / (2*a)
steps.append(f"D > 0: два корня x1 = (-b - sqrt(D)) / (2a) = {x1}, x2 = (-b + sqrt(D)) / (2a) = {x2}")
return "\n".join(steps), [x1, x2]
def solve_system_steps(a1: float, b1: float, c1: float, a2: float, b2: float, c2: float) -> Tuple[str, Union[Tuple[float, float], str]]:
"""
Решает систему: a1*x + b1*y = c1 ; a2*x + b2*y = c2
Возвращает шаги и решение (x,y) или сообщение об отсутствии/единственности решения.
"""
steps = []
steps.append("Даны две линейные зависимости:")
steps.append(f"a1*x + b1*y = c1 -> {a1}*x + {b1}*y = {c1}")
steps.append(f"a2*x + b2*y = c2 -> {a2}*x + {b2}*y = {c2}")
D = a1*b2 - a2*b1
steps.append(f"Определитель D = a1*b2 - a2*b1 = {D}")
if D == 0:
# Система несовместна или не имеет единственного решения
Dx = c1*b2 - c2*b1
Dy = a1*c2 - a2*c1
if Dx == 0 and Dy == 0:
steps.append("Система совместна и имеет бесконечно много решений (зависимая).")
return "\n".join(steps), "infinitely many solutions"
else:
steps.append("Система несовместна: решений нет.")
return "\n".join(steps), "no solution"
else:
Dx = c1*b2 - c2*b1
Dy = a1*c2 - a2*c1
x = Dx / D
y = Dy / D
steps.append(f"По кр Problem: x = Dx/D, y = Dy/D, где Dx = {Dx}, Dy = {Dy}")
steps.append(f"Итого: x = {Dx}/{D} = {x}, y = {Dy}/{D} = {y}")
return "\n".join(steps), (x, y)
# Примеры использования
if __name__ == "__main__":
# Пример 1: линейное уравнение 2x + 3 = 7
steps_str, solution = solve_linear_steps(2, 3, 7)
print("Линейное уравнение 2x + 3 = 7")
print(steps_str)
print("Решение:", solution)
print("-" * 40)
# Пример 2: квадратное уравнение x^2 - 3x + 2 = 0
steps_q, roots = solve_quadratic_steps(1, -3, 2)
print("Квадратное уравнение x^2 - 3x + 2 = 0")
print(steps_q)
print("Корни:", roots)
print("-" * 40)
# Пример 3: система 2x + 3y = 5; 4x + y = 6
steps_s, sol = solve_system_steps(2, 3, 5, 4, 1, 6)
print("Система: 2x + 3y = 5; 4x + y = 6")
print(steps_s)
print("Решение:", sol)
Как пользоваться
- Изменяйте значения в вызовах функций в секции под if name == "main": чтобы подставлять свои коэффициенты.
- Функции возвращают кортеж: (строка с шагами, решение).
- Для линейного: решение x или особые случаи (нет решений / бесконечно много решений).
- Для квадратного: список корней (вещественные или комплексные) или сообщение, что корней нет.
- Для системы: пара значений (x, y) или сообщение об отсутствии/бесконечном количестве решений.
Как адаптировать под вашу задачу
- Если у вас задача с конкретным текстом, можно передать коэффициенты в функции solve_linear_steps или solve_quadratic_steps. Например, для задачи "ax + b = c" подставляете a, b, c.
- Если задача формулирована по-другому (например, система с другими коэффициентами или условиями), можно использовать соответствующую функцию: solve_system_steps(a1,b1,c1,a2,b2,c2).
Если предоставите конкретное задание (через текст или изображение), дам точный код под эту задачу вместе с пошаговым разбором.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



