第4章 数值微分与积分(附录)

合集下载

数值分析-第4章 数值积分和数值微分

数值分析-第4章  数值积分和数值微分

A0+A1=2 A0x0+A1x1=0 A0x02+A1x12=2/3 A0x03+A1x13=0
A0 A1 1 解得: 1 x 0 x1 3
求积公式为
1 1 1 f ( x)dx f ( ) f ( ) 3 3
x f(x)
数值分析
1 4
2 4.5
3 6
4 8
5 8.5
1
一、数值积分的基本概念 求积节点 数值积分定义如下:是离散点上的函数值的线性组合
I [ f ] f ( x)dx I n [ f ] Ai f ( xi )
b a i 0 n
称为数值积分公式
称为求积系数,与f (x)无关,与积分区间和求积节点有关
b a
Rn ( x) dx
定理:形如 Ak f ( xk ) 的求积公式至少有 n 次代数精度
A 该公式为插值型(即: k a l k ( x)dx )
数值分析
b
5
例1 试确定参数A0,A1,A2,使求积公式
1 f ( x)dx A0 f (1) A1 f (0) A2 f (1)
证明 因为Simpson公式对不高于三次的多项式精确成立。即

b
a
p 2 ( x)dx
ba ab [ p 2 (a) 4 p 2 ( ) p 2 (b)] 6 2
构造三次多项式H3(x),使满足 H3(a)=(a) ,H3(b)=(b),
H 3 (( a b) / 2) f (( a b) / 2), H 3 (( a b) / 2) f (( a b) / 2), 这时插值误差为
1

数值分析课件 第4章 数值积分与数值微分

数值分析课件 第4章 数值积分与数值微分

第4章 数值积分与数值微分1 数值积分的基本概念实际问题当中常常需要计算定积分。

在微积分中,我们熟知,牛顿—莱布尼兹公式是计算定积分的一种有效工具,在理论和实际计算上有很大作用。

对定积分()ba I f x dx =⎰,若()f x 在区间[,]ab 上连续,且()f x 的原函数为()F x ,则可计算定积分()()()ba f x dx Fb F a =-⎰ 似乎问题已经解决,其实不然。

如1)()f x 是由测量或数值计算以数据表形式给出时,Newton-Leibnitz 公式无法应用。

2)许多形式上很简单的函数,例如222sin 1(),sin ,cos ,,ln x x f x x x e x x-=等等,它们的原函数不能用初等函数的有限形式表示。

3)即使有些被积函数的原函数能通过初等函数的有限形式表示,但应用牛顿—莱布尼兹公式计算,仍涉及大量的数值计算,还不如应用数值积分的方法来得方便,既节省工作量,又满足精度的要求。

例如下列积分24111ln11arc 1)arc 1)xdxxtg tg C++=+⎡⎤+++-+⎣⎦⎰对于上述这些情况,都要求建立定积分的近似计算方法—数值积分法。

1.1 数值求积分的基本思想根据以上所述,数值求积公式应该避免用原函数表示,而由被积函数的值决定。

由积分中值定理:对()[,]f x C a b∈,存在[,]a bξ∈,有()()()baf x dx b a fξ=-⎰表明,定积分所表示的曲边梯形的面积等于底为b a-而高为()fξ的矩形面积(图4-1)。

问题在于点ξ的具体位置一般是不知道的,因而难以准确算出()fξ。

我们将()fξ称为区间[,]a b上的平均高度。

这样,只要对平均高度()fξ提供一种算法,相应地便获得一种数值求积分方法。

如果我们用两端的算术平均作为平均高度()f ξ的近似值,这样导出的求积公式[()()]2b a T f a f b -=+ (1.1)便是我们所熟悉的梯形公式(图4-2)。

数值分析(清华大学第五版) 第四章数值积分和微分

数值分析(清华大学第五版) 第四章数值积分和微分


b
a
l j ( x)dx ( x x j -1 )( x x j 1 ) ( x x j 1 )( x x j 1 ) ( x xn ) ( x j xn )
dx
作变量代换, x a th ,则
n t (t 1) h (t j 1)(t j 1) (t n) 上式 dt b a 0 j ( j 1) 1(1) ( j n) 1 n t (t 1) (t j 1)(t j 1) (t n) dt n 0 j ( j 1) 1 (1) ( j n)
该积分仅与 n 有关,与 a, b, f ( x) 无关.
③ 设 n 1 个线性无关的次数 n 的多项式为 e0 ( x), 等距结点 x0 ,
过同样 , en ( x) ,
, xn , 对每一个 ei ( x) 利用 Newton Cotes 公式求积,且积分
余项均为零.即有
n b 1 b a a e0 ( x) dx c j e0 ( x j ) j 0 n 1 b e1 ( x)dx c j e( x j ) a (1) b a j 0 n b 1 b a a en ( x)dx c j en ( x j ) j 0
, n) ,
又设过该结点的次数 n 的 Lagrange插值多项式
P( x) f ( x j )l j ( x) ,
j 0
n
余项
f ( ) R( x) ( x) . (n 1)!
( n 1)
代数精确度
b n
定义 设求积公式 f ( x)dx A j f ( x j ) R(a, b, f ) .

