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

合集下载

MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)

MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)

佛山科学技术学院实验报告课程名称_______________ 数值分析________________________实验项目_______________ 数值积分____________________专业班级机械工程姓名余红杰学号2111505010 指导教师陈剑成绩日期月日一、实验目的b1、理解如何在计算机上使用数值方法计算定积分 a f ""X的近似值;2、学会复合梯形、复合Simpson和龙贝格求积分公式的编程与应用。

3、探索二重积分.11 f (x, y)dxdy在矩形区域D = {( x, y) | a _ x _ b, c _ y _ d}的数值D积分方法。

二、实验要求(1)按照题目要求完成实验内容;(2)写出相应的Matlab程序;(3)给出实验结果(可以用表格展示实验结果);(4)分析和讨论实验结果并提出可能的优化实验。

(5)写出实验报告。

三、实验步骤1、用不同数值方法计算积xln xdx =-- 0 9(1)取不同的步长h,分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h的函数,并与积分精确值比较两公式的精度。

(2)用龙贝格求积计算完成问题(1 )。

2、给出一种求矩形区域上二重积分的复化求积方法,然后计算二重积分..e"y dxdy,其中积分区域D二{0乞x岂1,0岂y乞1}。

1.%lnt_t.m复化梯形:function F = Int_t(x1,x2,n)%复化梯形求积公式% x1,x2为积分起点和中点%分为n个区间,没选用步长可以防止区间数为非整数。

%样点矩阵及其函数值:x = lin space(x1,x2 ,n+1);y = f(x);m = len gth(x);%本题中用Matlab计算端点位置函数值为NaN,故化为零: y(1) = 0;y(m) = 0;%算岀区间长度,步长h:h = (x2 -x1)/n;a = [1 2*o nes(1,m-2) 1];%计算估计的积分值:F = h/2*sum(a.*y);%f.mfun cti on y = f(x)y = sqrt(x).*log(x);%run 11.mclc,clear;%分为10个区间,步长0.1的积分值:F = In t_t(0,1,10);F10 = F%分为100个区间F = In t_t(0,1,100);F100 = F%误差计算W10 = abs((-4/9)-F10);W100 = abs((-4/9)-F100);W = [W10 W100]%复化辛普森:%l nt_s.mfun cti on F = In t_s(x1,x2 ,n)%复化梯形求积公式% x1,x2区间,分为n个区间。

辛普森公式 龙贝格算法

辛普森公式 龙贝格算法

辛普森公式龙贝格算法辛普森公式与龙贝格算法 辛普森公式和龙贝格算法是数值计算中常用的数值积分方法。

它们可以用于计算函数的定积分,通过将复杂的定积分问题转化为更简单的求和问题来求解。

下面将介绍辛普森公式和龙贝格算法的原理和应用。

辛普森公式是一种通过将函数划分为多个小区间,并在每个区间内使用二次多项式逼近函数曲线的方法来求解定积分。

该公式的基本思想是将函数曲线近似看作是由一系列抛物线段组成的,然后通过对这些抛物线段的面积进行求和来获取整个函数曲线下的面积。

辛普森公式的推导基于牛顿-科特斯公式,通过将区间划分为偶数个小区间,并在每个小区间内使用二次多项式逼近函数曲线来计算定积分。

这种方法可以大大提高计算的精确性,尤其在对曲线进行高精度逼近时特别有效。

龙贝格算法是一种迭代方法,通过逐步细化区间格点来逼近定积分的方法。

它的基本思想是将区间进行二等分,然后通过递归地对子区间进行步长缩放和函数值计算,以获得更加精确的数值积分结果。

龙贝格算法的核心是通过不断加密区间格点和调整步长来逐渐提高计算精度,直到满足预设的误差要求。

这种方法在计算复杂函数的定积分时非常有用,它能够自适应地调整计算步长,并在迭代过程中逐渐收敛到期望的结果。

辛普森公式和龙贝格算法在数值计算中广泛应用于求解定积分问题。

它们适用于各种类型的函数,包括连续函数、平滑函数和非平滑函数。

通过适当选择区间划分和迭代次数,可以有效地控制计算误差,并获得满足要求的数值积分结果。

这种方法相对于传统的数值积分方法具有更高的精确性和可靠性,能够满足各种实际应用的计算需求。

总之,辛普森公式和龙贝格算法是数值计算中常用的数值积分方法。

它们通过将复杂的定积分问题转化为更简单的求和问题,并利用适当的逼近和迭代方法来提高计算精度。

这些方法在实际应用中具有很高的灵活性和可靠性,可以应对各种类型的函数和积分问题。

通过合理应用辛普森公式和龙贝格算法,我们能够更准确、更快速地求解定积分,为科学研究和工程计算提供有力的支持。

复化辛普森公式及龙贝格方法求解积分

复化辛普森公式及龙贝格方法求解积分

一、实验目的及题目1. 实验目的:(1) 学习用复化辛普森公式及龙贝格方法求解积分并掌握这种方法。

(2)了解这些辛普森公式及龙贝格方法的概念,参考课本写出用复化辛普森算法以及龙贝格方法计算目标题目的程序,在matlab 中实现,并用matlab 内置的函数计算出结果,并提出存在的问题。

2. 题目:利用复化辛普森公式和龙贝格方法计算下列积分:(1)dx e x ⎰-5.002(2)dx x x ⎰202sin )2sin(cos π二、实验用仪器设备、器材或软件环境计算机、matlab 软件。

三、实验原理、程序框图、程序代码1.实验原理:根据微积分学基本定理,若被积函数f(x)在区间[a,b]上连续,只要能找到f(x)的一个原函数F(x),便可利用牛顿-莱布尼茨公式求得积分值。

但会经常遇到如下问题:找不到用初等函数,找到了原函数,但因表达式过于复杂而不便计算等等。

此时则不能用牛顿-莱布尼茨公式,因此有必要研究如下公式。

1)复化求积公式及原理由于高阶插值的不稳定性,为了提高计算积分的精度,可把积分区间分为若干个小区间,将()I f 写成这些小区间上的积分之和,然后对每一个小区间上的积分应用到辛普森公式,或柯特斯公式,并把每个小区间上的结果累加,所得到的求积公式就称为复化求积公式。

