当前位置:文档之家› 理解复合梯形、复合辛普森和龙贝格求积算法

理解复合梯形、复合辛普森和龙贝格求积算法

理解复合梯形、复合辛普森和龙贝格求积算法
理解复合梯形、复合辛普森和龙贝格求积算法

实验报告

复化积分法(复化梯形求积-复化Simpson公式-变步长求积法)MATLAB编程实验报告 (1)

复化积分法(复化梯形求积,复化Simpson 公式,变步长求积法) MATLAB 编程实验报告 一、 问题描述: 编写函数实现复化积分法。 二、 实验步骤(过程): (一)复化求积法 (1)复化梯形求积:用复化梯形求积公式求解 dx x x ?10sin function [f]=Tn(a,b,n,y) syms t; h=(b-a)/n; f=0; for k=1:n+1 x(k)=a+(k-1)*h z(k)=subs(y,t,x(k)); end for i=2:n f=f+z(i); end q=subs(y,t,a); if y=='sin(t)/t'&&a==0 q=1; end p=subs(y,t,b); T=h/2*(q+p+2*f); T=vpa(T,7) clc,clear; syms t; a=0;b=1; y=sin(t)/t; n=8; Tn(a,b,n,y); (2)复化Simpson 公式:用复化Simpson 公式求解?211dx e x function [f]=simpson(a,b,n,y)

syms t; h=(b-a)/n; f=0;l=0; for k=1:n+1 x(k)=a+(k-1)*h w(k)=0.5*h+x(k) z(k)=subs(y,t,x(k)); end for i=2:n f=f+z(i); end for i=1:n l=l+w(i); end q=subs(y,t,a); if y=='sin(t)/t'&&a==0 q=1; end p=subs(y,t,b); T=h/2*(q+p+2*f); T=vpa(T,7) clc,clear; syms t; a=1;b=2; y=exp(1/t); n=5; simpson(a,b,n,y); (3)变步长求积法:以书本例4.5为例function [f]=TN(a,b,y,R0) syms t; T=[]; f=0; q=subs(y,t,a); if y=='sin(t)/t'&&a==0 q=1; end p=subs(y,t,b); T(1)=(b-a)/2*(q+p); i=2; n=i-1; h=(b-a)/n; z1=a+h/2; z2=subs(y,t,z1);

数值分析—龙贝格算法

数值分析 实 验 报 告 专业:信息与计算科学 班级: 10***班 学号: 1008060**** 姓名: ******

实验目的: 用龙贝格积分算法进行积分计算。 算法要求: 龙贝格积分利用外推方法,提高了计算精度,加快了收敛速度。 1--4R R R R 1-j 1-j 1-k 1-j k 1-j k j k ,,,,+= ,k=2,3,… 对每一个k ,j 从2做到k ,一直做到|R R 1-k 1-k k k -,,| 小于给定控制精 度时停止计算。 其中: T R h k 1k =,(复化梯形求积公式),2h 1-k k a -b = 程序代码: #include #include #define M 10 static float a, b, T[M], S[M], C[M], R[M]; float f(float x) { float y; if(0.0 == x) { x = 0.0000001f; } y = (float)1/sqrt(1-x*x); return y; } int p(int n) { int i=0,t=1;

