数值积分的算法比较及其MATLAB实现

合集下载

使用Matlab进行数值积分的方法与注意事项

使用Matlab进行数值积分的方法与注意事项

使用Matlab进行数值积分的方法与注意事项1. 引言数值积分是数学中的一个重要概念,它能够将曲线下的面积或者函数的总值进行估计和计算。

在实际应用中,由于很多函数无法直接进行解析求积,因此数值积分成为了一种常用的计算方法。

Matlab作为一款强大的数值计算软件,提供了很多用于数值积分的函数和方法。

2. 数值积分的基本原理数值积分的基本思想是将被积函数分割成一系列小区间,然后对每个小区间进行近似计算得到面积的总和。

这个过程可以看作是对大曲线的逼近,通过增加小区间的数目,可以得到更加精确的结果。

常见的数值积分方法有矩形法、梯形法、辛普森法等。

3. Matlab中的数值积分函数在Matlab中,有两个常用的数值积分函数分别是`quad`和`quadl`。

`quad`函数适用于一般的一元数值积分计算,而`quadl`函数则适用于具有奇点的积分计算。

这两个函数使用起来相对简单,只需要输入被积函数和积分区间即可。

例如,计算函数f(x)=x^2在区间[0, 1]上的积分可以使用以下代码:```f = @(x) x^2;integral = quad(f, 0, 1);disp(integral);```这段代码会输出函数f在区间[0, 1]上的积分值。

4. 数值积分的精度与误差控制在使用数值积分方法进行计算时,我们关心的一个重要问题是精度和误差控制。

数值积分的精度可以通过调整分割的区间数目来控制,一般来说,增加小区间的数目可以得到更加精确的结果。

此外,也可以通过提高数值积分方法的阶来提高精度。

Matlab中的`quad`和`quadl`函数具有较高的精度,并且可以通过设置选项来控制误差的允许范围。

5. 数值积分的注意事项在使用Matlab进行数值积分时,需要注意一些问题。

首先是积分区间的选择,需要确保被积函数在整个区间上是光滑的,没有奇点和间断。

如果存在奇点或者间断,需要通过分段积分或者奇点积分方法来处理。

其次是数值积分方法的选择,不同的函数可能适用于不同的数值积分方法,需要结合实际情况来选择最合适的方法。

数值积分的MATLAB实现

数值积分的MATLAB实现

数值积分的MATLAB实现数值积分是通过数值方法计算定积分的近似值。

MATLAB是一种功能强大的数值计算软件,提供了多种函数和工具箱用于数值积分的实现。

在MATLAB中,常用的数值积分方法包括梯形法则、辛普森法则和龙贝格法。

梯形法则是最简单的数值积分方法之一、它的基本思想是将要积分的区间划分成多个小的梯形并计算每个梯形的面积,然后将这些面积相加得到最终的近似积分值。

在MATLAB中,可以使用trapz函数进行梯形法则的计算。

例如,要计算函数sin(x)在区间[0, pi]的积分,可以使用以下代码:```MATLABx = linspace(0, pi, 1000); % 在[0, pi]区间生成1000个等间隔的点y = sin(x); % 计算函数sin(x)在每个点的值integral_value = trapz(x, y) % 使用梯形法则进行数值积分```辛普森法则是一种更精确的数值积分方法,它使用二次多项式来逼近被积函数。

在MATLAB中,可以使用simpson函数进行辛普森法则的计算。

例如,上面例子中的积分可以改用辛普森法则进行计算:```MATLABintegral_value = simpson(x, y) % 使用辛普森法则进行数值积分```龙贝格法是一种高效的自适应数值积分方法,它通过逐步加密网格和逼近函数来提高积分的精度。

在MATLAB中,可以使用quad和quadl函数进行龙贝格法的计算。

例如,计算函数sin(x)在区间[0, pi]的积分:```MATLAB```除了上述方法外,MATLAB还提供了许多其他的数值积分函数和工具箱,用于处理不同类型的积分问题。

例如,int和integral函数可以用于处理多重积分和奇异积分。

Symbolic Math Toolbox中的函数可以用于计算符号积分。

需要注意的是,数值积分是一种近似方法,计算结果的误差与划分区间的精细程度有关。

Matlab-8数值积分与数值微分

