欢迎来到天天文库
浏览记录
ID:38402267
大小:191.50 KB
页数:17页
时间:2019-06-11
《Romberg求积法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准文案安徽中医药大学题目:Romberg求积法c语言编程姓名:杨撞撞学号:13713042班级:13医软(1)班目录1简介2计算公式3算法描述4程序流程图5算法程序表示6算法结果截图l1.简介龙贝格求积公式也称为逐次分半加速法。它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种加速计算积分的方法。作为一种外推算法,它在不增加计算量的前提下提高了误差的精度.在等距基点的情况下,用计算机计算积分值通常都采用把区间逐次分半的方法进行。这样,前一次分割得到的函数值在分半以后仍可被利用,且易于编程。文档大全实用标准文案l2.计算公式梯形公式复化辛
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(龙贝格求积法公式)l3.算法描述3.1龙贝格算法基本描述先算出T0(0),从而计算出T0(1),以此类推,直到计算出
3、T0(0)-Tn-1(0)
4、5、数的积分,分别是:u复化梯形求积结果u辛普森求积结果文档大全实用标准文案u柯特斯求积结果u龙贝格求积结果l4.程序流程图例题:用Romberg方法计算积分I=ò0¹sin(x)/xdx的相关算法流程图表示如下图文档大全实用标准文案l5.算法程序表示#include#include#defineA(x)(sin(x)/x)文档大全实用标准文案//宏定义若干常用函数A,B,C,D,E,G#defineB(x)(cos(x*x+2*x+1))#defineC(x)(atan(sqrt(x*x+1)))#defineD(x)(sqrt6、(exp(x)+sin(2*x)))#defineE(x)(x*x*x+3*x*x+5)#defineG(x)(log10(x)/pow(2,x))doublet[20],s[20],c[20],r[20];//定义全局数组doubledh,fan,a,b,m;//定义全局变量intjj=0;charhs;doubleF(doublex)//用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(x7、);break;case'E':fan=E(x);break;case'G':fan=G(x);break;default:printf("输入错误!");文档大全实用标准文案}return(fan);//返回被积函数值}doubleH(inti)//求和函数并返回和SUM{intj;doublezh,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);r8、eturn(SUM);}doubleTxing(intk)//梯形公式{文档大全实用标准文案if(k==0)dh=t[jj]=((b-a)/2)*(F(a)+F(b));//分半次数为零时T形公式求积else{dh=0.5*Txing(k-1)+H(k);//Txing函数递归调用循环输出并返回dht[++jj]=dh;}m=pow(2,jj);printf("T[%0.0lf]=%0.7lft",m,t[jj]);//输出并返回dhreturn(dh);}doubleSimpson(intk)//辛普森公式{inti,j;Txing(k);//调用梯形公式9、for(i=0;i<=k-1;i++)s[i]=(4.0*t[i+1]-t[i])/3.0;//递推辛普森公式printf("");文档大全实用标准文案for(j=0;j<=k-1;j++)//循环输出{m=pow(2,j);printf("S[%0.0lf]=%0.7lf",m,s[j]);printf("t");}return(s[k-1]);//返回最后一个值s[k-1]}doubleCotes(intk)//科特斯公式{inti,j;Simpson(k);for(i=0;i<=k-2;i++)c[i]=(16.0*s[i+1]-s[i])/15.10、0;//递推科特斯公式printf("
5、数的积分,分别是:u复化梯形求积结果u辛普森求积结果文档大全实用标准文案u柯特斯求积结果u龙贝格求积结果l4.程序流程图例题:用Romberg方法计算积分I=ò0¹sin(x)/xdx的相关算法流程图表示如下图文档大全实用标准文案l5.算法程序表示#include#include#defineA(x)(sin(x)/x)文档大全实用标准文案//宏定义若干常用函数A,B,C,D,E,G#defineB(x)(cos(x*x+2*x+1))#defineC(x)(atan(sqrt(x*x+1)))#defineD(x)(sqrt
6、(exp(x)+sin(2*x)))#defineE(x)(x*x*x+3*x*x+5)#defineG(x)(log10(x)/pow(2,x))doublet[20],s[20],c[20],r[20];//定义全局数组doubledh,fan,a,b,m;//定义全局变量intjj=0;charhs;doubleF(doublex)//用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
7、);break;case'E':fan=E(x);break;case'G':fan=G(x);break;default:printf("输入错误!");文档大全实用标准文案}return(fan);//返回被积函数值}doubleH(inti)//求和函数并返回和SUM{intj;doublezh,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);r
8、eturn(SUM);}doubleTxing(intk)//梯形公式{文档大全实用标准文案if(k==0)dh=t[jj]=((b-a)/2)*(F(a)+F(b));//分半次数为零时T形公式求积else{dh=0.5*Txing(k-1)+H(k);//Txing函数递归调用循环输出并返回dht[++jj]=dh;}m=pow(2,jj);printf("T[%0.0lf]=%0.7lft",m,t[jj]);//输出并返回dhreturn(dh);}doubleSimpson(intk)//辛普森公式{inti,j;Txing(k);//调用梯形公式
9、for(i=0;i<=k-1;i++)s[i]=(4.0*t[i+1]-t[i])/3.0;//递推辛普森公式printf("");文档大全实用标准文案for(j=0;j<=k-1;j++)//循环输出{m=pow(2,j);printf("S[%0.0lf]=%0.7lf",m,s[j]);printf("t");}return(s[k-1]);//返回最后一个值s[k-1]}doubleCotes(intk)//科特斯公式{inti,j;Simpson(k);for(i=0;i<=k-2;i++)c[i]=(16.0*s[i+1]-s[i])/15.
10、0;//递推科特斯公式printf("
此文档下载收益归作者所有