在MATLAB中使用微积分
计算极限
MATLAB提供计算极限的limit
函数。在其最基本的形式中,limit
函数将表达式作为参数,并在独立变量为零时找到表达式的极限。
例如,要计算函数f(x)=(x^3 + 5)/(x^4 + 7)
的极限,因为x
趋向于零。
1 | syms x |
执行上面示例代码,得到以下结果 -
1 | > syms x |
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 | ans = |
左右边界极限
当函数对变量的某个特定值具有不连续性时,该点不存在极限。 换句话说,当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 | f = (x - 3)/abs(x-3); |
执行上面示例代码,得到以下结果 -
显示以下输出结果 -
1 | > |
求导数
MATLAB提供用于计算符号导数的diff
命令。 以最简单的形式,将要微分的功能传递给diff
命令作为参数。
例如,计算函数的导数的方程式 -
$$
f(x) = 3t^2 + 2t^{-2}
$$
例子
创建脚本文件并在其中键入以下代码 -
1 | syms t |
执行上面示例代码,得到以下结果 -
1 | > syms t |
计算高阶导数
要计算函数f
的较高导数,可使用diff(f,n)
。
计算函数的二阶导数公式为 -
$$
y=f(x)=xe^{-3x}
$$
1 | f = x*exp(-3*x); |
MATLAB执行上面代码将返回以下结果 -
1 | ans = |
求解微分方程
MATLAB提供了用于求解微分方程的dsolve
命令。
找到单个方程的解的最基本的dsolve
命令形式是 -
1 | dsolve('eqn') |
其中eqn
是用于输入方程式的文本串。
它返回一个符号解,其中包含一组任意常量,MATLAB
标记C1
,C2
等等。
还可以为问题指定初始和边界条件,以逗号分隔的列表遵循以下公式:
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 | s = |
再来一个二阶微分方程的例子:y“-y = 0,y(0)= -1,y'(0)= 2
。
1 | dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2') |
MATLAB执行代码并返回以下结果 -
1 | ans = |