Matlab-8数值积分与数值微分

M a t l a b数值积分与数值微分Matlab数值积分1.一重数值积分的实现方法变步长辛普森法、高斯-克朗罗德法、梯形积分法1.1变步长辛普森法Matlab提供了quad函数和quadl函数用于实现变步长辛普森法求数值积分.调用格式为:[I,n]=Quad(@fname,a,b,tol,trace)[I,n]=Quadl(@fname,a,b,tol,trace)Fname是函数文件名,a,b分别为积分下限、积分上限;tol为精度控制,默认为1.0×10-6,trace控制是否展开积分过程,若为0则不展开,非0则展开,默认不展开.返回值I为积分数值;n为调用函数的次数.--------------------------------------------------------------------- 例如:求∫e0.5x sin(x+π6)dx3π的值.先建立函数文件fesin.mfunction f=fesin(x)f=exp(-0.5*x).*sin(x+(pi/6));再调用quad函数[I,n]=quad(@fesin,0,3*pi,1e-10)I=0.9008n=365--------------------------------------------------------------------- 例如:分别用quad函数和quadl函数求积分∫e0.5x sin(x+π6)dx3π的近似值,比较函数调用的次数.先建立函数文件fesin.mfunction f=fesin(x)f=exp(-0.5*x).*sin(x+(pi/6));formatlong[I,n]=quadl(@fesin,0,3*pi,1e-10)I=n=198[I,n]=quad(@fesin,0,3*pi,1e-10)I=n=365--------------------------------------------------------------------- 可以发现quadl函数调用原函数的次数比quad少,并且比quad函数求得的数值解更精确.1.2高斯-克朗罗德法Matlab提供了自适应高斯-克朗罗德法的quadgk函数来求震荡函数的定积分,函数的调用格式为:[I,err]=quadgk(@fname,a,b)Err返回近似误差范围,其他参数的意义与quad函数相同,积分上下限可以是-Inf或Inf,也可以是复数,若为复数则在复平面上求积分.--------------------------------------------------------------------- 例如:求积分∫xsinx1+cos2xdx π的数值.先编写被积函数的m文件fsx.mfunction f=fsx(x)f=x.*sin(x)./(1+cos(x).^2);再调用quadgk函数I=quadgk(@fsx,0,pi)I=2.4674--------------------------------------------------------------------- 例如:求积分∫xsinx1+cos2xdx +∞−∞的值.先编写被积函数的m文件fsx.mfunction f=fsx(x)f=x.*sin(x)./(1+cos(x).^2); 再调用quadgk函数I=quadgk(@fsx,-Inf,Inf)I=-9.0671e+017---------------------------------------------------------------------1.3梯形积分法对于一些不知道函数关系的函数问题,只有实验测得的一组组样本点和样本值,由表格定义的函数关系求定积分问题用梯形积分法,其函数是trapz函数,调用格式为:I=Traps(X,Y)X,Y为等长的两组向量,对应着函数关系Y=f(X) X=(x1,x2,…,x n)(x1<x2<…<x n),Y=(y1,y2,…,y n),积分区间是[x1,x n]--------------------------------------------------------------------- 例如:已知某次物理实验测得如下表所示的两组样本点.现已知变量x和变量y满足一定的函数关系,但此关系未知,设y=f(x),求积分13.39∫f(x)dx1.38的数值.X=[1.38,1.56,2.21,3.97,5.51,7.79,9.19,11.12,13.39];Y=[3.35,3.96,5.12,8.98,11.46,17.63,24.41,29.83,32.21];I=trapz(X,Y) I=217.1033---------------------------------------------------------------------例如:用梯形积分法求积分:∫e −x dx 2.51的数值.x=1:0.01:2.5; y=exp(-x); I=trapz(x,y) I= 0.2858---------------------------------------------------------------------2. 多重数值积分的实现重积分的积分函数一般是二元函数f(x,y)或三元函数f(x,y,z);形如:∫∫f (x,y )dxdy ba dc∫∫∫f(x,y,z)dxdydz b a d cf eMatlab 中有dblquad 函数和triplequad 函数来对上述两个积分实现.调用格式为: I=dblquad(@fun,a,b,c,d,tol)I=triplequad(@fun,a,b,c,d,e,f,tol)Fun 为被积函数,[a,b]为x 的积分区间;[c,d]为y 的积分区间;[e,f]为z 的积分区间.Dblquad 函数和triplequad 函数不允许返回调用的次数,如果需要知道函数调用的次数,则在定义被积函数的m 文件中增加一个计数变量,统计出被积函数被调用的次数.---------------------------------------------------------------------例如:计算二重积分I =∫∫√x 2+y 2dxdy π2−π2π2−π2的值.先编写函数文件fxy.mfunction f=fxy(x,y) global k; k=k+1;f=sqrt(x.^2+y.^2);再调用函数dblquadglobalk; k=0;I=dblquad(@fxy,-pi/2,pi/2,-pi/2,pi/2,1.0e-10) I= 11.8629 k k= 37656---------------------------------------------------------------------例如:求三重积分∫∫∫4xze −z2y−x 2dxdydz ππ1的值.编写函数文件fxyz1.mfunction f=fxyz1(x,y,z) global j; j=j+1;f=4*x.*z.*exp(-z.*z.*y-x.*x);调用triplequad函数editglobalj;j=0;I=triplequad(@fxyz1,0,pi,0,pi,0,1,1.0e-10)I=1.7328jj=1340978---------------------------------------------------------------------Matlab数值微分1.数值微分与差商导数的三种极限定义f′(x)=limn→0f(x+h)−f(x)hf′(x)=limn→0f(x)−f(x−h)hf′(x)=limn→0f(x+h2)−f(x−h2)h上述公式中假设h>0,引进记号:?f(x)=f(x+h)−f(x)?f(x)= f(x)−f(x−h)δf(x)= f(x+h2)−f(x−h2)称上述?f(x)、?f(x)、δf(x)为函数在x点处以h(h>0)为步长的向前差分、向后差分、中心差分,当步长h足够小时,有:f′(x)≈?f(x) hf′(x)≈?f(x) hf′(x)≈δf(x) h?f(x) h 、?f(x)h、δf(x)h也分别被称为函数在x点处以h(h>0)为步长的向前差商、向后差商、中心差商.当h足够小时,函数f(x)在x点处的导数接近于在该点的任意一种差商,微分接近于在该点的任意一种差分.2.函数导数的求法2.1用多项式或样条函数g(x)对函数f(x)进行逼近(插值或拟合),然后用逼近函数g(x)在点x处的导数作为f(x)在该点处的导数.2.2用f(x)在点x处的差商作为其导数.3.数值微分的实现方法Matlab中,只有计算向前差分的函数diff,其调用格式为:·DX=diff(X):计算向量X的向前差分,DX(i)=X(i+1)-X(i),i=1,2,…,n-1·DX=diff(X,n):计算向量X的n阶向前差分,例如diff(X,2)=diff(diff(X))·DX=diff(A,n,dim):计算矩阵A的n阶向前差分,dim=1(默认值)按列计算差分,dim=2按行计算差分. --------------------------------------------------------------------- 例如:生成6阶范德蒙德矩阵,然后分别按行、按列计算二阶向前差分A=vander(1:6)A=111111321684212438127931102425664164131256251252551777612962163661D2A1=diff(A,2,1)D2A1=180501220057011018200132019424200255030230200D2A2=diff(A,2,2)D2A2=000084211083612457614436920004008016540090015025--------------------------------------------------------------------- 例如:设f(x)=√x3+2x2−x+12+√(x+5)56+5x+2求函数f(x)的数值导数,并在同一坐标系中作出f’(x)的图像.已知函数f(x)的导函数如下:f′(x)=3x2+4x−12√x3+2x2−x+12+16√(x+5)56+5编辑函数文件fun7.m和fun8.mfunctionf=fun7(x)f=sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2;functionf=fun8(x)f=(3*x.^2+4*x-1)/2./sqrt(x.^3+2*x.^2-x+12)+1/6./(x+5).^(5/6)+5;x=-3:0.01:3;p=polyfit(x,fun7(x),5);用5次多项式拟合曲线dp=polyder(p);对拟合多项式进行求导dpx=polyval(dp,x);对dp在假设点的求函数值dx=diff(fun7([x,3.01]))/0.01;直接对dx求数值导数gx=fun8(x);求函数f的函数在假设点的导数plot(x,dpx,x,dx,'.',x,gx,'-')可以发现,最后得到的三条曲线基本重合.--------------------------------------------------------------------- 练习:A.用高斯-克朗罗德法求积分∫dx1+x2 +∞−∞的值并讨论计算方法的精确度.(该积分值为π)function f=fun9(x)f=1./(1+x.^2);formatlong[I,err]=quadgk(@fun9,-Inf,Inf)I=err=B.设函数f(x)=sin xx+cos2x用不同的办法求该函数的数值导数,并在同一坐标系中作出f′(x)的图像.已知f′(x)=x cos x+cos x cos2x−sin x+2sin x sin2x(x+cos2x)2function f=fun10(x)f=sin(x)./(x+cos(2*x));function f=fun11(x)f=(x.*cos(x)+cos(x).*cos(2*x)-sin(x)-2*sin(x).*sin(2*x))/(x+cos(2*x)).^2;x=-3:0.01:3;p=polyfit(x,fun10(x),5);dp=polyder(p);dpx=polyval(dp,x);dx=diff(fun10([x,3.01]))/0.01;gx=fun11(x);plot(x,dpx,'r:',x,dx,'.g',x,gx,'-k')[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]11 / 11。

