Вопрос от Анонимного юзера 04 октября 2025 11:03
3.3 Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика. Параметры, необходимые для решения задания следует получить из графика и определить в программе в питоне
Ответ нейросети
04 октября 2025 11:03
Ниже подробное решение с пояснениями. Так как график к задаче не приложен, привожу общую схему и готовый шаблон коду, который вы заполняете параметрами вашего графика из графика.
Цель: понять, как по введённому аргументу x вычислять y по функции, заданной графиком.
- Как определить параметры графика из самого графика
- Определите область определения (домен): какие диапазоны x заданы на графике.
- Разделите график на участки, на каждом участке функция является простой формулой (чаще всего линейной: y = mx + b; или кусочно-постоянной; реже квадратичной и т.д.).
- Для каждого участка найдите концы сегмента: (x1, y1) и (x2, y2). По ним можно вычислить наклон m = (y2 − y1) / (x2 − x1) и перехват b = y1 − m*x1.
- Учтите особые случаи: прерывания графика (заданный undefined), вертикальные асимптоты не подходят под функцию y = f(x) — такие x следует помечать как undefined.
- Как это реализовать в Python (шаблон)
- Вы создаёте список сегментов графика. Каждый сегмент описывается началом и концом по x и двумя точками графика (или уже рассчитанными коэффициентами прямой).
- Затем реализуете функцию evaluate(x), которая находит нужный сегмент по диапазону x и вычисляет y по формуле этого сегмента.
- При попытке вычислить вне области определения возвращаете undefined.
- Пример: график из трёх линейных сегментов (для примера; вы заполните параметры исходя из вашего графика)
- Сегмент 1: x от -5 до -1, прямая через (-5, 2) и (-1, -2). Это y = -x - 3.
- Сегмент 2: x от -1 до 3, прямая через (-1, -2) и (3, 4). Это y = 1.5x - 0.5.
- Сегмент 3: x от 3 до 7, прямая через (3, 4) и (7, 0). Это y = -x + 7.
И температура кода:
# Шаблон: заполняете сегменты по вашему графику
# Список сегментов: каждый сегмент описан границами по x и двумя точками графика
segments = [
{"xmin": -5.0, "xmax": -1.0, "x1": -5.0, "y1": 2.0, "x2": -1.0, "y2": -2.0},
{"xmin": -1.0, "xmax": 3.0, "x1": -1.0, "y1": -2.0, "x2": 3.0, "y2": 4.0},
{"xmin": 3.0, "xmax": 7.0, "x1": 3.0, "y1": 4.0, "x2": 7.0, "y2": 0.0},
]
# Предвычисляем коэффициенты каждой прямой y = m*x + b
for s in segments:
dx = s["x2"] - s["x1"]
dy = s["y2"] - s["y1"]
if dx != 0:
s["m"] = dy / dx
s["b"] = s["y1"] - s["m"] * s["x1"]
else:
s["m"] = None # вертикальный участок, не подходит для y=f(x)
s["b"] = None
def evaluate(x):
# ищем подходящий сегмент по x
for s in segments:
if s["xmin"] <= x <= s["xmax"]:
if s["m"] is None:
return None # undefined для данного x
return s["m"] * x + s["b"]
return None # вне области определения
def main():
import sys
# Ввод x: можно из аргументов или через input
if len(sys.argv) > 1:
x = float(sys.argv[1])
else:
x = float(input("Введите x: "))
y = evaluate(x)
if y is None:
print("undefined")
else:
print(y)
if __name__ == "__main__":
main()
- Как заполнять параметры под ваш график
- В сегментах укажите xmin, xmax — диапазоны по оси x, на которых график задаёт однозначную y.
- Укажите x1, y1 и x2, y2 — две соседние точки на этом участке. По ним вычисляйте m и b.
- При необходимости добавляйте дополнительные сегменты, если график имеет больше точек разрыва или кусочно-постоянную часть.
- Если на графике есть участки, где функция не определена (прерывания, разрывы), пометьте такие участки и верьте evaluate(x) возвращать undefined для этих x.
- Советы по тестированию
- Проверьте граничные точки сегментов: x = xmin и x = xmax должны давать корректные y и не прыгать между сегментами.
- Протестируйте значения из примеров графика, которые вы видели на рисунке.
- Попробуйте ввести x за пределами области: ожидаемо — undefined.
- Если график слишком сложный (много сегментов или сложная функция), можно сначала собрать набор узлов графика (точки на графике) и строить линейную интерполяцию между ними (практически аналогично текущему шаблону, только сегменты создаются из соседних точек).
- Расширенный вариант (безопасно без ручного заполнения)
- Если у вас есть набор точек графика {(x0,y0), (x1,y1), …} упорядоченный по x, можно сделать линейную интерполяцию между соседними точками. Это тоже реальная функция, приближённая по графику.
- В Python можно реализовать через простой поиск нужного интервала и линейную интерполяцию между соседними точками, или воспользоваться numpy.interp/numpy/ scipy, но требуются дополнительные зависимости.
Если пришлёте сам график (или хотя бы координаты ключевых точек и точки разрыва), я помогу выписать точные сегменты и приведу готовый код под ваш конкретный график.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