辛普森公式的数值积分公式为:⎰+++-≈ba b f b a f a f a b dx x f )]()2(4)([6)(它的集合意义为用通过三点))(,()),2(,2()),(,(b f b b a f b a a f a =+的抛物线围城的曲边形面积来代替给定函数的积分。

同梯形公式一样,也有复化辛普森公式:)()(),()()]()(4)([6)(010121b f x f a f x f x f x x f h dx x f n n k k k k ba ==++≈∑⎰-=++ 其中 n ab h x x xk k k -=+=++,2121。

龙贝格算法-数值分析-实验报告

龙贝格算法-数值分析-实验报告

3 / 13
一、任务综述于分析
1.1 任务
1、 根据所掌握龙贝格算法,独立编写程序,实现具体问题的求解等; 2、 自己设计一个多项式,根据设定的代数多项式进行测试,调式程序; 3、 对所设计的程序解决实际问题并分析,撰写分析报告
1.2 分析
1、 首先先明确什么是龙贝格算法,了解他的基本原理,画出流程图,编写程序代码。 2、 自己设计一个多项式,对他利用龙贝格算法求出他的积分。并与真实值比较,检测程序是否有错误。 并进一步修改完善程序。可以多试几个多项式,来判断程序的正确性。 3、 任务三实际上是求平面曲线长的问题。利用弧长微分公式可求得结果。
四、测试 ................................................................................................................................................. 8
主要参考资料
《数值分析简明教程》 《数值分析课程设计》
王能超 陈越、童若锋
高等教育出版社 浙江大学出版社
教研室签字: 年 月 日
院签字: 年 月 日
2 / 13
目录
目录 ......................................................................................................................................................... 3 一、任务综述于分析 ............................................................................................................................. 4

龙贝格积分 复化辛普森

龙贝格积分 复化辛普森

龙贝格积分#include <stdio.h>#include <math.h>double f(double x){return 4/(1+x*x);} //定义函数f(x)int main(){ printf("龙贝格积分法\n");int i,k,n;double a=0,b=1,h;double sum1,u,v;double R[100],C[100],S[1000],T[1000];// 定义数组double e=1e-12,ep=1; //ep是计算精度,e表示需求的精度值T[1]=(b-a)*(f(a)+f(b))/2; //求出T[1]k=1;do{n=pow(2,k);//将区间n等分h=(b-a)/n;//每个小区间的长度sum1=0;for(i=1;i<=n/2;i++)//计算新增加的分点处的函数值{u=a+h*(2*i-1);sum1=sum1+f(u);}T[n]=T[n/2]/2+sum1*h;//求出T[n]S[n/2]=(4*T[n]-T[n/2])/3;//求出S[n/2]if((k-2)>=0)C[n/4]=(16*S[n/2]-S[n/4])/15;//求出C[n/4] if((k-3)>=0)R[n/8]=(64*C[n/4]-C[n/8])/63;//求出R[n/8] if((k-4)>=0)ep=R[n/8]-R[n/16];//求出两次计算的差值k++;}while(ep>e);//循环条件v=R[n/8];printf("k=%d,v=%.12f\n",k-1,v);//输出结果return 0;}复化辛普森#include <stdio.h>#include <math.h>double f(double x){return 4/(1+x*x);}//定义函数f(x)int main(){printf("复化辛普森公式\n");int i,m=428;//将积分区间分成m个区间double u,v,w;double a=0,b=1,h;double sum1=0;h=(b-a)/(2*m);//计算每个相等区间的长度for(i=0;i<m;i++){u=a+2*i*h;//计算每个区间的起点,中点,终点坐标 v=a+(2*i+1)*h;w=a+(2*i+2)*h;sum1=sum1+h/3*(f(u)+4*f(v)+f(w));//复化辛普森公式}printf("sum1=%.12f\n",sum1);}。

MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)

MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)

佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 数值积分专业班级 机械工程 姓 名 余红杰 学 号 2111505010 指导教师 陈剑 成 绩 日 期 月 日一、实验目的1、理解如何在计算机上使用数值方法计算定积分⎰badxx f )(的近似值;2、学会复合梯形、复合Simpson 和龙贝格求积分公式的编程与应用。

3、探索二重积分⎰⎰Ddxdy y x f ),(在矩形区域},|),{(d y c b x a y x D ≤≤≤≤=的数值积分方法。

二、实验要求(1) 按照题目要求完成实验内容; (2) 写出相应的Matlab 程序;(3) 给出实验结果(可以用表格展示实验结果); (4) 分析和讨论实验结果并提出可能的优化实验。

(5) 写出实验报告。

三、实验步骤1、用不同数值方法计算积分149xdx =-(1)取不同的步长h ,分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确值比较两公式的精度。

(2)用龙贝格求积计算完成问题(1)。

2、给出一种求矩形区域上二重积分的复化求积方法,然后计算二重积分xyDedxdy -⎰⎰,其中积分区域{01,01}D x y =≤≤≤≤。

1.%Int_t.m 复化梯形:function F = Int_t(x1,x2,n)% 复化梯形求积公式% x1,x2 为积分起点和中点%分为n个区间,没选用步长可以防止区间数为非整数。

%样点矩阵及其函数值:x = linspace(x1,x2,n+1);y = f(x);m = length(x);%本题中用Matlab计算端点位置函数值为NaN,故化为零:y(1) = 0;y(m) = 0;%算出区间长度,步长h:h = (x2 -x1)/n;a = [1 2*ones(1,m-2) 1];%计算估计的积分值:F = h/2*sum(a.*y);%f.mfunction y = f(x)y = sqrt(x).*log(x);%run11.mclc,clear;%分为10个区间,步长0.1的积分值:F = Int_t(0,1,10);F10 = F%分为100个区间F = Int_t(0,1,100);F100 = F%误差计算W10 = abs((-4/9)-F10);W100 = abs((-4/9)-F100);W = [W10 W100]%复化辛普森:%Int_s.mfunction F = Int_s(x1,x2,n)% 复化梯形求积公式% x1,x2 区间,分为n个区间。

数值分析63 复化求积公式龙贝格求积公式讲解

数值分析63 复化求积公式龙贝格求积公式讲解
起来加以考虑 . 注意到每个子区间 [xk, xk+1]经过二分
只增加了一个分点
1 xk?1/ 2 ? 2 ( xk ? xk?1)
设hn=(b? a)/n, xk=a+kh n (k=0,1,? ,n),在[xk, xk+1] 上用梯形公式得
T1 ?
hn 2
?f
(
xk
)
?
f ? ( xk ? 1 )
复化求积的基本想法 :
将积分区间 [a, b]n等分, 步长
h?
b
? n
a
,
分点为
xk=a+kh (k=0,1,…,n) , 则由定积分性质知
? ? ? I ?
b
n?1
f ( x )dx ?
xk?1 f ( x )d x
a
k ? 0 xk
每个子区间 上的积分
?xk?1 f ( x )dx xk
用低阶求积公式 , 然后把所有区间的 计算结果求和 ,
注2: 同样也可用 | S4m-S2m |<ε 来控制计算的精度 . 这就是下面要介绍的 龙贝格求 积公式 .
6.4 龙贝格求积公式
6.4.1 梯形公式的递推化
复化求积方法可提高求积精度,实际计算时若
精度不够可将步长逐次分半 . 设将区间 [a, b]分为n等
分,共有 n+1个分点,如果将求积区间再分一次,则 分点增至 2n+1个,我们将二分 前后两个积分值 联系
果T8=0.9456909 只有2位有效数字,而应用复化辛普 森公式计算的结果 S4= 0.9460832 却有6位有效数字 .
注:为了利用余项公式估计误差,要求 f(x)=sin x/x 的高阶导数,由于

河北工业大学数值分析实验三实验四实验报告

河北工业大学数值分析实验三实验四实验报告

数值分析实验报告指导老师:宛艳萍姓名:班级:学号:实验三 复化辛卜生法,龙贝格法1.实验名称:复化辛卜生法,龙贝格法2.实验目的1)通过实际计算体会各种方法的精确度。

2)会编写用复化辛卜生、龙贝格算法求定积分的程序。

