6

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

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

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

4

2 回答 2

4

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

sqrt((c-x)^2 + (d-a^(k^(bx)))^2)

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

重复你的每个点。

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

dist(x)/dx = 2(b * lna * lnk * k^(bx) * a^(k^(bx)) * (a^(k^(bx)) - d) - c + x)
于 2013-01-25T22:33:51.427 回答
0

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

为此,您可以使用:
Simplex method
Nelder_Mead_method
gradient_descent

此方法在Solver FoundationNMath等许多库中实现。

于 2013-01-25T22:38:15.787 回答