求曲线的凹凸区间及拐点

Python071

求曲线的凹凸区间及拐点,第1张

一、(1)y'=4-2x,y''=4>0,因此函数在R上恒为下凸函数

(2)y'=arctanx+x/(1+x^2),y''=1/(1+x^2) + [(1+x^2)-2x^2]/(1+x^2)^2

=2/(1+x^2)^2 >0,因此函数在 R 上恒为下凸函数

二、(1)y'=3x^2-10x+3,y''=6x-10,令 y''>0 得 x>5/3,令 y''<0 得 x<5/3,

所以函数在(-∞,5/3)上为上凸函数,在(5/3,+∞)上为下凸函数,

拐点为(5/3,20/27)。

(2)y' = 2x/(x^2+1),y '' = [2(x^2+1)-2x*2x]/(x^2+1)^2=2(1-x^2)/(1+x^2)^2,

令 y ''>0 得 -1<x<1,令 y''<0 得 x<-1 或 x>1,

因此函数在(-∞,-1)上为上凸函数,在(-1,1)上为下凸函数,在(1,+∞)上为上凸函数,

拐点为(-1,ln2)和(1,ln2)。

例如:

y=x^4-6x²-5

y'=4x³-12x

y"=12x-12

=12(x-1)

y">0,x>1

凹区间:(1,+∞)

y"<0,x<1

凸区间:(-∞,1)

y"=0,x=1

y=1-6-5=-10

拐点:(1,-10)

y=2x/(1+x²)

y'=[2(1+x²)-2x(2x)]/(1+x²)²

=2(1-x²)/(1+x²)²

y"=2[(-2x)(1+x²)²-2(1-x²)(1+x²)(2x)]/(1+x²)^版4

=2[-2x-2x³-4x+4x³]/(1+x²)³

=4x(x²-3)/(1+x²)³

=4x(x+√权3)(x-√3)/(1+x²)³

y">0,-√3<x<0或x>√3

凹区间:(-√3,0)U(√3,+∞)

凸区间:(-∞,-√3)U(0,√3)

y"=0

x=-√3,y=-√3/2

x=0,y=0

x=√3,y=√3/2

拐点:(-√3,-√3/2),(0,0),(√3,√/2)

扩展资料:

可以按下列步骤来判断区间I上的连续曲线y=f(x)的拐点

⑴求f''(x);

⑵令f''(x)=0,解出此方程在区间I内的实根,并求出在区间I内f''(x)不存在的点;

⑶对于⑵中求出的每一个实根或二阶导数不存在的点,检查f''(x)在左右两侧邻近的符号,那么当两侧的符号相反时,点(,f())是拐点,当两侧的符号相同时,点(,f())不是拐点。

参考资料来源:百度百科-拐点

我个人的倾向是在物理意义上这条曲线没有确定的方程, 因为从从图形上介于周期和随机之间, 更近于随机. 求方程的意义不仅仅在于可以满足目前数据, 还能预测未来数据. 你可以通过拟合得到一些似乎正确的方程, 但是这个方程可能仅仅是看起来能和目前数据吻合, 但基本不能预测比如2016年的数据, 那么求这个方程也就没有意义了.

如果要做拟合的话:

首先要选好拟合函数, 是多项式拟合还是正弦曲线拟合(这matlab有相应的工具箱和函数库), 或者你有一个自己构思的含待定系数的函数式, 那可以用最小二乘法进行拟合. 在这里用高阶多项式拟合能对目前数据拟合得很好, 但对于一些其它点比如2016年什么的, 就乱七八糟了. 用低阶正弦拟合可以拟合个大概, 但不准确.

对于这些数据我建议还是采用统计手段, 求求平均和方差, FFT分析一下是否真的有明显的周期性啦等等.

用Matlab求拐点和凹凸区间需要使用MATLAB。

工具/原料:

联想hinkBook 14-llL

Windows10

MATLAB2.33

1、启动MATLAB,输入如下代码,求解函数曲线的一阶导数、二阶导数、拐点和拐点处的切线方程。

close allclear allclcformat compact

% MATLAB之考研数学:函数的导数和求函数在拐点处的切线方程

syms x %声明符号变量x

assume(x >0) % x的定义域大于0

y = x^2+2*log(x)%符号变量x表示的曲线函数y

d1 = diff(y,x,1) %求函数y的一阶导数

d2 = diff(y,x,2) %求函数y的二阶导数

x0 = solve(d2,0) %求二阶导数为0时的点(即拐点)

y0 = subs(y,x,x0) %拐点处的y值

k = subs(d1,x0) %拐点处的切线斜率

f = k*(x-x0)+y0 %拐点处的切线方程

%---------绘制函数曲线和切线方程的图像----------%

fplot(inline(y),,'r-')hold on

fplot(inline(f),,'k-')hold off

text(double(x0),double(y0),'\leftarrow拐点(1,1)')

xlabel('\fontsize{15}X')ylabel('\fontsize{15}Y')

legend('函数曲线y=x^2+2ln(x)','切线方程f=4x-3','Location','NorthWest')

set(gca,'FontSize',13,'TickDir','out','TickLength',)

axis fill

2、保存和运行上述脚本,在命令行窗口得到函数曲线的一阶导数为2x+2/x、二阶导数为2-2/x^2,拐点为(1,1),拐点处的切线方程为y=4x-3,与正确答案一致。

3、同时得到函数的曲线、切线方程和拐点的图像如下图,拐点为(1,1)。

4、第三步代码中,syms用于声明符号变量assume()用于设置符号变量的数学属性,比如本文assume(x>0)就是设置x为大于0的符号变量diff()用于求函数的导数,其常用的调用格式为diff(fx,x,n)。

其中fx为符号变量表示的函数,x为符号变量,n为求导的阶数,n=1表示求一阶导数,n=2表示求二阶导数。更多diff( )的用法请见MATLAB帮助文档。