Что значит ошибка "only size-1 arrays can be converted to Python scalars"?

import matplotlib.pyplot as plt \
import numpy as np\
x = np.linspace(0, math.pi, 100)\

n=100\
k0=21

y1 = np.sin(x)                        # y1 - тоже много точек\
y2 = np.sin(x)+(np.cos(n*x)/n)*((x-((k0+0.5)*math.pi)/n)/(math.fabs((x-((k0+0.5)*math.pi)/n))))\
y3 = 6*x + 10

fig, ax = plt.subplots()                        # будет 1 график, на нем:\
plt.ylim(0, 2)\
ax.plot(x, y1, color="blue", label="y(x)")      # функция y1(x), синий, надпись y(x)\
ax.plot(x, y2, color="red", label="y'(x)")      # функция y2(x), красный, надпись y'(x)\
ax.plot(x, y3, color="green", label="y''(x)")   # функция y3(x), зеленый, надпись y''(x)\
ax.set_xlabel("x")                              # подпись у горизонтальной оси х\
ax.set_ylabel("y")                              # подпись у вертикальной оси y\
ax.legend()                                     # показывать условные обозначения

plt.show()    

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

Не могу разобраться, из-за чего не работает программа.


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

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

Модуль math умеет работать только со скалярными значениями, поэтому замените вызов math.fabs() на np.abs(). Да и math.pi лучше заменить на np.pi, тогда вам вообще не нужно будет импортировать модуль math.

→ Ссылка