数值积分算法与MATLAB实现

数值积分算法与MATLAB实现

数值积分算法与MATLAB实现本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意!摘要:在求一些函数的定积分时,由于原函数十分复杂难以求出或用初等函数表达,导致积分很难精确求出,只能设法求其近似值,因此能够直接借助牛顿-莱布尼兹公式计算定积分的情形是不多的。

数值积分就是解决此类问题的一种行之有效的方法。

积分的数值计算是数值分析的一个重要分支;因此,探讨近似计算的数值积分方法是有着明显的实际意义的。

本文从数值积分问题的产生出发,详细介绍了一些数值积分的重要方法。

本文较详细地介绍了牛顿-科特斯求积公式,以及为了提高积分计算精度的高精度数值积分公式,即龙贝格求积公式和高斯-勒让德求积公式。

除了研究这些数值积分算法的理论外,本文还将这些数值积分算法在计算机上通过MATLAB软件编程实现,并通过实例用各种求积公式进行运算,分析比较了各种求积公式的计算误差。

【关键词】数值积分牛顿-科特斯求积公式高精度求积公式MATLAB软件前言对于定积分,在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里茨公式可以计算定积分的值,但在很多情况下的原函数不易求出或非常复杂。

被积函数的原函数很难用初等函数表达出来,例如等;有的函数的原函数存在,但其表达式太复杂,计算量太大,有的甚至无法有解析表达式。

