MATLAB提供了解决微分和积分微积分的各种方法,求解任何程度的微分方程和极限计算。可以轻松绘制复杂功能的图形,并通过求解原始功能以及其衍生来检查图形上的最大值,最小值和其他固定点。

本章将介绍微积分问题。在本章中,将讨论预演算法,即计算功能限制和验证限制属性。

在下一章微分中,将计表达式的导数,并找到一个图的局部最大值和最小值。我们还将讨论求解微分方程。

最后,在“整合/集成”一章中,我们将讨论积分微积分。

计算极限

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

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

syms xlimit((x^3 + 5)/(x^4 + 7))

MATLAB

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

Trial>> syms x limit((x^3 + 5)/(x^4 + 7)) ans = 5/7

Shell

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

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

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

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

MATLAB

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

ans = NaN

Shell

下面再看另外一个例子,

limit(x^2 + 5, 3)

Shell

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

ans = 14

Shell

使用Octave计算极限

以下是Octave版本的上述示例使用symbolic包,尝试执行并比较结果 -

pkg load symbolic symbols x=sym("x");subs((x^3+5)/(x^4+7),x,0)

MATLAB

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

ans = 0.7142857142857142857

Shell

验证极限的基本属性

代数极限定理提供了极限的一些基本属性。这些属性如下 -

下面来考虑两个函数 -

f(x) = (3x + 5)/(x - 3) g(x) = x^2 + 1.

下面计算函数的极限,这两个函数的x趋向于5,并使用这两个函数和MATLAB验证极限的基本属性。

例子

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

syms x f = (3*x + 5)/(x-3);g = x^2 + 1;l1 = limit(f, 4)l2 = limit (g, 4)lAdd = limit(f + g, 4)lSub = limit(f - g, 4)lMult = limit(f*g, 4)lDiv = limit (f/g, 4)

MATLAB

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

l1 = 17 l2 = 17 lAdd = 34 lSub = 0 lMult = 289 lDiv = 1

Shell

使用Octave验证极限的基本属性

以下是Octave版本的上述示例使用symbolic包,尝试执行并比较结果 -

pkg load symbolic symbols x = sym("x");f = (3*x + 5)/(x-3);g = x^2 + 1;l1=subs(f, x, 4)l2 = subs (g, x, 4)lAdd = subs (f+g, x, 4)lSub = subs (f-g, x, 4)lMult = subs (f*g, x, 4)lDiv = subs (f/g, x, 4)

MATLAB

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

l1 = 17.0 l2 = 17.0 lAdd = 34.0 lSub = 0.0 lMult = 289.0 lDiv = 1.0

Shell

左右边界极限

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

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

下面来看看一个函数 -

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

下面将显示

不存在。MATLAB帮助我们以两种方式说明事实 -

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

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

例子

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

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

MATLAB

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

显示以下输出结果 -

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

Shell

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

例如,计算函数的导数的方程式 -

例子

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

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

MATLAB

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

Trial>> syms t f = 3*t^2 + 2*t^(-2); diff(f) ans = 6*t - 4/t^3

Shell

以下是使用Octave 计算的写法 -

pkg load symbolic symbols t = sym("t");f = 3*t^2 + 2*t^(-2);differentiate(f,t)

MATLAB

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

ans = 6*t - 4/t^3

Shell

基本微分规则的验证

下面简要说明微分规则的各种方程或规则,并验证这些规则。 为此,我们将写一个第一阶导数f'(x)和二阶导数f“(x)。

以下是微分的规则 -

规则 - 1

对于任何函数f和g,任何实数a和b是函数的导数:

h(x) = af(x) + bg(x)相对于x,由h’(x) = af’(x) + bg’(x)给出。

规则 - 2

sum和subtraction规则表述为:如果f和g是两个函数,则f'和g'分别是它们的导数,如下 -

(f + g)' = f' + g' (f - g)' = f' - g'

规则 - 3

product规则表述为:如果f和g是两个函数,则f'和g'分别是它们的导数,如下 -

(f.g)' = f'.g + g'.f

规则 - 4

quotient规则表明,如果f和g是两个函数,则f'和g'分别是它们的导数,那么 -

规则 - 5

多项式或基本次幂规则表述为:如果y = f(x)= x^n,则 -

这个规则的直接结果是任何常数的导数为零,即如果y = k,那么为任何常数 -

f' = 0

规则 - 5

chain规则表述为 - 相对于x的函数h(x)= f(g(x))的函数的导数是 -

h'(x)= f'(g(x)).g'(x)

MATLAB

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

syms x syms t f = (x + 2)*(x^2 + 3)der1 = diff(f)f = (t^2 + 3)*(sqrt(t) + t^3)der2 = diff(f)f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)der3 = diff(f)f = (2*x^2 + 3*x)/(x^3 + 1)der4 = diff(f)f = (x^2 + 1)^17der5 = diff(f)f = (t^3 + 3* t^2 + 5*t -9)^(-6)der6 = diff(f)

MATLAB

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

f = (x^2 + 3)*(x + 2) der1 = 2*x*(x + 2) + x^2 + 3 f = (t^(1/2) + t^3)*(t^2 + 3) der2 = (t^2 + 3)*(3*t^2 + 1/(2*t^(1/2))) + 2*t*(t^(1/2) + t^3) f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) der3 = (2*x - 2)*(3*x^3 - 5*x^2 + 2) - (- 9*x^2 + 10*x)*(x^2 - 2*x + 1) f = (2*x^2 + 3*x)/(x^3 + 1) der4 = (4*x + 3)/(x^3 + 1) - (3*x^2*(2*x^2 + 3*x))/(x^3 + 1)^2 f = (x^2 + 1)^17 der5 = 34*x*(x^2 + 1)^16 f = 1/(t^3 + 3*t^2 + 5*t - 9)^6 der6 = -(6*(3*t^2 + 6*t + 5))/(t^3 + 3*t^2 + 5*t - 9)^7

Shell

以下是对上面示例的Octave写法 -

pkg load symbolic symbols x=sym("x");t=sym("t");f = (x + 2)*(x^2 + 3) der1 = differentiate(f,x) f = (t^2 + 3)*(t^(1/2) + t^3) der2 = differentiate(f,t) f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) der3 = differentiate(f,x) f = (2*x^2 + 3*x)/(x^3 + 1) der4 = differentiate(f,x) f = (x^2 + 1)^17 der5 = differentiate(f,x) f = (t^3 + 3* t^2 + 5*t -9)^(-6) der6 = differentiate(f,t)

MATLAB

指数,对数和三角函数的导数

下表提供了常用指数,对数和三角函数的导数,

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

syms x y = exp(x)diff(y)y = x^9diff(y)y = sin(x)diff(y)y = tan(x)diff(y)y = cos(x)diff(y)y = log(x)diff(y)y = log10(x)diff(y)y = sin(x)^2diff(y)y = cos(3*x^2 + 2*x + 1)diff(y)y = exp(x)/sin(x)diff(y)

MATLAB

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

y = exp(x) ans = exp(x) y = x^9 ans = 9*x^8 y = sin(x) ans = cos(x) y = tan(x) ans = tan(x)^2 + 1 y = cos(x) ans = -sin(x) y = log(x) ans = 1/x y = log(x)/log(10) ans = 1/(x*log(10)) y = sin(x)^2 ans = 2*cos(x)*sin(x) y = cos(3*x^2 + 2*x + 1) ans = -sin(3*x^2 + 2*x + 1)*(6*x + 2) y = exp(x)/sin(x) ans = exp(x)/sin(x) - (exp(x)*cos(x))/sin(x)^2

Shell

以下代码是上面代码的Octave写法 -

pkg load symbolic symbols x = sym("x"); y = Exp(x) differentiate(y,x) y = x^9 differentiate(y,x) y = Sin(x) differentiate(y,x) y = Tan(x) differentiate(y,x) y = Cos(x) differentiate(y,x) y = Log(x) differentiate(y,x) % symbolic packages does not have this support %y = Log10(x) %differentiate(y,x) y = Sin(x)^2 differentiate(y,x) y = Cos(3*x^2 + 2*x + 1) differentiate(y,x) y = Exp(x)/Sin(x) differentiate(y,x)

Shell

计算高阶导数

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

计算函数的二阶导数公式为 -

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

MATLAB

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

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

Shell

以下是使用Octave重写上面示例,代码如下 -

pkg load symbolic symbols x = sym("x");f = x*Exp(-3*x);differentiate(f, x, 2)

MATLAB

例子
在这个例子中,要解决一个问题。由给定函数y = f(x)= 3sin(x)+ 7cos(5x),来找出方程f“+ f = -5cos(2x)是否成立。

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

syms x y = 3*sin(x)+7*cos(5*x); % defining the functionlhs = diff(y,2)+y; %evaluting the lhs of the equationrhs = -5*cos(2*x); %rhs of the equationif(isequal(lhs,rhs)) disp('Yes, the equation holds true');else disp('No, the equation does not hold true');enddisp('Value of LHS is: '), disp(lhs);

MATLAB

运行文件时,会显示以下结果 -

No, the equation does not hold true Value of LHS is: -168*cos(5*x)

Shell

以上是上面示例的Octave写法 -

pkg load symbolic symbols x = sym("x");y = 3*Sin(x)+7*Cos(5*x); % defining the functionlhs = differentiate(y, x, 2) + y; %evaluting the lhs of the equationrhs = -5*Cos(2*x); %rhs of the equationif(lhs == rhs) disp('Yes, the equation holds true');else disp('No, the equation does not hold true');enddisp('Value of LHS is: '), disp(lhs);

MATLAB

查找曲线的最大和最小值

如果正在搜索图形的局部最大值和最小值,基本上是在特定地点的函数图上或符号变量的特定值范围内查找最高点或最低点。

对于函数y = f(x),图形具有零斜率的图上的点称为固定点。 换句话说,固定点是f'(x)= 0。

要找到微分的函数的固定点,需要将导数设置为零并求解方程。

示例

要找到函数f(x)= 2x3 + 3x2 - 12x + 17的固定点

可参考以下步骤 -

首先输入函数并绘制图,代码如下 -

syms x y = 2*x^3 + 3*x^2 - 12*x + 17; % defining the functionezplot(y)

MATLAB

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

以上是上面示例的Octave写法 -

pkg load symbolic symbols x = sym('x');y = inline("2*x^3 + 3*x^2 - 12*x + 17");ezplot(y)print -deps graph.eps

MATLAB

我们的目标是在图上找到一些局部最大值和最小值,假设要找到图中间隔在[-2,2]的局部最大值和最小值。参考以下示例代码 -

syms x y = 2*x^3 + 3*x^2 - 12*x + 17; % defining the functionezplot(y, [-2, 2])

MATLAB

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

以下是上面示例的Octave写法 -

pkg load symbolic symbols x = sym('x');y = inline("2*x^3 + 3*x^2 - 12*x + 17");ezplot(y, [-2, 2])print -deps graph.eps

MATLAB

接下来,需要计算导数。

g = diff(y)

MATLAB

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

g = 6*x^2 + 6*x - 12

Shell

以下是上面示例的Octave写法 -

pkg load symbolic symbols x = sym("x");y = 2*x^3 + 3*x^2 - 12*x + 17;g = differentiate(y,x)

MATLAB

接下来求解导数函数g,得到它变为零的值。

s = solve(g)

MATLAB

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

s = 1 -2

Shell

以下是上面示例的Octave写法 -

pkg load symbolic symbols x = sym("x");y = 2*x^3 + 3*x^2 - 12*x + 17;g = differentiate(y,x)roots([6, 6, -12])

MATLAB

这与我们设想情节一致。 因此,要评估临界点x = 1,-2处的函数f。可以使用subs命令替换符号函数中的值。

subs(y, 1), subs(y, -2)

MATLAB

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

ans = 10 ans = 37

Shell

以下是上面示例的Octave写法 -

pkg load symbolic symbols x = sym("x");y = 2*x^3 + 3*x^2 - 12*x + 17;g = differentiate(y,x)roots([6, 6, -12])subs(y, x, 1), subs(y, x, -2)

MATLAB

因此,在间隔[-2,2]中函数f(x)= 2x^3 + 3x^2 - 12x + 17的最小值和最大值分别为10和37。

求解微分方程

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

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

dsolve('eqn')

MATLAB

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

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

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

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

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

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

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

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

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

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

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

s = C2*exp(5*t)

Shell

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

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

MATLAB

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

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

Shell

matlab显示函数表达式_Matlab求解极限、微积分问题相关推荐

  1. matlab显示函数表达式_MATLAB在绘图时的用法——线形图

    点击上方蓝字  关注我们 MATLAB有很强的绘图功能,我们可以通过简单的代码画出一些直观而漂亮的代码.今天,我们一起来学习基本绘图常用函数. 在MATLAB中绘图首先需要设定x的范围,一般使用冒号来 ...

  2. false函数matlab,ISNUMBER函数使用表达式说明表 matlab拟合函数表达式

    ISNUMBER函数使用表达式说明表 matlab拟合函数表达式,[excel助手]今天为大家分享一篇干货知识,如何设置matlab拟合函数表达式,今天的分享角度是从工作中常用的角度谈的,正如标题提到 ...

  3. matlab求x对应y值,matlab 不知道函数表达式,已知y值求x

    ^根据给定的数来据,我们可以假自定函数表达式为baiy=b1+b2*x+b3*x^du2+b4*x^3+b5*x^4;所以上述函zhi数可以用matlab的regress()多元线性dao回归分析函数 ...

  4. matlab 类写法,matlab中函数表达式的写法

    一条命令就可以了f=[1 1 5 3];多项式fvalue=polyval(f,6)%求多项式在x=6处的值www.mh456.com防采集. 用来查找a中小5261于0项的位置. y=symsum( ...

  5. matlab norm函数使用_matlab norm(a-b)

    (示例: X(1:10,1:10)=zeros(10,10),LX=[X,X;X,X]) Matlab 中冒号(: )的使用方法小结: (1)用于生成向量,a:b,一般要求 a 一.matlab 基本 ...

  6. matlab 显示3d频谱_matlab 关于频谱分析程序集锦

    内容 1 .用 Matlab 产生正弦波 , 矩形波 , 以及白噪声信号,并显示各自时域波形图 2 .进行 FFT 变换,显示各自频谱图,其中采样率,频率.数据长度自选 3 .做出上述三种信号的均方根 ...

  7. matlab norm函数使用_MATLAB 中NORM运用

    格式:n=norm(A,p) 功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数 以下是Matlab中help norm 的解释 NORM   Matrix or vecto ...

  8. matlab stem函数坐标轴_MATLAB中stem函数用法

    stem(Y) 将数据序列Y从x轴到数据值按照茎状形式画出,以圆圈终止.如果Y是一个矩阵,则将其每一列按照分隔方式画出. stem(X,Y)在X的指定点处画出数据序列Y.  stem(...,'fil ...

  9. matlab norm函数使用_matlab中norm函数的用法

    格式:n=norm(A,p) 功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数 以下是Matlab中help norm 的解释 NORM   Matrix or vecto ...

最新文章

  1. 斯隆-凯特琳癌症中心使用RTLS系统,改善患者术后护理流程
  2. 解决SpringBoot使用Quartz无法注入Bean的问题
  3. 10g数据库入门与实践 oracle_从实践中学习Oracle SQL笔记一
  4. 即将从TechReady5归来
  5. android自动登录不过登陆界面,【教程】Android 记住密码和自动登录界面的实现
  6. react api_使用React流API将Akka流与rxJava结合在一起
  7. C#LeetCode刷题之#48-旋转图像(Rotate Image)
  8. c语言建立迷宫坐标,c语言 找到迷宫出口并显示坐标,可以自定义迷宫或者选用已经设计好的迷宫...
  9. webclient post java_java – Spring WebFlux,如何调试我的WebClient POST交换?
  10. 关于http协议中的服务器状态情况
  11. android51版本小游戏,世界游戏大全51游戏下载-世界游戏大全51预约 安卓版v1.0.0-PC6手游网...
  12. git添加对勾图标 TortoiseGit安转配置
  13. Console口和Telnet远程登陆
  14. 一个40岁程序员的经历
  15. 4个问题带你了解用户画像
  16. 功率开关的RC-Snubber电路设计
  17. 计算机网络启动慢,关于电脑网络连接启动的特别慢的解决方法
  18. gurobi中的lp
  19. [2012山东ACM省赛] Fruit Ninja II (三重积分,椭球体积)
  20. SimpleDateFormat 参数

热门文章

  1. [译]揭秘英雄联盟的自动化测试
  2. 【射频ic设计】EMX常用设置
  3. 线性变换(2)——特征值与特征向量
  4. @Autowired 的作用是什么?
  5. video兼容苹果手机
  6. python量化交易:Joinquant_量化交易基础【四】:下单、函数、API
  7. 软件测试和数据库试题(牛客网)
  8. 北京大学计算机科学技术研究所党委书记,北京大学
  9. “中国农技推广信息服务平台”的农技推广有哪些创新模式?
  10. MDP的决策迭代和值迭代