计算极限

MATLAB提供计算极限的limit函数。在其最基本的形式中,limit函数将表达式作为参数,并在独立变量为零时找到表达式的极限。

例如,要计算函数f(x)=(x^3 + 5)/(x^4 + 7)的极限,因为x趋向于零。

1
2
syms x
limit((x^3 + 5)/(x^4 + 7))

执行上面示例代码,得到以下结果 -

1
2
3
4
5
6
Trial>> syms x
limit((x^3 + 5)/(x^4 + 7))

ans =

5/7

limit函数落在符号计算域; 需要使用syms函数来告诉MATLAB正在使用的符号变量。还可以计算函数的极限,因为变量趋向于除零之外的某个数字。要计算 -
$$
lim_{x\rightarrow a}(f(x))
$$

可使用带有参数的limit命令。第一个是表达式,第二个是数字 - x表示接近,这里它是a

例如,要计算函数f(x)=(x-3)/(x-1)的极限,因为x倾向于1

1
limit((x - 3)/(x-1),1)

执行上面示例代码,得到以下结果 -

1
2
ans =
NaN

左右边界极限

当函数对变量的某个特定值具有不连续性时,该点不存在极限。 换句话说,当x = a时,函数f(x)的极限具有不连续性,当x的值从左侧接近x时,x的值不等于x从右侧接近的极限值。

对于x <a的值,左极限被定义为x - > a的极限,从左侧即x接近a。 对于x> a的值,右极限被定义为x - > a的极限,从右边,即x接近a。 当左极限和右极限不相等时,极限不存在。

下面来看看一个函数 -

1
f(x) = (x - 3)/|x - 3|

下面将显示
$$
lim_{x\rightarrow a}f(x)
$$
不存在。MATLAB帮助我们以两种方式说明事实 -

  • 通过绘制函数图并显示不连续性。
  • 通过计算极限并显示两者都不同。

==通过将字符串“left”“right”作为最后一个参数传递给limit命令来计算左侧和右侧的极限。==

例子

创建脚本文件并在其中键入以下代码 -

1
2
3
4
f = (x - 3)/abs(x-3);
ezplot(f,[-1,5])
l = limit(f,x,3,'left')
r = limit(f,x,3,'right')

执行上面示例代码,得到以下结果 -

显示以下输出结果 -

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Trial>> 
Trial>> f = (x - 3)/abs(x-3);
ezplot(f,[-1,5])
l = limit(f,x,3,'left')
r = limit(f,x,3,'right')

l =

-1


r =

1

求导数

MATLAB提供用于计算符号导数的diff命令。 以最简单的形式,将要微分的功能传递给diff命令作为参数。

例如,计算函数的导数的方程式 -
$$
f(x) = 3t^2 + 2t^{-2}
$$

例子

创建脚本文件并在其中键入以下代码 -

1
2
3
syms t
f = 3*t^2 + 2*t^(-2);
diff(f)

执行上面示例代码,得到以下结果 -

1
2
3
4
5
6
7
Trial>> syms t
f = 3*t^2 + 2*t^(-2);
diff(f)

ans =

6*t - 4/t^3

计算高阶导数

要计算函数f的较高导数,可使用diff(f,n)

计算函数的二阶导数公式为 -
$$
y=f(x)=xe^{-3x}
$$

1
2
f = x*exp(-3*x);
diff(f, 2)

MATLAB执行上面代码将返回以下结果 -

1
2
ans =
9*x*exp(-3*x) - 6*exp(-3*x)

求解微分方程

MATLAB提供了用于求解微分方程的dsolve命令。

找到单个方程的解的最基本的dsolve命令形式是 -

1
dsolve('eqn')

其中eqn是用于输入方程式的文本串。

它返回一个符号解,其中包含一组任意常量,MATLAB标记C1C2等等。
还可以为问题指定初始和边界条件,以逗号分隔的列表遵循以下公式:

1
dsolve('eqn','cond1', 'cond2',…)

为了使用dsolve命令,导数用D表示。例如,像f'(t)= -2 * f + cost(t)这样的等式输入为 -

1
'Df = -2*f + cos(t)'

较高阶导数由D导数的顺序表示。

例如,方程f"(x) + 2f'(x) = 5sin3x应输入为 -

1
'D2y + 2Dy = 5*sin(3*x)'

下面来看一个一阶微分方程的简单例子:y'= 5y

1
s = dsolve('Dy = 5*y')

MATLAB执行代码并返回以下结果 -

1
2
s =
C2*exp(5*t)

再来一个二阶微分方程的例子:y“-y = 0,y(0)= -1,y'(0)= 2

1
dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2')

MATLAB执行代码并返回以下结果 -

1
2
ans =
exp(t)/2 - (3*exp(-t))/2