Кусочно-линейная функция

нужно построить график кусочно-линейной функции

можете подсказать в чем может быть проблема,что идет неправильно вывод графика кусочно-линейной функции?

import numpy as np
from matplotlib import pyplot as plt
x=float(input("enter x="))
def func(x):
  if -10<=x<-5:
    return -8*x-7
  elif -5<=x<-3:
    return -6*x+3
  elif -3<=x<-2:
    return -5*x+6
  elif -2<=x<2:
    return -2*x+11
  elif 2<=x<8:
    return 0.5*x+6
  elif 8<=x<=15:
    return 5*x+30
x=np.linspace(-10,15,200)
y = np.vectorize(func, otypes=[float])#возвращает ссылку на "векторизированную" функцию. 
graph1 = plt.plot(x, y(x))

а вот что он должен выводить какой график: введите сюда описание изображения


Ответы (1 шт):

Автор решения: MarianD

Когда ваша проблема заключается в том, что функция прерывна, но график непрерывный, вы можете нарисовать две частичные функции в тот же самую систему координат (объект типа axes)

Замените последние 3 строки вашей программы на

y = np.vectorize(func)             # возвращает ссылку на "векторизированную" функцию. 

__, ax = plt.subplots()            # __ вместо fig, т.к. это имя дальше не используется

x = np.linspace(-10, 7.999, 200)   # Первый интервал
ax.plot(x, y(x), color="b")

x = np.linspace(8, 15, 200)        # Второй интервал
ax.plot(x, y(x), color="b")    

введите сюда описание изображения

→ Ссылка