3.算法描述1)用复化辛卜生法计算积分 dxx I ⎰+=12)1/(1算法:复化辛卜生公式为S n =h/6∑∑+-=+++)]()2/(4)([11k k kn k x f h x f xf ,计算过程为:1.令,/)(n a b h -= ),2/(1h a f s +=;02=s2.对1,,2,1-=n k计算),2/(11h kh a f s s +++=)(22kh a f s s ++=3.))(24)((6/21b f s s a f h s +++= 。

2)龙贝格算法计算dxxI ⎰+=102)1/(156e ε=-算法)((12/12∑-=++=n k k n n n x f h T T ;/)(n a b h n -= n k h k x )2/1(2/1+=+)(3/122n n n n T T T S -+= )_(15/122n n n n S S S C +=)(63/122n n n n C C C R -+=用事后估计法控制精度2|5e -6n n R R -< 。

4.源程序:1)/* 用复化辛卜生公式求积分 */ #include "stdio.h" float fx(float x){double f;f=1.0/(1.0+x*x); return f; } double fs(int n){double a=0.0,b=1.0,h,s,s1,s2=0; int i;h=(b-a)/n; s1=fx(a+h/2); for(i=1;i<n;i++){s1=s1+fx(a+i*h+h/2); s2=s2+fx(a+i*h);}s=(h/6.0)*(fx(a)+fx(b)+4*s1+2*s2);return s;}void main(){printf("实验三复化辛卜生法计算机112 耿向飞学号:112434\n");printf("s(2)=%lf\ns(4)=%lf\ns(8)= %lf",fs(2),fs(4),fs(8));}2)/* 龙贝格法 */#include "stdio.h"#include "math.h"#define E 2.71828182//被积函数f(x)double fx(double x){double f;f=1/(1+x*x);return f;}//梯形公式求tndouble tx(int n){double s3=0.0,h,t,b=1.0,a=0.0;int i;h=(b-a)/n;for(i=1;i<n;i++)s3=s3+fx(i*h);t=(h/2)*(fx(a)+fx(b)+2*s3);return t;} double s(int n){double s;s=tx(2*n)+(1.0/3.0)*(tx(2*n)-tx(n ));return s;}double c(int n){double c;c=s(2*n)+(1.0/15.0)*(s(2*n)-s(n)) ;return c;}double r(int n){double r;r=c(2*n)+(1.0/63.0)*(c(2*n)-c(n)) ;return r;}void main(){double rr,pp;int n=1;rr=r(n);pp=r(2*n)-r(n);printf("实验三龙贝格法计算机112 耿向飞学号:112434\n");printf("结果为:%.15lf 误差小于等于: %.15lf",rr,pp);}5.运行结果1)复化辛卜生公式2)龙贝格算法6.对算法的理解与分析:复化辛卜生公式和龙贝格算法适用于求数值积分,而且都能提高计算积分的精度龙贝格算法其实是在复化辛卜生公式递推的基础之上生成的一种精度高,而且收敛速度也较快的一种算法。

数值分析63 复化求积公式龙贝格求积公式讲解

数值分析63 复化求积公式龙贝格求积公式讲解

将积分区间 [a, b] 划分为2n等分, 即将每一个区间
[xk, xk+1]经过二等分增加了一个分点
x k ?1/2
?
1 2
(
x
k
?
x k?1)
在每个子区间 [xk, xk+1]上的积分用 辛普森公式 , 得
?x k ? 1 xk
f (x)dx ?
h 6
[
f
(
xk
)
?
4
f
(
xk
? 1/2
)
?
f (xk?1)]
?
(b ? a)5 2880n4
f
(4) (? )
?6.3.2 复化辛普森公式
将积分区间 [a, b] 划分为2n等分, 则
? ? ? I ?
b
n?1
f ( x )dx ?
x2k? 2 f ( x )d x
a
k ? 0 x2k
每个子区间 [x2k, x2k+2]上的积分用 辛普森公式 , 得
?x2 k ? 2 x2k
称为复化辛普森公式 . 记
? ? h
n?1
n?1
Sn ?
[f 6
(a) ?
4
k?0
f
( x k ? 1/2 ) ?
2
k ?1
f
(xk ) ?
f (b)]
若 f(x)? C 4[a,b], 其求积余项 为 h ? b ? a
n
Rn ( f ?
b ? a ( h )4 180 2
f (4) (? ) ?
f (b)]
称为复化梯形公式 . 记
? h
n?1
Tn
?

选用复合梯形公式-复合Simpson公式-计算

选用复合梯形公式-复合Simpson公式-计算

数值分析实验 三班级:10信计2班 学号:59 姓名:王志桃 分数一·问题提出:选用复合梯形公式,复合Simpson 公式,计算(1) I =dx x ⎰-4102sin 4 ()5343916.1≈I(2) I = dx x x⎰1sin ()9460831.0,1)0(≈=I f(3) I = dx xe x⎰+1024(4) I = ()dx x x ⎰++10211ln二·实验要求:1.编制数值积分算法的程序2.分别用两种算法计算同一个积分,并比较计算结果3.分别取不同步长()/ a b h -=n ,试比较计算结果(如n = 10, 20等)4.给定精度要求ε,试用变步长算法,确定最佳步长三·实验流程图:复化梯形公式:输入 端点 a , b 正整数 n直接计算TN=h/2*[f(a)+2∑f(x k )+f(b)] k=1,2…,n-1输出 定积分近似值TN复化Simpson 公式输入 端点 a , b 正整数 n输出 定积分近似值SN(1) 置h=(b-a)/(2n)(2) F0=f(a)+f(b) , F1=0 , F2=0(3) 对j=1,2,…,2n-1循环执行步4到步5(4) 置x=a+jh(5) 如果j 是偶数,则F2=F2+f(x),否则F1=F1+f(x)(6) 置SN=h(F0+4F1+2F2)/3(7) 输出SN,停机四·源程序:#include<iostream>#include<math.h>using namespace std;#define n 20//此为步长double f1(double x){double y;y=sqrt(4-sin(x)*sin(x));return y;}double f2(double x){if(x==0)return 1;double y;y=sin(x)/x;return y;}double f3(double x){double y;y=exp(x)/(4+x*x);return y;}double f4(double x){double y;y=log(1+x)/(1+x*x);return y;}int main(){int j;double e=0.000001,h,F0,F1,F2,a,b,x,S;cout<<"利用复化Simpson公式求积分"<<endl;//1a=0;b=0.25*3.141592;h=(b-a)/(2*n);F0=f1(a)+f1(b);F1=F2=0;for(j=1;j<2*n;j++){x=a+j*h;if(j%2==0)F2=F2+f1(x);elseF1=F1+f1(x);}S=((F0+F1*4+F2*2)*h)/3;cout<<"第一个积分公式:端点a为"<<a<<"、b为"<<b<<",n为"<<n<<endl<<"结果为"<<S<<endl;//2a=0;b=1;h=(b-a)/(2*n);F0=f2(a)+f2(b);F1=F2=0;for(j=1;j<2*n;j++){x=a+j*h;if(j%2==0)F2=F2+f2(x);elseF1=F1+f2(x);}S=(F0+F1*4+F2*2)*h/3;cout<<"第二个积分公式:端点a为"<<a<<"、b为"<<b<<",n为"<<n<<endl<<"结果为"<<S<<endl;//3a=0;b=1;h=(b-a)/(2*n);F0=f3(a)+f3(b);F1=F2=0;for(j=1;j<2*n;j++){x=a+j*h;if(j%2==0)F2=F2+f3(x);elseF1=F1+f3(x);}S=(F0+F1*4+F2*2)*h/3;cout<<"第三个积分公式:端点a为"<<a<<"、b为"<<b<<",n为"<<n<<endl<<"结果为"<<S<<endl;//4a=0;b=1;h=(b-a)/(2*n);F0=f4(a)+f4(b);F1=F2=0;for(j=1;j<2*n;j++){x=a+j*h;if(j%2==0)F2=F2+f4(x);elseF1=F1+f4(x);}S=(F0+F1*4+F2*2)*h/3;cout<<"第四个积分公式:端点a为"<<a<<"、b为"<<b<<",n为"<<n<<endl<<"结果为"<<S<<endl<<endl;cout<<"利用复化梯形公式求积分"<<endl;//1a=0;b=0.25*3.141592;h=(b-a)/n;F0=f1(a)+f1(b);F1=0;for(j=1;j<n;j++){x=a+j*h;F1=F1+f1(x);}S=((F0+F1*2)*h)/2;cout<<"第一个积分公式:端点a为"<<a<<"、b为"<<b<<",n为"<<n<<endl<<"结果为"<<S<<endl;//2a=0;b=1;h=(b-a)/n;F0=f2(a)+f2(b);F1=0;for(j=1;j<n;j++){x=a+j*h;F1=F1+f2(x);}S=((F0+F1*2)*h)/2;cout<<"第二个积分公式:端点a为"<<a<<"、b为"<<b<<",n为"<<n<<endl<<"结果为"<<S<<endl;//3a=0;b=1;h=(b-a)/n;F0=f3(a)+f3(b);F1=0;for(j=1;j<n;j++){x=a+j*h;F1=F1+f3(x);}S=((F0+F1*2)*h)/2;cout<<"第三个积分公式:端点a为"<<a<<"、b为"<<b<<",n为"<<n<<endl<<"结果为"<<S<<endl;//4a=0;b=1;h=(b-a)/n;F0=f4(a)+f4(b);F1=0;for(j=1;j<n;j++){x=a+j*h;F1=F1+f4(x);}S=((F0+F1*2)*h)/2;cout<<"第四个积分公式:端点a为"<<a<<"、b为"<<b<<",n为"<<n<<endl<<"结果为"<<S<<endl;return 0;}五.实验结果六.实验心得:通过本次实验,我掌握了求数值积分的各种方法。

数学实验题目2 Romberg积分法

数学实验题目2 Romberg积分法

数学实验题目2 Romberg 积分法摘要考虑积分()()b aI f f x dx =⎰欲求其近似值,可以采用如下公式:(复化)梯形公式 110[()()]2n i i i hT f x f x -+==+∑ 2()12b a E h f η-''=- [,]a b η∈ (复化)辛卜生公式 11102[()4()()]6n i i i i hS f x f x f x -++==++∑4(4)()1802b a h E f η-⎛⎫=- ⎪⎝⎭ [,]a b η∈ (复化)柯特斯公式 111042[7()32()12()90n i i i i hC f x f x f x -++==+++∑31432()7()]i i f xf x +++6(6)2()()9454b a h E f η-⎛⎫=- ⎪⎝⎭[,]a b η∈ 这里,梯形公式显得算法简单,具有如下递推关系121021()22n n n i i h T T f x -+==+∑因此,很容易实现从低阶的计算结果推算出高阶的近似值,而只需要花费较少的附加函数计算。

但是,由于梯形公式收敛阶较低,收敛速度缓慢。

所以,如何提高收敛速度,自然是人们极为关心的课题。

为此,记0,k T 为将区间[,]a b 进行2k等份的复化梯形积分结果,1,k T 为将区间[,]a b 进行2k等份的复化辛卜生积分结果,2,k T 为将区间[,]a b 进行2k等份的复化柯特斯积分结果。

根据李查逊(Richardson )外推加速方法,可得到1,11,,0,1,2,40,1,2,41m m k m km k m k T T T m -+-=-⎛⎫=⎪=-⎝⎭可以证明,如果()f x 充分光滑,则有,lim ()m k k T I f →∞= (m 固定),0lim ()m m T I f →∞=这是一个收敛速度更快的一个数值求积公式,我们称为龙贝格积分法。

第二节复化求积公式和龙贝格求积公式

第二节复化求积公式和龙贝格求积公式

Tn )


