如何确定多项式曲线在区间[a,b]下是否是单调的?

时间:2009-11-02 10:09:16

标签: math graphics geometry


如果我得到了多项式曲线,我想通过编程找到所有单调曲线段和相应的区间 什么是最好的方法...
我想避免像f'(x)= 0那样求解方程;
使用一些很好的数字方法,比如双截面,是首选 f'(x)表达式可用。

感谢。

添加其他详细信息。例如,我在2d空间得到一条曲线,其多项式是

x:f(t) y:g(t)

t是[0,1]

所以,如果我想得到它的单调曲线段,我必须知道它的切线向量为(1,0)的位置。

解决此问题的一种直接方法是设置方程“f'(x)= 0”。

但我想用最有效的方法来做到这一点。

例如,我尝试使用递归方式来查找它。 将范围[0,1]除以四个部分,并检查矢量(1,0)上的四个切线投影是否在同一方向,两个点是否足够接近。如果没有,继续将范围分成4个部分,直到它们在(1,0)和(0,1)中的方向相同,并且足够接近。

3 个答案:

答案 0 :(得分:6)

我认为你必须使用数值方法找到f'(x)的根源(随意实现你想要的任何root-seeking algorithm,维基百科有一个列表)。根将是梯度达到零的那些点;比如x1,x2,x3。

然后你有一组区间(-inf,x1)(x1,x2)等,多项式的连续性确保梯度在一对特定点之间总是正的或总是负的。

因此,在每个区间内的某个点评估渐变符号将告诉您该区间是否单调增加。如果你不关心“严格”增加的部分,你可以将具有正梯度的相邻间隔拼接在一起(因为拐点将显示为f'(x)= 0根之一)。

答案 1 :(得分:1)

作为计算f'根的替代方法,您还可以使用Sturm Sequences

它们允许计算间隔中的根数(这里是f'的根)。

答案 2 :(得分:0)

单色曲线段由f'(x)的根分隔。您可以使用Newton's method等迭代算法找到根。