| 查看: 797 | 回复: 0 | |||
[交流]
【求助】type mismatch in redeclaration问题
|
|
利用Simpson方法计算定积分,程序如下; #incude "stdio.h" #include "math.h" double cal_c(double zz,double D,double x) { double c,k=1.380658e-23,T=273.15; double f; c=simps(0.0,D,1e-10,f); /* 用变步长辛卜生求积法积分*/ c=4.0*3.1415*c/k/T; printf(">> simp: c=%.4e\n",c); return(c); } double f(x) /*要进行计算的被积函数*/ double x; {double seigerma=3.2536e-10,rad=0.300e-10,k=1.380658e-23,ipuseilong=152.68,T=273.15; double derlta_4,derlta_5,derlta_10,derlta_11,oumiga_0,oumiga_1,oumiga; double y,D,zz; derlta_4=(pow((1.0-x/D-rad/D),-4)-pow((1.0+x/D-rad/D),-4))/4.0; printf("derlta_4=%e\n",derlta_4); derlta_5=(pow((1.0-x/D-rad/D),-5)-pow((1.0+x/D-rad/D),-5))/5.0; printf("derlta_5=%e\n",derlta_4); derlta_10=(pow((1.0-x/D-rad/D),-10)-pow((1.0+x/D-rad/D),-10))/10.0; derlta_11=(pow((1.0-x/D-rad/D),-11)-pow((1.0+x/D-rad/D),-11))/11.0; oumiga_0=pow(seigerma/D,11)*seigerma*(derlta_10+rad/D*derlta_11)/x; oumiga_1=pow(seigerma/D,5)*seigerma*(derlta_4+rad/D*derlta_5)/x; oumiga=2.0*zz*ipuseilong*(oumiga_0-oumiga_1); y=exp(-oumiga/T)*x*x; return(y); } double simps(a,b,eps,f) /*辛普森算法*/ double a,b,eps,(*f)(); /*a为积分下限,b为积分上限,eps是希望达到的精度*/ { int n,k; double h,t1,t2,s1,s2,ep,p,x; n=1; h=b-a; printf("h=%e\n",h); t1=((*f)(a)+(*f)(b))*h/2.0; /*用梯形公式求出一个大概的估值*/ printf("t1=%e\n",t1); s1=t1; printf("s1=%e\n",s1); ep=eps+1.0; while (ep>=eps) { p=0.0; for (k=0;k<=n-1;k++) { x=a+(k+0.5)*h; p=p+(*f)(x); } printf("p=%e\n",p); t2=(t1+h*p)/2.0; s2=(4.0*t2-t1)/3.0; printf("s2=%e\n",s2); ep=fabs(s2-s1); t1=t2; s1=s2; n=n+n; h=h/2.0; } return(s2); } void main() { int i; double zz[2]={20.0,24.0},D[2]={3.95e-10,4.33e-10}; double c[2],x; for(i=0;i<2;i++) { c=cal_c(zz,D,x); printf("c[%d]=%.4e\n",i,c); } } 运行提示 type mismatch in redeclaration of "simps" |
» 猜你喜欢
085600材料与化工301分求调剂院校
已经有5人回复
081700,311,求调剂
已经有15人回复
一志愿北京化工085600 310分求调剂
已经有18人回复
材料与化工371求调剂
已经有14人回复
336材料与化工085600求调剂
已经有7人回复
材料334求调剂
已经有18人回复
331求调剂
已经有8人回复
332求调剂
已经有17人回复
一志愿南京航空航天大学 材料与化工329分求调剂
已经有4人回复
材料专硕322
已经有7人回复














回复此楼