对于复化辛蒲生公式、柯特斯公式可以类似得到
I

S2n

1 42 1(S2n

Sn )
1 I C2n 43 1 (C2n Cn )
不足
收敛速度慢
应用步长逐次减半得到的复化梯形值、复化 辛蒲生值、复化柯特斯值与精确值的比较
I

T2n

1 4 1(T2n
Tn )
n1

Sn (
f
)

6

f
(a)
4
k0
f
(
x
k

1 2
)

2
k
1
f
( xk )
f
(b)
复化梯形公式(n
=
8),h

1 8
0.946083070367
T8 (
f
)
1
2
8

f
(0)

2

f
1 (
)

8
f
(
1 )

4
3 f( )
8

f
(1) 2
f (5) 8
f
(3) 4
f
(
7 8
)

f
(1)

0.945692
复化辛蒲生公式(n
=
4),h

1 4
S4 (
f
)

1 64

f
(0)
4

f (1) 8
f
(3) 8
f
(5) 8

matlab实现复化梯形公式,复化simpson公式以及romberg积分

matlab实现复化梯形公式,复化simpson公式以及romberg积分

(一) 实验目的熟悉并掌握数值积分的方法,重要训练复化梯形公式,复化simpson 公式以及romberg 积分。

(二) 问题描述问题三数值积分椭圆周长的计算。

考虑椭圆22221x y a b+=,为计算其周长,只要计算其第一象限的长度即可.用参数方程可以表示为cos (0/2)sin x a t t y b t π=⎧≤≤⎨=⎩,计算公式为/0π⎰为计算方便,我们可以令1a =,即计算下面的积分/0π⎰/0π=⎰(/0π⎰/0a π=⎰可以归结为上面的形式)采用复化梯形公式,复化Simpson 公式以及Romberg 积分的方法计算积分/0()I b π=⎰给出通用程序,该通用程序可以计算任何一个函数在任意一个区间在给定的精度下的数值积分。

程序输出为计算出的数值积分值以及计算函数值的次数。

(三) 算法介绍首先利用给出的各迭代公式,设计程序。

在matlab 对话框中输入要计算的函数,给出区间和精度。

复化梯形的迭代公式为:;复化simpson迭代公式为:;Romberg迭代公式为:。

(四)程序对于复化梯形公式和复化simpson公式,我们放在中。

