青年梦想家 发表于 2015-8-28 16:46

重要的算法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]
查看完整版本: 重要的算法C语言实现源代码6