1 回答

TA贡献1874条经验 获得超12个赞
通常不能保证 theta 值数组实际上包含您要查询的值。作为一个例子考虑
theta = np.array([1,2,3,4])
r = np.array([8,7,6,5])
现在您想知道 r at 的值theta0 = 2.5,但由于该值不是它的一部分,theta因此在 中没有对应的值r。
因此,您可能决定在 之后的 theta 处找到 r 的值theta0,在这种情况下,3 是 2.5 之后 theta 中的下一个值,因此您可能正在寻找 r == 6,
theta0 = 2.5
print(r[np.searchsorted(theta, theta0)]) # prints 6
或者您可能想要在 theta 上插入 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()
添加回答
举报