(%标记后的程序可用来把b看为变量时的算法实现)%复化梯形公式function y=jifenn(f,n,a,b) (说明:f表示任一函数,n精度,a,b为区间)fi=f(a)+f(b);h=(b-a)/n;d=1;%function f=jifen(n,a,b,c)%syms t%y=sqrt(1+(c^2-1)*cos(t)^2);%ya=subs(y,t,a);%yb=subs(y,t,b);%fi=ya+yb;for i=1:n-1x=a+i*h;fi=fi+2*f(x);d=d+1;%yx=subs(y,t,x);%fi=fi+2*yx;endf4=h/2*fi,d%复化simposon公式f1=0;f2=0;dd=1;for i=1:n-1dd=dd+1;if rem(i,2)~=0;x1=a+i*h;f1=f1+f(x1);else rem(i,2)==0;x2=a+i*h;f2=f2+f(x2) ;endendf3=(h/3)*(f(a)+4*f1+2*f2+f(b)),dd对于romberg积分,建立文件。

数值分析6.3 复化求积公式、龙贝格求积公式讲解

数值分析6.3  复化求积公式、龙贝格求积公式讲解

精度不够可将步长逐次分半. 设将区间 [a, b]分为n等
分,共有n+1个分点,如果将求积区间再分一次,则
分点增至2n+1个,我们将二分前后两个积分值联系
起来加以考虑. 注意到每个子区间[xk, xk+1]经过二分
只增加了一个分点
x k 1/ 2
1 ( x k xk 1 ) 2
设hn=(ba)/n, xk=a+khn (k=0,1,,n),在[xk, xk+1]
I f ( x )dx
b a k 0 n 1 xk 1 xk
f ( x )dx
每个子区间[xk, xk+1]上的积分用梯形公式, 得

xk 1 xk
h f ( x )dx [ f ( xk ) f ( xk 1 )] 2
xk 1 xk
I
k 0
6.3 复化求积公式
从求积公式的余项的讨论中我们看到,被积函数
所用的插值多项式次数越高,对函数光滑性的要求也
越高.另一方面,插值节点的增多(n的增大),在使用
牛顿-柯特斯公式时将导致求积系数出现负数(当n≥8
时, 牛顿-柯特斯求积系数会出现负数),即牛顿-柯特
斯公式是不稳定的,不可能通过提高阶的方法来提高 求积精度.
b n 1 xk 1 xk a
I f ( x )dx
k 0
f ( x )dx
h n 1 I [ f ( xk ) 4 f ( xk 1/2 ) f ( xk 1 )] 6 k 0
n 1 n 1 h [ f (a ) 4 f ( xk 1/2 ) 2 f ( xk ) f ( b)] 6 k 0 k 1

数值分析实验报告2

数值分析实验报告2

实验报告一、实验名称复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式及自适应辛普森积分。

二、实验目的及要求1. 掌握复合梯形求积计算积分、复合辛普森求积计算积分、龙贝格求积计算积分和自适应辛普森积分的基本思路和步骤.2. 培养Matlab 编程与上机调试能力. 三、实验环境计算机,MATLAB 软件 四、实验内容1.用不同数值方法计算积分94ln 10-=⎰xdx x 。

(1)取不同的步长h 。

分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确指比较两个公式的精度,是否存在一个最小的h ,使得精度不能再被改善。

(2)用龙贝格求积计算完成问题(1)。

(3)用自适应辛普森积分,使其精度达到10-4。

