求点到曲线的最短距离 垂直逼近算法

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做一条垂直线,此垂点为下一个假定切点再迭代下去,直到最后此垂直点越来越接近曲线。然后直到曲线上,那么此点位真实的切点。

求得的距离为最短距离

 

这里不适合多个垂直的情况。。。针对此情况很简单比较下就行了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值