while(t!=n) { t*=2; ++i; } return i; } float t(int n) { float g,h,q=0; if(1==n) { h = (float)fabs(b-a); q = (f(a)+f(b))*h/2; } else { float x = a; g = 0; h = (float)fabs(b-a)*2/n; x = x+h/2; while(x

9个求积公式

第四章共包含9个求积公式,1个余项公式。 1,机械求积公式 f x dx = A k f (x k )n k =0b a 2,插值求积公式 Ln x dx =b a [ l k (x )dx b a L (x k )n k =0] 3,梯形求积公式 f x dx = b ?a b a [f a +f b ] R n x =? b ?a 3f ′′ ξ 4,辛普森求积公式 f x dx = b ?a b a [f a +f (a +b )+f b ] R n x =? b ?a (b ?a )4f (4) ξ 5,复合梯形公式 f x dx =?b a [f a + f x k n?1k =1+f b ] h=(b-a)/n R n x =? b ?a h 2f ′′ ξ 6,复合辛普森公式 f x dx =?b a [f a +4 f x k +12 n?1k =0+2 f x k n?1k =1+f b ] h=(b-a)/n R n x =? b ?a (h )4f (4) ξ 7,高斯求积公式 ρ(x )f x dx = A k f (x k )n k =0b a 其中x k 为高斯点,n+1个节点对应2n+1级代数精度。 高斯点公式:ωn+1=(x-x 0)(x-x 1)…(x-x n )= x n+1 + a 0x n + a 1x n-1+…+a n-1x+a n ,用 ρ(x )ωn +1 x φk (x )dx b a =0(k=0,…,n)求出待定系数a ,解方程ωn+1=0得高斯点。 重新代入 ρ(x )f x dx = A k f (x k )n k =0 b a 中求解方程组得到系数A 。

龙贝格算法的matlab实现

作业三——龙贝格算法的matlab实现程序流程图:

程序源代码: 文件f.m function fx = f(x) if x == 0 fx = 1; else fx = sin(x) / x; end end 文件longbeige.m clc clear all; format long a=input('请输入你要求得积分的下限:'); b=input('请输入你要求得积分的上限:'); e=input('请输入你要求得积分的结束精度:'); k=input('请输入你要求得积分的最大次数:'); fx=@(x)sin(x)/x; lbg(@f,a,b,k,e) 文件lbg.m function lbg(fx,a,b,k,e) T=zeros(k,k); T(1,1)=(b-a)*(1+fx(b))/2; for i=1:k m=0; for j=1:2^(i-1) m=m+fx(a+(2*j-1)*(b-a)/(2^i)); end T(i+1,1)=0.5*T(i,1)+(b-a)*m/2^i; for n=1:i T(i+1,n+1)=(4^n*T(i+1,n)-T(i,n))/(4^n-1); end if abs(T(i+1,i+1)-T(i,i))<=e & i>=4 break; else ; end end for i=1:k

if T(i,1)==0 j=i; break; else ; end end if j==k error('所求次数不够或不可积') else ; end T=T(1:j-1,1:j-1) disp('所求的积分值为:') disp(T(j-1,1))

龙贝格公式和辛普森公式和复合梯形公式

实验八数值积分 信息与计算科学金融崔振威201002034031 一、实验目的: 1、掌握数据积分算法设计及程序实现 二、实验内容: 1、p290-1、p301-2 三、实验要求: 主程序: 复合梯形公式: function [I,step,h2] = CombineTraprl(f,a,b,eps) %f 被积函数 %a,b 积分上下限 %eps 精度 %I 积分结果 %step 积分的子区间数 if(nargin ==3) eps=1.0e-4; end n=1; h=(b-a)/2; I1=0; I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h; while abs(I2-I1)>eps n=n+1; h=(b-a)/n; I1=I2; I2=0; for i=0:n-1 x=a+h*i; x1=x+h; I2=I2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+subs(sym(f),findsym(sym(f)),x1)); end end I=I2; step=n; h2=(b-a)/n;

function [I,step,h] = IntSimpson(f,a,b,type,eps) %type = 1 辛普森公式 %type = 2 辛普森3/8公式 %type = 3 复合辛普森公式 if(type==3 && nargin==4) eps=1.0e-4; %精度为0.0001 end I=0; switch type case 1, I=((b-a)/6)*(subs(sym(f),findsym(sym(f)),a)+... 4*subs(sym(f),findsym(sym(f)),(a+b)/2)+... subs(sym(f),findsym(sym(f)),b)); step=1; case 2, I=((b-a)/8)*(subs(sym(f),findsym(sym(f)),a)+... 3*subs(sym(f),findsym(sym(f)),(2*a+b)/3)+ ... 3*subs(sym(f),findsym(sym(f)),(a+2*b)/3)+subs(sym(f),findsym(sym(f)),b)); step=1; case 3, n=2; h=(b-a)/2; I1=0; I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h; while abs(I2-I1)>eps n=n+1; h=(b-a)/n; I1=I2; I2=0; for i=0:n-1 x=a+h*i; x1=x+h; I2=I2+(h/6)*(subs(sym(f),findsym(sym(f)),x)+... 4*subs(sym(f),findsym(sym(f)),(x+x1)/2)+... subs(sym(f),findsym(sym(f)),x1)); end end I=I2; step=n; end

数值分析与实验复化辛卜生公式龙贝格算法

数值分析与实验课程设计 班级: 姓名: 学号:

08级应用数学《数值分析与实验(实践)》任务书 一、设计目的 通过《数值分析与实验(实践)》实践环节,掌握本门课程的众多数值解法和原理,并通过编写C语言或matlab程序,掌握各种基本算法在计算机中的具体表达方法,并逐一了解它们的优劣、稳定性以及收敛性。在熟练掌握C语言或matlab语言编程的基础上,编写算法和稳定性均佳、通用性强、可读性好,输入输出方便的程序,以解决实际中的一些科学计算问题。 二、设计教学内容 1、数值方法的稳定性; 2、禾U用牛顿法和割线法程序求出非线性方程的解,并比较它们之间的优 劣; 3、高斯消去法和列主元高斯消去法求解线性方程组; 雅克比法和高斯-赛德尔迭代法解方程组; 4、利用Lagrange插值多项式求未知点的近似值; 5、利用所给数据进行数据的多项式和可转化成多项式形式的函数拟合; 6、编写复化辛卜生公式和龙贝格算法,通过实际计算体会各种方法的精确 \ 度; 7、利用改进Euler方法和四阶Runge-Kutta方法求解初值问题的微分方程组; &利用幕法求矩阵按模最大的特征值及对应特征向量; \ (8个中选取1个) 二、设计时间 2011 —2012学年第1学期:第16周共计一周 教师签名: 2011年12月12日

、八 刖 数值计算方法是一种利用计算机解决数学 .言 问题的数值近似解方法, 特别是无法用人工过计算器计算的数学问题。数值计算方法常用于矩阵高次代数方程矩阵特征值与特征向量的数值解法,插值法,线性方程组迭代法,函数逼近,数值积分与微分,常微分方程初值问题数值解等。 作为数学与计算机之间的一条通道,数值计算的应用范围已十分广泛,作为用计算机解决实际问题的纽带,数值算法在求解线性方程组,曲线拟合、数值积分、数值微分,迭代方法、插值法、拟合法、最小二乘法等应用广泛。 数值计算方法是和计算机紧密相连的,现代计算机的出现为大规模的数值计 算创造了条件,集中而系统的研究适用于计算机的数值方法是十分必要的。数值计算方法是在数值计算实践和理论分析的基础上发展起来的。 通过数值计算方法与实验将有助于我们理解和掌握数值计算方法基本理论和相关软件的掌握,熟练求解一些数学模和运算,并提高我们的编程能力来解决实际问题。

数值分析与算法变步长梯形求积法计算定积分

变步长梯形求积法计算定积分 1.原理: 变步长求积法的主要思想是利用若干小梯形的面积代替原方程的积分,当精度达不到要求时,可以通过增加点数对已有的区间再次划分,达到所需精度时即可;其中由于新的式子中有原来n点中的部分项,故可以省略一些计算,符合了计算机计算存储的思想。 主要公式:T2n=T n/2+(h/2)*Σf(x k+; 2.C++语言实现方式: 通过每次的T n值和新增的函数值点计算T2n,再通过判断|T n-T2n|的大小来判断是否达到精度要求。 3.源程序如下: #include"" #include"" double f(double x)//预先输入的待积分函数 { double s; s=log(x*x); return(s); } double ffts(double a,double b,double eps) { int n,k; double fa,fb,h,t1,p,s,x,t; fa=f(a);

fb=f(b); n=1; h=b-a; t1=h*(fa+fb)/2; p=eps+1; while(p>=eps) { s=0; for(k=0;k<=n-1;k++) { x=a+(k+*h; s=s+f(x); } t=t1/2+h*s/2; p=fabs(t1-t); cout<<"步长n为:"<

辛普森求积公式

摘要 在工程实验及研究中,实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系.可以说,曲线拟合模型与我们的生活生产密切相关. 本课题着重介绍曲线拟合模型及其应用,其中包括它的基本思想、模型的建立、以及具体应用.为了更好的了解曲线拟合模型,可以将它分为线性与非线性模型,在模型建立的基础上我们可以用最小二乘法来解决一些我们日常所应用的问题. 关键词曲线拟合;线性与非线性模型;最小二乘发

目录 引言 (1) 第一章曲线拟合 (2) §1.1 基本思想及基本概念 (2) §1.1.1 方法思想 (2) §1.1.2几个基本概念 (2) §1.2辛普森算法基本定义及其应用 (4) §1.2.1辛普森求积公式的定义 (4) §1.2.2辛普森求积公式的几何意义 (5) §1.2.3辛普森求积公式的代数精度及其余项 (5) §1.2.4辛普森公式的应用 (6) 第二章辛普森求积公式的拓展及其应用 (7) §2.1 复化辛普森求积公式 (7) §2.1.1问题的提出 (7) §2.1.2复化辛普森公式及其分析 (7) §2.1.3复化辛普森公式计算流程图 (8) §2.1.4复化辛普森公式的应用 (9) §2.2 变步长辛普森求积公式 (10) §2.2.1变步长辛普森求积公式的导出过程 (10) §2.2.2变步长辛普森求积公式的加速过程 (12) §2.2.3变步长辛普森求积公式的算法流程图 (13) §2.2.4变步长辛普森公式算法程序代码 (14) §2.2.5变步长辛普森求积公式的应用 (14) §2.2.6小结 (14) §2.2.7数值求积公式在实际工程中的应用 (14) 参考文献 (16) 附录A (17)

复化梯形法 复化矩形法 变步长梯形 变步长辛普森

陕西科技大学 机械教改班 用C++的积分 其实积分的思想就是,微分—>求和—>取极限,如果是用纯手工法那就是先对一个函数微分,再求出它的面积,在取极限,因为我们的计算速度和计算量有限,现在有了计算机这个速度很快的机器,我们可以把微分后的每个小的面积加起来,为了满足精度,我们可以加大分区,即使实现不了微分出无限小的极限情况,我们也至少可以用有限次去接近他,下面我分析了四种不同的积分方法,和一个综合通用程序。 一.积分的基本思想 1、思路:微分—>求和—>取极限。 2、Newton —Leibniz 公式 ?-=b a a F b F dx x f ) ()()( 其中,)(x F 被积函数)(x f 的原函数。 3、用计算机积分的思路 在积分区间内“微分—>求和—>控制精度”。因为计算机求和不可以取极限,也就是不可以无限次的加下去,所以要控制精度。 二.现有的理论 1、一阶求积公式---梯形公式 ?=+-=b a T b f a f a b dx x f )]()([2 )( 他只能精确计算被积函数为0、1次多项式时的积分。 2、二阶求积分公式——牛顿、科特斯公式 ?=+++-=b a S b f a b f a f a b dx x f )]()2(4)([6)( 他只能精确计算被积函数为0、1、2、3次多项式时的积分。 三.四种实现方法 1.复化矩形法 将积分区间[a,b]等分成n 个子区间: ],[],[],[],[],[112322110n n n n x x x x x x x x x x ---、、、 则h=(b-a)/n,区间端点值k x =a+kh

变步长的梯形积分方法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

变步长的梯形积分方法的应用 一、问题背景 实际问题当中常常需要计算积分,有些数值方法,如微分方程和积分方程的求解,也都和积分计算相关联。 依据人们所熟知的微积分基本定理,对于积分 ()dx x f I a ?=b , 只要找到被积分函数()x f 的原函数()x F ,便有下列牛顿-莱布尼茨(Newton-Leibniz )公式: ()()()a F b F dx x f b -=?a . 但实际使用这种求积分方法往往有困难,因为大量的被积函数,诸如 ()0sin ≠x x x ,2x e -等,其原函数不能用初等函数表达,故不能用上述公式计算。即使能求得原函数的积分,有时计算也十分困难。例如对于被积函数 ()6 11x x f +=,其原函数 ()C x x x x x x x x F ++-+++??? ??-+=1 313ln 3411arctan 61arctan 3122, 计算()a F ,()b F 仍然很困难,另外,当()x f 是由测量或数值计算给出的一张数据表时,牛顿-莱布尼茨公式也不能直接运用。因此有必要研究积分的数值计算问题。 二、数学模型 由于牛顿-科特斯积分公式在8≥n 时不具有稳定性,故不能通过提高阶数的方法来提高求积精度。为了提高精度通常可以把积分区间划分成若干的子区间(通常是等分),再在每个子区间上用低阶求积公式。这种方法称为复合求积法。 复合梯形法虽然方法简单,但是却不能估计积分精度,这有时候是很不方便的。要想控制积分精度,可以采用如下的方法,设积分区间已经划分为n 个子区间,这时再把区间划分更细,给出新的积分结果,如果前后两次积分的差比给定的误差容限小的话,则停止细华否则继续增加积分区间。这种方法原理很简单也 容易实现,但是实际计算中一般采用的比较少,因为这种方法比较机械效率不是太高,实际上采用比较多的通常是Romberg 方法。 三、算法及流程 给定义误差容限小量TOL ,对于()dx x f b a ?,有复合梯形公式

龙贝格算法

龙贝格算法 一、问题分析 1、1龙贝格积分题目 要求学生运用龙贝格算法解决实际问题(塑料雨篷曲线满足函数y(x)=l sin (tx),则给定雨篷得长度后,求所需要平板材料得长度). 二、方法原理 2、1龙贝格积分原理 龙贝格算法就是由递推算法得来得。由梯形公式得出辛普生公式得出柯特斯公式最后得到龙贝格公式. 在变步长得过程中探讨梯形法得计算规律.设将求积区间[a,b]分为n个等分,则一共有n+1个等分点,n.这里用表示复化梯形法求得得积分值,其下标n 表示等分数。 先考察下一个字段[],其中点,在该子段上二分前后两个积分值 显然有下列关系 将这一关系式关于k从0到n-1累加求与,即可导出下列递推公式 需要强调指出得就是,上式中得代表二分前得步长,而 梯形法得算法简单,但精度低,收敛速度缓慢,如何提高收敛速度以节省计算量,自然式人们极为关心得. 根据梯形法得误差公式,积分值得截断误差大致与成正比,因此步长减半后误差将减至四分之一,既有 将上式移项整理,知

由此可见,只要二分前后两个积分值与相当接近,就可以保证计算保证结果计算结果得误差很小,这种直接用计算结果来估计误差得方法称作误差得事后估计法。 ?按上式,积分值得误差大致等于,如果用这个误差值作为得一种补偿,可以期望,所得得 应当就是更好得结果。 ?按上式,组合得到得近似值直接验证,用梯形二分前后得两个积分值与按式组合,结果得到辛普生法得积分值。 再考察辛普生法。其截断误差与成正比.因此,若将步长折半,则误差相应得减至十六分之一。既有 由此得 不难验证,上式右端得值其实就等于,就就是说,用辛普生法二分前后得两个积分值与,在按上式再做线性组合,结果得到柯特斯法得积分值,既有 重复同样得手续,依据斯科特法得误差公式可进一步导出龙贝格公式 应当注意龙贝格公式已经不属于牛顿—柯特斯公式得范畴. 在步长二分得过程中运用公式加工三次,就能将粗糙得积分值逐步加工成精度较高得龙贝格,或者说,将收敛缓慢得梯形值序列加工成熟练迅速得龙贝格值序列,这种加速方法称龙贝格算法。 三、算法设计 3、1龙贝格积分算法 就就是求出,再走一遍求出,根据求出,再走一遍求出,根据求出,根据求出,再走一遍程序求出,根据得出,根据得出,再根据得出,再走一边程序,得出,根据得出,根据得出,再由得出。再根据相减得绝对值小于其精度。那其中为求出得值.

复合梯形公式及复合辛普森公式对比

SHANGHAI JIAO TONG UNIVERSITY 题目名称:复合梯形公式与复合辛普森公式对比学生: 学生学号: 班级:

学院(系): 目录 1.概述 (3) 2.问题提出 (3) 3.算法推导 (3) 4.算法框图 (3) 4.1复合梯形公式算法流程图 (3) 4.2 复合辛普森公式算法流程图 (3) 5.MATLAB源程序 (3) 6.结论与展望 (3) 图表目录 图4-1 复合梯形公式算法流程图 (1) 图4-2 复合辛普森公式算法流程图 (1) 图6-1 MATLAB计算结果 (3) 表2-1函数计算结果表 (3)

1.概述 梯形求积公式和辛普森求积公式分别是牛顿-科斯特公式中n=1和n=2时的情形。其中梯形求积公式可表示为 由于牛顿-科斯特公式在n≥8时不具有稳定性,故不可能通过提高阶的方法来提高求积精度。为了提高精度通常可把积分区间分成若干子区间(通常是等分),再在每个子区间上用低阶求积公式。这种方法称为复合求积法。 本文主要讨论复合梯形公式和复合辛普森公式在同一数学问题中的应用。首先给出了复合梯形公式和复合辛普森公式的推导过程以及其余项的表达形式,然

后用流程图的形式介绍算法思路,再运用MATLAB编写代码计算结果,最后对结果进行对比讨论。 希望通过两个算法在同一个算例中的应用对比,更好的理解和掌握复合梯形公式和复合辛普森公式的适用围和适用条件。并且能够熟悉MATLAB编程求解问题的流程,掌握编程化的思想方法。同时对两种方法的计算结果对比分析,讨论两种求积方法的计算精度。 2.问题提出 对于函数给出的函数表如下,试用复合梯形公式和复合辛普森公 式计算积分。 表2-1函数计算结果表 x f(x) 0 1 1/8 0.997397867081822 1/4 0.989615837018092

高等数值分析拉格朗日插值多项式切比雪夫高斯龙格现象复合梯形辛普森求积公式

高等数值分析拉格朗日插值多项式切比雪夫高斯龙格现象复合梯形辛普森求积公式 解答: 1.拉格朗日插值函数: function y=lagrange (a,b,x) y=0; if length(a)==length(b) n=length(a); else disp('ERROR!length(a)!=length(b)') return; end for i=1:n k=1; for j=1:n if j~=i k=k.*(x-a(j))/(a(i)-a(j)); end end y=y+k*b(i); end

2.问题(a): function Q_a m=100; n=10; x=-1:2/n:1; y=1./(1+9*x.^2); x0=-1:2/m:1; y0=lagrange(x,y,x0); y1=1./(1+9*x0.^2); plot(x0,y0,'--r'); hold on; plot(x0,y1,'-b'); end 3.问题(b): function Q_b m=100; n=10; x=zeros(1,n+1); for i=1:n+1 x(i)=cos((2*i-1)*pi/(2*n+2)); end y=1./(1+9*x.^2); x0=-1:2/m:1; y0=lagrange(x,y,x0); y1=1./(1+9*x0.^2); plot(x0,y0,'--r'); hold on; plot(x0,y1,'-b'); end 4.问题(c): main.m(m文件) figure(1) Q_a() figure(2) Q_b() syms x y=1/(1+9*x^2); I0=int(y,-1,1);%准确值 n=10;

复合辛普森求积

第三次实验 实验名称复合辛普森求积计算积分实验时间2012.05.06 姓名班级数应二班学号成绩 一、实验目的,内容 1.目的: 学习并理解复合辛普森求积计算积分的matlab实现。 2. 内容: 用matlab计算积分 1 4 ln 9 x xdx=- ? (精确值-0.4444),并求出达到。 二.代码 1. function Sn=ComSimpson(a,b,n) %复合辛普森求积 %f表示被积函数,本题中由f.m调用 %a,b分别表示积分上下限 %n表示区间分割次数 %sn表示该方法计算所返回的值 h=(b-a)/n; for k=0:n x(k+1)=a+k*h; x_k(k+1)=x(k+1)+1/2*h; if (x(k+1)==0)|(x_k(k+1)==0) x(k+1)=10^(-10); x_k(k+1)=10^(-10);%误差精度 end end S1=h/6*(f(x(1))+f(x(n+1)));%复合辛普森求积公式第一部分for i=2:n F_1(i)=h/3*f(x(i)); end for j=1:n F_2(j)=2*h/3*f(x_k(j)); end S2=sum(F_1)+sum(F_2);%复合辛普森求积公式第二部分 Sn=S1+S2;%算得值 f的表达式由f.m(见附)文件调用。 附:function y=f(x) y=sqrt(x).*log(x);

三.数值结果: 在命令窗口输入如下指令时,出现如下结果 Sn=ComSimpson(0,1,300) Sn =-0.4438 Sn=ComSimpson(0,1,700) Sn =-0.4442 四.计算结果的分析: 当步长取值很小的时候,误差较大。当步长取得越细,即区间分割的越小时,实验计算值的精度越高,即越 趋近精确值。 五. 计算中出现的问题,解决方法及体会: 本实验过程中,了解了复合求积公式的几个构成,以及在matlab中的实现,深化了对于该问题的理解。一的个很简单的问题,哪怕就是一个小小符号的不注意,也不会得到结果。实验的严谨性,细腻性有待进一步提升。 对于实验,网上的程序有不少,关键是要看懂,弄懂,在实际的问题中能运用。借鉴吸收的同时,学会编程。多练习,才会有效果。 教师评语 指导教师:年月日

复合梯形公式与复合辛普森公式求积分

复合梯形公式与复合辛普森公式求积分 2010-12-26 09:37:23| 分类:数值分析| 标签:|字号大中小订阅 一实验目的 1. 掌握复合梯形公式与复合辛普森公式的基本思想。 2. 编程实现用复合梯形公式与复合辛普森公式求积分。 3. 熟悉matlab软件的使用。 二实验内容 1、用复合梯形公式计算积分I=4/(1+x2)dx ,求它0到1的积分。精确度为10-5.(0.00001) ,精确到 ●1计算公式 h=(b-a)/n h=h/2[(f(x0)+f(x1))+(f(x1)+f(x2))+(f(x2)+f(x3)+...+(f(xn-1)+f(xn)] 。 l1 算法分析 En=h2/12[f'(b)-f'(a)] 将区间[a,b]等分成n个小区间,在小区间上分别应用低次积分公式来构造公式,通过for循环来实现, 分的越细,越接近实际结果,精确度越高。 l2 源程序 function f1=fun4(x) %原函数 f1=4/(1+x^2); function ff=fun2(x) %函数对x求导 ff=-8*x/((1+x^2)^2); function f=tixing(a,b) %a,b是区间 a=0;b=1; disp('******复合梯形公式******') h=0.008; %h表示区间被等分成若干份后,每两个数的间距 m=(a:h:b); %形成一维矩阵,每两个数间的间隔是h n=length(m); %求上矩阵的长度,即元素个数 for i=1:n-1 D(i)=fun4(m(i))+fun4(m(i+1)); end R=h/2*sum(D); %积分结果 E=-(h^2)*(fun2(b)-fun2(a))/12; %余项,即精度 t=pi-R; [R;E;t] 实验结果讨论和分析 通过对h的值的改变,发现h值越小,即等分的区间越小,结果越精确,精确度越高。通过手算得到积分结果为π,实验结果为3.14158198692313,结果正确,可见复合梯形公式的精确度较高,运算次数

复合辛普森公式

实验5 复合辛普森公式 李涛 201226100108 计自1201 一、实验目的 ● 用复合辛普森公式计算积分 dx x ? +48 2cos 1, 使误差不超过-4 10(注意所给积分特点,做出相应的处理后再计算) 二、实验步骤 1.算法原理 复合辛普森原理: 将区间],[b a 划分为n 等分,在每个子区间[]1,+k k x x 上采用辛普森公式,若记 ,2 1 21h x x k k + =+则得 ● ∑? -=== 1 )()(n k b a dx x f dx x f I ● ).()]()(4)([61 21f R x f x f x f h n n k k k k +++=∑-=+ 记 ● ∑-=+++=1 21)]()(4)([6n k k k k n x f x f x f h S ● ],)()(2)(4)([6101 1 21∑∑-=-=++++=n k n k k k b f x f x f a f h 称为复合辛普森求积公式,其余项为 ● .),(),()2(180)(10 1) 4(4∑-=+∈-=-=n k k k k k n n x x f h h S I f R ηη

于是当],[)(4b a C x f ∈时,与复合梯形公式相似有 ● ),(),()2 (180)() 4(4b a f h a b S I f R n n ∈-- =-=ηη 易知误差阶为4 h ,收敛性是显然的,实际上,只要],[)(b a C x f ∈则可得到收敛性,即 ● ? = ∞ →b a n n dx x f S )(lim 此外,由于n S 中求积公系数均为正数,故知辛普森公式计算稳定。 2.算法步骤 复合辛普森: 首先将区间],[b a 划分为n 等分,在每个子区间[]1,+k k x x 上采用辛普森公式,若记 ,2 1 21h x x k k + =+则得 ∑-=+++=1021)]()(4)([6n k k k k n x f x f x f h S ])()(2)(4)([6101 1 21∑∑-=-=++++=n k n k k k b f x f x f a f h 算法过程: 这里将辛普森公式写为Sn()函数,然后在Solve()函数里依次计算S1,S2,S4,S6.......当相邻的精度小于eps 时退出循环,则S2n 保存结果。 三.程序代码 #include #include #define eps 1e-6 using namespace std; double f(double x){ return sqrt(1+cos(x)*cos(x)); }//被积函数 double Sn(double a,double b,double n){ double h=(a+b)/(2*n); double sum=0; for(int k=1;k<=n;k++){ sum+=2*f(a+(2*k-1)*h); sum+=f(a+2*k*h); }

龙贝格积分

一.介绍 龙贝格求积公式也称为逐次分半加速法。它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种加速计算积分的方法。作为一种外推算法, 它在不增加

开始 计算步长h 计算初值 f(a)、f(b)、 R(1,1) R矩阵迭代计算 No 误差达到精度要 求 Yes 输出R(j+1,j+1) 结束三.源码 1. f=inline('1/(x+1)');%输入函数 a=0;b=1;%取值边界 eps=10^(-7); h=b-a;

R(1,1)=h*(f(a)+f(b))/2; j=0; err=1; m=1; while err>eps j=j+1; h=h/2; S=0; for i=1:m x=a+h*(2*i-1); S=S+f(x); end m=2*m; R(j+1,1)=R(j,1)/2+h*S; for i=1:j R(j+1,i+1)=R(j+1,i)+(R(j+1,i)-R(j,i))/(4^i-1); end err=abs(R(j+1,j)-R(j+1,j+1)); end ans=vpa(R(j+1,j+1),7) 2. f=inline('log(x+1)/(x^2+1)');%输入函数 a=0;b=1;%取值边界 eps=10^(-7); h=b-a; R(1,1)=h*(f(a)+f(b))/2; j=0;

err=1; m=1; while err>eps j=j+1; h=h/2; S=0; for i=1:m x=a+h*(2*i-1); S=S+f(x); end m=2*m; R(j+1,1)=R(j,1)/2+h*S; for i=1:j R(j+1,i+1)=R(j+1,i)+(R(j+1,i)-R(j,i))/(4^i-1); end err=abs(R(j+1,j)-R(j+1,j+1)); end ans=vpa(R(j+1,j+1),7) 3. f=inline('log(x+1)/x');%输入函数 a=0;b=1;%取值边界 eps=10^(-7); h=b-a; R(1,1)=h*(1+log(2))/2; j=0; err=1; m=1;

变步长梯形法

#include #include float f(float x) { float s; s=1/(x*x); return(s); } main() { float a,b,c,h,x,T1,T2,S; float T0; printf("变步长梯形法求积分:\n"); printf("需要求解的积分式为f(x)=1/(x*x)\n"); printf("请输入a: "); scanf("%f",&a); printf("请输入b: "); scanf("%f",&b); printf("请输入c: "); scanf("%f",&c); h=b-a; T1=h*(f(a)+f(b))/2; S=0; x=a+h/2; do { S=S+f(x); x=x+h; }while(x=c) { T1=T0; S=0; x=a+h/2; do { S=S+f(x); x=x+h; }while(x

T2=T1/2+h/2*S; printf("步长为%f时\t Tn=%f \t T2n=%f \t 误差变化:%f\n",h,T1,T2,fabs(T1-T2)); h=h/2;T0=T2; } printf("************************************************************** **************\n"); printf("所求的结果为=%f\n",T2); }

辛普森公式

Simpson算法及其推广形式 摘要:本文研究了辛普森公式的数值积分的计算方法问题,并且更进一步研究了变步长复化的辛普森公式和二重积分的辛普森公式的问题。首先是对 一维辛普森公式和变步长复化辛普森公式以及二维辛普森公式的推导及 其算法,进行误差分析,并且列举了实例。然后,对辛普森公式进行改 进,这里的改进最主要是对辛普森公式的代数精度进行提高,从而使辛 普森公式对积分的计算更加精确。另外,还研究了辛普森公式的推广形 式。最后,在结论的当中列举了一个例子。 关键词:辛普森公式算法改进推广形式二重积分的辛普森公式

Abstract:This paper first studies the calculation methods of the numerical integration in simpson formula, and then study of the long-simpson formula and the double integral simpson formula problem. First, study the algorithm and derived of one-dimensional simpson formula and step-change in simpson formula, as well as two-dimensional simpson formula, and then analysis the error. Finally , list the example. In this , improve the simpson formula. This improved the most important is to incre ase the simpson formula’s accuracy of algebra. Besides, we study the simpson formula’s promotion of forms. At the last, we list a example in the conclusion. Key word:The simpson formula, Algorithm, Improve, Promotion of forms, The simpson formula of the two-dimensional integral.

龙贝格算法

龙贝格算法 一、问题分析 1.1龙贝格积分题目 要求学生运用龙贝格算法解决实际问题(塑料雨篷曲线满足函数y(x)=lsin(tx),则给定雨篷的长度后,求所需要平板材料的长度)。 二、方法原理 2.1龙贝格积分原理 龙贝格算法是由递推算法得来的。由梯形公式得出辛普生公式得出柯特斯公式最后得到龙贝格公式。 在变步长的过程中探讨梯形法的计算规律。设将求积区间[a,b]分为n个等 ba,分,则一共有n+1个等分点,n。这里用表示复化xakh,,,hk,,,0,1,Tnkn 梯形法求得的积分值,其下标n表示等分数。 1xxx,,先考察下一个字段[],其中点,在该子段上二分前后xx,,,11kk,kk,1k,22 两个积分值 h ,,,,Tfxfx,,,,11kk,,,2 ,,,,hTfxfxfx,,,,,,,,,,,211kk,k,4,,2,,,, 显然有下列关系 ,,1h TTfx,,,,211k,222,, 将这一关系式关于k从0到n-1累加求和,即可导出下列递推公式 n,1,,1h TTfx,,,,,21nnk,22k,02,, ba,需要强调指出的是,上式中的代表二分前的步长,而 h,n

1,,xakh,,, 1,,k,2,,2 梯形法的算法简单,但精度低,收敛速度缓慢,如何提高收敛速度以节省计算量,自然式人们极为关心的。 2根据梯形法的误差公式,积分值的截断误差大致与成正比,因此步长减Thn 半后误差将减至四分之一,既有 1,T12n, 14,Tn将上式移项整理,知 1 ,,,TTT1()22nnn3由此可见,只要二分前后两个积分值和相当接近,就可以保证计算保证结TTn2n果计算结果的误差很小,这种直接用计算结果来估计误差的方法称作误差的事后估计T2n 法。 1 按上式,积分值的误差大致等于,如果用这个误差值作为的一种 TTT,T()2n2nn2n3补偿,可以期望,所得的 141 TTTTTT,,,,,,,222nnnnn333应当是更好的结果。 按上式,组合得到的近似值直接验证,用梯形二分前后的两个积分值和按TTTn2n 式组合,结果得到辛普生法的积分值。 Sn 41 STT,,nnn233 4 再考察辛普生法。其截断误差与成正比。因此,若将步长折半,则误差相h 应的减至十六分之一。既有 IS,12n, IS,16n由此得 161 ISS,,2nn1515 不难验证,上式右端的值其实就等于,就是说,用辛普生法二分前后的两个积分值Cn 和,在按上式再做线性组合,结果得到柯特斯法的积分值,既有 SCS2nnn

相关主题
文本预览
相关文档 最新文档