五、算法描述及实验步骤1.复合梯形公式将区间[a,b]划分为n 等份,分点x k =a+ah,h=(b-a)/h,k=0,1,...,n ,在每个子区间[x k ,x k +1](k=0,1,...,n-1)上采用梯形公式(1.1),得)]()([2)(b f a f ab dx x f b a+-≈⎰ (1.1) )]()(2)([2)]()([211110b f x f b f hx f x f h T n k k k n k k n ++=+=∑∑-=+-= (1.2)),(),(12)(''2b a f h a b f R n ∈--=ηη(1.3) 其中Tn 称为复合梯形公式,Rn 为复合梯形公式的余项。

2.复合辛普森求积公式将区间[a,b]划分为n 等份,在每个子区间[x k ,x k +1](k=0,1,...,n-1)上采用辛普森公式(1.4),得)]()2(4)([6b f ba f a f ab S +++-=(1.4) )]()(2)(4)([6)]()()([611102/112/11b f x f x f b f hx f x f x f h S n k k n k k k k n k k n +++=++=∑∑∑-=-=+++-= (1.5) ),(),()2(180)()4(4b a f h a b f R n ∈-=ηη (1.6)其中Sn 称为复合辛普森求积公式,Rn 为复合辛普森求积公式的余项。

数值分析实验(4)

数值分析实验(4)

页脚内容1实验四 数值积分与数值微分专业班级:信计131班 姓名:段雨博 学号:2013014907 一、实验目的1、熟悉matlab 编程。

2、学习数值积分程序设计算法。

3、通过上机进一步领悟用复合梯形、复合辛普森公式,以及用龙贝格求积方法计算积分的原理。

二、实验题目 P1371、用不同数值方法计算积分049xdx =-⎰。

(1)取不同的步长h .分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的h ,使得精度不能再被改善?(2)用龙贝格求积计算完成问题(1)。

三、实验原理与理论基础1.1复合梯形公式及其复合辛普森求解[]()()()11101()()222n n n k k k k k h h T f x f x f a f x f b --+==⎡⎤=+=++⎢⎥⎣⎦∑∑误差关于h 的函数:()()212n b a R fh f η-''=-页脚内容2复合辛普森公式:()()()()111/201426n n n k k k k h S f a f x f x f b --+==⎡⎤=+++⎢⎥⎣⎦∑∑误差关于h 的函数:()()441802n n b a h R f I S f η-⎛⎫=-=- ⎪⎝⎭1.2龙贝格求积算法:龙贝格求积公式是梯形法的递推化,也称为逐次分半加速法,它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种计算积分的方法,同时它有在不断增加计算量的前提下提高误差的精度的特点。

计算过程如下:(1)取0,k h b a ==-,求:()()()[]()00.,.2hT f a f b k a b =+→⎡⎤⎣⎦令k 1记为区间的二分次数 (2)求梯形值02k b a T -⎛⎫⎪⎝⎭即按递推公式12102122n n n k k h T T f x -+=⎛⎫=+ ⎪⎝⎭∑计算0k T .(3)求加速值,按公式()()()111444141m m k k k mm m m m T T T +--=---逐个求出T 表的地k 行其余各元素()()1,2,,k j j T j k -=(4)若()()001k k T T ε--<(预先给定的精度),则终止计算,并取()()0;1k T I k k ≈+→否则令转(2)继续计算。

数值微积分第二讲(复化及龙格贝塔积分)

数值微积分第二讲(复化及龙格贝塔积分)
RT ≤ n× h 0.5 1 ×3 = × 2 = 7.92101 × 10 8 12 4 n
3 3
n2 >
10 0 .5 × = 394520 7.92101 4 n > 629
这说明使用复化梯形公式计算量比复化辛普森公式大得多
例3
使用复化辛普森公式和 复化梯形公式
计算积分 I =


1
0
sin x dx x
η ∈ [a , b ]
f ( x) ∈C [a, b]时, 可以证明
2
limTn = ∫ f ( x)dx,
n→∞ a
b
事实上
h n 1 Tn = ∑ [ f ( x k ) + f ( x k +1 )] 2 k =0
1 b a n 1 ba n = ∑ f ( x k ) + n ∑ f ( x k ) . 2 n k =0 k =1
这说明使用复化梯形公式比复化辛普森公式误差大得多
第四章
第三节
龙贝格(Romberg)求积公 (Romberg) 式
龙贝格算法: 龙贝格算法:
在求积公式的推倒中 , 如果采用序列 { hn }
h0 = b a ; h0 h1 = ; 2 h0 h2 h1 h3 = = = ;....... 2 4 8
n 1 n 1 h = [ f (a ) + 4∑ f ( x k +1 2 ) + 2∑ f ( x k ) + f (b )] 6 k =0 k =1
复化辛普森公式
f ( x) ∈C[a, b]时, 可以证明
lim Sn = ∫ f ( x)dx,
n→∞ a
b

数值微积分第二讲(复化及龙格贝塔积分)

数值微积分第二讲(复化及龙格贝塔积分)

b
lim
n
Tn

a
f ( x)dx,
1 b a n1
ba n

2 n
f (xk )
k0
n
f ( xk ).
k 1

1 b a n1
ba n

lim
n
Tn

2
lnim
n
k0
f
(xk )
lim
n
n
f ( xk )
k 1
f (x2k )]
2h 6 [ f ( x2k2 ) 4 f ( x2k1 ) f ( x2k )]
b
m
I f ( x)dx
x2k f ( x)dx
a
k 1 x2k 2
h m

3
[
k 1
f
( x2k2
)

4
f
( x2k1
)

f ( x2k )]
h
f (b)]
令 xij 第i次等分区间的第j个区间的中点
n
2时 ,T2