研究生课程《数值分析》第四章数值积分与数值微分

研究生课程《数值分析》第四章数值积分与数值微分

b
a
f
(x)dx
1 (b 6
a)
f
(a)
4
f
(a
2
b)
f
(b)
y=f(x)
梯形公式把 f(a), f(b) 的加权平均值
1 f (a) f (b)
2
aa ((aa++bb))//22 bb
作为平均高度 f( ) 的近似值而获得的一种数值积分方法。
中矩形公式把 [a,b] 的中点处函数值
f
ab 2
定义 (代数精度) 设求积公式(1)对于一切次 数小于等于 m 的多项式( f (x) 1, x, x2 , , xm 或 f (x) a0 a1x a2 x 2 am x m )是准确的,而对于 次数为 m+1 的多项式是不准确的,则称该求积公 式具有 m 次代数精度(简称代数精度)
作为平均高度 f( ) 的近似值而获得的一种数值积分方法。
Simpson公式是以函数 f(x)在 a, b, (a+b)/2 这三点的函数
值 f(a),
f(b),
f
a
2
b
的加权平均值

1 ( f (a) 4 f ( a b ) f (b))作为平均高度 f() 的近
6
2
似值而获得的一种数值积分方法。
将积分区间细分, 在每个小区间内用简单函数代替复 杂函数进行积分,这是数值积分的思想。本章主要讨论 用代数插值多项式代替 f(x) 进行积分。
5.1.1 数值积分的基本思想
积分 I b f (x)dx 在几何上可以理解为由 x=a, x=b, a
y=0 以及 y = f(x) 这四条边所围成的曲边梯形面积。如图 1 所 示,而这个面积之所以难于计算是因为它有一条曲边 y=f(x)。

数值分析数值计算方法课程课件PPT之第四章数值积分与数值微分

数值分析数值计算方法课程课件PPT之第四章数值积分与数值微分
4
( x a )( x b ) d x a
b
[ a , b ].
(2) f ( x) C [a, b], 则 辛 普 森 公 式 的 截 断 差 误 为:
f ()b a b 2 R ( x a )( x ) ( x b ) d x S a 4 ! 2
b ab a 4 ( 4 ) ( ) f ( ), 180 2
n 1
I k 求出积分值Ik,然后将它们累加求和,用 作为所求积分 I的近 k 0 似值。
h I f ( x ) dx f ( x ) dx f ( x ) f ( x ) k k 1 a x k 2 k 0 k 0 h f ( x ) 2 ( f ( x ) f ( x ) ... f ( x )) f ( x ) 0 1 2 n 1 n 2

1 S f ( a ) 4 f ( x ) 2 f ( x ) f ( b ) 1 n k k 2 6 k 0 k 1
n 1 n 1
称为复化辛普森公式。
18
类似于复化梯形公式余项的讨论,复化辛普森公式的求 积余项为
R s h f 2880 ba
1

4.3 复化求积公式
问题1:由梯形、辛普森和柯特斯求积公式余项,分析随着求 积节点数的增加,对应公式的精度是怎样变化? 问题2:当n≥8时N—C求积公式还具有数值稳定性吗?可用增 加求积节点数的方法来提高计算精度吗? 在实际应用中,通常将积分区间分成若干个小区间, 在每个小区间上采用低阶求积公式,然后把所有小区间上 的计算结果加起来得到整个区间上的求积公式,这就是复 化求积公式的基本思想。常用的复化求积公式有复化梯形 公式和复化辛普森公式。

04数值积分与微分.pdf

04数值积分与微分.pdf

