文章目录

  • 前期教程
  • 概述
  • 1 函数极限
  • 2 导数与偏导
  • 3 函数极值&最值
  • 4 求方程(组)的根
  • 5 求函数零点
  • 6 泰勒公式
  • 7 数列求和
  • 8 函数积分
    • 8.1 一般函数积分
    • 8.2 数值积分
  • 9 表达式化简
  • 10 插值
    • 10.1 一维插值
    • 10.2 二维插值
    • 10.3 总结
  • 11 常微分方程
    • 11.1 解析解
    • 11.2 数值解
  • 后续教程

前期教程

  • 【MATLAB】(一)基本使用入门
  • 【MATLAB】(二)基本使用拾遗

概述

  本篇博客主要记录MATLAB在高数中的应用。建议没有基础的先看看前期教程

1 函数极限

  在MATLAB中,求函数极限的命令是limit,其中的参数比较简单,参见下表。

  需要注意:并不是所有的极限都可以使用limit指令来求出,部分极限求不出来,会得到NaN的输出。

2 导数与偏导

  有时候需要无法直接使用y对x求导时,可以先求出x对t的导数和y对t的导数,然后再求y对x的导数。
  同理,求隐函数或者偏导时,也可以使用类似的间接方法。

3 函数极值&最值

  • fminband
  • fminsearch

  注意:这里求出的是局部范围内的最值,相当于求极值的函数,如果需要求最值需要再根据实际情况判断一下。

  求离散数据(如一个向量或者矩阵)中的最值使用minmax函数:


  此外,还有两个专门求多元函数极值的函数:

  • fminunc
    这个函数主要用于 无约束多元函数求极值 问题。其中“unc”应该是“unconstrained”的缩写。其一般的使用结构如下所示:
[x, fval] = fminunc(fun, x0)

  其中,fun为代求极值的函数;x0为起始点,即从这个点开始寻找极值,由于该函数用于多元函数极值问题,所以x0为一个向量;输出x表示取到极值的位置,和x0维度相同,也是一个向量;输出fval为求得的极值,即fun(x)

  • fmincon
    这个函数主要用于有约束多元函数求极值 问题。其中“con”应该是“constrained”的缩写。其一般使用的结构为:
