极限可用于计算函数曲线的渐近线,导数可用于求函数的极值和拐点,判断函数的单调性等。下面结合一个具体的例子进行介绍。[大谦MATLAB,dqmatlab点com]
对于下面的函数
\[f(x)=\frac{3{x}^{2}+6x-1}{{x}^{2}+x-3}\]
创建该函数,使用下面的命令。
code.matlab
>> syms x
>> num = 3*x^2 + 6*x -1;
>> denom = x^2 + x - 3;
>> f = num/denom
f =
(3*x^2+6*x-1)/(x^2+x-3)
可以用下面的命令绘制函数f的图形。
code.matlab
>> ezplot(f)
结果如图3-1所示。
\[\]
图3-1 函数的图形
渐近线
求函数图形的水平渐近线,需要求x趋于正无穷时f的极限,即
code.matlab
>> limit(f, inf)
ans =
3
x趋于负无穷时的极限也是3。说明y=3就是图形的水平渐近线。
求f的垂直渐近线,使分母等于0,并用下面的命令进行求解。
code.matlab
>> roots = solve(denom)
返回方程\({x}^{2}+x-3=0\)的解:
code.matlab
roots =
- 13^(1/2)/2 - 1/2
13^(1/2)/2 - 1/2
说明垂直渐近线分别为
\(x=\frac{-1+\sqrt{13}}{2}\)和\(x=\frac{-1-\sqrt{13}}{2}\)
可以用下面的语句行绘制水平渐近线和垂直渐近线。
code.matlab
>> ezplot(f)
>> hold on
>> % 绘制水平渐近线
>> plot([-2*pi 2*pi], [3 3],'g')
>> % 绘制垂直渐近线
>> plot(double(roots(1))*[1 1], [-5 10],'r')
>> plot(double(roots(2))*[1 1], [-5 10],'r')
>> title('水平渐近线和垂直渐近线')
>> hold off
结果如图3-2所示。
\[\]
图3-2 水平渐近线和垂直渐近线
极值
从函数的图形中可以看出,在x=2和x=0之间某些地方存在局部极大值,在x=4和x=2之间的某些地方可能存在极小值。求极大值和极小值的x坐标,首先要求函数的导数。
code.matlab
>> f1 = diff(f)
fl =
(6*x + 6)/(x^2 + x - 3) - ((2*x + 1)*(3*x^2 + 6*x - 1))/(x^2 + x - 3)^2
简化该结果
code.matlab
>> f1 = simplify(f1)
f1 = -(3*x^2 + 16*x + 17)/(x^2 + x - 3)^2
输入下面的语句,可以用更好读的形式显示f1。
code.matlab
>> pretty(f1)
2
3 x + 16 x + 17
- -----------------------
2 2
(x + x - 3)
然后让导数等于0,解方程求0值点。
code.matlab
>> crit_pts = solve(f1)
crit_pts =
- 13^(1/2)/3 - 8/3
13^(1/2)/3 - 8/3
很明显,从函数的图形中可以看出有一个局部极小值位于
\[{x}_{1}=\frac{-8-\sqrt{13}}{3}\]
有一个局部极大值位于
\[{x}_{2}=\frac{-8+\sqrt{13}}{3}\]
用下面的命令绘出函数的极大值和极小值。
code.matlab
>> ezplot(f)
>> hold on
>> plot(double(crit_pts), …
double(subs(f,crit_pts)),'ro')
>> title('函数的极大值和极小值')
>> text(-5.5,3.2,'局部极小值')
>> text(-2.5,2,'局部极大值')
>> hold off
结果如图3-3所示。
\[\]
图3-3 表示函数的极大值和极小值
拐点
求函数的拐点,需要求函数的2阶导数并使之为0,然后进行求解。
code.matlab
>> f2 = diff(f1);
>> inflec_pt = solve(f2);
>> double(inflec_pt)
ans =
-5.2635 + 0.0000i
-1.3682 - 0.8511i
-1.3682 + 0.8511i
这里只有第1个解为实数,所以只有一个拐点。因为只对实数解感兴趣,所以丢弃后面的两个解,它们是复数。
code.matlab
>> inflec_pt = inflec_pt(1)
要查看拐点的符号表达式,输入
code.matlab
>> pretty(simplify(inflec_pt))
1/2 2/3 1/2 1/3
(676 + 156 13 ) + 52 + 16(676 + 156 13 )
- 1/6 ----------------------------------------------------------------
1/2 1/3
(676 + 156 13 )
绘制拐点,输入下面的命令行:
code.matlab
>> ezplot(f, [-9 6])
>> hold on
>> plot(double(inflec_pt), double(subs(f,inflec_pt)),'ro')
>> title('函数的拐点')
>> text(-7,2,'拐点')
>> hold off
结果如图3-4所示。
\[\]
图3-4 表示函数的拐点