Как отрисовать функцию используя mathplotlib?

На вход подается функция y=x/cos(x), я новичок в программировании и не могу понять, почему график выглядит не естественно, думал что проблема в том, какой шаг по оси х я задаю, пробовал np.linspace и np.arrange, но все равно не смог разобраться в проблеме. Также пробовал использовать либу scipy, а конкретно метод interp1d, но все равно ничего не вышло

import matplotlib.pyplot as plt
import numpy as np


x = np.linspace(-np.pi,np.pi,100)
y = x/np.cos(x)

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.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')


plt.plot(x, y, 'b')
plt.show()

Вот такой график получился у меня

А вот как он выглядит на самом деле


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

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

У вас функция с разрывами. Попробуйте так:

import matplotlib.pyplot as plt
import numpy as np


x = np.linspace(-30,30,100000)
y = x/np.cos(x)

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.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.set_ylim([-100,100])


plt.plot(x, y, '.b', markersize=1)
plt.show()

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

→ Ссылка