数值积分与微分方法

合集下载

1_数值分析4-数值积分与微分

1_数值分析4-数值积分与微分

回忆定积分的定义
b
I f (x)dx lim In,
a
n
n
In
f
(k
)
b
n
a
k 1
n充分大时In就是I的数值积分
各种数值积分方法研究的是
k 如何取值,区间 (a,b)如何划分, 使得既能保证一定精度,计算量又小。
(计算功效:算得准,算得快)
5
数值积分
y
1.梯形公式
h
Tn

h
k 1
fk

2 ( f0

fn )

b
f (x)dx
a
b
R( f ,Tn ) I Tn f (x)dx Tn
a
梯形公式在每小段上是用线性插值函数T(x)代替 f(x)
f (x) T(x)
f
(k
2
)
(
x

xk
)(x

xk
1
),
k (xk , xk1)
(
f0

fn)
(3)
k 1
非等距分割梯形公式
Tn

n1 k 0
fk
fk 1 2
(xk 1

xk
)
(4)
8
数值积分 2.辛普森(Simpson)公式
(抛物线公式)
梯形公式相当于用分段线性插值函数代替 f (x)
提高精度
分段二次插值函数
抛物线 公式
y
y=f(x)
每段要用相邻两小区间
数值积分
数值 积分
为什么要作数值积分
• 积分是重要的数学工具,是微分方程、概率 论等的基础;在实际问题中有直接应用。

Chap5Sec1 数值积分与数值微分1【精选】

Chap5Sec1 数值积分与数值微分1【精选】
b]由N 个等分子区间构成,则每个子区间的长度为
h (b a) / N
h称为步长
记n 1个节点为xk a kh(k 0,1, 2, , N )
在每个子区间[x , x ]上应用梯形公式并将各子区间 k k 1
的积分值相加,得到总区间[a,b]上函数f (x)的积分值:
若每个子区间[x , x ]又分为四等份, k k 1
内点依次记为x , x , x ,则可以在每个子区间上
k1 4
k1 2
k

3 4
应用柯特斯(Cotes)公式,将各子区间的积分值
相加得到总区间[a,b]上函数f (x)的积分值:
b f (x)dx
a
h 90
7
f
(a)


n k 0

b a
lk
(
x)dx
yk
n
A f (x )
k
k
k 0
由插值节点决定, 与f(x)无关,记为Ak
插值求积公式, Ak为求积系数 (可事先求出) 6
设在区间[a,b]上有n 1个节点a x x x x x b,
由n 1个数数据值点积(x分, f就(x是)) 将定(k 积00 分,1,2计1,算, n2 )作一插n值1 多n项式有 简化为计k 算被k 积函数在各节
机电工程学院
1
主要内容
• 数值积分的意义 • 插值积分公式的构造 • 插值积分公式的精度 • 龙贝格积分公式
2
为什么要数值积分?
在微积分里,按Newton-Leibniz公式求定积 分
要求被积函数f(x) ☞有解析表达式;
F(x)有解析表达式

数值计算方法数值积分与微分方程数值解

数值计算方法数值积分与微分方程数值解

数值计算方法数值积分与微分方程数值解数值计算是计算数值结果的一种方法,广泛应用于科学、工程和金融等领域。

数值计算方法涉及到估算数学问题的解,其中包括数值积分和微分方程数值解。

本文将分别介绍数值积分和微分方程数值解的基本原理和常用方法。

一、数值积分数值积分是通过数值计算方法来估计函数的积分值。

积分是数学中的重要概念,广泛应用于物理、经济等领域的问题求解中。

传统的积分计算方法,如牛顿-柯特斯公式和高斯求积法,需要解析求解被积函数,但是对于大多数函数来说,解析求解并不容易或者不可能。

数值计算方法通过离散化被积函数,将积分问题转化为求和问题,从而得到近似的积分结果。

常见的数值积分方法包括梯形法则、辛普森法则和复化求积法。

1. 梯形法则梯形法则是最简单的数值积分方法之一。

