MATLAB数值积分解读
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例2 求定积分:
function f=fx(x)
0
x sin x dx (1 cos x cos x )
(1) 被积函数文件fx.m。
f=x.*sin(x)./(1+cos(x).*cos(x));
(2) 调用函数quad8求定积分。
I=quad8('fx',0,pi)
例3 分别用quad函数和quad8函数求定积分
分别为x的上、下限,c,d分别为y上、下限。
例5 计算二重定积分
2
1
2 1
e sin( x 2 y )dydx
x2 2
(1) 建立一个函数文件fxy.m:
function f=fxy(x,y) global ki; ki=ki+1; %ki用于统计被积函数的调用次数 f=exp(-x.^2/2).*sin(x.^2+y);
6 MATLAB 数值积分
定积分:函数f (x)在区间[a, b]上的定积分定义为
I f ( x)dx
a b max( xi ) 0
lim
f ( )x
i 1 i
n
i
其中
a x0 x1
xn b, xi xi xi 1 ,
i ( xi 1 , xi ), i 1, 2, , n
2018/10/6 14
(2) syms函数 函数sym一次只能定义一个符号变量,使用 不方便。MATLAB提供了另一个函数syms, 一次可以定义多个符号变量。syms函数的一 般调用格式为: syms 符号变量名1 符号变量名2 … 符号变 量名n 用这种格式定义符号变量时不要在变量名 上加字符串分界符(‘),变量间用空格而不要用 逗号分隔。
%生成函数关系数据向量
ans = 0.28579682416393
6.3 二重定积分的数值求解
使用 MATLAB 提供的 dblquad 函数就可以直接求出 上述二重定积分的数值解。该函数的调用格式为: I = dblquad(f,a,b,c,d,tol,trace) 该函数求 f(x,y) 在 [a,b]×[c,d] 区域上的二重定积分。 参数tol,trace的用法与函数quad完全相同。 a,b
例1 求定积分:
function f=fesin(x)
3
0ห้องสมุดไป่ตู้
e
0.5 x
sin( x )dx 6
(1) 建立被积函数文件fesin.m。
f=exp(-0.5*x).*sin(x+pi/6);
(2) 调用数值积分函数quad求定积分。
[S,n]=quad('fesin',0,3*pi)
6.2.2 牛顿-柯特斯法
(2) 调用dblquad函数求解。
global ki;ki=0; I=dblquad('fxy',-2,2,-1,1) ki
triplequad(‘fun’,a,b,c,d,e,f) 为三维矩形区域上的三 重数值积分,fun表示被积函数的M函数 名,a,b分别为x的上、下限,c,d分别为 y上、下限,e,f分别为z上、下限。 其它命请同学们用help命令查阅详细信息及调用 方法。
6.1 数值积分基本原理
求解定积分的数值方法多种多样,如简单的梯形法、 辛普生 (Simpson)•法、牛顿-柯特斯 (Newton-Cotes) 法等都是经常采用的方法。 它们的基本思想都是将整个积分区间 [a, b] 分成 n个 子区间[xi, xi+1],i=1, 2, …, n, 其中x1 = a,xn+1 = b。 这样求定积分问题就分解为求和问题。
2.5
1
e x dx
的近似值,并在相同的积分精度下,比较函数的调 用次数。 调用函数quad求定积分:
format long;
fx=inline('exp(-x)');
[I,n] = quad(fx,1,2.5,1e-10)
调用函数quad8求定积分:
format long;
fx=inline('exp(-x)');
7 MATLAB符号计算
2018/10/6
13
7.1 符号对象
7.1.1 建立符号对象
1. 建立符号变量和符号常量 MATLAB提供了两个建立符号对象的函数:sym 和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号量,一般调用格式为: 符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是 常量、变量、函数或表达式。 应用sym函数还可以定义符号常量,使用符号常 量进行代数运算时和数值常量进行的运算不同。
6.2 数值积分的实现方法
6.2.1 变步长辛普生法
基于变步长辛普生法,MATLAB给出了quad函数来 求定积分。该函数的调用格式为:
[I, n] = quad('fname', a, b, tol, trace)
其中 fname 是被积函数名。 a 和 b 分别是定积分的下 限 和 上 限 。 tol 用 来 控 制 积 分 精 度 , 缺 省 时 取 tol=0.001。trace控制是否展现积分过程,若取非0则 展现积分过程,取 0 则不展现,缺省时取 trace=0 。 返回参数I即定积分值,n为被积函数的调用次数。
基于牛顿-柯特斯法, MATLAB 给出了 quad8 函数 来求定积分。该函数的调用格式为: [I, n] = quad8('fname', a, b, tol, trace) 其中参数的含义和quad函数相似,只是tol的缺省值 取 10-6 。 •该函数可以更精确地求出定积分的值,且 一般情况下函数调用的步数明显小于 quad函数,从 而保证能以更高的效率求出所需的定积分值。
2018/10/6 15
2. 建立符号表达式 含有符号对象的表达式称为符号表达式。 建立符号表达式有以下3种方法: (1) 利用单引号来生成符号表达式。 (2) 用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达 式。
[I,n]=quad8(fx,1,2.5,1e-10)
6.2.3 被积函数由一个表格定义
trapz(x,y) 为梯形积分法, x表示积分区间的离散化 向量,y是与x同维数的向量,表示被积函数在x处的 函数值,z返回积分值。
例4 用trapz函数计算定积分。
命令如下:
X=1:0.01:2.5; Y=exp(-X); trapz(X,Y)