![]() |
1
1
首先,我将解释我的思维过程。如果我有误解,请让我知道,我会更新我的答案。曲线y=e^x的斜率dy/dx是dy/dx=e^x,是x对所有实x的单调递增函数。函数从来没有一个点成为线性,虽然它有一条水平渐近线(y=0),但没有垂直渐近线。 我认为你想要的是在斜率首先大于某个截止值m*的点上的切线方程。在这一点之后,就你的意图和目的而言,y=e^x的图形“也可能”是一条直线。 因此,我们必须首先求解方程m*=dy/dx=e^x,对于m*出现的x。e ^ x的范围都是正实数,并且e ^ x是单调递增的,因此任何正实数m*都将具有唯一解x*。实际上,x*=ln(m*)。我们的切线将通过点(x*,e^x*)并具有斜率m*。回想一下,m*=e^x*,因此点是(ln(m*),m*),斜率是m*。 用一个点和斜率,我们可以算出一条直线的方程。我们得到从给定点到任何其他点的斜率必须是m*;所以,(y-y*)/(x-x*)=m*。重新排列,(y-y*)=m*(x-x*),y=m x-m x*+y*,最后y=m x+(y -m x )=米 x+(m -m ln(m) )). 因此,Y截距为(m*-m) ln(m) )). 我们可以通过设置y=0并求解X:0=m来获得X截距 x+(m -m ln(m) )),米 x=m ln(m*)-m*,x=ln(m*)-1。 总之:
如果曲线在编译时已知,我建议对导数和任何渐近线的闭合形式解析解进行硬编码。如果函数直到运行时才知道,则可以使用多种方法在数值上近似给定点的导数。直观地说,当d接近零时,将导数定义为(f(x+d)-f(x))/d的极限,可以用于找到导数(可能)存在的导数的近似值。对于性能良好的分析函数,除非在特殊情况下,否则通常是安全的。 如果函数的导数是单调非递减的,如本例所示,则可以使用近似(如上所述)结合类似于二进制搜索的方法,找到函数斜率满足或超过某个截止点的点(如果有)。从一个值开始,例如x=0,然后通过一些乘法递增因子增加或减少x,直到通过目标。现在,根据可以找到目标的x值的界限,检查范围的中间部分,然后递归地检查左半部分或右半部分,直到找到合适的好x*。 |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |