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

合集下载

数值积分的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实现

数值积分算法与MATLAB实现

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

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

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

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

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

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

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

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

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

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

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

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

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

matlab数值积分

matlab数值积分

Matlab数值积分引言数值积分是一种计算近似定积分的方法,通过将积分区间划分成若干小区间并计算每个小区间上的函数面积之和来逼近定积分的值。

Matlab提供了多种数值积分的方法,使得用户能够方便地进行数值积分计算。

本文将介绍Matlab中常用的数值积分函数和方法,并通过示例演示其具体用法。

数值积分函数在Matlab中,常用的数值积分函数有: - quad:用于一维定积分的自适应数值积分函数。

- dblquad:用于二维定积分的自适应数值积分函数。

- triplequad:用于三维定积分的自适应数值积分函数。

- quad2d:用于二维定积分的数值积分函数(不支持自适应)。

- integral:用于一维定积分的自适应数值积分函数(推荐使用quad替代)。

接下来将分别介绍这些函数的用法。

一维定积分quad函数quad函数是Matlab中用于一维定积分的自适应数值积分函数。

其语法如下:[q,err] = quad(fun,a,b)[q,err] = quad(fun,a,b,tol)[q,err] = quad(fun,a,b,tol,[],p1,p2,...)•fun是用于计算被积函数的句柄或函数名称。

•a和b是积分区间的上下限。

•tol是计算精度(可选参数,默认值为1e-6)。

•p1,p2,...是传递给函数fun的额外参数(可选参数)。

quad函数将返回两个值: - q是定积分的近似值。

- err 是估计的误差。

下面是一个使用quad函数计算一维定积分的示例:fun = @(x) exp(-x.^2); % 定义被积函数a = 0; % 积分下限b = 1; % 积分上限[q,err] = quad(fun,a,b); % 计算积分disp(['定积分的近似值:', num2str(q)]);disp(['估计的误差:', num2str(err)]);integral函数integral函数是Matlab中用于一维定积分的自适应数值积分函数,与quad函数功能类似。

数值积分的Matlab实现研究

数值积分的Matlab实现研究

3.指令所采用的算法是将一般的积分区域映射到矩形区域, 然后利用自适应Lobatton算法进行计算.
例题:计算

1
2 1 x 2 2
( x 2 y 2 ) sin(x y 2 )dx
可用如下指令:
quad2d (@(x, y)(x.^2 y.^2).* sin(x y.^2), ...1,2, @( x) x, @( x)1 x.^2)
其中:tic,toc是秒表计时命令,tic表示秒表计时开始,toc表 示秒表计时结束,运行花费时间输出格式为“elapsed_time=”, 单位为秒。 2、被积函数用内嵌函数表示
sym s y 2; y 2 inline('1. /((x 0.3)^2 0.01) 1. /((x 0.9)^2 0.04) 6' );
…*(x.^2+y.^2),x,1+x.^2),x),0,inf)
运行结果:0.6427 例2.计算三重积分 2 2 ( xz y ) ln( 1 x z)dv

其中积分区域由xoy坐标面 与旋转抛物面z=16-x^2-y^2所 围成的立体区域.
4 x 4; 16 x 2 y 16 x 2 ; 0 z 16 x 2 y 2
二、一般数值积分的讨论与研究 由于数值积分非常复杂,如振荡积分,无界区域的积分,无 界函数的积分,高维积分等,目前matlab系统还没有直接提供 一般区域上的三元及三元以上函数积分的指令,这需要人们 从问题出发,利用matlab系统现有的指令,探索求解一般区域 的积分问题. 以具体例题进行讨论: 例1
如 : dz dy ( x 2 y 2 ) ln(x y z )dx

数值积分与matlab求解

数值积分与matlab求解

1.3
数值求积方法
建立数值积分公式的途径比较多, 其中最常用的有两 种:
(1)由积分中值定理可知,对于连续函数f(x),在积分
区间[a,b]内存在一点ξ,使得 b f ( x)dx (b a) f ( )
a
a, b
即所求的曲边梯形的面积恰好等于底为(b-a),高为 f ( ) 的矩形面积。但是点ξ的具体位置一般是未知的, 因 而 f ( ) 的值也是未知的, 称 f ( ) 为f(x) 在区间[a,b]上的平均 高度。那么只要对平均高度 f ( ) 提供一种算法,相应地就 获得一种数值求积方法
计算


2 0
e - x sinxdx ,并与精确值比较.
解:将[0,/ 2]分成20 等份,步长为 / 40,输入程序如下(注意sum 和 cumsum的用法) • >> h=pi/40; x=0:h:pi/2; y=exp(-x).*sin(x); • z1=sum(y(1:20))*h,z2=sum(y(2:21))*h, • z=cumsum(y); z11=z(20)*h, z12=(z(21)-z(1))*h, 运行后屏幕显示计算结果分别如下 • z1 = z2 = z11 = z12 =0.3873 0.4036 0.3873 0.4036 求定积分的精确值,输入程序 • >> syms x • F=int(exp(-x)*sin(x),x,0, pi/2) • Fs= double (F) ,wz1=abs( Fs-z1), wz2= abs( Fs-z2) 运行后屏幕显示定积分的精确值Fs 和用矩形公式计算结果的绝对误差 wz1、wz2 分别如下 • F = Fs =1/2*(-1+exp(pi)^(1/2))/exp(pi)^(1/2) 0.3961 • wz1 = wz2 =0.0088 0.0075

数值积分算法与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。

(完整版)MATLAB数值积分解读

(完整版)MATLAB数值积分解读
ans = 0.28579682416393
6.3 二重定积分的数值求解
使用MATLAB提供的dblquad函数就可以直接求出 上述二重定积分的数值解。该函数的调用格式为:
I = dblquad(f,a,b,c,d,tol,trace) 该函数求f(x,y)在[a,b]×[c,d]区域上的二重定积分。 参数tol,trace的用法与函数quad完全相同。 a,b
通过对表达式尝试多种丌同的算法迚行化简以寻求符号表达式为返回的简化形式how为化简过程中使用的主要方法simple函数综合使用了下列化简方法
6 MATLAB 数值积分
定积分:函数f (x)在区间[a, b]上的定积分定义为
其中
b
n
I
a
f (x)dx lim max(xi )0 i1
f (i )xi
分的下限和上限。该函数求被积函数在区间 [a,b]上的定积分。a和b可以是两个具体的数, 也可以是一个符号表达式,还可以是无穷(inf)。 当函数f关于变量x在闭区间[a,b]上可积时,函 数返回一个定积分结果。当a,b中有一个是inf 时,函数返回一个广义积分。当a,b中有一个 符号表达式时,函数返回一个符号函数。
6.2.3 被积函数由一个表格定义
trapz(x,y) 为梯形积分法,x表示积分区间的离散化 向量,y是与x同维数的向量,表示被积函数在x处的 函数值,z返回积分值。
例4 用trapz函数计算定积分。 命令如下:
X=1:0.01:2.5; Y=exp(-X); %生成函数关系数据向量 trapz(X,Y)
运行结果为ans =64/5
用trapz求数值解,相应的Matlab代码为
clear; x=-2:0.1:2; y=x.^4; %积分步长为0.1(可改变,演示)

演示-matlab计算数值积分

演示-matlab计算数值积分
例:计算二重积分 2 1 (4xy 3x2 )dxdy 0 1 dblquad(inline('4*x.*y+3*x.^2'),-1,1,0,2)
综合示例1
综合示例2
练习
1.计算下列定积分
1 x sin x
e 2 dx 0
e x2Inxdx 1
2.计算下列二重积分
抛物线法 quad(f,a,b,tol)
f 为被积函数,字符串类型,内部运算使用点运算 [a,b] 为积分区间,tol 为计算精度,默认精度10-6
注意:quad函数 的第一个参数带 单引号,内部的*, /,^都需要表示 为形积分域上的二重积分
例:计算二重积分 I 2 1 (4xy 3y2 )dxdy 0 1 f=inline('4*x.*y+3*y.^2'); I=dblquad(f,-1,1,0,2)
Matlab与定积分
—数值积分
习长新 荆楚理工学院数理学院
本节提要
通过本节的学习,我们将了解到 定积分的近似计算原理 常用的近似计算函数
定积分的近似计算原理
矩 形 法
定积分的近似计算原理
梯 形 法
定积分的近似计算原理


Pi ( xi , yi ), Pi1 ( xi1 , yi1 ), Pi2 ( xi2 , yi2 )
线

Matlab数值积分函数
梯形法 trapz(x,y)
x 为分割点(节点)组成的向量, y 为被积函数在节点上的函数值组成的向量。
理论值:pi/4≈0. 78539816
x=0:1/100:1; y=1./(1+x.^2); trapz(x, y)
ans ≈0.7853939967

Matlab数值积分

Matlab数值积分

10 自适应积分....................................................................... 14 11 高斯(GAUSS)型积分公式及其 MATLAB 程序 .............................................................. 15 11.1 在[-1,1]上的高斯-勒让德积分及其 MATLAB 程序 ....................................................... 15 11.2 在[A,B]上的高斯-勒让德积分公式及 MATLAB 程序 ..................................................... 17 12 拉道积分公式和洛巴托积分公式及其 MATLAB 程序 ....................................................... 17 13 无穷积分的符号计算及其 MATLAB 程序 ........................................................................... 23 14 无穷积分的近似计算及其 MATLAB 程序 ........................................................................... 25 14.1 14.2 14.3 14.3 累积求和无穷积分法及其 MATLAB 程序 ...................................................................... 25 无穷区间的截断法及其 MATLAB 程序 .......................................................................... 26 高斯-拉盖尔求积公式及其 MATLAB 程序 ..................................................................... 27 高斯—埃尔米特求积公式及其 MATLAB 程序 .............................................................. 31

如何在Matlab中进行数值积分和数值解

如何在Matlab中进行数值积分和数值解

如何在Matlab中进行数值积分和数值解在数学和工程领域,数值积分和数值解是常见的技术手段,可以帮助我们求解复杂的数学问题和实际工程中的模型。

本文将介绍如何使用Matlab进行数值积分和数值解,以及一些注意事项和常用的方法。

一、数值积分数值积分是计算定积分的近似值的方法,可以通过数值逼近或数值插值来实现。

在Matlab中,有几种常用的函数可以用于数值积分,比如trapz、quad等。

1. trapz函数trapz函数是用梯形法则计算积分的函数。

它的使用方法是将要积分的函数作为输入的第一个参数,x轴上的点作为输入的第二个参数。

例如,要计算函数f(x)在区间[a, b]上的积分,可以使用以下代码:result = trapz(x, f(x));2. quad函数quad函数是使用自适应数值积分算法计算积分的函数。

它的使用方法是将要积分的函数作为输入的第一个参数,积分区间的下限和上限作为输入的第二个和第三个参数。

例如,要计算函数f(x)在区间[a, b]上的积分,可以使用以下代码:result = quad(@(x) f(x), a, b);二、数值解数值解是使用数值方法求解复杂的数学问题或实际工程中的模型的近似解。

在Matlab中,有几种常用的函数可以用于数值解,比如fsolve、ode45等。

1. fsolve函数fsolve函数是用于求解非线性方程组的函数。

它的使用方法是将非线性方程组表示为一个函数,然后将该函数作为输入的第一个参数。

例如,要求解方程组f(x) = 0,可以使用以下代码:x = fsolve(@(x) f(x), x0);其中x0是方程的初始猜测值。

2. ode45函数ode45函数是求解常微分方程初值问题的函数。

它的使用方法是将微分方程表示为一个函数,然后将该函数作为输入的第一个参数。

例如,要求解常微分方程dy/dx = f(x, y),可以使用以下代码:[t, y] = ode45(@(t, y) f(t, y), tspan, y0);其中tspan是时间区间,y0是初始条件。

matlab中的微分方程的数值积分

matlab中的微分方程的数值积分

MATLAB是一种流行的数学软件,用于解决各种数学问题,包括微分方程的数值积分。

微分方程是许多科学和工程问题的数学描述方式,通过数值积分可以得到微分方程的数值解。

本文将介绍在MATLAB中如何进行微分方程的数值积分,以及一些相关的技巧和注意事项。

一、MATLAB中微分方程的数值积分的基本方法1. 常微分方程的数值积分在MATLAB中,常微分方程的数值积分可以使用ode45函数来实现。

ode45是一种常用的数值积分函数,它使用4阶和5阶Runge-Kutta 方法来求解常微分方程。

用户只需要将微分方程表示为函数的形式,并且提供初值条件,ode45就可以自动进行数值积分,并得到微分方程的数值解。

2. 偏微分方程的数值积分对于偏微分方程的数值积分,在MATLAB中可以使用pdepe函数来实现。

pdepe可以求解具有定解条件的一维和二维偏微分方程,用户只需要提供偏微分方程的形式和边界条件,pdepe就可以进行数值积分,并得到偏微分方程的数值解。

二、在MATLAB中进行微分方程数值积分的注意事项1. 数值积分的精度和稳定性在进行微分方程的数值积分时,需要注意数值积分的精度和稳定性。

如果数值积分的精度不够,可能会导致数值解的误差过大;如果数值积分的稳定性差,可能会导致数值解发散。

在选择数值积分方法时,需要根据具体的微分方程来选择合适的数值积分方法,以保证数值解的精度和稳定性。

2. 初值条件的选择初值条件对微分方程的数值解有很大的影响,因此在进行微分方程的数值积分时,需要选择合适的初值条件。

通常可以通过对微分方程进行分析,或者通过试验求解来确定合适的初值条件。

3. 数值积分的时间步长在进行微分方程的数值积分时,需要选择合适的时间步长,以保证数值积分的稳定性和效率。

选择时间步长时,可以通过试验求解来确定合适的时间步长,以得到最优的数值解。

三、MATLAB中微分方程数值积分的实例以下通过一个简单的例子来演示在MATLAB中如何进行微分方程的数值积分。

数值积分及其MATLAB实现

数值积分及其MATLAB实现
运行后屏幕显示计算变限积分 F (x) 的导数.
9.2 数值积分的思想及其 MATLAB 程序
9.2.3 矩形公式的 MATLAB 程序
(一) 函数 sum 的调用格式
调用格式一:sum(X)
调用格式二:sum (X,DIM)

例 9.2.2 用 MATLAB 和矩形公式(9.3)、(9.4)计算 2 0
3.1713
求定积分的精确值,输入程序
>> syms x
e sin x d x ,并与精确值比
129 .
第九章 数值积分
F=int(exp(sin(x)),x,0, pi/2), Fs= double (F), wz1=abs( Fs-z1), wz2= abs( Fs-z2) 运行后屏幕显示定积分的精确值 Fs 和与用矩形公式(9.3),(9.4)计算结果的绝对 误差 wz1、wz2.
wz2 分别如下
F=
Fs =
1/2*(-1+exp(pi)^(1/2))/exp(pi)^(1/2)
0.3961
wz1 =
wz2 =
0.0088
0.0075
9.3 插值型数值积分及其 MATLAB 程序
9.3.2 梯形公式的 MATLAB 程序
(一) 根据梯形公式和估计误差公式自己编写 MATLAB 程序计算定积分
for k=1:n/2
x=a+h*(2*k-1); s=s+feval(fun,x);
end
T(i+1)=T(i)/2+h*s;
end
T=T(1:m);
例 9.3.6 用 rctrap 计算 I 1

x2
2 e 2 d x ,递归 14 次,并将计算结果与精确

matlab实现数值分析插值及积分

matlab实现数值分析插值及积分

m a t l a b实现数值分析插值及积分(总19页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--Matlab实现数值分析插值及积分摘要:数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。

在实际生产实践中,常常将实际问题转化为数学模型来解决,这个过程就是数学建模。

学习数值分析这门课程可以让我们学到很多的数学建模方法。

分别运用matlab数学软件编程来解决插值问题和数值积分问题。

题目中的要求是计算差值和积分,对于问题一,可以分别利用朗格朗日插值公式,牛顿插值公式,埃特金逐次线性插值公式来进行编程求解,具体matlab代码见正文。

编程求解出来的结果为:=+。

其中Aitken插值计算的结果图如下:对于问题二,可以分别利用复化梯形公式,复化的辛卜生公式,复化的柯特斯公式编写程序来进行求解,具体matlab代码见正文。

编程求解出来的结果为:其中复化梯形公式计算的结果图如下:问题重述问题一:已知列表函数表格 1分别用拉格朗日,牛顿,埃特金插值方法计算。

问题二:用复化的梯形公式,复化的辛卜生公式,复化的柯特斯公式计算积分,使精度小于5。

问题解决问题一:插值方法对于问题一,用三种差值方法:拉格朗日,牛顿,埃特金差值方法来解决。

一、拉格朗日插值法:拉格朗日插值多项式如下:首先构造1+n 个插值节点n x x x ,,,10 上的n 插值基函数,对任一点i x 所对应的插值基函数)(x l i ,由于在所有),,1,1,,1,0(n i i j x j +-=取零值,因此)(x l i 有因子)())(()(110n i i x x x x x x x x ----+- 。

又因)(x l i 是一个次数不超过n 的多项式,所以只可能相差一个常数因子,固)(x l i 可表示成:)())(()()(110n i i i x x x x x x x x A x l ----=+-利用1)(=i i x l 得:)())(()(1110n i i i i i i x x x x x x x x A ----=+-于是),,2,1,0()())(()()())(()()(110110n i x x x x x x x x x x x x x x x x x l n i i i i i i n i i i =--------=+-+-因此满足i i n y x L =)( ),2,1,0(n i =的插值多项式可表示为:∑==nj j j n x l y x L 0)()(从而n 次拉格朗日插值多项式为:),,2,1,0()()(0n i x l y x L nj i j j i n ==∑=matlab 编程:编程思想:主要从上述朗格朗日公式入手:依靠循环,运用poly ()函数和conv ()函数表示拉格朗日公式,其中的poly (i )函数表示以i 作为根的多项式的系数,例如poly (1)表示x-1的系数,输出为1 -1,而poly (poly (1))表示(x-1)*(x-1)=x^2-2*x+1的系数,输出为1 -2 1;而conv ()表示多项式系数乘积的结果,例如conv (poly (1),poly (1))输出为1 -2 1;所以程序最后结果为x^n+x^n-1+……+x^2+x+1(n 的值据结果的长度为准)的对应系数。

数值积分算法与MATLAB实现 论

数值积分算法与MATLAB实现  论

编号:审定成绩:毕业设计(论文)设计(论文)题目:数值积分算法与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 formulaHigh-precisionquadrature 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)二、英文翻译 (53)前 言对于定积分()ba f x dx ⎰,在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里茨公式()()()ba I f x dx Fb F a ==-⎰可以计算定积分的值,但在很多情况下()f x 的原函数不易求出或非常复杂。

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

数值积分的算法比较及其MATLAB实现
第五章 总结............................................................................................................24
III
数值积分的算法比较及其 MATLAB 实现
参考文献 .................................................................................................................... 25 致 谢....................................................................................................................26 附 录....................................................................................................................27 声 明...............................Байду номын сангаас....................................................................................32
II
数值积分的算法比较及其 MATLAB 实现
目录
第一章 前 言..........................................................................................................1 1.1 选题背景与研究意义........................................................................................1 1.1.1 选题背景 ........................................................................................................1 1.1.2 研究意义 ........................................................................................................1 1.2 研究现状............................................................................................................2 1.3 本文研究的主要内容........................................................................................3

matlab 积分数值求解程序

matlab 积分数值求解程序

一、简介Matlab是一种用于数学计算、数据分析和可视化的高级编程语言和环境。

其中,积分数值求解是Matlab中常用的功能之一,能够用于求解复杂的数学积分问题。

本文将介绍如何使用Matlab的积分数值求解程序,以及其基本原理和用法。

二、Matlab积分数值求解程序的基本原理Matlab中的积分数值求解程序主要基于数值积分的基本原理,即将一个函数在某个区间上的积分近似表示为若干个小区间上函数值的加权和。

常见的数值积分方法包括梯形法则、辛普森法则、龙贝格积分法等。

这些数值积分方法可以用于求解一维和多维函数的数值积分,并且在Matlab中都有相应的函数实现。

三、Matlab积分数值求解程序的使用方法1. 使用内置函数Matlab中提供了多个内置的积分数值求解函数,例如quad、quadl、quadgk等,这些函数可以用于对一维函数的数值积分。

用户只需输入被积函数、积分区间等参数即可得到积分的数值近似解。

2. 自定义函数除了使用内置函数,用户还可以通过自定义函数的方式来实现积分数值求解。

通过编写自己的积分数值求解算法,用户可以更灵活地对复杂的积分问题进行求解。

Matlab还提供了丰富的数学函数和工具,可以用于对被积函数进行求导、符号计算等,从而辅助完成数值积分的求解过程。

四、Matlab积分数值求解程序的应用实例1. 一维函数的数值积分假设有一个一维函数f(x)=x^2,在区间[0,1]上的数值积分。

可以使用Matlab的内置函数quad来求解这个积分,代码如下:```f = (x) x^2;q = quad(f, 0, 1);disp(['The value of the integral is ', num2str(q)]);```上述代码中,使用了匿名函数来定义被积函数f(x)=x^2,并将其作为参数传递给quad函数。

使用disp函数输出积分的数值近似解。

2. 多维函数的数值积分对于多维函数的数值积分,Matlab同样提供了相应的函数实现。

数值积分的matlab实现

数值积分的matlab实现
(5)
首先编写被积函数的M文件f5.m
function y=f5(x)
y=sqrt[1+(cosx)^2] ;
然后编写如下程序,并保存为t5.m
%t5.m
clear;
a=0;b=48;
T=chen_trap(@f5,a,b);
S=chen_simpson(@f5,a,b);
FT8=comtrap(@f5,a,b,8);
end
y=(z1+z2)*h/2;
%复化simpson公式主程序
%fun表示被积函数句柄
%a,b分别为积分区间的左右端点
%n为等分积分区间的个数
%y为积分近似值Sn
复合Simpson公式程序代码
程序代码说明
function y=comsimpson(fun,a,b,n);
z1=feval(fun,a)+feval(fun,b);m=n/2;
%复化simpson公式主程序
%fun表示被积函数句柄
%a,b分别为积分区间的左右端点
%n=2m,m为等分积分区间的个数
%y为积分近似值Sm
Romberg求积公式程序代码
程序代码说明
function [quad,R]=Romberg(f,a,b,eps);
h=b-a;
R(1,1)=h*(feval(f,a)+feval(f,b))/2;
实验四数值积分的Matlab实现
一、实验目的与要求
1.熟练梯形公式、Simpson公式、复化梯形公式、复化Simpson公式、Romberg求积公式;
2.熟悉符号积分,能数值积分的值与精确值的比较;
3.培养编程与上机调试能力。
二、实验原理
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

东北大学秦皇岛分校数值计算课程设计报告数值积分算法及MATLAB实现学院数学与统计学院专业信息与计算科学学号*******姓名陈悦指导教师姜玉山张建波成绩教师评语:指导教师签字:2015年07月14日1 绪论数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值检索方其理论与软件的实现.而数值分析主要研究数值计算.现科学技术的发展与进步提出了越来越多的复杂的数值计算问题,这些问题的圆满解决已远人工手算所能胜任,必须依靠电子计算机快速准确的数据处理能力.这种用计算机处理数值问题的方法,成为科学计算.今天,科学计算的应用范围非常广泛,天气预报、工程设计、流体计算、经济规划和预测以及国防尖端的一些科研项目,如核武器的研制、导弹和火箭的发射等,始终是科学计算最为活跃的领域.1.1 数值积分介绍数值积分是数值分析的重要环节,实际问题当中常常需要计算积分,有些数值方法,如微分方程和积分方程的求解,也都和积分计算相联系.求某函数的定积分时,在多数情况下,被积函数的原函数很难用初等函数表达出来,因此能够借助微积分学的牛顿-莱布尼兹公式计算定积分的机会是不多的.另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解.由于以上原因,数值积分的理论与方法一直是计算数学研究的基本课题.对微积分学做出杰出贡献的数学大师,如I.牛顿、L.欧拉、C.F.高斯、拉格朗日等人都在数值积分这个领域作出了各自的贡献,并奠定了这个分支的理论基础.构造数值积分公式最通常的方法是用积分区间上的n 次插值多项式代替被积函数,由此导出的求积公式称为插值型求积公式.特别在节点分布等距的情形称为牛顿-科特斯公式,例如梯形公式(Trapezoidal Approximations)与抛物线公式(Approximations Using Parabolas)就是最基本的近似公式.但它们的精度较差.龙贝格算法是在区间逐次分半过程中,对梯形公式的近似值进行加权平均获得准确程度较高的积分近似值的一种方法,它具有公式简练、计算结果准确、使用方便、稳定性好等优点,因此在等距情形宜采用龙贝格求积公式(Rhomberg Integration).当用不等距节点进行计算时,常用高斯型求积公式计算,它在节点数目相同情况下,准确程度较高,稳定性好,而且还可以计算无穷积分.数值积分还是微分方程数值解法的重要依据.许多重要公式都可以用数值积分方程导出.现探讨数值积分算法以及运用MATLAB软件的具体实现1.2 MATLAB 软件MATLAB 是美国MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB 和Simulink 两大部分.MATLAB 是matrix&laboratory 两个词的组合,意为矩阵工厂(矩阵实验室).是由美国mathworks 公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境.它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C 、Fortran )的编辑模式,代表了当今国际科学计算软件的先进水平.MATLAB 和Mathematica 、Maple 并称为三大数学软件.它在数学类科技应用软件中在数值计算方面首屈一指.MATLAB 可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域.MATLAB 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB 来解算问题要比用C ,FORTRAN 等语言完成相同的事情简捷得多,并且MATLAB 也吸收了像Maple 等软件的优点,使MATLAB 成为一个强大的数学软件.在新的版本中也加入了对C ,FORTRAN ,C++,JAVA 的支持.2 数值积分的基本概念一般的,我们可以在区间[],a b 上适当选取某些节点k x ,然后用()k f x 的加权平均得到平均高度()f ς的近似值,这样构造出的求积公式具有下列形式:()()0d nakkbk f x x A f x =≈∑⎰,式中kx称为求积节点;k A 称为求积系数,亦称伴随节点k x 的权.权k A 仅仅与节点k x 的选取有关,而不依赖于被积函数()f x 的具体形式. 2.1 代数精度的概念如果某个求积公式对于次数不超过m 的多项式均能准确的成立,但对于1m +次多项式就不准确成立,则称该求积公式具有m 次代数精度(或代数精确值)一般地,欲使求积公式具有m 次代数精度,只要令它对于()1,,,m f x x x =都能准确成立,这就要求:()()22+1+1=-,1=-,21=-.+1k k k m m m k k A b a A x b a A x b a m ⎧⎪⎪⎪⎨⎪⎪⎪⎩∑∑∑ 2.2 求积公式的余项令求积公式的余项为[]R f ,其中[]()()ba=d nk k k R f f x x A f x =-∑⎰.;区间[],a b 可以是有限的或无限的.构造求积公式的问题就是确定j x 和j A 使得[]R f 在某种意义下尽可能地小.3 数值积分方法及MATLAB 实现3.1 复合辛普森公式 3.1.1 插值型求积公式用插值多项式()n L x 替换积分()*d ba I f x x =⎰中的被积函数()f x ,然后计算()d bn aI L x x =⎰作为积分的近似值,这样建立的求积公式称为插值型求积公式.用插值多项式()n L x 的表达式()()0()n n k k k L x l x f x ==∑,代入得()0nk k k I A f x ==∑,其中:011011()()()()d ()()()()bk k n k ak k k k k k n x x x x x x x x A x x x x x x x x x -+-+----=----⎰.其余项为:[]()(1)*()d (1)!n baf R f I I x x n ξω+=-=+⎰.3.1.2 牛顿-科特斯公式介绍取等距节点,把积分区间[],a b 剖分成n 等分.令步长()b a h n-=,并记0,n x a x b ==,则1n +个节点为0,0,1,k x x kh k n =+=,代入得:k A =0(1)(1)(1)(1)()d ()!!n k nh t t t k t k t n t n k k ----+----⎰.这种等距节点的插值型求积公式通常称为牛顿-科特斯公式. 3.1.3 辛普森公式利用牛顿-科特斯公式,取n =2,此时为()4()()62b a a b S f a f f b -+⎡⎤=++⎢⎥⎣⎦,即为辛普森公式,其余项为[]5(4)1()()902s b a R f f η-=-. 3.1.4 复合辛普森公式将积分区间[],a b 分成n 等分,分点为(0,1,,)k x a kh k n =+=,其中()b a h n-=,记区间[]1,k k x x +的中点为12k x +,在每个小区间[]1,k k x x +上用辛普森公式,则得到所谓的复合辛普森公式:()()1110246n n k k k k h S f x fx f x -++=⎡⎤⎛⎫=++⎢⎥ ⎪⎢⎥⎝⎭⎣⎦∑.()()()111102246n n n k k k k h S f a f b f x f x --+==⎡⎤⎛⎫=+++⎢⎥ ⎪⎢⎥⎝⎭⎣⎦∑∑.余项为[]()4(4)()1802n b a h R S f ξ-=-,(,)a b ξ∈. 3.1.5 复合辛普森公式的MATLAB 实现 代码如下:function s=xinpusen(fun,a,b,n) h=(b-a)/n s1=0;s2=0; for k=0:(n-1) x=a+h*k;s1=s1+feval(fun,x); end for k=0:(n-1) x=a+h*(k+1/2); s2=s2+feval(fun,x);ends=h/6*(feval(fun,a)+feval(fun,b)+2*s1+4*s2); 3.2 龙贝格公式 3.2.1 梯形法的递推化将区间[],a b 分成n 等份,共有1n +个分点,如果将求积区间再二分一次,则分点增至21n +个,用复合梯形公式求得该子区间上的积分值为()1122()4k k k h f x fx f x ++⎡⎤⎛⎫++⎢⎥ ⎪⎢⎥⎝⎭⎣⎦,将每个子区间上的积分值相加得2n T =()1111002()()42n n k k k k k h h f x f x f x --++==++⎡⎤⎣⎦∑∑. 得到递推公式:12102122n n n k k h T T f x -+=⎛⎫=+ ⎪⎝⎭∑.3.2.2 龙贝格算法公式当()f x 在[],a b 上充分光滑时, 可证用1()T h 逼近I 的截断误差是:1()I T h -=21a h 42a h +2k k a h +++按理查森外推法:()1()F h F h =,1()()(),(1,2,)1mpm m m m p F qh q F h F h m q+-==- 其中,q 为满足10(1,2,)m p q m -≠=的适当正数 .取序列:()()()142,1,2,41m m n m m h T T h T h m +⎛⎫- ⎪⎝⎭==-. 用()1m T h +来逼近I 的误差为()()21m O h +,这种算法就是龙贝格算法.3.2.3 龙贝格算法MATLAB 实现 代码如下:function s=longbeige(fun,a,b,tol) if nargin<4,tol=1e-4;end i=1;j=1;h=b-a;T(1,1)=h*(feval(fun,a)+feval(fun,b))/2;T(i+1,j)=T(I,j)/2+sum(feval(fun,a+h/2:h:b-h/2))*h/2; T(i+1,j+1)=(4^j*T(i+1,j)-T(i.j))/(4^j-1); while (abs(T(i+1,i+1)-T(I,i))>tol) i=i+1;h=h/2;T(i+1,1)=T(I,1)/2+sum(feval(fun,a+h/2:h:b-h/2))*h/2; for j=1:iT(i+1,j+1)=(4^j*T(i+1,j)-T(I,j))/(4^j-1); end end Ts=T(i+1,j+1); 3.3 自适应法自适应积分法是一种比较经济而且快速的求积分的方法.他能自动地在被积函数变化剧烈的区域增多节点,而在被积函数变化平缓的地方减少节点.因此它是一种不均匀区间的积分方法.按照子区间上的积分方式它可以分为自适应辛普森积分法和自适应梯形积分法.通常是采用自适应辛普森积分法作为子区间的积分方式.自适应积分法的基本步骤如下:(1) 将积分区间[],a b 分成两个相等的1级子区间1,2a a h ⎡⎤+⎢⎥⎣⎦和1,2a h a h ⎡⎤++⎢⎥⎣⎦,且h b a =-;(2) 在上述两个1级子区间上用辛普森积分得到积分(){}1_,^12I a a h ⎧⎫+⎨⎬⎩⎭和(){}1_,^12I a h a h ⎧⎫++⎨⎬⎩⎭;(3) 将子区间1,2a a h ⎡⎤+⎢⎥⎣⎦分成两个相等的2级子区间21,2a a h ⎡⎤+⎢⎥⎣⎦和211,22a h a h ⎡⎤++⎢⎥⎣⎦; (4) (){}(){}(){}221111_,^2_,^1_,^12222I a a h I a a h I a h a h ⎧⎫⎧⎫⎪⎪⎪⎪⎧⎫+=++++⎨⎬⎨⎬⎨⎬⎩⎭⎪⎪⎪⎪⎩⎭⎩⎭;(5) 比较(){}1_,^22I a a h ⎧⎫+⎨⎬⎩⎭和(){}1_,^12I a a h ⎧⎫+⎨⎬⎩⎭, 如果|(){}1_,^12I a a h ⎧⎫+⎨⎬⎩⎭- (){}1_,^22I a a h ⎧⎫+⎨⎬⎩⎭|<110**2epsi ,其中epsi 为整体积分所需要的精度,则认为子区间1,2a a h ⎡⎤+⎢⎥⎣⎦上的积分(){}1_,^12I a a h ⎧⎫+⎨⎬⎩⎭已达到所需精度,不需要再细分;否则就需要再细分,对每个2级子区间做同样的判断1级子区间1,2a h a h ⎡⎤++⎢⎥⎣⎦的操作过程完全与上面相同. 3.4 高斯法对已知求积公式可以讨论它的代数精度,反之也可以按照代数精度要求导出求积公式.对于求积公式,当求积节点k x (0,1,,k n =)固定时,公式有1n +个待定参数,故此时可要求满足对1,,,n x x “准确”这样1n +个约束条件,从而使之至少具有n 次代数精度.进一步,可考虑将k x ()0,1,,k n =也视为待定参数,这样公式的待定参数就有22n +个,从而可望公式的代数精度达到21n +.此类高精度的求积公式称为高斯型公式,而对应的节点k x ()0,1,,k n =称为区间[],a b 上的高斯点.3.4.1 高斯法的MATLAB 实现 代码如下:function g=gaosi(fname,a,b,n,m) switch m case 1 t=0;A=1; case 2t=[-1/sqrt(3),1/sqrt(3)];A=[1,1]; case 3t=[-sqrt(0.6),0.0,sqrt(0.6)];A=[5/9,8/9,5/9]; case 4t=[-0.8612136,-0.339981,0.339981,0.861136]; A=[0.347855,0.652145,0.652145,0.347855]; case 5t=[-0.906180,-0.538469,0.0,0.538469,0.906180]; A=[0.236927,0.478629,0.568889,0.478629,0.236927]; case 6t=[-0.932470,-0.661209,-0.238619,0.238619,0.661209,0.932470];A=[0.171325,0.360762,0.467914,0.467914,0.360762,0.171325]; otherwise error endx=linspace(a,b,n+1); g=0; for i=1:ng=g+gsint(fname,x(i),x(i+1),A,t); endfunction g=gsint(fname,a,b,A,t)g=(b-a)/2*sum(A.*feval(fname,(b-a)/2*t+(a+b)/2)); 3.5 多重积分法考虑二重积分(,)d Rf x y A ⎰⎰,它是曲面(,)z f x y =与平面区域R 围成的体积,对于矩形区域{}(,),R x y a x b c y d =≤≤≤≤.可将它写成累次积分(,)((,)d )d b dacRf x y dx f x y y x =⎰⎰⎰⎰若用复合辛普森公式,可分别将[,],[,]a b c d 分成N ,M 等份,步长,b a d ch k N M--==,先对积分(,)d d c f x y y ⎰应用复合辛普森公式,令i y c ik =+,121()2i yc i k +=++.1101012(,)d (,)4(,)2(,)(,)6M M di M ci i i k f x y y f x y f x y f x y f x y --+==⎡⎤=+++⎢⎥⎣⎦∑∑⎰.从而得:1101012(,)d d (,)4(,)2(,)(,)d 6M M bdbb b b i M aca a a a i i i k f x y y x f x y f x y f x y f x y x --+==⎡⎤=+++⎢⎥⎣⎦∑∑⎰⎰⎰⎰⎰⎰.4 数值积分方法比较例:用数值积分方法计算方程1204d 1I x x =+⎰的值. 4.1 复合辛普森公式求解 >> fun=inline('4./(1+x.^2)'); >> xinpusen(fun,0,1,10)ans =3.2749259863031184.2 龙贝格算法求解longbeige(inline('4./(1+x.^2)'),0,1,1e-6)T =3.00003.1000 3.13333.1312 3.1416 3.14213.1390 3.1416 3.1416 3.14163.1409 3.1416 3.1416 3.1416 3.14163.1414 3.1416 3.1416 3.1416 3.1416 3.1416ans =3.1415926536382444.3 高斯算法求解>> gaosi(inline('4./(1+x.^2)'),0,1,2,3)ans =3.141591222382834>> gaosi(inline('4./(1+x.^2)'),0,1,4,4)ans =3.1415956115587354.4 三种方法比较分析结果显示每一个算法都接近真实值,但龙贝格算法相比较复合辛普森算法,高斯算法来说更加接近.对于代数精度来说,复合辛普森的代数精度为11,龙贝格代数精度为11,高斯代数精度为11.可见代数精度相同时,龙贝格的求积精度最小,所以相同条件下龙贝格求积公式最能接近准确值.数学与统计学院课程设计(实习)报告第10页总结随着数学实验的兴起,对整个数学课程教学改革起到了积极的推动作用,我们要熟悉的运用各种数学软件,解决数学运算中繁琐的问题,实现学习的简单,快捷化.同时意识到用MATLAB编程时,要实现代码的层次性,做到有规有矩,那样才能把MATLAB 运用自如.这次课程设计,用MATLAB实验对数值积分进行了实现,简介了5种不同的数值积分的方法,并且实现了其中的3中方法,实现过程中发现了各种方法之间的区别和联系.并且在实验过程中,使自己对数值积分和MATLAB更加的熟悉.做到了学习和实践相联系.参考文献[1]戈慈水.《数值分析》课程数值积分的MatLab实现问题的教学研究[M].时代教育出版社,2011.7[2]张志涌.精通MATLAB6.5版[M].北京航天航空大学出版社,2003.3.[3]陈杰,孙晓君.MATLAB数学实验[M].高等教育出版社,2006.6.[4]朱叶志.MATLAB数值分析与应用[M].北京:机械工业出版社,2009.[5]王正林.精通MATLAB科学计算[M].北京:电子工业出版社,2007.[6]萧树铁.大学数学实验[M].北京:高等教育出版社,1997.。

相关文档
最新文档