Чтобы построить кривую, необходимо указать список значений x и список соответствующих значений y.
Numpy имеет удобный способ создания списка значений x от x1 до x2: например, np.linspace(x1, x2, 200)
, чтобы иметь список из 200 значений. Затем Numpy вещания и векторизации могут компактно создать полный список значений y: y = f(x)
Обратите внимание, что в ваших формулах для расширения Тейлора вам понадобится значение производных на x - x1
, а не на x1 - x2
. Первый член является постоянным, со значением в x1. Второй член также имеет правильную касательную. Третий член регулирует кривизну.
Вот код, с которого можно начать.
import matplotlib.pyplot as plt
import numpy as np
A = 4
B = 0.3
x1 = -9
x2 = 8
a0 = A*np.cos(B*(x1))
a1 = ((-A)*B)*np.sin(B*(x1))
a2 = ((-A)*(B**2))*np.cos(B*(x1))
x = np.linspace(x1, x2, 200)
data1 = (((a0)*((x-x1)**0))/np.math.factorial(0))
data2 = data1 + (((a1)*((x-x1)**1))/np.math.factorial(1))
data3 = data2 + (((a2)*((x-x1)**2))/np.math.factorial(2))
plt.figure()
plt.plot(x, data1, label="1. term" ,color="crimson")
plt.plot(x, data2, label="2. term", color="gold")
plt.plot(x, data3, label="3. term", color="limegreen")
plt.plot(x, A*np.cos(B*x), label="A·cos(B·x)", color="dodgerblue", ls='--')
plt.xlabel("x")
plt.ylabel("y")
plt.axis([-10,10,-10,10])
plt.legend()
plt.show()