利用Matlab寻找曲线的拐点

参考文章:数学的凸凹性和拐点(数学知识:了解如何寻找曲线的拐点)

详细的:对函数求二阶导数,判断二阶导数的值,

如果二阶导数为常数恒大于零-------------则在定义域内是上凹的,不存在拐点。

                           常数恒小于零------------则为下凹的,不存在拐点。

                          如果为多项式-----------则判断多项式等于零时,x的值,根据x值进行分段,判断每段的凹凸性。

遇到的问题:离散的值如何求拐点?



Matlab中diff函数的用法

diff(X,2)是对函数X求二阶倒数,也就是用于求拐点和判断凹凸性的。
所做的实验:
我们首先设定函数定义域:
x∈[-10,10],步长为0.1
  即程序:x=-10:0.1:10;
                  y=x.^3-12*x.^2;   % 因为是序列(矩阵),所以要加上个点
                  Y=diff(y,2);          %求二阶倒数
                   [I,J]=find(abs(Y)<0.001);  %找出二阶导数为零的在序列中的位置

实际上,我们通过计算,该函数的拐点为x=4,y=-128.


x的值是这样求得的:x=-10+0.1*140=4.

则,y=4^3-12*4^2=-128. 

结论是利用该方法求曲线的观点是可行的。




你可能感兴趣的:(利用Matlab寻找曲线的拐点)