Romberg求积法要点_第1页
Romberg求积法要点_第2页
Romberg求积法要点_第3页
Romberg求积法要点_第4页
Romberg求积法要点_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安徽中医药大学题目:Romberg求积法c语言编程姓名:杨撞撞学号:13713042班级:13医软(1)班目录1简介2计算公式3算法描述4程序流程图5算法程序表示6算法结果截图1 .简介龙贝格求积公式也称为逐次分半加速法。它是在梯形公式、 辛普森公式和柯特斯公式之间的关系的基础上,构造出一种加速 计算积分的方法。作为一种外推算法,它在不增加计算量的前 提下提高了误差的精度.在等距基点的情况下,用计算机计算积分值通常都采用把区间逐次分半的方法进行。这样,前一次分割得到的函数值在分半 以后仍可被利用,且易于编程。2 .计算公式梯形公式1>复化辛普森公式复化科特斯公式V龙贝格求积公式其对应的公

2、式为:T2n=1/2 (Tn+Hn)(梯形公式)Sn=4/ (4-1) T2n-1(4-1)Tn (辛普森公式)Cn=4八2/(4八2-1)S2n-1/(4八2-1)Sn (柯特斯公式)Rn=4八3/ (4八3-1) C2n-1/(4八3-1)Cn (龙贝格求积法公式)3 .算法描述3.1 龙贝格算法基本描述先算出T0 (0),从而计算出T0(1),以此类推,直到计算出|T0(0)-Tn-1 (0) |<e即可利用加速推算公式推算出结果。3.2 龙贝格算法程序包步骤3.3 入积分上限2输入程序下限3输入区间等分数4输入要求的函数5计算由所求函数的积分,分别是:复化梯形求积结果辛普森求积结

3、果柯特斯求积结果龙贝格求积结果4 .程序流程图例题:用 Romberg方法计算积分 上。1sin (x) /xdx的相关算法流程图表示如下图开始欢迎界而择选输入0< 1 ?)俞入1F输入信息:积分上卜线,等分段被数求积求积退出)5.算法程序表示#include<stdio.h>#include<math.h>#define A(x)(sin(x)/x)宏定义若干常用函数A,C,D,E,G#define B(x)(cos(x*x+2*x+1) #define C(x)(atan(sqrt(x*x+1)#define D(x)(sqrt(exp(x)+sin(2*x)

4、#define E(x)(x*x*x+3*x*x+5)#define G(x)(log10(x)/pow(2,x)double t20,s20,c20,r20/定义全局数组double dh,fan,a,b,m;定义全局变量int jj=0;char hs;double F(double x) 用switch调用若干被积函数switch(hs)case 'A':fan=A(x);break;case 'B':fan=B(x);break;case 'C':fan=C(x);break;case 'D':fan=D(x);break

5、;case 'E':fan=E(x);break;case 'G':fan=G(x);break;default :printf(" 输入错误! ");return(fan);返回被积函数值 double H(int i) 求和函数并返回和 SUMint j;double zh,SUM=0.0; 定义求和变量SUM并赋初值for(j=1;j<=pow(2,i-1);j+)zh=(a+(2*j-1)*(b-a)/pow(2,i);SUM=SUM+F(zh); 调用 F(x)函数SUM=(b-a)*SUM/pow(2,i);return(S

6、UM);double Txing(int k)梯形公式/b - a2*-11- a v F 孑 b-ai&I Ji=lif(k=0) dh=tjj=(b-a)/2)*(F(a)+F(b);/分半次数为零时 T 形公式求积elsedh=0.5*Txing(k-1)+H(k); /Txing 函数递归调用循环输出并返回 dht+jj=dh;m=pow(2,jj);printf("T%0.0lf=%0.7lft",m,tjj); /输出并返回 dhreturn(dh);double Simpson(int k)/辛普森公式错误! 未找到引用源。int i,j;Txing(

7、k);/调用梯形公式for(i=0;i<=k-1;i+)si=(4.0*ti+1-ti)/3.0;/递推辛普森公式printf("'n");循环输出for(j=0;j<=k-1;j+)m=pow(2,j);printf("S%0.0lf=%0.7lf”,m,sj); printf("'t");return(sk-1); 返回最后一个值 sk-1double Cotes(int k)科特斯公式c J%4int i,j;Simpson(k);for(i=0;i<=k-2;i+) ci=(16.0*si+1-si)/

8、15.0;递推科特斯公式printf("'n");for(j=0;j<=k-2;j+)循环输出m=pow(2,j);printf("C%0.0lf=%0.7lft”,m,cj);return(ck-2);返回最后一个值 ck-2double Romberg(int k)隆贝格公式一二n 4b-1int i,j;调用科特斯公式Cotes(k);for(i=0;i<=k-3;i+)ri=(64.0*ci+1-ci)/63.0; 递推隆贝格printf("'n");for(j=0;j<=k-3;j+)循环输出m=po

9、w(2,j);printf("R%0.0lf=%0.7lft",m,rj);printf("'n"); return(rk-3); / 返回最后一个值rk-3main()int k;char y;printf(" 请从以下公式中选择积分函数: n");printf("A:sin(x)/(x)tB:cos(xA2+2x+1)tC:atan(sqrt(xA2+1)nn ");printf("D:sqrt(eAx+sin(2x)tE:xA3+3*xA2+5tG:lo g10(x)/pow(2,x)nn&

10、quot;);printf(" 请选择函数F(x) (大写) : n");scanf("%c",&hs);getchar();printf(" 请输入您选用的求积公式第一个字母(大写) : n");y=getchar();switch(y)/根据输入的大写字母判断所选求积公式case 'T':printf(" 请输入分半次数: n");scanf("%d",&k);printf(" 请 输 入 积 分 区 间 a,b 且 (a<b) :n"

11、;);scanf("%lf,%lf",&a,&b);if(a=0)a=0.0000000001;/输入当积分区间为零时默认为一极小数printf("-n");printf("nTxing=%0.7fn",Txing(k);break;/输出计算结果小数点后保留 7 位case 'S':printf(" 请输入分半次数大于等于 1的正整数 :n");scanf("%d",&k);printf(" 请 输 入 积 分 区 间 a,b 且(a<b

12、) :n");scanf("%lf,%lf",&a,&b);if(a=0)a=0.0000000001;/输入当积分区间为零时默认为一极小数printf(" n");printf("Simpson=%0.7fn",Simpson(k);break;/输出计算结果小数点后保留 7 位case 'C':printf(" 请输入分半次数大于等于 2 的 正整数 :n");scanf("%d",&k);printf(" 请 输 入 积 分 区

13、间 a,b 且 (a<b) :n");scanf("%lf,%lf",&a,&b);if(a=0)a=0.0000000001;/输入当积分区间为零时默认为一极小数printf("n");printf("Cotes=%0.7fn",Cotes(k);break;/输出计算结果小数点后保留 7 位case 'R':printf(" 请输入分半次数大于等于 3 的 正整数 :n");scanf("%d",&k);printf(" 请

14、输 入 积 分 区 间 a,b 且 (a<b) :n");scanf("%lf,%lf",&a,&b);if(a=0)a=0.0000000001;/输入当积分区间为零时默认为一极小数printf("n");printf("Romberg=%0.7fn",Romberg(k);break;/输出计算结果小数点后保留 7 位default:printf("n");printf(" 公式输入有误,请查证!n");printf("n");6.算法结果

15、截图盾从以I、公式甲边存枳“国数,):sin<x>/<x>B:cos<x2+2x+l> C:atan<sqrt <x2 +1)>D:sqrt<ex*sin<2x>>E:xA,3*3*xA2*5 G: logl0<x>/povi<2,x>请选择函数F<x> (大写)::青输入您选用的求积公式第一个字母(大写):卷输入分半次数大于等于3的正整数:请输入积分区间"b且(ab):九1r11=8.9207355 T21=0.9397933 T41=0.9445135 T81=0.9

16、456909 >1=0.9461459 SC2=0.9460869 S41=0.9460833Dfl1=0.9460830 CE21=0.9460831Rtl1-0.9460831Ronberg=0.9460831Press any key to continue请从以下公式中选择积分函数:A: sin<x>/<x> B:cos<x2*2x*l> C:atan<sqrt<x2*1>>D:sqrt<eA,x+sin<2x>>E:x3*3*x2 +5G: logl0<x>/pow<2,x&g

17、t;请选择函数F<*(大写):3输入您选用的求积公式第一个字母(大写):3输入分半次数大于等于3的正整数:3请输入积分区间"b且(a<b):1,2rtl=-0.7823869 T2=0.1085312 T4=0.2118591 TL8=0.2341875SCI 3=0.4055040 SC2=0.2463017 S4=0.2416303CC1=0.2356882 C2=0.2413188R11=0.2414082Ronberg=0.241408213 y w vV V V V VW /y、一 Jf请从以下公式巾选择积分函数:A: sin<x>/<x>

18、; B:cos<x2+2x*l> C:atan<sqrt<x2+1>>D:sqrt<e/Kx*sin<2x>> E:x3*3*x2*5 G: logl0<x>/povi<2,.x> 清选择函数F<x(大写): 请输入您选用的求积公式第一个字母(大写):3输入分半次数大于等于3的正整数: 3请输入积分区间a J且(a<b): 2,3r11=1.2073905 T2=i.2112921 T4=1.2122725 T8=1.2125178SCIJ-l.2125927 S2-l.2125992 SL4J=1

19、.2125996Cl=l.2125997 CE2=1.2125996Rl=l.2125996Ronberg=l.2125996Press any key to continue请从以下公式中选择积分函数:A: sin<x>/<x> B:cos<xz<2*2x+l> C:atan<sqrt<x2!>>D:sqrt <ex*sin<2x>>E:x3 +3*x2 +5G : logl0<x>/pow<2 ,.x>请选择函数F“(大写):"输入您选用的求积公式第一个字母(大写):

20、3输入分半次数大于等于3的正整数= 3请输入积分区间"b且(a<b):U3rtl=6.3550274 T2=5.7528299 T4=5.6265307 T8=5.5954585SCI=5.5520974 S2=5.5844310 S4=5.5851011CH =5.5865866 CC2 =5.5851458Rd 1-5.5851229Ronberg=5.5851229:sin<x>/<x> B:cos<x2 *2x*l> C : at an <sqrt1 > >:sqrt<ex*sin<2x>>E:x3*3*x2*5 G:logl0<x>/pow<2,x&g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论