第一讲
数值积分及其应用
—— 二重积分
—— Matlab积分函数
矩形区域二重积分
矩形区域二重积分:累次积分
( )
( , ) d d ( , ) d d
b d b d
a c f x y y x = a c f x y y x
∫ ∫ ∫ ∫
复合梯形法
1 0
1
( , ) ( , )
( , ) d ( , )
2 2
d n
n
y j
c j
f x y f x y
f x y y h f x y
−
=
≈ + +
∑
∫
1 0
1
( , ) ( , )
( , ) d ( , )
2 2
b m
j m j
j x i j
a i
f x y f x y
f x y x h f x y
−
=
≈ + +
∑
∫
0,1, ...,
i = n
x , y
b a d c
h h
m n
− −
= =
矩形区域二重积分
( , ) d d
b d
a c f x y y x
∫ ∫
(
0 0 0 0)
1 ( , ) ( , ) ( , ) ( , )
4 h hx y f x y f x yn f xm y f xm yn
≈ + + +
1 1 1 1
0 0
1 1 1 1
1 ( , ) ( , ) ( , ) ( , )
2
m m n n
x y i i n j m j
i i j j
h h f x y f x y f x y f x y
− − − −
= = = =
+ + + +
∑ ∑ ∑ ∑
1 1
1 1
( , )
m n
x y k i
k i
h h f x y
− −
= =
+
∑∑
在积分区域的四个角点系数为 1/4,边界为 1/2,内部节点为 1
( ) ( )
2 2
2 2
2 2
( )( )
( ) , ,
12 x y
d c b a
R f h f h f
x y
− − ∂ ∂
= − ∂ ξ η + ∂ ξ η
矩形区域二重积分
复合抛物线法 ,
2 2
x y
b a d c
h h
m n
− −
= =
( , ) d
d
c f x y y
∫
( , ) d
b
a f x yj x
∫
1
0 2 2 2 1
1 1
( , ) ( , ) 2 ( , ) 4 ( , )
3
n n
y
n j j
j j
h f x y f x y f x y f x y
−
−
= =
≈ + + +
∑ ∑
1
0 2 2 2 1
1 1
( , ) ( , ) 2 ( , ) 4 ( , )
3
n n
x
j m j i j i j
i i
h f x y f x y f x y f x y
−
−
= =
≈ + + +
∑ ∑
矩形区域二重积分
2 2
,
0 0
( , ) ( , )
m n
b d
x y i j i j
a c
i j
f x y dydx h h f x y
= =
= ∑∑ ω
∫ ∫
,
i j u vi j
ω = ⋅
{ }
{ }
0 1 2
0 1 2
1 4 2 4 2 4 1
, , , , , , , , , ,
3 3 3 3 3 3 3 1 4 2 4 2 4 1
, , , , , , , , , ,
3 3 3 3 3 3 3
T m
T n
U u u u
V v v v
= =
= =
其中
误差: 4 4
4 4
4 4
( )( )
( ) ( , ) ( , )
180 x y
d c b a
R f h f h f
x y
− − ∂ ∂
= − ∂ ξ η + ∂ ξ η
Matlab积分函数
Matlab 计算积分的相关函数
数值积分函数
trapz、quad、integral、integral2
符号积分函数: int
trapz(x, y)
x 为分割点(节点)组成的向量,
y 为被积函数在节点上的函数值组成的向量。
−
−
≈ + + + +
∫
ab ( ) 20 1 n 1 2ny y
f x dx b a y y
n
0 1
[ , x , ,
n]
x = x x
y = [ (f x0), (f x1),, (f xn )] 复合梯形法
trapz
例:用梯形法计算下面定积分 ( 取 n=100 )
解: a=0, b=1, n=100, yi = f (xi) = 1/( 1+xi2 )
x=0:1/100:1;
y=1./(1+x.^2);
inum=trapz(x, y)
trapz 举例
1 0
1
2I dx
= x
∫ +
quad(f,a,b,tol)
f = f(x) 为被积函数,[a,b] 为积分区间,tol 为计算精度
将自变量看成是向量!
b
( )
a
f x dx
∫
不用自己分割积分区间
可以指定计算精度,若不指定,缺省精度是 10-6
精度越高,函数运行的时间越长
f 是函数句柄,也可用字符串表示(不推荐),
其中涉及的运算必须采用数组运算
quad
自适应抛物线法
解: f=
@(x) 1./(1+x.^2);
inum=quad(f, 0, 1) % 采用缺省精度
inum=quad(@(x) 1./(1+x.^2), 0, 1, 1e-10)
例:用 quad 计算定积分:
quad 举例
1 0
1
2I dx
= x
∫ +
integral(f,a,b)
integral(f,a,b,'RelTol',tol)
b
( )
a
f x dx
∫
该函数比 quad 效率更高,且可以处理一些非正常积分
可以指定计算精度,若不指定,缺省精度是 10-6
f 必须是函数句柄,且涉及的运算必须采用数组运算
integral
全局自适应积分法(R2012a以后版本)
f=@(x) 1./(1+x.^2);
inum=integral(f,0,1)
inum=integral(f,0,1,'RelTol',1e-10) f=@(x) exp(-x);
inum=integral(f,0,inf)
integral2(f,a,b,c,d,tol)
integral2(f,a,b,c,d,'RelTol',tol)
可以指定计算精度,若不指定,缺省精度是 10-6
f 必须是函数句柄,且涉及的运算必须采用数组运算
integral2
计算二重积分的全局自适应积分法
( , )
d b
c a
f x y dxdy
∫ ∫
integral2
f=@(x,y) 4*x.*y+3*y.^2;
inum=integral2(f,-1,1,0,2)
2 1
2
0 1(4 3 )
I xy y dxdy
=
∫ ∫
− + 例:计算二重积分注意积分变量与积分区间的对应关系
在前面的是第一积分变量,在后面的是第二积分变量
int
符号积分
int(f,v,a,b) % 计算定积分
int(f,a,b) % 计算关于默认变量的定积分 int(f,v) % 计算不定积分
int(f) % 计算关于默认变量的不定积分
b
( )
a
f v dv
∫
( ) f v dv
∫
例:用 int 函数计算定积分:
syms x;
f=1/(1+x^2);
inum=int(f,x,0,1)
1 0
1
2I dx
= x
∫ +
2 2
1 x
d
I = ∫ e
−x
x=1:0.001:2;
y=exp(x.^(-2));
inum=trapz(x,y)
梯形法:
抛物线法: f=@(x) exp(x.^(-2));
inum=quad(f, 1, 2, 1e-10)
符号积分法:
syms x;
inum=int(exp(x^(-2)),x,1,2) 例:用 Matlab 函数近似计算定积分
数值实验
2 1
2
0 1
( )
I dx x y dy
= ∫ ∫
−+
数值积分法:
f=@(x,y) x+y.^2;
inum=integral2(f, 0, 2, -1, 1)
符号积分法:
syms x y;
f=int(x+y^2,y,-1,1);
inum=int(f,x,0,2)
数值实验
例:用 Matlab 函数近似计算二重积分