Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2022, 23:35   #1
himecu
Пользователь
 
Регистрация: 09.12.2021
Сообщений: 32
По умолчанию Кусочно-линейная функция

нужно построить график функции
Снимок.PNG
Код:
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))
можете подсказать в чем может быть проблема,что идет неправильно вывод графика кусочно-линейной функции?
himecu вне форума Ответить с цитированием
Старый 03.04.2022, 09:09   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Интернет подсказал вставлять nan для разрыва графика:
Код:
import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(-10, 15, 2000)
y = np.piecewise(x,
    [
        (-10 <= x) & (x < -5),
        (-5 <= x) & (x < -3),
        (-3 <= x) & (x < -2),
        (-2 <= x) & (x < 2),
        (2 <= x) & (x < 8),
        (8 <= x) & (x <= 15)
    ], 
    [
        lambda x : -8 * x - 7, 
        lambda x : -6 * x + 3,
        lambda x : -5 * x + 6,
        lambda x : -2 * x + 11,
        lambda x : 0.5 * x + 6,
        lambda x : 5 * x + 30
    ]
)

pos = np.where(np.abs(np.diff(y)) >= 0.5)[0] + 1
x = np.insert(x, pos, np.nan)
y = np.insert(y, pos, np.nan)

plt.plot(x, y)
plt.show()
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
“Кусочно-линейная и квадратичная интерполяция. Глобальная интерполяция ”. KennyMc Помощь студентам 0 17.04.2012 16:48
Разработать программу “Кусочно-линейная и квадратичная интерполяция. Глобальная интерполяция ”. KennyMc Помощь студентам 0 10.04.2012 16:41
На C++ Разработать программу “Кусочно-линейная и квадратичная интерполяция. Глобальная интерполяция”. KennyMc Помощь студентам 0 26.02.2012 12:08
кусочно-линейная аппроксимация SAMOUCHKA Общие вопросы C/C++ 5 01.11.2011 09:36