第2章 微积分实验
2.1 极限
微积分课程中曾介绍过数列的极限、函数的极限等概念。按照定义,称a为数列 {xn}的极限,如果∀ε>0, ∃N>0,使得当n>N时,总有|xn-a |<ε。数列的极限如果存在,从图2-1上来看,就是点列以一条平行于横轴的直线为渐近线。
图2-1
函数的极限定义为∀ε>0, ∃δ>0,使得当 |x-x0|<δ时,总有|f(x)-A |<ε,则称A为f(x)在点x0处的极限。函数在某点处的极限如果存在,从图像上来看,就是函数的图像在x=x0处趋于同个y值,如图2-2所示。
图2-2
根据极限问题的不同,MATLAB中求极限的命令有如表2-1所示的几种。
表2-1
如果自变量是x,且计算的是x→0时的极限,也可以简单地用limit(f)来表示,即limit(f)=limit(f, x, 0)。实际上,求数列极限也可以视为求函数极限,用同样的命令求得结果。
例2-1 计算函数f(x)=xsin 在x→0时的极限。
我们可以输入如下命令:
>> syms x; %定义符号变量
>> f=x∗sin(1/x); %定义函数f
>> limit(f, x, 0)
输出结果为:
ans= 0
为直观起见,现在画出函数f(x)在区间 [-1,1] 上的图形,输入如下命令:
>> x=-1: 0.01: 1; %定义一个向量x,起点为-1,终点为1,步长为0. 01 >> y=x. ∗sin(1. /x); %定义与x中每个点对应的y值 >> plot( x, y) %绘图命令
输出结果如图2-3所示。
图2-3
可以看到,尽管函数在x=0处没有定义,但函数极限确实存在。
例2-2 计算函数f(x)=在x→0时的极限。
我们知道,这时函数的极限不存在。现在输入如下命令,观察函数 f(x)在区间[-1, 1] 上的图形,如图2-4所示:
图2-4
>> x=-1: 0.01: 1; >> y=sin(1. /x); >> plot(x, y)
由图像可以看出,x→0时,函数始终在0~1震荡,不存在统一的极限。我们也可以尝试用MATLAB来计算其极限,输入如下命令:
>> syms x; >> f=sin(1/x); >> limit(f, x, 0)
输出结果为:
ans= -1 .. 1
这个结果意味着函数并不存在唯一的极限,即函数极限不存在。
例2-3 假设第n个月,某种耐用消费品的市场保有量为x(n),每个月每个用户会影响λ个人购买商品,而且λ会随着总数x(n)的增加而减少。在不考虑其他影响因素的情况下,如何预测x(n)的变化情况?
由于每个月每个用户会影响λ个人购买商品,因此相邻月份的商品保有量会满足等式x(n+1)=x(n)+λx(n)。假设中提到λ会随着总数x(n)的增加而减少,不妨将其设为λ=a-bx,于是得到如下的非线性差分方程:
x(n+1)=x(n)+[a-bx(n)]x(n)
令y=bx,差分方程变成了如下形式:
y(n+1)=[1+a-y(n)]y(n)
这就是离散形式的阻滞增长模型。我们现在的问题是:给定参数a和初始值y(0), y(n)会有怎样的变化趋势?
编写如下的M文件:
function y=logistic(y0, a, n) y=zeros(n, 1); %设y初始为n维零向量 y(1)=y0; %为y(1)重新赋值为y0 for i=2: 1: n %for循环进行递推计算 y(i)=y(i-1)∗(1+a-y(i-1)); end plot(y)
接下来,我们为其中的y0和a选定不同的取值,观察作图的结果。比如令y0=0.1, a=1, 1.8, 2.1, 2.5, n=60,观察图形。
y 0=0.1, a=1, n=60时,y(i)为单增序列,有极限,如图2-5所示。
图2-5
y 0=0.1, a=1.8, n=60时,y(i)为震荡序列,有极限,如图2-6所示。
图2-6
y0=0. 1, a=2. 1, n=60时,y(i)为震荡序列,双周期收敛,如图2-7所示。
图2-7
y0=0. 1, a=2. 5, n=60时,y(i)为震荡序列,多周期收敛,如图2-8所示。
图2-8
在学习微积分时,我们遇到过很多极限问题,都可以利用MATLAB来算一算,画出图来观察一下,从而获得更为形象的印象。比如两个重要极限,高阶或低阶无穷小、无穷大之间的比较等,这里不再赘述。