因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的。

另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值。

因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算。

而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数在一些节点上的信息求出定积分的近似值。

微积分的发明是人类科学史上一项伟大的成就,在科学技术中,积分是经常遇到的一个重要计算环节。

Matlab中常用的积分和微分算法解析

Matlab中常用的积分和微分算法解析

Matlab中常用的积分和微分算法解析积分和微分是数学中重要的概念和工具,广泛应用于科学、工程和计算领域。

在Matlab中,提供了丰富的积分和微分算法,可以方便地进行数值计算和符号计算。

在本文中,我们将解析Matlab中常用的积分和微分算法,并探讨其应用。

一、数值积分算法数值积分是通过将求和转化为积分的方式,对函数在一定区间内的近似计算。

在Matlab中,有许多数值积分算法可供选择,包括梯形法则、辛普森法则和高斯求积法等。

1. 梯形法则梯形法则是一种基本的数值积分算法。

它将区间分成多个小梯形,并将每个小梯形的面积近似表示为梯形的面积,然后将这些面积相加得到最终的近似积分值。

在Matlab中,可以使用trapz函数来实现梯形法则的计算。

例如,对函数f(x)在区间[a, b]上进行积分,可以使用如下代码:```matlaba = 0;b = 1;x = linspace(a, b, 100);y = f(x);integral_value = trapz(x, y);```其中,linspace函数用于生成均匀分布的点,f(x)是待积分的函数。

trapz函数可以自动计算积分值。

2. 辛普森法则辛普森法则是一种更精确的数值积分算法。

它将区间分成多个小三角形,并将每个小三角形的面积近似表示为一个带有二次多项式的面积,然后将这些面积相加得到最终的近似积分值。