它将积分区间划分为若干个小区间,然后在每个小区间上用梯形的面积来近似原函数的面积,最后将所有小区间的梯形面积相加得到近似积分值。

2. 辛普森法则辛普森法则是一种比梯形法则更精确的数值积分方法。

它将积分区间划分为若干个小区间,然后在每个小区间上用一个二次多项式来近似原函数,最后将所有小区间的二次多项式积分值相加得到近似积分值。

3. 复化求积法复化求积法是一种将积分区间进一步细分的数值积分方法。

通过将积分区间划分为更多的小区间,并在每个小区间上应用辛普森法则或者其他数值积分方法,可以得到更精确的积分结果。

二、微分方程数值解微分方程是描述自然现象中变化的数学模型。

求解微分方程的解析方法并不适用于所有的情况,因此需要利用数值计算方法来估计微分方程的解。

常见的微分方程数值解方法包括欧拉法、改进的欧拉法、龙格-库塔法等。

1. 欧拉法欧拉法是最简单的微分方程数值解方法之一。

它通过将微分方程离散化,将微分运算近似为差分运算,从而得到微分方程的近似解。

2. 改进的欧拉法改进的欧拉法是对欧拉法的改进。

它通过使用两个不同的点来估计微分方程的解,从而得到更精确的近似解。

Matlab中的数值积分和微分方法

Matlab中的数值积分和微分方法

Matlab中的数值积分和微分方法在数学和工程领域,数值积分和微分是解决问题的常见方法之一。

而在计算机科学中, Matlab作为一种强大的数值计算软件,提供了许多数值积分和微分的函数,使得这两个问题的解决变得更加简单和高效。

本文将探讨 Matlab 中常用的数值积分和微分方法,包括不定积分、定积分、数值微分和高阶数值微分。

我们将逐一讨论这些方法的原理和使用方法,并展示一些实际的应用案例,以帮助读者更好地理解和应用这些技术。

一、不定积分不定积分是指求一个函数的原函数。

在 Matlab 中,我们可以使用 `int` 函数来实现不定积分的计算。

例如,如果我们想求解函数 f(x) = x^2 的不定积分,可以使用下面的代码:```syms x;F = int(x^2);```这里的 `syms x` 表示将 x 定义为一个符号变量,`int(x^2)` 表示求解函数 x^2 的不定积分。

得到的结果 F 将是一个以 x 为变量的符号表达式。

除了求解简单函数的不定积分外,Matlab 还支持求解复杂函数的不定积分,例如三角函数、指数函数等。

我们只需要将函数表达式作为 `int` 函数的参数即可。

二、定积分定积分是指求函数在一个闭区间上的积分值。

在 Matlab 中,我们可以使用`integral` 函数来计算定积分。

例如,如果我们想计算函数 y = x^2 在区间 [0, 1] 上的积分值,可以使用下面的代码:```y = @(x) x^2;result = integral(y, 0, 1);```这里的 `@(x)` 表示定义一个匿名函数,`integral(y, 0, 1)` 表示求解函数 y = x^2 在区间 [0, 1] 上的积分。

得到的结果 result 将是一个数值。

与不定积分类似,Matlab 还支持对复杂函数求解定积分,只需要将函数表达式作为 `integral` 函数的第一个参数,并指定积分的区间。

第五章 数值积分与微分1

第五章 数值积分与微分1

