资源描述
实验二 极限与导数
【实验目的】
1.了解函数极限、导数的基本概念。
2.学习掌握MATLAB软件有关求极限、导数的命令。
【实验内容】
1. 判断极限的存在性
2. 验证极限
3. 验证极限
4. 求数的单调区间及极值
【实验准备】
1. 极限、导数的基本概念
数列极限:如果对于,存在正整数,使得当时有。则称为数列的极限,或称收敛于,记为。直观上表示:趋于无穷大时,无限接近。
函数极限:如果当时有,则称为函数当时的极限。记为。若仅当且(或)时有,则称为函数当时的右极限(左极限),记为(或)。当且仅当时,当时的极限存在且等于这个值。
导数:函数在点的导数的定义为:
它反映了在点附近函数的变化率。当时,函数在点附近是上升的,反之时,函数在点附近是下降的,而当时,往往(但不一定)标志函数在点达到局部极大或局部极小。函数在点达到局部极大(或局部极小)的充分条件是且(或)。从几何意义上说,是函数在点切线的斜率。
2.求极限、导数的MATLAB命令
MATLAB中主要用limit,diff分别求函数的极限与导数。
limit(s,n,inf) 返回符号表达式当n趋于无穷大时表达式s的极限
limit(s,x,a) 返回符号表达式当x趋于a时表达式s的极限
limit(s,x,a,’left’) 返回符号表达式当x趋于a-0时表达式s的左极限
limit(s,x,a,’right’) 返回符号表达式当x趋于a-0时表达式s的右极限
diff(s,x,n) 返回符号表达式s对自变量x的n阶导数
可以用help limit, help diff查阅有关这些命令的详细信息
【实验方法与步骤】
练习1 首先分别作出函数在区间[-1,-0.01],[0.01,1],[-1,-0.001],[0.001,1]等区间上的图形,观测图形在附近的形状。在区间[-1,-0.01]绘图的MATLAB代码为:
>>x=(-1):0.0001:(-0.01); y=cos(1./x); plot(x,y)
结果如图2.1
图2.1函数的图形
根据图形,能否判断出极限的存在性?
当然,也可用limit命令直接求极限,相应的MATLAB代码为:
>>clear;
>>syms x; %说明x为符号变量
>>limit(sin(1/x),x,0)
结果为ans =-1 .. 1,即极限值在-1,1之间,而极限如果存在则必唯一,故极限不存在,同样,极限也不存在。
练习2 首先分别作出函数在区间[-1,-0.01],[0.01,1],[-1,-0.001],[0.001,1]等区间上的图形,观测图形在附近的形状。在区间[-1,-0.01]绘图的MATLAB代码为:
>>x=(-1):0.0001:(-0.01); y=sin(x)./x; plot(x,y)
结果如图2.2
图2.2 函数的图形
根据图形,能否判断出极限的正确性?
当然,也可用limit命令直接求极限,相应的MATLAB代码为:
>>clear;
>>syms x;
>>limit(sin(x)/x,x,0)
结果为ans =1.
练习3 观测当趋于无穷大时,数列和的变化趋势。例如,当时,计算的MATLAB代码为:
>>for n=1:100, a(n)=(1+1/n)^n;,A(n)=(1+1/n)^n ;, end
在同一坐标系中,画出下面三个函数的图形:
观测当增大时图形的走向。例如,在区间[10,400]绘制图形的MATLAB代码为
>>x=10:0.1:400;
>>y1=exp(x.*log(1+1./x)); y2=exp((x+2).*log(1+1./x)); y3=2.71828;
>>plot(x,y1,'-.',x,y2,':',x,y3,'-'); %’-.’表示绘出的图形是点线,’-’是实线
结果如图2.3,其中点线表示的图形,虚点线表示的图形。
图2.3
通过观测可以看到,当增大时,递增,递减。随着的无穷增大,和无限接近,趋于共同的极限.当然,也可用limit命令直接求极限,相应的MATLAB代码为:
>>clear;
>>syms n;
>>limit((1+1/n)^n,n,inf)
结果为ans =exp(1)。在下面的实验三,我们将用级数求无理数的近似值。
练习4 (极限的定义和判别)用MATLAB语言来表达推理过程是比较困难的,它必须与实际的数值联系起来,比如无法用无穷小和高阶无穷小的概念,只能用等数职。极限的定义恰恰是用了和等数值的概念,因此不难用程序表述。
用函数极限的定义,对于函数,当任意给定一个正数时,有一个对应的正数存在,使得当
时,有,
则就是在时的极限,如果找不到这样的,就不是它的极限,只考虑左极限时,因必为正数,可去掉绝对值符号。检验左极限是否正确的程序为:
>>clear
>>disp('A是否是 f(xc)的左极限?')
>>eps=1.0e-10; %给定计算最小误差
>>A=input('A=,例如A=1'), %输入左极限
>>xc=input('xc=,例如xc=0'), %输入对应的自变量值
>>fxc=input('f(x)的表达式为,例如sin(x)/x','s'), %输入函数表达式
>>flag=1; delta=1; x=xc-delta; n=1; %初始化
>>while flag==1 epsilon=input('任给一个小的数=') %任意给出
>>while abs(A-eval(fxc))>epsilon delta=delta/2; x=xc-delta; %找
>>if abs(delta)<eps disp('找不到d'), n=0; break %找不到,跳出内循环
>>end,
>>end
>>if n==0 disp('左极限不正确'), break, end %极限不正确,跳出外循环
>>disp('delta='), delta %找到了
>>disp('左极限可能正确')
>>flag=input('再试一个吗?再按1,不是按0或任意数字健') %再试?
>>end
我们来检验
(1) 在时是否以1.001为左极限;
(2) 在时是否以1为左极限.
对(1)得出的结果是”左极限不正确”,而对(2)得出”左极限可能正确”的结果.图者可分析为什么要加”可能”二字而不给出肯定回答.
练习5 先求函数,然后在同一坐标系里作出函数及其导函数的图形。
函数求导相应的MATLAB代码为:
>>clear;
>>syms x;
>>diff(x.^3-6*x+3,x,1)
结果为ans =3*x^2-6。
函数绘图相应的MATLAB代码为:
>>x=-4:0.1:4; y1=x.^3-6*x+3; y2=3*x.^2-6;
>>plot(x,y1,x,y2,’:’)
结果如图2.4,其中实线是的图形,点线是的图形。
图2.4 函数及其导数
这里画的是区间[-4,4]上的图形,你也可以选别的区间试试。观测以下现象:
(i) 当或时的图形的升降情况,当时是否有极大值或极小值?
(ii) 当上升或下降时的图形的凹凸情况,当取极值时的图形是否出现拐点?
(iii) 观测得出方程的根的近似值,比如在区间[-4,-2] 上有一个根,在用以下代码求出根的更精确的值:
>>a=fzero(‘x^3-6*x+3’,[-4,-2]) %fzero为方程求根命令
计算结果得a =-2.6691。事实上,在整个数轴上方程共有三个根,其余两个根分别是0.5240和2.1451,请将它们求出来。
(iv) 观测使函数取极大或极小值的,比如从图1.3可看出在附近有一个极小值,在附近有一个极大值,而这些点的解析解为,再用MATLAB代码求极大或极小更精确的值。为了方便,用文本编辑器编写一个脚本M文件,并用fmin求出数值上极值点,MATLAB代码如下:
>>% fmin1.m
>>fun1=‘x^3-6*x+3’; %定义求最小值的语句函数
>>xmin=fmin(fun1,1,2) %在1<x<2的范围内搜索
>>x=xmin; %因为fun1以x为变量,所以需将xmin赋给x
>>ymin=eval(fun1) %求xmin处函数y的值
>>fun2=‘-(x^3-6*x+3)’; %定义求最大值的语句函数,注意负号
>>xmax=fmin(fun2,-2,-1) %在-2<x<-1的范围内搜索
>>x=xmax; %因为fun2以x为变量,所以需将xmax赋给x
>>ymax=eval(fun2) %求xmax处函数y的值
下面是M文件的运行结果:
xmin = 1.4142
ymin = -2.6569
xmax = -1.4142
ymax = -8.6569
【练习与思考】
1. 求下列各极限
(1) (2) (3)
(4) (5) (6)
(7) (8) (9)
2. 考虑函数
作出图形,并说出大致单调区间;使用diff求,并求确切的单调区间。
3. 对于下列函数完成下列工作,并写出总结报告,评论极值与导数的关系,
(i) 作出图形,观测所有的局部极大、局部极小和全局最大、全局最小值点的粗略位置;
(iI) 求所有零点(即的驻点);
(iii) 求出驻点处的二阶导数值;
(iv) 用fmin求各极值点的确切位置;
(v) 局部极值点与有何关系?
(1)
(2)
(3)
展开阅读全文