在Matlab中,可以使用quad函数来实现辛普森法则的计算。

例如,对函数f(x)在区间[a, b]上进行积分,可以使用如下代码:```matlaba = 0;b = 1;integral_value = quad(@f, a, b);```其中,@f表示函数句柄,quad函数可以自动计算积分值。

3. 高斯求积法高斯求积法是一种更高精度的数值积分算法。

它利用多个节点和权重,通过插值的方式来近似积分值。

在Matlab中,可以使用gaussquad函数来实现高斯求积法的计算。

(完整版)数值积分及matlab实现

(完整版)数值积分及matlab实现
将积分区间细分,在每一个小区间内用简单函 数代替复杂函数进行积分,这就是数值积分的思想, 用代数插值多项式去代替被积函数发f(x)进行积分 是本章讨论数值积分的主要内容。
建立数值积分公式的途径比较多, 其中最常用的
有两种:
(1)由积分中值定理可知,对于连续函数f(x),在
积分区间[a,b]内存在一点ξ,使得
分,因此将 选(x取) 为插值多项式, 这样f(x)的积分就
可以用其插值多项式的积分来近似代替
2.2 插值求积公式
设已知f(x)在节点 xk (k 0,1, , n) 有函数值 f (xk ) ,作n次拉格朗日插值多项式
式中
n
P(x) f (xk )lk (x)
k 0
lk (x)
n j0
b
n
f (x)dx
a
Ak f (xk )
k 0
为插值型求积公式的充要条件是公式
(
x)dx
时,则称求积公式为插值
设插值求积公式的余项为 R( f ) ,由插值余项定理得
R( f ) b f (x) P(x)dx b f (n1) ( ) (x)dx
a
a (n 1)!
其中 a, b
当f(x)是次数不高于n的多项式时,有 f (n1) (x) 0 R( f ) =0,求积公式(4)能成为准确的等式。由于闭区 间[a,b]上的连续函数可用多项式逼近,所以一个 求积公式能对多大次数的多项式f(x)成为准确等式, 是衡量该公式的精确程度的重要指标,为此给出以 下定义。
数值积分与微分
2009.4.22
数值积分和数值微分
1 引言 我们知道,若函数f(x)在区间[a,b]上连续且其原
函数为F(x),则可用Newton-Leibnitz公式

数值积分的matlab实现

数值积分的matlab实现

实验10 数值积分实验目的:1.了解数值积分的基本原理; 2.熟练掌握数值积分的MATLAB 实现; 3.会用数值积分方法解决一些实际问题。

实验内容:积分是数学中的一个基本概念,在实际问题中也有很广泛的应用。

同微分一样,在《微积分》中,它也是通过极限定义的,由于实际问题中遇到的函数一般都以列表形式给出,所以常常不能用来直接进行积分。

此外有些函数虽然有解析式,但其原函数不是初等函数,所以仍然得不到积分的精确值,如不定积分⎰10 d sin x x x。

这时我们一般考虑用数值方法计算其近似值,称为数值积分。

