从本节开始,我们将进入matlab的数值微积分与方程求解模块,一起学习如何利用matlab去解决微积分问题。
对于本节内容,主要分为两个部分讲解,数值微分和数值积分,那么下面,就开始今天的学习吧!
一、数值微分
在正式开始之前,有几个新概念需要讲解一下
(1) 数值差分与差商:
微积分中 ,任意函数 f(x) 在x0 点的导数是通过极限定义的(如下图所示):

如果去掉极限定义中h趋向于0的极限过程,得到函数在x0 点处以h( h>0 )为步长的向前差分、向后差分和中心差分公式(如下图):

当步长h充分小时,得到函数在x0 点处以h( h>0 )为步长的向前差商、向后差商和中心差商公式(如下图):

函数 f(x) 在 点x0的微分接近于函数在该点的差分,而f在点x的导数接近于函数在该点的差商。
(2)数值微分的实现:
MATLAB 提供了求向前差分的函数diff ,其调用格式有三种:
dx=diff(x) :计算向量x的向前差分, dx(i)=x(i+1)- x(i) , i=1,2, … ,n, n- 1 。
dx=diff( x,n) ) : 计算向量x的n阶向前差分。例如,diff(x,2)=diff(diff(x)) 。
dx=diff( A,n,dim) ) : 计算矩阵A的n阶差分, dim=1 时(默认状态),按列计算差分;dim=2 ,按行计算差分。
注意 : diff 函数计算的是向量元素间的差分,故差分向量元素的个数比原向量少了一个。同样,对于矩阵来说,差分后的矩阵比原矩阵少了一行或一列。
另外,计算差分之后,可以用 f(x) 在某点处的差商作为其导数的近似值。
例、设f(x)=ln(x),采用上述方法绘制出[0,10]之间的其导函数的图像,求解出导函数在1处的值,对比理论值1之间的差值,看相差大不大。

>>  x=0:0.01:10;
y=log(x);
f1=diff(y)./diff(x);
plot(x(1:end-1),f1);

打开matlab的工作区查看f1在100处的值,即就是导函数在1出=处的值(如图):

值为1.005,与理论值1相差0.005,可能是由于x=0:0.01:10;这一语句导致,发现当取点越多时,结果越接近1,再看图像,其符合1/x的函数图像。
二、 数值积分
1、数值积分基本原理
在高等数学中,计算定积分依靠微积分基本定理,只要找到被积函数 f(x)的原函数F(x),则可用 牛顿 — 莱布尼兹 ( Newton- - Leibniz ) 公式:

在有些情况下,应用牛顿—莱布尼兹公式有困难,例如,当被积函数的原函数无法用初等函数表示,或被积函数是用离散的表格形式给出的。这时就需要用数值解法来求定积分的近似值 。
求定积分的数值方法多种多样,如梯形法、辛普森( Simpson )法 、高斯求积公式等。它们的基本思想都是将积分区间 [a , b] 分成n个子区间 [xi,xi+1] ,i=1 ,2 ,… ,n,其中x1 =a ,xn+1=b ,这样求定积分问题就分解为下面的求和问题。

在 每一个小的子区间上定积分的值可以近似求得, , 从而避免了 牛顿 — 莱布尼兹公式需要寻求原函数的困难 。
2、数值积分的实现
(1)基于自适应辛普森方法:
[ I,n ]=quad( filename,a,b,tol,trace)
(2)基于自适应 Gauss- - Lobatto方法:
[ I,n ]= quadl ( filename,a,b,tol,trace)
其中, filename 是被积函数名;a和b分别是定积分的下限和上限,积分限 [a ,b]必须是有限的,不能为无穷大( Inf ); tol 用来控制积分精度,默认时取tol =10^(- 6 ); trace 控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,默认时取 trace=0 ;返回参数I即定积分的值,n为被积函数的调用次数。
例、分别用 quad 函数和 quadl 函数求定积分的近似值,并在相同的积分精度下,比较被积函数的调用次数。求解在[1,10]上,sin(x)的定积分值。

>>  format long
f=@(x)cos(x);
[ I,n ]=quad(f,1,10,1e-8)
I =-1.385492095697597
n =229
>> [ I,n ]=quadl(f,1,10,1e-8)
I =-1.385492095687089
n =138
>> sin(10)-sin(1)
ans =-1.385492095697266

可以看出,两种方式求出的定积分值与理论值sin(10)-sin(1)几乎一致,但两种函数求解时的被积函数的调用次数却有差别。
(3)基于全局自适应积分方法:
I=integral( filename,a,b )
其中,I是计算得到的积分;filename 是被积函数;a和b分别是定积分的下限和上限,积分限可以为无穷大 。
(4)基于自适应高斯- - 克朗罗德方法
[ I,err ]= quadgk( filename,a,b)
其中 ,err返回近似误差范围,其他参数的含义和用法与quad函数相同。积分上下限可以是无穷大(−Inf 或 Inf),也可以是复数。如果积分上下限是复数,则 quadgk函数在复平面上求积分。
上述四种积分的求解方法各有不同,同时也各有优劣,一、二两种方法要求积分上下限是有限的,不可取无穷值,三、四两种方法中积分上下限可以取无穷值,且第四种方法还可以在复平面上求积分。
下面介绍一种特殊的积分方法:梯形积分法
I= trapz( x,y)
其中,向量x、y 定义函数关系y=f(x),值得注意的是,此处的x,y表示为向量形式。
例、 5 设 x=1:10,y=[5,4,1,9,3,3,5,8,7,2], 用 trapz函数计算定积分并且画图。

>> x=1:10;y=[5,4,1,9,3,3,5,8,7,2];
>> plot(x,y);
>> I1=trapz(x,y)
I1 =43.500000000000000

