Поиск в Интернете Я обнаружил, что есть возможность минимизировать функцию расстояния, приняв 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()
Получившийся сюжет: