10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
6.牛顿-科特斯求积公式,求定积分
C/C++ code <!--code highlighting produced by actipro codehighlighter (freeware)http://www.codehighlighter.com/-->#include<stdio.h>#include<math.h>int NC(a,h,n,r,f)float (*a)[];float h;int n,f;float *r;{ int nn,i; float ds; if(n>1000||n<2) { if (f) printf("\n Faild! Check if 1<n<1000!\n",n); return(-1);}if(n==2){ *r=0.5*((*a)[0]+(*a)[1])*(h);return(0);}if (n-4==0) { *r=0;*r=*r+0.375*(h)*((*a)-4]+3*(*a)-3]+3*(*a)-2]+(*a)-1]);return(0);}if(n/2-(n-1)/2<=0)nn=n;elsenn=n-3;ds=(*a)[0]-(*a)-1];for(i=2;i<=nn;i=i+2)ds=ds+4*(*a)-1]+2*(*a);*r=ds*(h)/3;if(n>nn)*r=*r+0.375*(h)*((*a)-4]+3*(*a)-3]+3*(*a)-2]+(*a)-1]);return(0);}main(){ float h,r; int n,ntf,f; int i; float a[16];printf("Input the x(16):\n"); for(i=0;i<=15;i++) scanf("%d",&a);h=0.2;f=0;ntf=NC(a,h,n,&r,f);if(ntf==0) printf("\nR=%f\n",r);else printf("\n Wrong!Return code=%d\n",ntf);getch();}
页:
[1]