写一道Romberg积分算法
double Romberg (MathFun f,double a,double b,double eps)//算法2.2
{
double T1, T2, S1,S2,C1,C2, R1, R2, h, sumFv, de1ta=10*eps,x;
int i,Kount= 0, n=1, fvCnth;
h=b -a;
T2 =0.5*(f(a) +f(b))*h; fvCnt = 2;
S2 =0;C2=0; R2= 0;
//没有完全遵循算法2.2步骤1初始化要求!!!
//但梯形的第一个结果,是最低的底限,必须初始化.--以上步骤1
while (delta>=eps)
{//上次的最新的“2”,传给这次的老的“1”:>>>
T1 = T2;S1 = S2;C1 =C2; R1= R2;
sumFv= 0.0;X=a+h/ 2;
for (i=0;i<n; i++)
{
sumFv = sumFv + f(x);// x == a+(i+0.5)
x +=h;
fvCnt += n;
}
T2 = 0.5*(T1+ sumFv * h);//步骤2
S2= (4* T2 -T1)/3;//步骤3,加速第一跳,Simpson
C2=(16* S2 -S1)/ 15;//第二跳,Cotes
R2= (64 * C2 - C1)/ 63;//第三跳,Romberg
delta = fabs (R2- R1);
n = ntn;//--->>>步骤4
h =h/ 2;
Kount = Kount +1;
printf("R[%2d]=%.7f T=%. 7f,fvCnt= %5d\n",Kount,R2,T2, fvCnt);
}
return R2;
运行出错:MathFun was not declared in this scope和expected primary-expression before 'double
求解怎么解决