10.1 数值微分简介设函数()y f x =在*x 可导,则其导数为hx f h x f x f h )()(lim )(**0*-+='→ (10.1)如果函数()y f x =以列表形式给出(见表10-1),则其精确值无法求得,但可由下式求得其近似值hx f h x f x f )()()(***-+≈' (10.2)表 10-1一般的,步长h 越小,所得结果越精确。

(10.2)式右端项的分子称为函数()y f x =在*x 的差分,分母称为自变量在*x 的差分,所以右端项又称为差商。

数值微分即用差商近似代替微商。

常用的差商公式为:000()()()2f x h f x h f x h +--'≈(10.3)hy y y x f 243)(2100-+-≈' (10.4)hy y y x f nn n n 234)(12+-≈'-- (10.5)其误差均为2()O h ,称为统称三点公式。

10.2 数值微分的MATLAB 实现MATLAB 提供了一个指令求解一阶向前差分,其使用格式为: dx=diff(x) 其中x 是n 维数组,dx 为1n -维数组[]21321,,,n x x x x x x ---,这样基于两点的数值导数可通过指令diff(x)/h 实现。

数值积分算法与MATLAB实现陈悦5133201讲解

数值积分算法与MATLAB实现陈悦5133201讲解

东北大学秦皇岛分校数值计算课程设计报告数值积分算法及MATLA实现学院数学与统计学院专业信息与计算科学学号5133201姓名_____________ 陈世_____________指导教师姜玉山张建波成绩教师评语:指导教师签字:2015年07月14日1 绪论数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值检索方其理论与软件的实现•而数值分析主要研究数值计算•现科学技术的发展与进步提出了越来越多的复杂的数值计算问题,这些问题的圆满解决已远人工手算所能胜任,必须依靠电子计算机快速准确的数据处理能力•这种用计算机处理数值问题的方法,成为科学计算•今天,科学计算的应用范围非常广泛,天气预报、工程设计、流体计算、经济规划和预测以及国防尖端的一些科研项目,如核武器的研制、导弹和火箭的发射等,始终是科学计算最为活跃的领域•1.1数值积分介绍数值积分是数值分析的重要环节,实际问题当中常常需要计算积分,有些数值方法,如微分方程和积分方程的求解,也都和积分计算相联系求某函数的定积分时,在多数情况下,被积函数的原函数很难用初等函数表达出来,因此能够借助微积分学的牛顿-莱布尼兹公式计算定积分的机会是不多的•另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解•由于以上原因,数值积分的理论与方法一直是计算数学研究的基本课题•对微积分学做出杰出贡献的数学大师,如I.牛顿、L.欧拉、C.F.高斯、拉格朗日等人都在数值积分这个领域作出了各自的贡献,并奠定了这个分支的理论基础•构造数值积分公式最通常的方法是用积分区间上的n次插值多项式代替被积函数,由此导出的求积公式称为插值型求积公式•特别在节点分布等距的情形称为牛顿-科特斯公式,例如梯形公式(Trapezoidal Approximations)与抛物线公式(Approximatens Using Parabolas)就是最基本的近似公式•但它们的精度较差•龙贝格算法是在区间逐次分半过程中,对梯形公式的近似值进行加权平均获得准确程度较高的积分近似值的一种方法,它具有公式简练、计算结果准确、使用方便、稳定性好等优点,因此在等距情形宜采用龙贝格求积公式(Rhomberg Integration).当用不等距节点进行计算时,常用高斯型求积公式计算,它在节点数目相同情况下,准确程度较高,稳定性好,而且还可以计算无穷积分•数值积分还是微分方程数值解法的重要依据•许多重要公式都可以用数值积分方程导出•现探讨数值积分算法以及运用MATLAB软件的具体实现1.2 MATLAB 软件MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分.MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室).是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境.它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平•MATLAB和Mathematics Maple并称为三大数学软件.它在数学类科技应用软件中在数值计算方面首屈一指.MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域.MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件.在新的版本中也加入了对C,FORTRAN, C++,JAVA的支持.2数值积分的基本概念一般的,我们可以在区间la,b 1上适当选取某些节点兀,然后用f X k的加权平均得到平均高度f 的近似值,这样构造出的求积公式具有下列形式:a n八A k f X k ,式中X k称为求积节点;A k称为求积系数,亦称伴随节点X k的k =0b f x dx :权.权A k仅仅与节点X k的选取有关,而不依赖于被积函数 f x的具体形式.2.1代数精度的概念如果某个求积公式对于次数不超过m的多项式均能准确的成立,但对于m T次多项式就不准确成立,则称该求积公式具有m次代数精度(或代数精确值)一般地,欲使求积公式具有m次代数精度,只要令它对于 f x =1,x,|||,x m都能准确成立,这就要求:乞A k =b-a,1 2 2为A k x k=2(b -a)‘++-- - m 1 t. m+1 m+1 ,送A k x k =一 b -a .、一m+12.2求积公式的余项b n令求积公式的余项为R【f】,其中R i f ]二J a f (x)dx-送A k f(x J;区间【a,b】可以是k=0有限的或无限的•构造求积公式的问题就是确定X j和A j使得R〔f 1在某种意义下尽可能地小.3数值积分方法及MATLAB实现3.1复合辛普森公式3.1.1插值型求积公式用插值多项式L n(X)替换积分广=[f(XpX中的被积函数f(X),然后计算bI 「L n XdX作为积分的近似值,这样建立的求积公式称为插值型求积公式•用插值多an n项式L n(x)的表达式L n(X)八I k X f X k,代入得I二^ A k f X k,其中:k=0 k=0A = f (X—X。

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

编号:审定成绩:重庆邮电大学毕业设计(论文)设计(论文)题目:数值积分算法与MATLAB实现学院名称:数理学院学生姓名:专业:数学与应用数学班级:学号:指导教师:答辩组负责人:填表时间:年月重庆邮电大学教务处制摘要在求一些函数的定积分时,由于原函数十分复杂难以求出或用初等函数表达,导致积分很难精确求出,只能设法求其近似值,因此能够直接借助牛顿-莱布尼兹公式计算定积分的情形是不多的。

数值积分就是解决此类问题的一种行之有效的方法。

积分的数值计算是数值分析的一个重要分支;因此,探讨近似计算的数值积分方法是有着明显的实际意义的。

本文从数值积分问题的产生出发,详细介绍了一些数值积分的重要方法。

本文较详细地介绍了牛顿-科特斯求积公式,以及为了提高积分计算精度的高精度数值积分公式,即龙贝格求积公式和高斯-勒让德求积公式。

除了研究这些数值积分算法的理论外,本文还将这些数值积分算法在计算机上通过MATLAB软件编程实现,并通过实例用各种求积公式进行运算,分析比较了各种求积公式的计算误差。

【关键词】数值积分牛顿-科特斯求积公式高精度求积公式MATLAB软件ABSTRACTWhen the solution of the definite integral of some function values,because the original function is very complex and difficult to find the elementary function expression, the integral is difficult to accurately calculate, only managed to find the approximate value, and the case is small that allows to direct interface with the Newton - Leibniz formula to calculate the definite integral. Numerical integration is an effective method to solve such problems. The numerical integration is an important branch of numerical analysis; therefore, exploring the approximate calculation of the numerical integration method has obvious practical significance. This article departure from the numerical integration problem, described in detail some important numerical integration methods.This paper has introduced detail the Newton - Coates quadrature formula, and in order to improve the calculation accuracy of numerical integration formulas, More precise formulas have Romberg quadrature formulas and the Gauss - Legendre quadrature formula. In addition to the study of these numerical integration algorithm theory, the article also involve what these numerical integration algorithm be programmed by matlab software on the computer, and an example is calculated with a variety of quadrature formulas, finally analysis and comparison to various quadrature formulas calculation error.【Key words】Numerical integration Newton-Cotes quadrature formula High-precision quadrature formula Matlab software目录前言 (1)第一章牛顿-科特斯求积公式 (2)第一节数值求积公式的构造 (2)第二节复化求积公式 (9)第三节本章小结 (12)第二章高精度数值积分算法 (13)第一节梯形法的递推 (13)第二节龙贝格求积公式 (14)第三节高斯求积公式 (17)第四节高斯-勒让德求积公式 (19)第五节复化两点高斯-勒让德求积公式 (22)第六节本章小结 (23)第三章各种求积公式的MATLAB编程实现与应用 (24)第一节几个低次牛顿-科特斯求积公式的MATLAB实现 (24)第二节复化求积公式的MATLAB实现 (28)第三节龙贝格求积公式的MATLAB实现 (33)第三节高斯-勒让德求积公式的MATLAB实现 (34)第五节各种求积算法的分析比较 (36)第六节本章小结 (38)结论 (39)致谢 (40)参考文献 (41)附录 (43)一、英文原文 (43)二、英文翻译 (52)前 言对于定积分()ba f x dx ⎰,在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里茨公式()()()baI f x dx F b F a ==-⎰可以计算定积分的值,但在很多情况下()f x 的原函数不易求出或非常复杂。

被积函数()f x 的原函数很难用初等函数表达出来,例如2sin (),x x f x e x-=等;有的函数()f x 的原函数()F x 存在,但其表达式太复杂,计算量太大,有的甚至无法有解析表达式。

因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的。

另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值。

因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算。

而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数()f x 在一些节点上的信息求出定积分的近似值。

微积分的发明是人类科学史上一项伟大的成就,在科学技术中,积分是经常遇到的一个重要计算环节。

数值积分是数学上重要的课题之一,是数值分析中重要的内容之一,也是应用数学研究的重点。

随着计算机的出现,近几十年来,对于数值积分问题的研究已经成为一个很活跃的研究领域。

现在,数值积分在计算机图形学,积分方程,工程计算,金融数学等应用科学领域都有着相当重要的应用,所以研究数值积分问题有着很重要的意义。

国内外众多学者在数值积分应用领域也提出了许多新方法。

在很多实际应用中,只能知道积分函数在某些特定点的取值,比如天气测量中的气温、湿度、气压等,医学测量中的血压、浓度等等。

通过这个课题的研究,我们将会更好地掌握运用数值积分算法求特殊积分函数的定积分的一些基本方法、理论基础;并且通过matlab 软件编程的实现,应用于实际生活中。

第一章 牛顿-科特斯求积公式第一节 数值求积公式的构造大多数实际问题的积分是需要用数值积分方法求出近似结果的。

数值积分原则上可以用于计算各种被积函数的定积分,无论被积函数是解析解形式还是数表形式,其基本原理都是用多项式函数近似代替被积函数,用多项式的积分结果近似代替对被积函数的积分。

由于所选多项式形式的不同,可以有许多种数值积分方法。

而利用插值多项式来构造数值求积公式是最常用的一种方法。

对于积分()ba f x dx ⎰,用一个容易积分的函数()x ϕ去代替被积函数()f x ,这样的()x ϕ自然以多项式()n L x 为最佳,因为多项式能很好的逼近任何连续函数,而且容易求出其原函数。

一、 求积公式的推导在积分区间[,]a b 上取有限个点01n a x x x b ≤<<<≤,作()f x 的n 次插值多项式0()()()nn k k L x f x l x =∑,其中,()(0,1,,)k l x k n =为n 次插值基函数。

用()n L x 近似代替被积函数()f x ,则得()()()()nbb bn k k aaak f x dx L x dx f x l x dx =≈=∑⎰⎰⎰ (1.1)若记011011()()()()()()()()()bbk k n k k aak k k k k k n x x x x x x x x A l x dx dx x x x x x x x x -+-+----==----⎰⎰(1.2)则得数值求积公式()()nbk k ak f x dx A f x =≈∑⎰(1.3)其中k A 称为求积系数,k x 称为求积节点。

则称该求积公式为插值型求积公式。

知道了插值型求积公式以及其构造方法。

为了便于计算与应用,常将积分区间的等分点作为求积节点,这样构造出来的插值型求积公式就称为牛顿-科特斯(Newton-Cotes )求积公式。

在积分区间[,]a b 上取1n +个等距节点k x a k h =+(0,1,)k n =,其中b ah n-=,做n 次拉格朗日插值多项式()n L x ,因为()()()n n f x L x R x =+,所以 ()()()bbbn n aaaf x dx L x dx R x dx =+⎰⎰⎰(1)101()()()()(1)!nb b n k k n a a k f x l x dx f x dx n ξω++=⎡⎤=+⎢⎥⎣⎦+∑⎰⎰ 记11()()()()b bn k k aak n k x A l x dx dx x x x ωω++==-⎰⎰(1.4)[](1)11()()(1)!b n n n a R f f x dx n ξω++=+⎰ (1.5) 截去第二项得()()nbk k ak f x dx A f x =≈∑⎰显然k A 与()f x 无关,只与节点(0,1,,)k x k n =有关。

令x a th =+,则当[],x a b ∈时,[]0,t n ∈,于是111()()(1)(2)()n n n x a th h t t t t n ωω+++=+=--- (1.6)而 10111()()()()()()n k k k k k k k k n x x x x x x x x x x x ω+-+=-----!(1)()!n n k h k n k -=--从而得[][]0(1)(1)(1)(1)()!()!n k nk h A t t t k t k t n dt k n k --=---⨯-+--⎰记[][]()0(1)(1)(1)(1)()!()!n kn n kCt t t k t k t n dtk n k n--=---⨯-+--⎰(1.7)则 ()()n kk A b a C =-故求积公式(1.3)可写成()0()()()nbn k k ak f x dx b a C f x =≈-∑⎰(1.8)这就是牛顿-科特斯求积公式,其中()n k C 称为科特斯系数。

相关文档
最新文档