当前位置:文档之家› 定积分的近似计算

定积分的近似计算

>> dblquad(@(y,x)4*x*y+3*x.^2 , -1, 1 , 0, 2 )
25
int
b
a f (v)dv
f (v)dv
符号积分: int
int(f,v,a,b) 计算函数 f 关于自变量 v 的定积分,积分区间为 [a, b]
int(f,v)
计算函数 f 关于自变量 v 的不定积分
本实验主要研究定积分的三种近似计算算法:矩形法、 梯形法和抛物线法。同时介绍 Matlab 计算定积分的相 关函数。
2
主要内容
数值积分的常见算法
矩形法 梯形法 抛物线法
Matlab 求积分函数
数值积分函数:trapz、quad、dblquad 符号积分函数:int
3
定积分的近似
定积分的定义
>> double(a) >> double('a')
ans = 3 ans = 97
28
数值实验
例:用 Matlab 函数近似计算定积分 I 2 e x2dx 1 梯形法: >> x=1:0.001:2; >> y=exp(x.^(-2)); >> trapz(x,y) 抛物线法: >> quad('exp(x.^(-2))',1,2,10e-10) 符号积分法: >> syms x >> int('exp(x^(-2))',x,1,2)
例:计算二重积分 I 2 1 (4xy 3x2 )dxdy 0 1 X >> dblquad(inline('4*x*y+3*x^2'),-1,1,0,2) >> dblquad(inline('4*x*y+3*x.^2'),-1,1,0,2) 24
dblquad 举例
被积函数 f (x,y) 的另一种定义方法:匿名函数
Matlab 求积分函数
数值积分函数:trapz、quad、dblquad 符号积分函数:int18来自 trapztrapz
梯形法
trapz(x,y)
x 为分割点(节点)组成的向量, y 为被积函数在节点上的函数值组成的向量。
b a
f ( x)dx
ba n
y0 2
y1 L
yn1
yn 2
x0 步长
x1 x2 L L
xi
h
b
n
a
xi1 xi
LL
xn1
xi a ih, i 1,2,K n
xn 节点
b
n
n
f ( x)dx
a
f ( xi-1 )xi h f ( xi1 )
i 1
i 1
左点法
b
n
n
f ( x)dx
a
f ( xi )xi h f ( xi )
i 1
x [ x0 , x1,K , xn] y [ f ( x0 ), f ( x1),K , f ( xn )]
19
trapz 举例
例:用梯形法计算下面定积分 ( 取 n=100 )
I
1 dx 0 1 x2
解: a=0, b=1, n=100, yi = f (xi) = 1/( 1+xi2 )
c a f ( x, y)dxdy
抛物线法计算二重积分: dblquad
dblquad(f,a,b,c,d,tol)
tol 为计算精度,若不指定,则缺省精度为 10-6
f 可以是: 字符串;inline 定义的内联函数;函数句柄
[a,b] 是 第一积分变量 的积分区间, [c,d] 是 第二积分变量 的积分区间
i 1
右点法
b a
f ( x)dx
n i 1
f
(
xi1 2
xi
)xi
n
h
i 1
f ( xi1 xi ) 2
中点法
fuluA.m6
矩形法举例
例:用不同的矩形法计算下面的定积分 ( 取 n=100 ),
并比较这三种方法的相对误差。
I
1 dx 0 1 x2
解:a=0, b=1, n=100
或 >> f=sym('1/(1+x^2)'); >> int(f,'x',0,1)
或 >> int('1/(1+x^2)','x',0,1) 或 >> int('1/(1+x^2)',0,1)
27
相关函数
double(a) 将 a 转化为双精度型,若 a 是字符,则取对应的 ASCII 码
例: >> a=3;
b
f ( x)dx
a
n
lim
n
f (i )xi , i [xi1, xi ]
x0 i1
x1 x2 L L
xi
x0
L L x1
x2
xi1 xi
LL
LL
xn xn1
xn
xi xi xi1
x
max i
xi
4
矩形法
定积分的近似:
b
n
f ( x)dx
a
f (i )xi
i 1
n 充分大,x 充分小
f = f(x) 为被积函数,[a,b] 为积分区间,tol 为计算精度
不用自己分割积分区间
可以指定计算精度,若不指定,缺省精度是 10-6
精度越高,函数运行的时间越长
此处的函数 f 是数值形式,应该使用数组运算,即: .* ./ .\ .^
将自变量看成是向量
21
quad 举例
例:用 quad 计算定积分: I
2
(
(x22 x2
x22 )
x02
)
( x2 x0 )2 2( x2 x0
( x2 ) 4
x0
)
x2 x0 6
(y0 4y1 y2 )
ba 6n
(y0 4 y1 y2 )
14
抛物线法
同理可得:
x4 x2
f ( x)dx
ba 6n
(
y2
4 y3
y4 )
LL
x2n x2 n 2
数学实验
实验二 定积分的近似计算
1
定积分的近似计算
问题背景和实验目的
定积分计算的基本公式是牛顿-莱布尼兹公式。但当 被积函数的原函数不知道时,如何计算?这时就需要利 用近似计算。特别是在许多实际应用中,被积函数甚至 没有解析表达式,而是一条实验记录曲线,或一组离散 的采样值,此时只能用近似方法计算定积分。
ba, 2n
xi
ih1 ,
i
0, 1,K
, 2n
计算每个节点上的函数值:
yi f ( xi ), i 0,1,K , 2n
在区间 [x0, x2] 上,用过以下三点 P0 ( x0 , y0 ), P1( x1, y1 ), P2 ( x2 , y2 )
的抛物线来近似原函数 f (x) 。
用抛物线代替该直线, 计算精度是否会更好?
int(f,a,b)
findsym(f,1)
计算 f 关于默认自变量 的定积分,积分区间为[a,b]。
int(f) 计算 f 关于默认自变量 的不定积分。
26
int 举例
例:用 int 函数计算定积分:
I
1 dx 0 1 x2
解: >> syms x; >> f=1/(1+x^2); >> int(f,x,0,1)
29
数值实验
例:用 Matlab 函数近似计算二重积分
I
2
dx
1 ( x y2 )dy
0
1
抛物线法:
>> dblquad(inline('x+y^2'),0,2,-1,1)
符号积分法:
>> f=int('x+y^2','y',-1,1); >> int(f,'x',0,2)
30
2( y2 y4 L y2n2 )]
抛物线法公式
或 辛卜生 (Simpson) 公式
fuluC.m
16
抛物线法
例:用抛物线法计算下面定积分 ( 取 n=100 ),并计算相对误差
I
1 dx 0 1 x2
解: a=0, b=1, n=100, yi = f (xi) = 1/( 1+xi2 )
中点法相对误差:0.78540024673078 / 4 2.653 10-6 /4
不同的算法有不同的计算精度
有没有更好的近似计算定积分的方法 ?
8
定积分几何意义
b
S a f ( x)dx
y
f (x)
S1 S2
Si
Sn
b
n
S f ( x)dx a
Si
i 1
oa
xi1 xi
bx
9
f ( x)dx
ba 6n ( y2n2
4 y2n1
y2n )
相加即得:
b
n
f ( x)dx
x2i f ( x)dx
a
i1 x2i2
n i 1
ba 6n
( y2i2
4 y2i1
y2i )
15
抛物线法
整理后可得:
b
相关主题