Обычно не гарантируется, что массив тэта-значений действительно содержит значение, которое вы хотите запросить.В качестве примера рассмотрим
theta = np.array([1,2,3,4])
r = np.array([8,7,6,5])
Теперь вы хотите узнать значение r в theta0 = 2.5
, но, поскольку это значение не является частью theta
, оно не имеет соответствующего значения в r
.
Таким образом, вы можете решить найти значение r в тэте, которое следует после theta0
, в этом случае 3 - это следующее значение в тета после 2,5, поэтому вы можете искать r == 6,
theta0 = 2.5
print(r[np.searchsorted(theta, theta0)]) # prints 6
Или, возможно, вы захотите интерполировать значения r на тета, в этом случае 2,5 находится на полпути между 2 и 3, поэтому вы ищете 6,5, что на полпути между 7 и 6,
theta0 = 2.5
print(np.interp(theta0, theta, r)) # prints 6.5
Или, в более общем смысле, у вас есть фактическая функция, которая определяет r(theta)
.Здесь
theta = np.array([1,2,3,4])
rf = lambda x: -x + 9
r = rf(theta)
print(r) # prints [8,7,6,5]
print(rf(theta0)) # prints 6.5
Последний случай для вашего примера будет выглядеть как
theta = np.linspace(0, 2*np.pi, 3001)
# Writing the equation
r = lambda theta: 5*np.cos(64*theta)
ax1 = plt.subplot(111, polar=True)
ax1.plot(theta, r(theta), label='CURVE 4: r = 5cos(64θ), [0, 2π)')
print(r(np.pi/2)) # prints 5
plt.show()