b−a T( f ) = [ f ( a ) + f ( b )] 2
b−a a+b S( f ) = f (a ) + 4 f ( 2 ) + f (b) 6
b−a C( f ) = [ 7 f (a ) + 32 f (a + h) + 12 f (a + 2h) 90
+32 f (a + 3h) + 7 f (b )]
( f ( x)dx ≈ (b − a)∑Ckn) f (a + kh) = In ( f ) k=0
n
n=1时的求积公式 时的求积公式
1
梯形公式/*Trapezoidal Formula */ 梯形公式/*
I1 ( f ) = ∑ Ak f ( xk ) = A0 f ( x0 ) + A1 f ( x1 )
a k =0
n
求积公式的代数精度(/*Algebraic Precision */) 求积公式的代数精度(/* 代数精度
Def 1如果求积公式 I n ( f ) = ∑ Ak f ( xk )
k =0
n
次的多项式都恒成立 对一切不高于m次的多项式都恒成立, 对一切不高于 次的多项式都恒成立,而对于某个 m+1次多项式不能精确成立,则称该求积公式具有 次多项式不能精确成立 次多项式不能精确成立, m次代数精度。 次代数精度。 次代数精度
分别利用梯形公式、 梯形公式 公式、 例1:分别利用梯形公式、 Simpson公式、 Cotes公式 公式 公式
1 解: a = 0, b = 1, f ( x ) = 1+ x 1− 0 1 T( f ) = [ f (0) + f (1)] = [1 + 0.5] = 0.75 2 2 1− 0 1 S( f ) = f (0) + 4 f ( 2 ) + f (1) ≈ 0.69444444 6 1 1 1 3 C( f ) = 7 f (0) + 32 f ( ) +12 f ( ) + 32 f ( ) + 7 f (1) 90 4 2 4

第四章 数值积分和数值微 分

第四章 数值积分和数值微 分
I=
b
k =0
∑ f ( xk )lk ( x ),
n
其中l 为插值基函数. 其中 k(x)为插值基函数 为插值基函数
b n
∫a f ( x )dx ≈ ∫a Ln ( x )dx = ∫a ∑ f ( x k )l k ( x )dx
= ∑[∫ lk ( x)dx] f ( xk )
n
k= =0 b
I = ∫ f ( x )dx = F (b ) − F (a )
a
b
• 面临的困难: 面临的困难:
例如

1 sin x x 0
dx 和
∫0 e
1
− x
2
dx
( )难求 很复杂)或求不出; 难求( ①. F(x)难求(很复杂)或求不出; 很复杂或者根本不知其具体解析表达式。 ②. f (x)很复杂或者根本不知其具体解析表达式。 很复杂或者根本不知其具体解析表达式 • 解决方法: 解决方法: 将求积分值转化为直接对定积分进行近似计算. 将求积分值转化为直接对定积分进行近似计算 即应用相应的数值积分公式进行计算) (即应用相应的数值积分公式进行计算)
∫a
b
b−a f ( x )dx ≈ C = [7 f ( x0 ) + 32 f ( x1 ) + 12 f ( x2 ) + 32 f ( x3 ) + 7 f ( x4 )] 90
10 上一页 下一页 返回
分别用梯形公式、 dx . 例 分别用梯形公式、辛普 生公式和柯特斯公式计 算 I = ∫ 0 .6 1 + x 2 b−a [ f ( a ) + f ( b ) ]得 由梯形公式 T = 解: 2
b
具有n+1个节点的数值求积公式 定理 具有 个节点的数值求积公式 I = ∫a

数值积分微分方程

数值积分微分方程

2.3 数值积分2.3.1 一元函数的数值积分函数1 quad 、quadl 、quad8功能 数值定积分,自适应Simpleson 积分法。

格式 q = quad(fun,a,b) %近似地从a 到b 计算函数fun 的数值积分,误差为10-6。

若给fun 输入向量x ,应返回向量y ,即fun 是一单值函数。

q = quad(fun,a,b,tol) %用指定的绝对误差tol 代替缺省误差。

tol 越大,函数计算的次数越少,速度越快,但结果精度变小。

q = quad(fun,a,b,tol,trace,p1,p2,…) %将可选参数p1,p2,…等传递给函数fun(x,p1,p2,…),再作数值积分。

若tol=[]或trace=[],则用缺省值进行计算。

[q,n] = quad(fun,a,b,…) %同时返回函数计算的次数n… = quadl(fun,a,b,…) %用高精度进行计算,效率可能比quad 更好。

… = quad8(fun,a,b,…) %该命令是将废弃的命令,用quadl 代替。

例2-40>>fun = inline(‘3*x.^2./(x.^3-2*x.^2+3)’); equivalent to: function y=funn(x)y=3*x.^2./(x.^3-2*x.^2+3);>>Q1 = quad(fun,0,2) >>Q2 = quadl(fun,0,2)计算结果为:Q1 =3.7224 Q2 =3.7224补充:复化simpson 积分法程序程序名称 Simpson.m调用格式 I=Simpson('f_name',a,b,n)程序功能 用复化Simpson 公式求定积分值输入变量 f_name 为用户自己编写给定函数()y f x 的M 函数而命名的程序文件名 a 为积分下限b 为积分上限n 为积分区间[,]a b 划分成小区间的等份数 输出变量 I 为定积分值 程序function I=simpson(f_name,a,b,n) h=(b-a)/n; x=a+(0:n)*h; f=feval(f_name,x); N=length(f)-1;if N==1fprintf('Data has only one interval') return; end if N==2I=h/3*(f(1)+4*f(2)+f(3)); return; end if N==3I=3/8*h*(f(1)+3*f(2)+3*f(3)+f(4)); return; end I=0;if 2*floor(N/2)==NI=h/3*(2*f(N-2)+2*f(N-1)+4*f(N)+f(N+1)); m=N-3; else m=N; endI=I+(h/3)*(f(1)+4*sum(f(2:2:m))+2*f(m+1)); if m>2I=I+(h/3)*2*sum(f(3:2:m)); end例题 求0sin I xdx π=⎰。

数值计算方法 第4版 第6章 数值积分和数值微分

数值计算方法 第4版 第6章   数值积分和数值微分

m 次的代数精度。
定义 求积公式
对 f (x) 1, x, x2,
ab
f
( x)dx
n
Ak
f
(xk )
k 0
, xm ,准确成立,而对于 f (x) xm1 ,不能准确成立,
则称该求积公式
ab
f
( x)dx
n
Ak
f
(xk )
k 0
具有 m 次的代数精度。
求积公式
ab
f
( x)dx
n
Ak
, xn
,使求积公式 ab
f
( x)dx
n
Ak
f
(xk )

k 0
A0 A1 An b a
A0
x0
A1x1
An xn
1 2
(b 2
a2)
A0
x0n
A1 x1n
An xnn
1 (bn1 n 1
an1)
这是关于Ak 的线性方程组,其系数矩阵是凡德蒙矩阵,当节点xk 互
异时, Ak , k 0,1, , n 有唯一解。即对 f (x) 1, x, x2 , , xn 求积公式
定理 对于给定的 n+1 个节点 xk , k 0,1, , n 总存在求积系数
Ak , k 0,1,
精度。
, n 使求积公式 ab
n
f (x)dx
Ak
f (xk ) 至少有
n
次的代数
k 0
证明此时 Ak , k 0,1, , n 有唯一解即可。
证 令 f (x) 1, x, x2 ,
确成立,即
a
Ak f (xk )
k 0
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值积分与微分摘要本文首先列举了一些常用的数值求积方法,一是插值型求积公式,以Ne w t o n C o t e s -公式为代表,并分析了复合型的Newton Cotes -公式;另一个是Gauss Ledendre -求积公式,并给出几个常用的Gauss Ledendre -求积公式。

其次,本文对数值微分方法进行分析,主要是差分型数值微分和插值型数值微分,都给出了几种常用的微分方法。

然后,本文比较了数值积分与微分的关系,发现数值积分与微分都与插值或拟合密不可分。

本文在每个方法时都分析了误差余项,并且在最后都给出了MATLAB 的调用程序。

关键词:插值型积分Gauss Ledendre -差分数值微分插值型数值微分 MATLAB一、常用的积分方法计算积分时,根据Newton Leibniz -公式,()()()baf x dx F b F a =-⎰但如果碰到以下几种情况:1)被积函数以一组数据形式表示;2)被积函数过于特殊或者原函数无法用初等函数表示 3)原函数十分复杂难以计算这些现象中,Newton Leibniz -公式很难发挥作用,只能建立积分的近似计算方法,数值积分是常用的近似计算的方法。

1.1 插值型积分公式积分中的一个常用方法是利用插值多项式来构造数值求积公式,具体的步骤如下: 在积分区间上[,]a b 上取一组节点:01201,,,,()n n x x x x a x x x b ≤<<≤ 。

已知()k x f 的函数值,作()x f 的n 次插值多项式,则(1)()10()()()()()(1)!n nx n n k k n k f f L x R x f x l x w x n ++==+=++∑其中,()k l x 为n 次插值基函数,则得(1)+10()(()())1=[()]()[()](1)!bbn n aa nbb n k k n a a k f x dx L x R x dxl x dx f x f x w x dx n ξ+==+++⎰⎰∑⎰⎰()公式写成一般形式:()()[]nbk k n ak f x dx A f x R f ==+∑⎰其中,01100110()()()()()()()()()bbk k k k a a k k k k k k x x x x x x x x A l x dx dx x x x x x x x x -+-+----==----⎰⎰(1)+11[][()](1)!b n n n aR f f x w x dx n ξ+=+⎰() 显然,当被积函数f 为次数小于等于n 的多项式时,其相应的插值型求积公式为准确公式,即:()()nbk k ak f x dx A f x ==∑⎰1.1.1 求积公式的代数精度定义:求积公式对于任何次数不大于m 的代数多项式()f x 均精确成立,而对于1()m f x x +=不精确成立,则称求积公式具有m 次代数精度。

定理:含有1n +个节点(0,1,,)k x k n = 的插值型求积公式的代数精度至少为n 。

1.2 Newton Cotes -公式 1.2.1 Newton Cotes -公式将积分区间等分,并取分点为求积公式,这样构造出来的插值型求积公式就是Newton Cotes -公式。

()0()()nbn k k ak f x dx b a C f x ==-∑⎰()其中,()0()nn k k b a b a C =-=-∑且Cotes 系数满足重要的关系式:()1 (k=0,1,2,,n)nn kk C==∑1n =时,求积公式为梯形公式(两点公式):()[()()]2b ab a f x dx f a f b -≈+⎰ 梯形公式具有1阶代数精度,余项为:3()[]() [,]12T b a R f f a b ηη-''=-∈n =2时,求积公式为Simpson 公式(三点公式):()[()4()()]62b ab a a b f x dx f a f f b -+≈++⎰ Simpson 公式具有3阶代数精度,余项为:5(4)1[]()() [,]902S b a R f f a b ηη-=-∈n =4时,求积公式为Cotes 公式(五点公式): 01234()[7()32()12()32()7()]90b ab a f x dx f x f x f x f x f x -≈++++⎰ 其中,4k b ax a k -=+Cotes 公式具有5次代数精度,余项为:7(6)8[]()() [,]9454C b a R f f a b ηη-=-∈1.2.2 复合Newton Cotes -公式当积分区间过大时,直接使用Newton Cotes -公式所得的积分的近似值很难得到保证,因此在实际应用中为了既能够提高结果的精度,又使得算法简便且容易在计算机上实现,往往采用复合求积的方法。

所谓复合求积,就是先将积分区间分成几个小区间,并从每个小区间上用低阶Newton Cotes -公式计算积分的近似值,然后对这些近似值求和,从而得到所求积分的近似值,由此得到一些具有更大实用价值的数值求积公式,统称为复合求积公式。

将[,]a b 区间n 等分,记分点为(0,1,,)k x a kh k n =+= ,其中,b ah n-=称为步长,然后在每个小区间内利用梯形公式,即可导出复合梯形公式:1111()()[()()]2k k n nb x k k a x k k h f x dx f x dx f x f x --===≈+∑∑⎰⎰ 若将所得积分近似值记为n T ,并注意到0,n x a x b ==,则复合梯形公式为:11()=[()2()()]2n bn k ak hf x dx T f a f x f b -=++∑⎰其余项为:2210()()()= () [,]1212n n k T k f b a h b a h R f a b n ηηη-=''--''=--∈∑类似可得复合Simpson 公式:111012()[()4()2()()]6n n b n k a k k k hf x dx S f a f x f x f b --+===+++∑∑⎰ 其中,1/212k k x x h +=+.其余项为:4(4)()= ()() [,]1802n S b a h R f a b ηη--∈1.2.3 Newton Cotes -公式在MATLAB 中的实现1)复合梯形数值积分:调用形式:Z=trapz(X,Y)其中,X,Y 分别代表数目相同的向量或者数值,Y 与X 的关系可以是函数形态或者离散形态;Z 代表返回的积分值。

2)自适应Simpson 公式基本调用格式:q=quad (fun ,a ,b ,tol ,trace ,p1,p2) 其中:fun 代表被积函数;a ,b 为积分的上下限; q 为积分结果;tol 为默认误差限,默认了1.e-6;trace 表示取0表示不用图形显示积分过程,非0表示用图形显示积分过程; p1,p2为直接传递给函数fun 的参数 3)自适应Lobatto 法数值积分:quadl ()Quadl 是高阶的自适应Newton Cotes -数值积分法函数,比quad 函数更有效,精度更高,使用方法与quad 完全相同。

1.3 Gauss Ledendre -求积公式1、精度较高Gauss Ledendre -公式(1)Ledendre 多项式。

以Gauss 点k x 为零点的n 次多项式:12()()()()n n p x x x x x x x =---上式称为Ledendre 多项式(2)Gauss Ledendre -求积公式。

以Ledendre 多项式的n 个实根为节点的插值求积公式为Gauss Ledendre -求积公式。

考虑在[1,1]-上Gauss 求积公式的构造 1)一个节点11()2(0)f x dx f -≈⎰2)两个节点二次Ledendre 正交多项式221()(31)2p x x =- 所以两点的Gauss Ledendre -求积公式为:11()f x dx f f -≈⎰对于一般区间的积分,可以用22a b b ax t +-=+将[,]a b 区间转化为[1,1]-,即1111()()222b a a b b a f x dx f t dt ---+-=+⎰⎰然后用相应的Gauss Ledendre -求积公式计算。

(3)一般形式的Gauss Ledendre -求积公式为:1()()()nbj j aj w x f x dx A f x =≈∑⎰其中()w x 是一个权重函数,j A 为系数,j x 为横坐标上的节点。

因为()1w x =,所以,一个n 点的求积公式具有如下形式:111()()nj j j f x dx A f x -=≈∑⎰其中,()j f x 是函数()f x 在节点j x 处的值,节点j x 是Ledendre 正交多项式的根。

222[()](1)j nj j A p x x ='-MATLAB 没有提供Gauss Ledendre -的有关计算函数,此处给出一部分的编程代码:function q=gaussL (f ,a ,b ,x ,A ) N=length (x ); T=zeros (1,N );T=(a+b )/2+((b-a)/2)*x;q=((b-a)/2)*sum(A.*feval(‘f’.T));其中,f 为被积函数;x 和A 的值可有上表查到。

二、数值微分数值微分的建立常用的三种思路:1、直接从微分的定义出发,通过近似的处理(泰勒展开),得到数值微分的近似公式;2、利用插值的基本思想,采用插值近似公式,对插值公式的近似求导得到原数值微分的近似公式3、根据已知数据,利用最小二乘拟合的方法,得到近似的函数,然后对此近似函数求微分就可以得到数值微分的近似公式。

2.1 差分法近似微分1、计算公式在微积分中,一阶微分的计算可以在相邻点x h +和x 间函数取得极限求得。

000()()()()()()22()lim lim lim h h h h h f x f x f x h f x f x f x h f x h h h→→→+--+---'=== 所以给出下列差分近似式子: 一阶向前差分:()()()f x h f x f x h+-'=一阶向后差分:()()()f x f x h f x h--'=精度较高的一阶中心差分:()()22'()h h f x f x f x h+--=2、在MATLAB 中的实现 调用形式:Y=diff(X,n)其中:X 表示求导变量,可以是向量或者矩阵。

相关文档
最新文档