(完整版)MATLAB数值积分解读
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
其它命请同学们用help命令查阅详细信息及调用 方法。
7 MATLAB符号计算
2020/4/8
13
7.1 符号对象
7.1.1 建立符号对象
1. 建立符号变量和符号常量 MATLAB提供了两个建立符号对象的函数:sym
和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号量,一般调用格式为:
基于牛顿-柯特斯法,MATLAB给出了quad8函数 来求定积分。该函数的调用格式为:
[I, n] = quad8('fname', a, b, tol, trace)
其中参数的含义和quad函数相似,只是tol的缺省值 取10-6。 该函数可以更精确地求出定积分的值,且 一般情况下函数调用的步数明显小于quad函数,从 而保证能以更高的效率求出所需的定积分值。
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为被积函数的调用次数。
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)
例1ቤተ መጻሕፍቲ ባይዱ求定积分:
3 e0.5x sin( x )dx
0
6
(1) 建立被积函数文件fesin.m。
function f=fesin(x)
f=exp(-0.5*x).*sin(x+pi/6);
(2) 调用数值积分函数quad求定积分。
[S,n]=quad('fesin',0,3*pi)
6.2.2 牛顿-柯特斯法
例2 求定积分:
x sin x
dx
0 (1 cos x cos x)
(1) 被积函数文件fx.m。
function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x));
(2) 调用函数quad8求定积分。
I=quad8('fx',0,pi)
例3
分别用quad函数和quad8函数求定积分
求解定积分的数值方法多种多样,如简单的梯形法、 辛普生(Simpson)•法、牛顿-柯特斯(Newton-Cotes) 法等都是经常采用的方法。
它们的基本思想都是将整个积分区间[a, b]分成n个 子区间[xi, xi+1],i=1, 2, …, n, 其中x1 = a,xn+1 = b。 这样求定积分问题就分解为求和问题。
(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上、下限。
2.5 exdx
1
的近似值,并在相同的积分精度下,比较函数的调
用次数。
调用函数quad求定积分:
format long; fx=inline('exp(-x)'); [I,n] = quad(fx,1,2.5,1e-10)
调用函数quad8求定积分:
format long; fx=inline('exp(-x)'); [I,n]=quad8(fx,1,2.5,1e-10)
符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是
常量、变量、函数或表达式。 应用sym函数还可以定义符号常量,使用符号常
量进行代数运算时和数值常量进行的运算不同。
2020/4/8
14
(2) syms函数 函数sym一次只能定义一个符号变量,使用
不方便。MATLAB提供了另一个函数syms, 一次可以定义多个符号变量。syms函数的一 般调用格式为:
2020/4/8
16
4. 符号表达式的化简 MATLAB提供的对符号表达式化简的函数
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
分别为x的上、下限,c,d分别为y上、下限。
例5 计算二重定积分
x2
2 1 e 2 sin( x2 y)dydx 2 1
(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]上的定积分定义为
其中
b
n
I
a
f (x)dx lim max(xi )0 i1
f (i )xi
a x0 x1 L xn b, xi xi xi1,
i (xi1 , xi ), i 1, 2,L , n
6.1 数值积分基本原理
syms 符号变量名1 符号变量名2 … 符号变 量名n
用这种格式定义符号变量时不要在变量名 上加字符串分界符(‘),变量间用空格而不要用 逗号分隔。
2020/4/8
15
2. 建立符号表达式 含有符号对象的表达式称为符号表达式。
建立符号表达式有以下3种方法: (1) 利用单引号来生成符号表达式。 (2) 用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。
7 MATLAB符号计算
2020/4/8
13
7.1 符号对象
7.1.1 建立符号对象
1. 建立符号变量和符号常量 MATLAB提供了两个建立符号对象的函数:sym
和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号量,一般调用格式为:
基于牛顿-柯特斯法,MATLAB给出了quad8函数 来求定积分。该函数的调用格式为:
[I, n] = quad8('fname', a, b, tol, trace)
其中参数的含义和quad函数相似,只是tol的缺省值 取10-6。 该函数可以更精确地求出定积分的值,且 一般情况下函数调用的步数明显小于quad函数,从 而保证能以更高的效率求出所需的定积分值。
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为被积函数的调用次数。
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)
例1ቤተ መጻሕፍቲ ባይዱ求定积分:
3 e0.5x sin( x )dx
0
6
(1) 建立被积函数文件fesin.m。
function f=fesin(x)
f=exp(-0.5*x).*sin(x+pi/6);
(2) 调用数值积分函数quad求定积分。
[S,n]=quad('fesin',0,3*pi)
6.2.2 牛顿-柯特斯法
例2 求定积分:
x sin x
dx
0 (1 cos x cos x)
(1) 被积函数文件fx.m。
function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x));
(2) 调用函数quad8求定积分。
I=quad8('fx',0,pi)
例3
分别用quad函数和quad8函数求定积分
求解定积分的数值方法多种多样,如简单的梯形法、 辛普生(Simpson)•法、牛顿-柯特斯(Newton-Cotes) 法等都是经常采用的方法。
它们的基本思想都是将整个积分区间[a, b]分成n个 子区间[xi, xi+1],i=1, 2, …, n, 其中x1 = a,xn+1 = b。 这样求定积分问题就分解为求和问题。
(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上、下限。
2.5 exdx
1
的近似值,并在相同的积分精度下,比较函数的调
用次数。
调用函数quad求定积分:
format long; fx=inline('exp(-x)'); [I,n] = quad(fx,1,2.5,1e-10)
调用函数quad8求定积分:
format long; fx=inline('exp(-x)'); [I,n]=quad8(fx,1,2.5,1e-10)
符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是
常量、变量、函数或表达式。 应用sym函数还可以定义符号常量,使用符号常
量进行代数运算时和数值常量进行的运算不同。
2020/4/8
14
(2) syms函数 函数sym一次只能定义一个符号变量,使用
不方便。MATLAB提供了另一个函数syms, 一次可以定义多个符号变量。syms函数的一 般调用格式为:
2020/4/8
16
4. 符号表达式的化简 MATLAB提供的对符号表达式化简的函数
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
分别为x的上、下限,c,d分别为y上、下限。
例5 计算二重定积分
x2
2 1 e 2 sin( x2 y)dydx 2 1
(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]上的定积分定义为
其中
b
n
I
a
f (x)dx lim max(xi )0 i1
f (i )xi
a x0 x1 L xn b, xi xi xi1,
i (xi1 , xi ), i 1, 2,L , n
6.1 数值积分基本原理
syms 符号变量名1 符号变量名2 … 符号变 量名n
用这种格式定义符号变量时不要在变量名 上加字符串分界符(‘),变量间用空格而不要用 逗号分隔。
2020/4/8
15
2. 建立符号表达式 含有符号对象的表达式称为符号表达式。
建立符号表达式有以下3种方法: (1) 利用单引号来生成符号表达式。 (2) 用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。