辛普生法Word

上传人:hs****ma 文档编号:508962037 上传时间:2023-04-26 格式:DOC 页数:8 大小:26KB
返回 下载 相关 举报
辛普生法Word_第1页
第1页 / 共8页
辛普生法Word_第2页
第2页 / 共8页
辛普生法Word_第3页
第3页 / 共8页
辛普生法Word_第4页
第4页 / 共8页
辛普生法Word_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《辛普生法Word》由会员分享,可在线阅读,更多相关《辛普生法Word(8页珍藏版)》请在金锄头文库上搜索。

1、#include#includehead.h#includevoid?main() /主程序文件double a,b;int n,c,d=0; double f_1,f_2,zs1,zs2; /f_1,f_2为算法计算的积分值;zs1为f1真实的积分值zs2为f2真实的积分值coutf1(x)=1+x*x f2(x)=1+x+x*x+x*x*xendl;/输出f1,f2函数 cout以下为求f1,f2的对应积分区间的积分endl; while(1)/循环语句 if(d!=2)/重新输入新的数据 coutabn;else /只改变n的值coutn;cout梯形法求积分请按:1n辛普法生求积分按:

2、2c;?if(c!=1&c!=2)/输入错误就重新输入for(;)coutc;if(c=1|c=2)break; if(c=1)/选择梯形法计算f_1=integralt(a,b,n,f1);f_2=integralt(a,b,n,f2);zs1=realintegral(a,b,real1);zs2=realintegral(a,b,real2);cout-梯形法结果为-endl;if(c=2)/选择辛普生法计算f_1=integrals(a,b,n,f1);f_2=integrals(a,b,n,f2);zs1=realintegral(a,b,real1);zs2=realintegra

3、l(a,b,real2);cout-辛普生法结果为-endl;coutntatbtf1tf1误差ttf2tf2误差endl;/输入的格式coutntatbtf_1tfabs(f_1-zs1)tf_2tfabs(f_2-zs2)endl;cout重新输入请按:1n只改变n的值请按:2n推出请按:0d;if(d!=0&d!=1&d!=2)/当d输入错误时重新输入for(;)coutd; if(d=1|d=2|d=3) break;if(d=0)/结束循环体cout谢谢您的使用再见endl;break;#include/函数f1和f2double f1(double x)return 1+x*x;d

4、ouble f2(double x)return 1+x+x*x+x*x*x;#include/梯形法求积分算法double integralt(double a,double b,int n,double (*f)(double) double h,jf=0; h=(b-a)/n; for(int i=1;i=n;i+)jf+=(*f)(a+i*h)+(*f)(a+(i-1)*h)*h/2.0;return jf;#include/辛普生法求积分算法double integrals(double a,double b,int n,double(*f)(double) double h,sj=

5、0,sr=0; h=(b-a)/(2*n);for(int i=1;i=2*n-1;i=i+2) sj+=(*f)(a+i*h);for(int j=2;j=2*n-2;j+=2) sr+=(*f)(a+j*h);return (*f)(a)+(*f)(b)+4*sj+2*sr)*h/3; #include/辛普生法求积分算法double integrals(double a,double b,int n,double(*f)(double)double h,sj=0,sr=0; h=(b-a)/(2*n);for(int i=1;i=2*n-1;i=i+2) sj+=(*f)(a+i*h);

6、for(int j=2;j=2*n-2;j+=2) sr+=(*f)(a+j*h);return (*f)(a)+(*f)(b)+4*sj+2*sr)*h/3; #includedouble f1(double x);/声明f1函数double f2(double x);/声明f2函数double real1(double x);/声明real1函数double real2(double x);/声明real2函数double integrals(double a,double b,int n,double(*f)(double);/声明辛普生法函数double integralt(doubl

7、e a,double b,int n,double (*f)(double);/声明梯形法函数double realintegral(double a,double b,double(*r)(double);/声明牛顿莱布尼茨计算积分函数2,#include #define HIGH1(a,b,n) (b-a)/n /宏定义 double F1(double x,double y,int z); 函数原型说明double F2(double x,double y,int z);double f1(double u);double f2(double v);double sum1(double

8、c,double d,int e);double sum2(double p,double q,int r);#define HIGH2(a,b,n) (b-a)/(2*n) /宏定义 double F3(double x,double y,int z); /函数说明 double F4(double x,double y,int z); double f3(double u); double f4(double v); double sum5(double p,double q,int r); double sum6(double p,double q,int r); double sum3

9、(double c,double d,int e); double sum4(double c,double d,int e); void integralts(double x,double y,int z,double (*f)(double,double ,int);void integralt(double x,double y,int z,double(*f)(double,double,int);void main() /主函数 int n; double a,b; /定义变量 coutabn; couta=anb=bnn=nendl; cout梯形法:endl; coutinte

10、sum1=; integralt(a,b,n,F1); /应用函数指针调用函数 coutintesum2=; integralt(a,b,n,F2); /应用函数指针调用函数 cout辛普生法:endl; coutintesum1=; integralts(a,b,n,F3); /应用函数指针调用函数 coutintesum2=; integralts(a,b,n,F4); /应用函数指针调用函数void integralt(double x,double y,int z,double (*f)(double,double,int) / 利用梯形法球定积分 double ff; ff=(*f)

11、(x,y,z); /用函数指针调用F1函数 coutffendl;double F1(double x,double y,int z) double h,Y1; /定义局部变量 h=HIGH1(x,y,z); /调用宏定义 Y1=h/2*(f1(x)+f1(y)+2*sum1(x,y,z); /梯形法公式 return Y1; /返回梯形法得到的1+x*x的定积分的值double F2(double x,double y,int z) double h,Y2; /定义局部变量 h=HIGH1(x,y,z); /调用宏定义 Y2=h/2*(f2(x)+f2(y)+2*sum2(x,y,z); /梯形法公式,调用f2,sum2函数 return Y2; /返回梯形法得到的1+x+x*x+x*x*x 的定积分的值double f1(double u) double y1; /定义变量 y1=u*u+1; return y1; /返回值 double f2(double v) double y2; /定义

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号