y = ln(x) + Math.pow(x,0.000333) + Math.exp(x*x) + x *x
求 (1,2)到该曲线的最短距离。很简单就是 Math.pow((y - 2)*(y - 2) + (x-1)(x-1),0.5)
求最大值或求导无法求得此距离。或者是 (y-2)/(x-1) * y' = -1
这个时候就需要利用算法来求得此距离。
这里引入垂直逼近的概念
思想是假定一个切点与此点垂直,那么逐渐的向真的切点靠近,知道与真实切点的误差在一个很小的误差范围内
这个时候得到的此点即为 切点,求出距离很容易
具体步骤是:
假定当前点x 在曲线上的点为 假定切点,对曲线做一条切线,然后此点对x做一条垂直线,此垂点为下一个假定切点再迭代下去,直到最后此垂直点越来越接近曲线。然后直到曲线上,那么此点位真实的切点。
求得的距离为最短距离
这里不适合多个垂直的情况。。。针对此情况很简单比较下就行了