复化求积

来源:互联网 发布:python发送get请求 编辑:程序博客网 时间:2024/05/11 16:57
/**********************************用复化梯形、复化Simpson公式计算……并与其真值比较(分八段)***********************************/#include <stdio.h>#include <stdlib.h>#include <math.h>float FuhuaSimpson(float a,float b,int n);//[a,b]区间内float FuhuaTixing(float a,float b,int n);float Fun(float x);void main(){float y1,y2;y1=FuhuaSimpson(0,3.14159,8);y2=FuhuaTixing(0,3.14159,8);printf("复化simpson结果是:%f\n\n",y1);printf("与真值比较得:%f\n\n\n\n",fabs(y1-2));printf("复化梯形结果是:%f\n\n",y2);printf("与真值比较得:%f\n",fabs(y2-2));}float FuhuaSimpson(float a,float b,int n){float xk1,xk2,xk,m,h,s;m=0;int k;h=(b-a)/n;for(k=1;k<=n;k++){xk1=(a+h*k);xk2=a+h*(k-1);xk=(xk2+xk1)/2;m=m+4*Fun(xk)+2*Fun(xk1);}s=h/6*(Fun(a)-Fun(b)+m);return s;}float FuhuaTixing(float a,float b,int n){float h,m,T,xk;int k;m=0;h=(b+a)/n;for(k=1;k<n;k++){xk=a+h*k;m=m+Fun(xk);}T=h/2*(Fun(a)+2*m+Fun(b));return T;}float Fun(float x){return sin(x);}