精品文档
实验六 数值积分(Quadrature)
6.1 实验目的
掌握数值积分的代数精度与收敛阶的含义,会利用matlab求解符号积分和数值积分,并会借助数学软件Matlab求解一些简单的实际问题。 6.2 实验内容
1、Matlab中求解符号积分和数值积分的方法;
2、建立飞船的轨道周长和手的面积等实际问题的数学模型,并借助数学软件Matlab求解. 6.3 实验步骤
6.3.1 函数表达式已知时的积分
Matlab中求积分的方法包括符号积分(精确计算)和数值积分两种。前者只有一个命令int(注:求导数的命令为diff),后者命令较多,详见表1。
表1 Matlab中数值积分函数一览表 函数名 quad 调用格式 q=quad(fun,a,b,tol) 适应范围(详见Help) 被积函数不光自适应Simpson 滑,低精度要法 求 方法说明 自适应 Lobatto 滑,高精度要法 求 被积函数光quadl q=quadl(fun,a,b,tol) quadgk [q,errbnd]= quadgk(fun,a,b,tol) 震荡型被积函自适应Gauss- 数,高精度要Kronrod 法 求,积分限可为无穷 梯形法 离散数据点积分 trapz q=trapz(X,Y) q = dblquad(fun, xmin,xmax,ymin,ymax) dblquad 调用一维数矩形区域上的值积分方法 二重积分 平面区域上的二重积分 quad2d q = quad2d(fun,a,b,c,d) triplequad(fun,xmin,xmtriplequad ax,ymin,ymax,zmin,zmax) 精品文档
三维长方形区调用一维数域上的三重积值积分方法 分 精品文档
教师示范1:符号积分
int是matlab中符号工具箱的一个命令,它能精确计算不定积分和定积分,微积分教材中的积分一般均可用该种方法积出。
例1 求不定积分??2xdx。
(1?x2)2Matlab命令序列为: syms x
s=int(-2*x/(1+x^2)^2) 运行结果为:1/(x^2 + 1),即
?2x1dx?。 2?(1?x2)21?x验算所得结果,即验证
d?1??2x?, ??dx?1?x2?(1?x2)2Matlab命令为:diff(s),运行结果为:-(2*x)/(x^2 + 1)^2. 其余见文件:integrate_symbolic.m。 教师示范2:数值积分 例2 求不定积分?Matlab命令为: format long
q1 = quad(@(x) exp(-x.^2/2),0,2) q2 = quadl(@(x) exp(-x.^2/2),0,2) q3 = quadgk(@(x) exp(-x.^2/2),0,2)
结果分别为1.196288044999181,1.196288103140270和1.196288013322608。实际上,
1.960e?x22dx
?1.960e?x22dx?1.19628801332260820293142377047
由此,函数quadgk比quad、quadl的计算精度要高。
6.3.2 离散数据的数值积分
当函数的表达式未知,但已知函数在一系列节点处的函数值时,?f(x)dx的
ab计算有三种方法。方法1,利用表1中的梯形法;方法2,先用样条插值函数逼
精品文档
精品文档
近未知函数,然后利用表1中的命令求该样条函数的积分;方法3,如果所求的图形可视为以点(xi,yi)为顶点的多边形,则可利用多边形的面积公式(1)
1?n?1?A????xkyk?1?xk?1yk??xny1?x1yn? (1)
2?k?1?直接求解。
具体见例3。
例3 用不同方法计算不定积分?cosxdx?sin10,比较不同方法的精度。
010程序如下。
%% 比较不同方法求定积分的精度 a = 0; b = 10; syms x;
exact = vpa( int(cos(x),a,b), 20); % 符号定积分,小数点20位的精确值
q = zeros(7,1);
q(1) = quad(@cos,a,b);
q(2) = quadl(@cos,a,b); q(3) = quadgk(@cos,a,b);
% 离散数据后,用梯形法求积分 t = a:0.1:b; y = cos(t);
q(4) = trapz(t, y);
% 用三次样条近似函数后,求积分
pp = spline( t, y );
q(5) = quad(@(t)ppval(pp,t),a,b);
q(6) = quadl(@(t)ppval(pp,t),a,b); q(7) = quadgk(@(t)ppval(pp,t),a,b); %
disp('精确值')
disp(exact)
精品文档