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

3.3 Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика. Параметры, необходимые для решения задания следует получить…

Запрос пользователя

3.3 Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика. Параметры, необходимые для решения задания следует получить из графика и определить в программе в питоне

Ответ нейросети
04 октября 2025 11:03

Ниже подробное решение с пояснениями. Так как график к задаче не приложен, привожу общую схему и готовый шаблон коду, который вы заполняете параметрами вашего графика из графика.

Цель: понять, как по введённому аргументу x вычислять y по функции, заданной графиком.

  1. Как определить параметры графика из самого графика
  • Определите область определения (домен): какие диапазоны x заданы на графике.
  • Разделите график на участки, на каждом участке функция является простой формулой (чаще всего линейной: y = mx + b; или кусочно-постоянной; реже квадратичной и т.д.).
  • Для каждого участка найдите концы сегмента: (x1, y1) и (x2, y2). По ним можно вычислить наклон m = (y2 − y1) / (x2 − x1) и перехват b = y1 − m*x1.
  • Учтите особые случаи: прерывания графика (заданный undefined), вертикальные асимптоты не подходят под функцию y = f(x) — такие x следует помечать как undefined.
  1. Как это реализовать в Python (шаблон)
  • Вы создаёте список сегментов графика. Каждый сегмент описывается началом и концом по x и двумя точками графика (или уже рассчитанными коэффициентами прямой).
  • Затем реализуете функцию evaluate(x), которая находит нужный сегмент по диапазону x и вычисляет y по формуле этого сегмента.
  • При попытке вычислить вне области определения возвращаете undefined.
  1. Пример: график из трёх линейных сегментов (для примера; вы заполните параметры исходя из вашего графика)
  • Сегмент 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()
  1. Как заполнять параметры под ваш график
  • В сегментах укажите xmin, xmax — диапазоны по оси x, на которых график задаёт однозначную y.
  • Укажите x1, y1 и x2, y2 — две соседние точки на этом участке. По ним вычисляйте m и b.
  • При необходимости добавляйте дополнительные сегменты, если график имеет больше точек разрыва или кусочно-постоянную часть.
  • Если на графике есть участки, где функция не определена (прерывания, разрывы), пометьте такие участки и верьте evaluate(x) возвращать undefined для этих x.
  1. Советы по тестированию
  • Проверьте граничные точки сегментов: x = xmin и x = xmax должны давать корректные y и не прыгать между сегментами.
  • Протестируйте значения из примеров графика, которые вы видели на рисунке.
  • Попробуйте ввести x за пределами области: ожидаемо — undefined.
  • Если график слишком сложный (много сегментов или сложная функция), можно сначала собрать набор узлов графика (точки на графике) и строить линейную интерполяцию между ними (практически аналогично текущему шаблону, только сегменты создаются из соседних точек).
  1. Расширенный вариант (безопасно без ручного заполнения)
  • Если у вас есть набор точек графика {(x0,y0), (x1,y1), …} упорядоченный по x, можно сделать линейную интерполяцию между соседними точками. Это тоже реальная функция, приближённая по графику.
  • В Python можно реализовать через простой поиск нужного интервала и линейную интерполяцию между соседними точками, или воспользоваться numpy.interp/numpy/ scipy, но требуются дополнительные зависимости.

Если пришлёте сам график (или хотя бы координаты ключевых точек и точки разрыва), я помогу выписать точные сегменты и приведу готовый код под ваш конкретный график.