Я вижу две проблемы, ошибка, которую вы видите, связана с тем, что ваша переменная p
находится внутри одного списка элементов, так что вы можете просто распаковать ее.
Вторая проблема заключается в том, что t
и p
имеют разную длину, я не уверен, как это исправить, не зная вашей цели.
import numpy as np
import matplotlib.pyplot as plt
def g(x):
return x * np.sin(1/x)
x = np.linspace(-1, 1, 30)
y = g(x)
t = np.linspace(np.min(x), np.max(x), 100)
p = np.array([g(x) for i in range(len(t))])[0]
xx = np.linspace(np.min(x), np.max(x), 100)
yy = g(xx)
plt.figure(1)
print('t')
print(t)
print('p')
print(p)
p1, = plt.plot(x, y, 'ro', label='Data points')
p2, = plt.plot(t, p, 'g--', label='Approx')
p3, = plt.plot(xx, yy, 'blue', label='Real')
plt.legend(handles=[p1, p2, p3], loc='best')
plt.xlabel('t')
plt.ylabel('g(x)')
plt.grid(True)
plt.show()