[x, fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

  其中,x, fval, fun, x0和上面介绍的一样 ,另外几个参数:Ab表示线性不等式约束,即Ax<bAeqbeq表示线性等式约束,即Aeq·x = beqlbub表示函数自变量的边界,即lower bound,upper bound;nonlcon表示 非线性约束 ,一般是以一个函数句柄**的形式调用,用c(x)<0ceq(x)=0表示。
  综上,这个函数可以表示为以下函数问题的解:

这两个函数的具体用法建议在MATLAB中利用help指令查看

4 求方程(组)的根

  求代数方程f(x) = 0的根,可以使用MATLAB中的命令solve(f, x),输出结果即为f(x) = 0的所有符号解或精确解。
  如果需要求方程组的解,如{f(x,y)=0g(x,y)=0\left\{ \begin{array}{c} f\left( x, y \right) \,\,=\,\,0\\ g\left( x, y \right) \,\,=\,\,0\\ \end{array} \right. {f(x,y)=0g(x,y)=0​可以使用指令[x, y] = solve(f, g, x, y)求出。

  同样需要注意:这个solve指令可能求出的并不是唯一解,也有可能不是精确解,需要自己根据实际情况判断选择。

5 求函数零点

  MATLAB中求函数零点的方法都是使用牛顿迭代法求出的近似解

  需要注意:如果使用的命令不同,或者选择的初始点不同,那求出的结果也会有差异。

6 泰勒公式

  MATLAB中有可以直接算泰勒展开的指令,使用非常方便:

  可以看出,这个指令的参数结构是 “Name, Value” 格式的,即两个参数为一对,先是参数的类型名,然后是参数对应的值。

7 数列求和

  在已知一个具体数字组成的向量或矩阵时,可以直接使用sum(x)的指令来进行求和
  但是需要注意:如果x为一个向量,那么所求出的结果为向量所有元素之和;如果x为一个矩阵,那么求出的结果为一个向量,且向量元素的数量为矩阵x的列数,即每个元素为矩阵x一列元素之和。


  对于含有参数的数列,MATLAB中也有对应的求和指令symsum

8 函数积分

8.1 一般函数积分

如果是多重积分,可以连续使用多个int指令。如下所示

8.2 数值积分

  在学习数值积分的MATLAB指令前,需要先了解什么是数值积分?
  所谓数值积分,是针对那些求积分求不出解析解的数学表达式,利用图形化的方法来求其积分的数值解,即曲线与x轴围成的面积大小,即下面积大小。记住,这是核心思想!
  然后针对如何求曲线下面积的方法,提出了不同的方法。比较常用的有三种:梯形积分法、辛普森法(Simpson)、自适应辛普森法(Adaptive Simpson),下面分别介绍。

  • 梯形积分法
    顾名思义,就是将整个下面积分解为一个个等高的梯形,然后求出梯形面积之和,即求出了曲线的积分。

      使用梯形积分法的思想可以有两种方法,一种是按照这个思路实际编程操作,如下详述:



      除了这种需要亲力亲为的操作,MATLAB还提供了一个指令来实现,使得数值积分更加简单。

      其中,参数中的x为积分区间内的各个等距点向量,y为该x向量中各点作为自变量在积分函数上对应的函数值,因此y也是一个向量。
  • 辛普森法(Simpson)
      从上面的描述可以看出,梯形法是将积分区间分解为一个个等距的小梯形,然后将所有梯形的面积求和,即得到该函数在设定区间上的积分,这种积分方法存在一个问题,那就是当曲线波动较大时,梯形的斜边拟合曲线误差较大,因此人们又提出了将斜边换为曲线的方法,而抛物线作为最简单的曲线成为首选。即将积分单元从梯形改为曲边梯形,且曲边为抛物线,此即辛普森法(Simpson)
  • 自适应辛普森法(Adaptive Simpson)
      使用辛普森法相比于梯形积分法确实误差减小了很多,但是计算量也增加了不少。其中最为主要的影响因素就是采样点的多少,即各个子区间的大小。当子区间越小,积分计算结果的精度越高,但计算量也越大。据此人们又提出了自适应辛普森法(Adaptive Simpson)。即当曲线变化不均匀时,选择在波动剧烈的曲线段增加采样点,减小采样间距;在波动较为平缓的曲线段减少采样点,增大采样间距。这样可以在保证精度的同时尽量减少计算量。因此该方法应用最为广泛

      对于重积分,自适应辛普森方法也有对应的指令:

9 表达式化简

  在计算积分的解析解时,我们常常会得到一个非常复杂的表达式,可读性较差,因此化简表达式就显得很有必要。下面总结一些常用是化简表达式的指令【MATLAB 2019版本适用

  • pretty(f) —— 将符号表达式化简成与高等数学课本上显示符号表达式形式类似(大大提升表达式可读性!
  • collect(f) —— 合并符号表达式的同类项
  • horner(f) —— 将一般的符号表达式转换成嵌套形式的符号表达式
  • factor(f) —— 对符号表达式进行因式分解
  • expand(f) —— 对符号表达式进行展开
  • simplify(f) —— 对符号表达式进行化简,它利用各种类型的代数恒等式,包括求和、积分、三角函数、指数函数以及 Bessel 函数等来化简符号表达式。【这个指令应该是simple的更新版,目前simple指令不能用了

10 插值

  很多工程实践中,往往需要通过若干个节点的数据,来获得其他节点的数据,这时就需要用到插值的方法。
  常用的插值分为一维和二维两种情况。其中,一维插值又有很多种方法。下面分别介绍。

10.1 一维插值

  • 拉格朗日插值

  • 分段线性插值
    但是,在实际应用中,已知节点的个数可能很大,不过拟合的多项式最高次数并不是越大越好,所以有一种方法是直接将相邻的两个节点用直线连接,两点之间的函数值用直线的方程来表示。如下图实线所示。

    在MATLAB中,分段线性插值的指令为
y = interp1(x0, y0, x);

  其中,x0为已知节点自变量,y0为已知节点因变量,x为待计算的插值点数组(一般x的范围更广),返回值yx向量各元素对应的因变量组成的向量。

  显然,直接用直线连接相邻节点拟合出的曲线误差太大,尤其是节点数较少时更加明显。为了使得曲线更加平滑,可以使用三次曲线代替直线连接相邻的两个节点。此即分段三次插值,但是仍然可以使用这个指令,只需要调整参数即可。
  插值指令完整版为

y = interp1(x0, y0, x, 'method');

  method参数可以取如下值:


  由图可知,当methodcubicpchip时为分段三次插值,所得曲线相比于线性插值更加光滑,该指令与下列指令等效:

p = pchip(x,y,xq); %xq相当于上面的x,为待插值范围

spline时为三次样条插值。

  • 三次样条插值
      通过上面的表述,可以发现,三次样条插值与分段三次插值十分类似,都是使用三次曲线去连接两个相邻的节点,但是从上面那个表格可知,三次样条插值得到的曲线在所有节点处都是二阶可导,因此计算时间最长。
      三次样条插值除上文中所述指令外,还有其他指令可以实现相同效果:
s = spline(x, y, xq); %参数与上文中相同
pp=csape(x0,y0);
y=ppval(pp,x); %x0,y0,y代表的含义与上文相同

10.2 二维插值


10.3 总结

11 常微分方程

  常微分方程的解一般可以分为两类,一种是能够求出解析解的表达式一种是只能求出数值解的表达式

11.1 解析解

  对于能够求出解析解的表达式,一般采用的是MATLAB中的指令dsolve,一些老的教材中可能会有很多过时的使用方法。在MATLAB 2019版本中,dsolve已经不支持参数为字符串的格式了。为了能够得到较为准确的使用方法,建议直接使用help dsolve指令查看使用文档。
  参考下面的几个例子:

syms y(t) a
eqn = diff(y,t) == a*y;
S = dsolve(eqn)
/****************************************/
syms y(t) a
eqn = diff(y,t) == a*y;
cond = y(0) == 5;
ySol(t) = dsolve(eqn,cond)
/****************************************/
syms y(t) a b
eqn = diff(y,t,2) == a^2*y;
Dy = diff(y,t);
cond = [y(0)==b, Dy(0)==1];
ySol(t) = dsolve(eqn,cond)
/****************************************/
syms y(t) z(t)
eqns = [diff(y,t) == z, diff(z,t) == -y];
S = dsolve(eqns)
/****************************************/
syms y(t) z(t)
eqns = [diff(y,t)==z, diff(z,t)==-y];
[ySol(t),zSol(t)] = dsolve(eqns)

11.2 数值解

  非线性微分方程组通常无法求出解析解,即使是线性常微分方程,如果不能获得变系数的积分,也无法给出解的表达式,因此这个时候就需要用到求常微分方程的数值解
  求常微分方程的数值解的关键在于如何表达出函数的导数关系式,一个很容易想到的思路是,将导数转变为差商的形式,由此也就有了Euler法,此外,还有龙格·库塔法,具体原理建议搜索相关资料。这里主要介绍使用方法。


后续教程

【MATLAB】(三)MATLAB在高等数学中的应用相关推荐

  1. 对高等数学中的基本概念的剖析

    对高等数学中的基本概念的剖析  作者:温旭辉华南理工大学数学科学学院 高等数学是理工科大学生入学后的第一门基础课程,它是学生学习后续数学课程以及专业课程的基础和工具,学习高等数学不但要使学生掌握数学的 ...

  2. MATLAB(四)在高等数学中的应用

    MATLAB在高等数学中的应用 (一)求极限 matlab中求极限的命令为 limit(expr, x, a) limit(expr, a) limit(expr) limit(expr, x, a, ...

  3. 用Matlab求解高等数学中的问题(不定积分,定积分,多元微积分,微分方程,级数问题)

    用Matlab求解高等数学中的问题 一.求解不定积分 利用matlab符号工具箱中的求积函数int, 可求函数的不定积分,int函数的调用格式如下: int(S) int(S,v) 说明: (1)in ...

  4. matlab选修结课作业,matlab在高等数学中的应用结课作业

    matlab在高等数学中的应用结课作业 MatLab软件在作图中的应用 1.描点作图(MatLab及在电子信息课程中的应用131页) a=0:0.01:3; >> y=a: plot(y) ...

  5. 10的负3次方用matlab怎么,10的三次方和10的负三次方在word中怎么输入?有谁知道告我一声,谢谢...

    10的三次方和10的负三次方在word中怎么输入?有谁知道告我一声,谢谢以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ...

  6. matlab语法手册下载,MATLAB及其在理工课程中的应用指南 第4版.pdf

    作 者 :陈怀琛 出版发行 : 西安:西安电子科技大学出版社 , 2018.02 ISBN号 :978-7-5606-4737-1 页 数 : 262 原书定价 : 39.00 开本 : 16开 主题 ...

  7. 【 MATLAB 】MATLAB 实现模拟信号采样后的重建(三)一阶保持(FOH)内插

    上篇博文采用了零阶保持(ZOH)的方式进行了重构:[ MATLAB ]MATLAB 实现模拟信号采样后的重建(二)零阶保持(ZOH) 这篇博文我们使用一阶保持(FOH)内插来重建信号,采用的案例依然是 ...

  8. matlab测量液体液位,基于MATLAB三容水箱液位控制系统.doc

    基于MATLAB三容水箱液位控制系统 基于MATLAB三容水箱液位控制系统 计算机技术+沈瑞清+12011112262 本文通过对三容水箱的液位定值控制来说明SIMULINK在自动控制系统中的应用. ...

  9. matlab编写转台程序,基于Matlab三轴惯导测试转台结构分析.doc

    基于Matlab三轴惯导测试转台结构分析 基于Matlab三轴惯导测试转台结构分析 摘 要:三轴惯导测试转台作为惯导测试设备,其精度直接影响惯导设备的精度,而中框回转精度在三轴精度相对较差.影响其中框 ...

  10. matlab读Excel表格数据画图,matlab读Excel表格数据画图-matlab如何从excel表格中读取数据?...

    如何将excel表格中大量数据导入matlab中并作图 1.打开matlab,点击主页下面的数据导入,你可以导入excel数据,这里导入你自己命名的huitushuju文件. 2.单击"打开 ...

最新文章

  1. Unparseable date: 2015-8-8
  2. [YTU]_2918( Shape系列-4)
  3. linux 提取ko文件,Linux获取so/ko文件版本号教程
  4. spark安装测试过程中提示console:10: error: not found: value sc
  5. unipapp 解决无法编译sass_如何解决Vue项目里面没有sassloader依赖包的问题
  6. Main execution in Scala - Scala应用的入口
  7. 读取properties资源文件中的参数
  8. 万圣节海报设计没有思路?看看这些有趣的万圣节狂欢是如何完成的!
  9. 灰度资产管理总规模升至460亿美元
  10. 运维学python之爬虫工具篇(四)PhantomJS的用法
  11. Android基础:ViewPage2
  12. Mac OS X 10.13.6升级到更高版本的方法
  13. pandas中pd.groupby()的用法
  14. turtle八边形绘制
  15. app电池续航上下--Android自动化测试学历历程
  16. form表单如何不直接提交?
  17. C语言程序课程设计—读心术
  18. Weka中分类器指标的说明
  19. 燕教授使用体验,从漱口水到牙膏
  20. 别做梦了,社交产品哪有那么容易成功

热门文章

  1. python定义字典对象时_python字典对与list对象组合使用小问题
  2. 家谱管理系统性能要求_应用在Mac上的家谱族谱工具
  3. gson下载java_gson.jar
  4. laravel 配置邮件发件人_Jenkins中配置自动化测试项目
  5. idea中修改git账号和密码
  6. ccf-csp认证历年真题(持续更新)
  7. javascript html coffee 编辑器,CoffeeCup HTML Editor (html编辑器)
  8. 开源自动化运维工具_批量与重复运维压力如何破?了解一下这款自动化运维工具...
  9. (7)Spring框架----面向切面编程(一个简单的约定游戏)
  10. Centos--swoole平滑重启服务