在网上搜索时,我发现可以采用scipy.optimize.minimize_scalar
来最小化距离函数。这个问题不应该很难,但是,优化过程似乎并不起作用。
当我在位于多项式上的优化点和我选择的随机点之间绘制矢量时,优化只会返回诸如矢量将是水平或垂直的点,并且距离不会被优化。
这是我尝试过的:
P = (250,7)
def f(x):
return 7.905e-07*x**(3)-0.0009478*x**(2)+0.381*x-44.34
def obj(x):
y = f(x)
return np.sqrt((x - P[0])**2 + (y - P[1])**2)
ris = minimize_scalar(obj)
x = np.linspace(0,450)
plt.plot(x,f(x))
plt.scatter(P[0],P[1])
plt.ylim(bottom=0)
plt.plot([P[0],ris.x],[P[1],f(ris.x)])
plt.grid()
结果图: