从点到此曲线的最短距离

我需要找到多个点到forms曲线的距离: f(x) = a^(k^(bx))

我的第一个选择是使用它的导数,使用带有导数倒数的forms的线,给出Point坐标并将其与原始曲线相交。 最后,我们用简单几何计算点之间的距离。

那是我经常遵循的数学过程。 我需要节省时间(因为我正在做遗传算法程序)所以我需要一种有效的方法来做到这一点。 想法?

点(c,d)与曲线之间的距离是函数的最小值

 sqrt((cx)^2 + (da^(k^(bx)))^2) 

为了找到它的最小值,我们可以忘记sqrt并查看一阶导数。 找出它的0(它必须是最小距离,因为没有最大距离)。 这将为您提供曲线上最近点的x坐标。 要获得距离,你需要计算y坐标,然后计算到点的距离(你可以只计算那个x处的距离函数,它是一样的)。

重复每个要点。

不幸的是,距离函数的一阶导数是一种婊子。 使用Wolfram的派生程序 ,结果是有希望的 (如果我没有做出任何复制错误):

 dist(x)/dx = 2(b * lna * lnk * k^(bx) * a^(k^(bx)) * (a^(k^(bx)) - d) - c + x) 

要找到从点到曲线的距离,这不是一项简单的任务,因为您需要找到函数的全局 在此处输入图像描述 其中f(x)是决定曲线的函数。

为了这个目标,你可以使用:
单纯形法
Nelder_Mead_method
梯度下降

这个方法在许多库中实现,如Solver Foundation , NMath等。