三、 多重定积分的数值求解
现将多重积分的求解函数总结如下,它们的用法和上述的一重积分用法基本一致
求二重积分的数值解:

I=integral2( filename,a,b,c,d)
I=quad2d( filename,a,b,c,d)
I= dblquad( filename,a,b,c,d,tol)
求三重积分的数值解:

I=integral3( filename,a,b,c,d,e,f) )
I= triplequad( filename,a,b,c,d,e,f,tol)
本节内容就讲述到这里,下节将讲述线性方程组求解,敬请期待!

关于MATLAB的学习:

大家可以关注我们的知乎专栏——数据可视化和数据分析中matlab的使用:
https://zhuanlan.zhihu.com/c_1131568134137692160

欢迎大家加入我们的MATLAB学习交流群:
953314432
扫码关注我们
发现更多精彩

matlab数值微分与数值积分相关推荐

  1. 6.1 matlab数值微分与数值积分

    数值微积分适合求解没有或很准求出微分或积分表达式的问题的计算. 1.数值微分 (1)数值差分与差商 任意函数f(x)在x0点的导数是通过极限定义的: 如果去掉极限定义中h趋向于0的极限过程,得到函数在 ...

  2. matlab 1到无穷_MATLAB数值微分与数值积分

    点击上方蓝字  关注我们 从本节开始,我们将进入matlab的数值微积分与方程求解模块,一起学习如何利用matlab去解决微积分问题. 对于本节内容,主要分为两个部分讲解,数值微分和数值积分,那么下面 ...

  3. 高斯积分公式matlab_数值微分与数值积分(一)

    点击蓝字 关注我们 01 数值微分与数值积分 一.数值微分 (1)数值差分与差商 微积分中,任意函数f(x)在x0点的导数是通过极限定义的: 如果去掉极限定义中h趋向于0的极限过程,得到函数在x0点处 ...

  4. 计算方法(五):数值微分与数值积分

    文章目录 数值微分与数值积分 数值微分 利用插值多项式构造数值微分公式 等距结点处的数值微分公式 利用三次样条插值函数构造数值微分公式 构造数值积分公式的基本方法与有关概念 构造数值积分公式的基本方法 ...

  5. matlab数值微分

    标签(空格分隔): matlab 数值 微分 算法 文章目录 标签(空格分隔): matlab 数值 微分 算法 @[toc] matlab数值微分 1 测试数值微分函数midD2Diff() 2 中 ...

  6. matlab可以节定积分方程,如何用matlab如何实现数值积分

    点击查看如何用matlab如何实现数值积分具体信息 答:用matlab可以如下数值积分法,来求解定积分.二重积分.三重积分的数值解问题. 1.梯形数值积分计算 trapz() X = 0:pi/100 ...

  7. matlab trapz二重积分函数_科学网—MATLAB中的数值积分方法 - 王福昌的博文

    实际应用中在MATLAB里面都有开发好的命令可以使用,如  quad(), quadl(),quad2d(),triplequad() .需要掌握这些命令的用法. 1. 定积分 trapz(),qua ...

  8. matlab计算二重指数积分,MATLAB计算二重数值积分(dblquad),来学习吧

    当被积分函数为二元函数f(x,y),积分变量为dxdy时称为二重积分.MATLAB提供了dblquad( )函数命令计算二重数值积分.dblquad的调用格式为Q=dblquad(function,x ...

  9. MATLAB trapz梯形数值积分函数

    trapz 梯形数值积分 全页折叠 语法 Q = trapz(Y) Q = trapz(X,Y) Q = trapz(___,dim) 说明 示例 Q = trapz(Y) 通过梯形法计算 Y 的近似 ...

最新文章

  1. python之路---装饰器函数
  2. 驱动WDK7600在VC6.0下的编译开发配置环境
  3. 罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化
  4. Java的知识点26——File_API
  5. OS / 进程和线程的区别和联系
  6. spark on yarn 完全分布式_Apache Spark探秘:三种分布式部署方式比较
  7. SAP 电商云 Spartacus UI 产品明细页面路由确定后,加载的是 page template
  8. linux7怎么配yum,centos7怎么配置yum
  9. JavaScript知识点之如何使用匿名的方法做条件判断
  10. 优化理论11---- Zoutendijk可行方向法、非线性约束情形、ε起作用约束可行方向法、Frank-Wolfe 方法
  11. SQL Server查询语句
  12. 广告关闭php,电脑右下角的广告怎么去掉
  13. 星绞计算机电缆,永安市铠装计算机电缆DJYJP3V22截面图
  14. 待机、休眠、睡眠的区别(整理)
  15. 人应该怎样度过自己的一生
  16. 个人二维码实时收款源码 商业解决方案
  17. 判断是否为奇数时:除以2余数等于1.(充分而不必要)
  18. c语言中用递推法解决渔夫问题,递归、递推 - IT小冰的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. C#·Excel拉取日期格式的数据
  20. 项目整体管理:制定项目章程--启动过程组

热门文章

  1. TI Sitara系列AM4376/AM4379 ARM Cortex-A9高性能低功耗处理器设计的工业级核心板
  2. ASM管理命令行三工具:KFOD、KFED和AMDU
  3. 【3】现代计算机图形学(正交投影,透视投影,MVP变换)
  4. DBCO-PEG-TAT DBCO-聚乙二醇-TAT
  5. 描写火车站场景_形容车站人多的句子(车站场景写一段话)
  6. androbench跑分性能排查
  7. 手机闪存速度测试工具,AndroBench
  8. Asp代码转换java代码器_asp下实现对HTML代码进行转换的函数
  9. VMware vSphere ESXI 6.7 U3最新版本封装网卡驱动补丁
  10. 毕业设计 基于JavaWeb的奖学金评定管理系统