d W d S
V V U
S
S
³ ³ / [ \ GW D VLQ W E FRV WGW





\

[
;<
;<
³³ 3
S [ \ G[G\
:
[ D

\ E
d
D
E

D
7 [ I [
I [
7 [
I
cc KN
[

[N
[

[N

[KN [N [N
[[N [[N [N[N
[N
³> I [ 7 [ @G[
[N
³ I cc [N
[ [N [ [N G[
([SHULPHQWV LQ 0DWKHPDWLFV






c d
q
r
³E [ H G[ D
³ E VLQ [ G[ D[
d





c
c

\
V
V
U
R
[
V NP
V NP
U NP D a
[ D FRV W \ E VLQ W E a
[N
[N
K
I cc [N


, 7Q
, 7Q K
E
³ I [ G[ 7 Q
D
¦ K
Q N
I cc [ N
³ o


E
I
[ G[
D
I

第4章 数值微分和积分

第4章 数值微分和积分

(4.1.13)
φ2 (h) = f '( x) − ∑ ⎜
⎛ 1 ⎞ a − 1⎟ 2 2 n h 2 n 2n−2 ⎠ 2 −1 n=2 ⎝ 2
(4.1.14)
42
这样,用 φ2 ( h) 近似 f '( x) 将是 O(h ) 的精度。继续逐次将步长减半,会得到递推关系:
4
h 22( m −1) φm −1 ( ) − φm −1 (h) 2 φm (h) = 2( m −1) 2 −1
f '( x) ≈ L'2 ( x) =
⎤ 1 ⎡⎛ 2 x − x1 − x2 ⎞ ⎛ 2 x − x0 − x2 ⎞ ⎛ 2 x − x0 − x1 ⎞ ⎜ ⎟ f ( x0 ) − 2 ⎜ ⎟ f ( x1 ) + ⎜ ⎟ f ( x2 ) ⎥ ⎢ h h h 2h ⎣ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎦
f ′ ( x ) = lim
如果取函数 f ( x) 的一阶数值微商为:
h →0
f ( x + h) − f ( x) h
f '( x) =
f ( x + h) − f ( x ) h
(4.1.2)
(4.1.2)式称为数值微分的 Euler 方法, 根据(4.1.1) ,其误差为 Ο ( h ) ,是 h 的量级,称为一阶精度。 这是两点微商公式,是用向前差商近似微商。对于泰勒展开
f ( x − h ) = f ( x ) − hf ′ ( x ) +
可以用向后差商近似微商,
h2 f ′′ ( x ) − 2!
+
hn ( n) f ( x) + n!
(4.1.3)
f '( x) =

《数值分析-李庆杨》第4章 数值积分与数值微分-文档资料

《数值分析-李庆杨》第4章  数值积分与数值微分-文档资料

(a

b).得到的求积公式就是中矩形公式。再令

f (x) x2, 代入(1.4)式的第三式有

分 析 》
A0 x02
(b
a)( a
b)2 2

b
a 4
(a2
b2)

b x2dx 1 (b3 a3 ),
a
3
说明中矩形公式对f (x) x2不精确成立,故它的代数精确度为1.
当f(x)=x2时(1.4)式的第三个式子不成立,因为
b a (a2 b2 ) b x2dx 1 (b3 a3).
2
a
3
故梯形公式(1.1)的代数精确度为1.
第4章 数值积分与数值微分
在方程组(1.4)中如果节点xi及系数Ai都不确定,那么方 程组(1.4)是关于xi及Ai(i=0,1,…,n)的2n+2个参数的非线性方 程组。此方程组当n>1时求解是很困难的,但当n=0及n=1的 情形还可通过求解方程组(1.4)得到相应的求积公式。
练习 设有求积公式
1
1 f (x)dx A0 f (1) A1 f (0) A2 f (1)
试确定系数A0, A1, A2, 使上述求积公式的代数精度尽量高.
三、插值型求积公式
第4章 数值积分与数值微分
在n 1个互异节点a x0 x1 xn b上已知函数值f0,

A1

1(b a).于是得 2
数 值
I ( f ) b f ( x)dx b a [ f (a) f (b)]
a
2

析 这就是梯形公式(1.1),它表明利用线性方程组(1.4)推出的求积公式,
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章附录
4.2.2 复化求积分
例题4.2.5计算程序
//simp.c//
# include<stdio.h>
# include<math.h>
# define f(x) 4./(1+(x)*(x))
void main(void)
{ float a = 0., b = 1., s, h;
int n = 100, i;
h = (b-a)/n;
s = f(a)+f(b);
for(i=1;i<=n-1;i++)
{ if(i%2==0)
s = s+2.0*f(a+i*h);
else
s=s+4.*f(a+i*h);
}
s = s*h/3;
printf("%10.5f\n",s);
}
====================================
4.2.3 变步长求积分公式和龙贝格求积分公式
例题4.2.6计算程序
!!!!Trapezia.for!!!
program trapezia
external f
real(8) f,a,b,s
a=0.0; b=1.0; eps=1.e-6
call trap(a,b,f,eps,s,n)
write(*,10) s,n
10 format(1x,'s=',d15.6,3x,'n=',i5)
end
function f(x)
real(8) x
f=exp(-x*x)
end
subroutine trap(a,b,f,eps,t,n)
real(8) a,b,f,t,fa,fb,h,t0,s,x
fa=f(a); fb=f(b)
n=1; h=b-a
t0=h*(fa+fb)/2.0
5 s=0.0
do 10 k=0,n-1
x=a+(k+0.5)*h
s=s+f(x)
10 continue
t=(t0+h*s)/2.0
if (abs(t-t0).ge.eps) then
t0=t
n=n+n
h=h/2.0
goto 5
end if
return
end
%%% demo_aTrapInt.m %%%
function demo_aTrapInt
clc;clear; format long;
[T nsub] = aTrapInt(@f01,0,1,0.000001)
end
function [T nsub]= aTrapInt(f,a,b,eps)
tol = 1; nsub = 1;
inall = 0;
T = 0.5*(b-a)*(f(a)+f(b));
while tol > eps
T0 = T;
nsub = 2*nsub;
n = nsub + 1; % total number of nodes h = (b-a)/nsub; % stepsize
x = a:h:b; % divide the interval inall = inall + sum(f(x(2:2:n-1)));
T = 0.5*h * (f(a)+2*inall+f(b));
tol = abs(T-T0);
end
end
%%% demo_aSimpInt.m%%%
function demo_aSimpInt
clc;clear; format long;
[S nsub] = aSimpInt(@f01,0,1,0.000001)
end
function [S nsub] = aSimpInt(f,a,b,eps)
nsub = 2;
even = f((a+b)/2);
odd = 0;
S = (b-a)*(f(a) + 4*even + 2*odd + f(b))/6;
inall = even + odd;
tol = 1;
while tol > eps
S0 = S;
nsub = 2*nsub;
n = nsub + 1; % total number of points
h = (b-a)/nsub; % stepsize
x = a:h:b; % divide the interval
even = sum(f(x(2:2:n-1))); % 偶节点
odd = inall; % 间隔取半前的全部内节点inall 在间隔取半时全部变为奇节点S = (h/3)*( f(a) + 4*even +2*odd + f(b));
inall = even + odd;
tol = abs(S - S0);
end
====================================
例题4.2.7计算程序
!!!Simpson.f90
program simpson ! f=sin(x),fp=cos(x)
parameter(pi=3.1415926,n=64)
real(8) a(0:n),b(0:n),c(0:n),r(0:n),u(0:n)
real(8) x(0:n),f(0:n),fp(0:n),dx,d
integer i
open(2,file='exa4_1_3_old.txt')
open(5,file='exa4_1_3.txt')
dx = 2.0*pi/n
d = 3.0/dx
fp(0) = 1.0 ! fp(0) = cos(0) =1
fp(n) = 1.0 ! fp(n) = cos(2pi)=1
do i = 0,n
x(i) = i*dx; f(i) = sin(x(i))
write(2,'(2x,2f10.6)') x(i),f(i)
end do
a = 1.;
b = 4.;
c = 1.
do i = 1,n-1
r(i) = 3.0*(f(i+1)-f(i-1))/dx
end do
r(1) = r(1)-fp(0); r(n-1) = r(n-1)-fp(n)
call tridag(a,b,c,r,u,n-1) ! 注意三对角矩阵是n-1维u(0) = fp(0); u(n) = fp(n)
do i = 0,n
write(5,'(2x,2f10.6)') x(i),u(i)
end do
end
subroutine tridag(a,b,c,r,u,n)
parameter (nmax=500)
integer n,j
real(8) a(0:n),b(0:n),c(0:n),r(0:n),u(0:n)
real(8) bet,gam(nmax)
if(b(1).eq.0.)pause 'tridag: rewrite equations'
bet=b(1)
u(1)=r(1)/bet
do j=2,n
gam(j)=c(j-1)/bet
bet=b(j)-a(j)*gam(j)
if(bet.eq.0.)pause 'tridag failed'
u(j)=(r(j)-a(j)*u(j-1))/bet
end do
do j=n-1,1,-1
u(j)=u(j)-gam(j+1)*u(j+1)
end do
return
end
!!!Romberg.for
program romberg
external f
double precision f,a,b,s
a=0.0
b=1.0
eps=0.000001
call romb(a,b,f,eps,s,n)
write(*,10) s,n
10 format(1x,'s=',d15.8,1x,'n=',i6)
end program romberg
function f(x)
double precision f,x
! f=log(1+x)/(1+x*x)
! f=x/(4+x*x)
f=4./(1.+x*x)
return
end
subroutine romb(a,b,f,eps,t,n)
dimension y(10)
double precision a,b,f,t,y,h,p,s,q
h=b-a
y(1)=h*(f(a)+f(b))/2.0
m=1
n=1
10 p=0.0
do 20 i=0,n-1
20 p=p+f(a+(i+0.5)*h)
p=(y(1)+h*p)/2.0
s=1.0
do 30 k=1,m
s=4*s
q=(s*p-y(k))/(s-1)
y(k)=p
p=q
30 continue
if ((abs(q-y(m)).ge.eps).and.(m.le.9)) then
m=m+1
y(m)=q
n=n+n
h=h/2.0
goto 10
end if
t=q
return
end。

相关文档
最新文档