b a [1 (( f (a) 22
f ( x11 )
f ( x11 )
f (b))]

b a[1 22
f (a)
1 2
f (b)
f ( x11 )]
T1 2
计算积分I
1 sin x dx
(n 8)
并计算误差。
0x

h
n1
n1
Sn

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

数值分析与实验课程设计班级:姓名:学号: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日、八刖数值计算方法是一种利用计算机解决数学.言问题的数值近似解方法,特别是无法用人工过计算器计算的数学问题。

数值计算方法常用于矩阵高次代数方程矩阵特征值与特征向量的数值解法,插值法,线性方程组迭代法,函数逼近,数值积分与微分,常微分方程初值问题数值解等。

作为数学与计算机之间的一条通道,数值计算的应用范围已十分广泛,作为用计算机解决实际问题的纽带,数值算法在求解线性方程组,曲线拟合、数值积分、数值微分,迭代方法、插值法、拟合法、最小二乘法等应用广泛。

数值计算方法是和计算机紧密相连的,现代计算机的出现为大规模的数值计算创造了条件,集中而系统的研究适用于计算机的数值方法是十分必要的。

数值计算方法是在数值计算实践和理论分析的基础上发展起来的。

通过数值计算方法与实验将有助于我们理解和掌握数值计算方法基本理论和相关软件的掌握,熟练求解一些数学模和运算,并提高我们的编程能力来解决实际问题。

摘要、随着计算机的迅速发展和广泛应用,在众多的领域内,人们越来越认识到科学计算是科学研究的新方法,当今理学学生更应具备这方面的知识与能力,计算方法作为科学计算的一门主干课程又是我们的必修课,我们要认真学习,数值计算方法不只注重理论分析还要求实验和实践,这样才能使我们更灵活地掌握数值计算方法,所以我们也要认真做好数值分析与实验实践环节。

/复化辛卜生公式可以算是公路线行坐标计算的万能公式,不仅对直线、圆曲线都能用一套公式进行计算,而且它的精度可以人为判断。

对于不易直接用积分公式计算的原函数,通常用复合梯形求积公式或复合抛物线求积公式等方法,但这些方法精度不高,收敛的速度缓慢。

为了提高收敛速度,减少计算量,人们寻求其他方法。

[关键字]:计算方法;复化辛卜生公式;龙贝格算法/ 目录\前言 (3)摘要 (4)实验设计内容 (6)一、复化辛普森求积公式求解定积分 (6)1实验目的 (6)2实验内容 (6)3.算法 (6)程序 (6)4运行结果 (7)二、用龙贝格求积公式求解定积分 (7)1实验目的 (7)2实验内容 (7)算法 (7)程序 (8)3.4运行结果 (8)三、结果分析 (9)四、参考文献 (9)实验设计内容一、复化辛普森求积公式求解定积分1. 实验目的:通过实际计算体会各种方法的精确度;会编写用复化辛卜生求定积分的程序;\^2. 实验内容:用复化辛普森求积公式计算积分0.8e x2dx的近似值,自己设/ 0置不同精度要求,对结果进行比较分析。

Z \3. 算法:将区间a,b二等分,用3个插值节点构造抛物线,并以此抛物线为顶的曲边梯形面积近似以曲线y f(x)为顶的曲边梯形面积。

b其中A o称式()f (x)dxaba f(x)dxa b4f(j f(b)2A o f (x o) A i f (Xi) A>f(X2),A o(b或()为求积公式。

\a) 2(b a)()() 可以证明:若函数f(x)在a,b上有连续的4阶导数,Simpson公式的截断误差bR2(f) a f(x)dx旦f(a) 4咛)f(b)百度文库-让每个人平等地提升自我程序如下:function fsimpson(a,b,n) /*调用 matlab 的函数 */ h = (b-a)/n; /*定义自变量*/ t = h*(f(a)+f(b))/6; for i = 0:( n-1)t = t+h*(4*f(a+(i+1/2)*h)+2*f(a+i*h))/6; /* 定义函数 */ end /*结束函数*/ I = t在 Matlab 中输入命令:fsimpson(0,1,1000)则输出结果为:I 0.759262(b a)5f ⑷2880记 a = 0,b = 1,f(x) = e x, b则(x)ef (x) e xf (x)()因此,利用Simpson 公式计算得S(f)晋 f(a) 4f(a -b ) f(b)6 2 10/0 .0.5(e 4e6 e 1)0.6323由 1(f) S(f)(b a) (b a.得截断误差估计为:180'2)f ()1 I(f) S(f)⑷X(x) e(0,1)1 J\4面(/ e (}丄180 2 28800.0003472二、用龙贝格求积公式求解定积分1.实验目的:通过实际计算体会各种方法的精确度;会编写用复化龙贝格求定积分的程序;2实验内容:用龙贝格求积公式计算积分 08e x2dx 的近似值,自己设 0 \置不同精度要求,对结果进行比较分析。

3.算法:(1) 置N 〔,精度要求,h 1b a(2) 计算T 1(0)=hH f (a )f(b )(4) 置 M N ,N 2N ,k 1 (5) 计算4k T (k 1)2M_ k 4 1(k ),则停止计算(输出T 1),否则转(3)如此加工数据的过程叫龙贝格算法,如下图所示:(6) M若M 1,转⑺;否则,置 2,k k 1,转(5)(3)置h 2N =2hN,并计算(k) IM(k 1) IM(7)Nh2Nf (a (2k 1)h 2N )k 1若聲程序如下:fun cti on z=romberg(a,b,e) h=(b-a);f=exp(-x.A 2);TT(1,1)=h.*(f(b)+f(a))/2;k=2;TT(1,2)=TT(1,1)./2+h/2.*f(a+h/2);TT(2,1)=TT(1,2).*4/3-TT(1,1)./3; z=TT(2,1); while abs((TT (k,1)-TT(k-1,1))./TT(k,1))>=ek=k+1;h=h./2;for j2=1:2.A(k-2) ff(1,j2)=f(a+h*(j2-1/2)); endfff=sum(ff).*h/2;TT(1,k)=TT(1,k-1)./2+fff for j1=2:kTT(j1,k-j1 + 1)=4A(j1-1).*TT(j1-1,k-j1+2)./(4A(j1-1)-1)-TT(j1-1,k-j1+1)/( 4A(j1-1)-1);z=TT(j1,k-j1+1); end end/*结束函数*/ fun cti on r=f() r=exp(-x.A2)运算结果>> z=romberg(0,1,10e-2)X Rumbei-g 齐法w G Gq (©⑨03)\\\ X 瓦E% ③⑤®防\\\\ 妤心门% G ①<2)④⑦tv61 J - o o 7"孑 2 8 4/*调用matlab 的函数*/ /*定义自变量*/ /*定义函数*/z =>> vpa(z,7)ans =.>> z=romberg(0,1,10e-5)TT =0 0TT =0 00 0 0 z =>> vpa(z,7)ans =.>> z=romberg(0,1,10e-10)TT =\ 0 0TT =0 00 0 0TT =0 0百度文库-让每个人平等地提升自我11110TT =z =>> vpa(z,7)ans =.三、结果分析龙贝格算法其实是在复化辛卜生公式递推的基础之上生成的一种精度高,而且收敛速度也较快的一种算法。

对于复化辛卜生算法来说,程序比较容易编写,而龙贝格算法,程序中需要注意用龙贝格算法加速收敛的时候如何处理判断以后生成的返回值才能使程序正常运行,龙贝格算法可以达到预期目的,求得所需要的结果。

四、参考文献[1] .孙志终吴宏伟闻震初•计算方法与实验•南京:东南大学出版社2005[2] .孙志忠.数值分析全真试题试题解析.南京:东南大学出版社2004[3] . Sorer K,Bulirsch R.数值分析引论孙文渝南京:南京大学出版社1995[4] 王能超.数值分析简明教程.北京:高等教育出版社,1984⑸袁慰平,孙志忠,吴宏伟.计算方法与实习.南京:东南大学出版社,2005。

相关文档
最新文档