Я строю функции с абсолютным значением в matplotlib, и график просто обходит вершину

#python #matplotlib #graphing #absolute-value

#python #matplotlib #построение графиков #абсолютное значение

Вопрос:

Я пытаюсь построить функцию f (X) = 2 * abs (x-2) 4, но в вершине или в точке (2,4) график просто останавливается и обходит его. Есть ли способ изменить его так, чтобы он действительно попал в точку? заранее спасибо.график, показывающий проблему

 import matplotlib.pyplot as plt 
import numpy as np 
import math

def graph(width, hight):
  x = np.linspace(-width,width)


  fig = plt.figure()
  ax = fig.add_subplot(1, 1, 1)
  ax.spines['left'].set_position('center')
  ax.spines['bottom'].set_position('center')
  ax.spines['right'].set_color('none')
  ax.spines['top'].set_color('none')
  ax.set_ylim(-hight, hight)
  ax.set_xlim(-width, width)


  # the function
  y = 2 * abs(x-2) 4



  plt.plot(x,y,)


  plt.xticks(np.arange(-width, width 1, 1.0))
  plt.yticks(np.arange(-hight, hight 1, 1.0))
  plt.grid(True)
  plt.show()

graph(10, 10)
  

«»»

Комментарии:

1. Попробуйте x = np.linspace(-width,width, 500) или около того. Чем больше число, тем больше подразделений. 500 должно быть достаточно для просмотра на экране. Значение по умолчанию равно 50, что немного мало.

Ответ №1:

Проблема для вашей цели — это ваш диапазон, с которым вы создаете linspace . Количество выборок по умолчанию равно 50 для этого метода, и они равномерно распределяются, поэтому, в зависимости от вашего width , 2 могут быть не в этом диапазоне. Используйте num аргумент (третья позиция), чтобы увеличить это значение, и оно будет выглядеть лучше, но ваше значение все равно может не находиться в диапазоне.

(Проблема в том, что вы работаете со списком чисел, вы не можете работать с бесконечным множеством).