重要的算法C语言实现源代码6
6. 牛顿-科特斯求积公式,求定积分C/C++ code
#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)+(*a))*(h);
return(0);
}
if (n-4==0)
{ *r=0;
*r=*r+0.375*(h)*((*a)+3*(*a)+3*(*a)+(*a));
return(0);
}
if(n/2-(n-1)/2<=0)
nn=n;
else
nn=n-3;
ds=(*a)-(*a);
for(i=2;i<=nn;i=i+2)
ds=ds+4*(*a)+2*(*a);
*r=ds*(h)/3;
if(n>nn)
*r=*r+0.375*(h)*((*a)+3*(*a)+3*(*a)+(*a));
return(0);
}
main()
{
float h,r;
int n,ntf,f;
int i;
float a;
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]