Минимальное расстояние между точкой и полиномиальной кривой - PullRequest
0 голосов
/ 18 апреля 2020

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

Получившийся сюжет:

The resulting plot

...